二、数据查询语言(八)案例

MySQL


一、初识数据库
二、数据查询语言(一)
二、数据查询语言(二)
二、数据查询语言(三)
二、数据查询语言(四)
二、数据查询语言(五)
二、数据查询语言(六)
二、数据查询语言(七)

数据查询语言包括: 基础查询 条件查询 排序查询 分组查询 连接查询 子查询 分页查询 联合查询

前言


一、建立student表

我们用下面这段代码建立student表

DROP DATABASE IF EXISTS student;
CREATE DATABASE student;
USE student;

CREATE TABLE student(
	studentno VARCHAR(10) NOT NULL PRIMARY KEY,
	studentname VARCHAR(20) NOT NULL,
	loginpwd VARCHAR(8) NOT NULL,
	sex CHAR(1) ,
	majorid INT NOT NULL REFERENCES grade(majorid),
	phone VARCHAR(11),
	email VARCHAR(20) ,
	borndate DATETIME
);

CREATE TABLE major(
	majorid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	majorname VARCHAR(20) NOT  NULL

);
CREATE TABLE result(
	id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	studentno VARCHAR(10) NOT NULL REFERENCES student(studentno),
	score DOUBLE
);


INSERT INTO major VALUES(NULL,'javaee');
INSERT INTO major VALUES(NULL,'html5');
INSERT INTO major VALUES(NULL,'android');


INSERT INTO student VALUES('S001','张三封','8888','男',1,'13288886666','zhangsanfeng@126.com','1966-9-1');
INSERT INTO student VALUES('S002','殷天正','8888','男',1,'13888881234','yintianzheng@qq.com','1976-9-2');
INSERT INTO student VALUES('S003','周伯通','8888','男',2,'13288886666','zhoubotong@126.com','1986-9-3');
INSERT INTO student VALUES('S004','张翠山','8888','男',1,'13288886666',NULL,'1995-9-4');
INSERT INTO student VALUES('S005','小小张','8888','女',3,'13288885678','xiaozhang@126.com','1990-9-5');

INSERT INTO student VALUES('S006','张无忌','8888','男',2,'13288886666','zhangwuji@126.com','1998-8-9');
INSERT INTO student VALUES('S007','赵敏','0000','女',1,'13288880987','zhaomin@126.com','1998-6-9');
INSERT INTO student VALUES('S008','周芷若','6666','女',1,'13288883456','zhouzhiruo@126.com','1996-7-9');
INSERT INTO student VALUES('S009','殷素素','8888','女',1,'13288886666','yinsusu@163.com','1986-1-9');
INSERT INTO student VALUES('S010','宋远桥','6666','男',3,'1328888890','songyuanqiao@qq.com','1996-2-9');


INSERT INTO student VALUES('S011','杨不悔','6666','女',2,'13288882345',NULL,'1995-9-9');
INSERT INTO student VALUES('S012','杨逍','9999','男',1,'13288885432',NULL,'1976-9-9');
INSERT INTO student VALUES('S013','纪晓芙','9999','女',3,'13288888765',NULL,'1976-9-9');
INSERT INTO student VALUES('S014','谢逊','9999','男',1,'13288882211',NULL,'1946-9-9');
INSERT INTO student VALUES('S015','宋青书','9999','男',3,'13288889900',NULL,'1976-6-8');



INSERT INTO result VALUES(NULL,'s001',100);
INSERT INTO result VALUES(NULL,'s002',90);
INSERT INTO result VALUES(NULL,'s003',80);

INSERT INTO result VALUES(NULL,'s004',70);
INSERT INTO result VALUES(NULL,'s005',60);
INSERT INTO result VALUES(NULL,'s006',50);
INSERT INTO result VALUES(NULL,'s006',40);
INSERT INTO result VALUES(NULL,'s005',95);
INSERT INTO result VALUES(NULL,'s006',88);

使用SELECT * FROM student;可以查看此表,如图:
在这里插入图片描述

二、在student表上操作

一、查询每个专业的学生人数

SELECT majorid,COUNT(*)
FROM student
GROUP BY majorid;

二、查询参加考试的学生中,每个学生的平均分、最高分

#第一种做法是:
SELECT AVG(score),MAX(score),studentno
FROM result
GROUP BY studentno;
#第二种做法
SELECT AVG(score),MAX(score),studentname
FROM result r
INNER JOIN student s 
ON s.studentno=r.studentno
GROUP BY studentname;

三、查询姓张的每个学生的最低分大于60的学号、姓名

SELECT s.studentno,s.`studentname`,MIN(score)
FROM student s
INNER JOIN result r
ON s.`studentno`=r.`studentno`
WHERE s.`studentname` LIKE '张%'
GROUP BY s.`studentno`
HAVING MIN(score)>60;

四、查询生日在“1988-1-1”后的学生姓名、专业名称

SELECT s.`studentname`,`majorname`
FROM major m
INNER JOIN student s
ON m.majorid=s.majorid
WHERE DATEDIFF(borndate,'1988-1-1')>0;

五、查询每个专业的男生人数和女生人数分别是多少

#方式一
SELECT sex,COUNT(*) 个数,majorid
FROM student
GROUP BY sex,majorid
#方式二
SELECT majorid,
(SELECT COUNT(*) FROM student WHERE sex='男' AND majorid=s.majorid),
(SELECT COUNT(*) FROM student WHERE sex='女' AND majorid=s.majorid) 女
FROM student s
GROUP BY majorid;

六、查询专业和张翠山一样的学生的最低分

#①查询张翠山的专业编号
SELECT studentname,majorid
FROM student
WHERE studentname='张翠山'

#查询和①中专业编号相同的学生
SELECT studentname
FROM student
WHERE majorid=(
	SELECT majorid
	FROM student
	WHERE studentname='张翠山')

#查询最低分
SELECT MIN(score)
FROM result r
INNER JOIN student s
ON r.studentno=s.studentno
WHERE studentname IN(
	SELECT studentname
	FROM student
	WHERE majorid=(
		SELECT majorid
		FROM student
		WHERE studentname='张翠山')

);

七、查询大于60分的学生的姓名、密码、专业名

SELECT studentname,loginpwd,majorname
FROM student s
INNER JOIN major m ON s.`majorid`=m.`majorid`
INNER JOIN result r ON r.`studentno`=s.`studentno`
WHERE score>60;

八、按邮箱位数分组,查询每组的学生个数

SELECT COUNT(*),LENGTH(email)
FROM student
GROUP BY LENGTH(email);	

九、查询学生名、专业名、分数

SELECT studentname,score,majorname
FROM student s
INNER JOIN major m ON s.`majorid`=m.`majorid`
INNER JOIN result r ON r.`studentno`=s.`studentno`;

十、查询哪个专业没有学生,分别用左连接和右连接实现

SELECT m.`majorid`,m.`majorname`,s.`studentno`
FROM major m
LEFT JOIN student s ON s.`majorid`=m.`majorid`
WHERE s.`studentno` IS NULL;

十一、查询没有成绩的学生人数

SELECT COUNT(*),r.id
FROM student s
LEFT JOIN result r ON r.`studentno`=s.`studentno`
WHERE score IS NULL

总结

期待大家和我交流,留言或者私信,一起学习,一起进步!

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
当然可以!R语言是一种非常流行的数据分析和统计建模工具,下面我将为您介绍一个使用R语言进行数据分析的案例案例:电商平台用户购买行为分析 1. 数据收集:首先,我们需要收集电商平台的用户购买数据,包括用户ID、购买时间、购买金额等信息。可以通过数据库查询或者日志记录来获取这些数据。 2. 数据清洗:接下来,我们需要对收集到的数据进行清洗,包括去除重复数据、处理缺失值、处理异常值等。这一步是为了确保数据的准确性和完整性。 3. 数据探索:在清洗完数据后,我们可以进行数据探索分析,包括统计描述、可视化等。通过这些分析,我们可以了解用户购买行为的整体情况,比如购买频率、购买金额的分布等。 4. 用户分群:接下来,我们可以使用聚类算法对用户进行分群。聚类算法可以将具有相似购买行为的用户划分到同一组中,从而帮助我们了解不同类型的用户。 5. 用户行为预测:在了解用户分群后,我们可以使用机器学习算法对用户的购买行为进行预测。比如可以使用分类算法来预测用户是否会购买某个产品,或者使用回归算法来预测用户的购买金额。 6. 结果评估:最后,我们需要对模型的预测结果进行评估。可以使用一些评估指标,比如准确率、召回率等来评估模型的性能。 以上是一个简单的使用R语言进行数据分析的案例。希望对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写Bug那些事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值