Mysql高级查询语句练习

Mysql高级查询语句练习

DROP TABLE IF EXISTS `tblcourse`;  
CREATE TABLE `tblcourse` (  
  `CourseId` varchar(3) NOT NULL COMMENT '课程编号',  
  `CourseName` varchar(20) NOT NULL COMMENT '课程名称',  
  `TeaId` varchar(3) DEFAULT NULL COMMENT '授课教师编号',  
  PRIMARY KEY (`CourseId`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

-- ----------------------------  
-- Records of tblcourse  
-- ----------------------------  
INSERT INTO `tblcourse` VALUES ('001', '企业管理', '002');  
INSERT INTO `tblcourse` VALUES ('002', '马克思', '008');  
INSERT INTO `tblcourse` VALUES ('003', 'UML', '006');  
INSERT INTO `tblcourse` VALUES ('004', '数据库', '007');  
INSERT INTO `tblcourse` VALUES ('005', '逻辑电路', '006');  
INSERT INTO `tblcourse` VALUES ('006', '英语', '003');  
INSERT INTO `tblcourse` VALUES ('007', '电子电路', '005');  
INSERT INTO `tblcourse` VALUES ('008', '毛泽东思想概论', '004');  
INSERT INTO `tblcourse` VALUES ('009', '西方哲学史', '012');  
INSERT INTO `tblcourse` VALUES ('010', '线性代数', '017');  
INSERT INTO `tblcourse` VALUES ('011', '计算机基础', '013');  
INSERT INTO `tblcourse` VALUES ('012', 'AUTO CAD制图', '015');  
INSERT INTO `tblcourse` VALUES ('013', '平面设计', '011');  
INSERT INTO `tblcourse` VALUES ('014', 'Flash动漫', '001');  
INSERT INTO `tblcourse` VALUES ('015', 'Java开发', '009');  
INSERT INTO `tblcourse` VALUES ('016', 'C#基础', '002');  
INSERT INTO `tblcourse` VALUES ('017', 'Oracl数据库原理', '010');  

-- ----------------------------  
-- Table structure for `tblscore`  
-- ----------------------------  
DROP TABLE IF EXISTS `tblscore`;  
CREATE TABLE `tblscore` (  
  `StuId` varchar(5) DEFAULT NULL COMMENT '学号',  
  `CourseId` varchar(3) DEFAULT NULL COMMENT '课程编号',  
  `Score` float DEFAULT NULL COMMENT '成绩'  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

-- ----------------------------  
-- Records of tblscore  
-- ----------------------------  
INSERT INTO `tblscore` VALUES ('1001', '003', '90');  
INSERT INTO `tblscore` VALUES ('1001', '002', '87');  
INSERT INTO `tblscore` VALUES ('1001', '001', '96');  
INSERT INTO `tblscore` VALUES ('1001', '010', '85');  
INSERT INTO `tblscore` VALUES ('1002', '003', '70');  
INSERT INTO `tblscore` VALUES ('1002', '002', '87');  
INSERT INTO `tblscore` VALUES ('1002', '001', '42');  
INSERT INTO `tblscore` VALUES ('1002', '010', '65');  
INSERT INTO `tblscore` VALUES ('1003', '006', '78');  
INSERT INTO `tblscore` VALUES ('1003', '003', '70');  
INSERT INTO `tblscore` VALUES ('1003', '005', '70');  
INSERT INTO `tblscore` VALUES ('1003', '001', '32');  
INSERT INTO `tblscore` VALUES ('1003', '010', '85');  
INSERT INTO `tblscore` VALUES ('1003', '011', '21');  
INSERT INTO `tblscore` VALUES ('1004', '007', '90');  
INSERT INTO `tblscore` VALUES ('1004', '002', '87');  
INSERT INTO `tblscore` VALUES ('1005', '001', '23');  
INSERT INTO `tblscore` VALUES ('1006', '015', '85');  
INSERT INTO `tblscore` VALUES ('1006', '006', '46');  
INSERT INTO `tblscore` VALUES ('1006', '003', '59');  
INSERT INTO `tblscore` VALUES ('1006', '004', '70');  
INSERT INTO `tblscore` VALUES ('1006', '001', '99');  
INSERT INTO `tblscore` VALUES ('1007', '011', '85');  
INSERT INTO `tblscore` VALUES ('1007', '006', '84');  
INSERT INTO `tblscore` VALUES ('1007', '003', '72');  
INSERT INTO `tblscore` VALUES ('1007', '002', '87');  
INSERT INTO `tblscore` VALUES ('1008', '001', '94');  
INSERT INTO `tblscore` VALUES ('1008', '012', '85');  
INSERT INTO `tblscore` VALUES ('1008', '006', '32');  
INSERT INTO `tblscore` VALUES ('1009', '003', '90');  
INSERT INTO `tblscore` VALUES ('1009', '002', '82');  
INSERT INTO `tblscore` VALUES ('1009', '001', '96');  
INSERT INTO `tblscore` VALUES ('1009', '010', '82');  
INSERT INTO `tblscore` VALUES ('1009', '008', '92');  
INSERT INTO `tblscore` VALUES ('1010', '003', '90');  
INSERT INTO `tblscore` VALUES ('1010', '002', '87');  
INSERT INTO `tblscore` VALUES ('1010', '001', '96');  
INSERT INTO `tblscore` VALUES ('1011', '009', '24');  
INSERT INTO `tblscore` VALUES ('1011', '009', '25');  
INSERT INTO `tblscore` VALUES ('1012', '003', '30');  
INSERT INTO `tblscore` VALUES ('1013', '002', '37');  
INSERT INTO `tblscore` VALUES ('1013', '001', '16');  
INSERT INTO `tblscore` VALUES ('1013', '007', '55');  
INSERT INTO `tblscore` VALUES ('1013', '006', '42');  
INSERT INTO `tblscore` VALUES ('1013', '012', '34');  
INSERT INTO `tblscore` VALUES ('1000', '004', '16');  
INSERT INTO `tblscore` VALUES ('1002', '004', '55');  
INSERT INTO `tblscore` VALUES ('1004', '004', '42');  
INSERT INTO `tblscore` VALUES ('1008', '004', '34');  
INSERT INTO `tblscore` VALUES ('1013', '016', '86');  
INSERT INTO `tblscore` VALUES ('1013', '016', '44');  
INSERT INTO `tblscore` VALUES ('1000', '014', '75');  
INSERT INTO `tblscore` VALUES ('1002', '016', '100');  
INSERT INTO `tblscore` VALUES ('1004', '001', '83');  
INSERT INTO `tblscore` VALUES ('1008', '013', '97');  

-- ----------------------------  
-- Table structure for `tblstudent`  
-- ----------------------------  
DROP TABLE IF EXISTS `tblstudent`;  
CREATE TABLE `tblstudent` (  
  `StuId` varchar(5) NOT NULL COMMENT '学号',  
  `StuName` varchar(10) NOT NULL COMMENT '学生姓名',  
  `StuAge` int(11) DEFAULT NULL COMMENT '学生年龄',  
  `StuSex` char(1) NOT NULL COMMENT '学生性别',  
  PRIMARY KEY (`StuId`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

-- ----------------------------  
-- Records of tblstudent  
-- ----------------------------  
INSERT INTO `tblstudent` VALUES ('1000', '张无忌', '18', '男');  
INSERT INTO `tblstudent` VALUES ('1001', '周芷若', '19', '女');  
INSERT INTO `tblstudent` VALUES ('1002', '杨过', '19', '男');  
INSERT INTO `tblstudent` VALUES ('1003', '赵敏', '18', '女');  
INSERT INTO `tblstudent` VALUES ('1004', '小龙女', '17', '女');  
INSERT INTO `tblstudent` VALUES ('1005', '张三丰', '18', '男');  
INSERT INTO `tblstudent` VALUES ('1006', '令狐冲', '19', '男');  
INSERT INTO `tblstudent` VALUES ('1007', '任盈盈', '20', '女');  
INSERT INTO `tblstudent` VALUES ('1008', '岳灵珊', '19', '女');  
INSERT INTO `tblstudent` VALUES ('1009', '韦小宝', '18', '男');  
INSERT INTO `tblstudent` VALUES ('1010', '康敏', '17', '女');  
INSERT INTO `tblstudent` VALUES ('1011', '萧峰', '19', '男');  
INSERT INTO `tblstudent` VALUES ('1012', '黄蓉', '18', '女');  
INSERT INTO `tblstudent` VALUES ('1013', '郭靖', '19', '男');  
INSERT INTO `tblstudent` VALUES ('1014', '周伯通', '19', '男');  
INSERT INTO `tblstudent` VALUES ('1015', '瑛姑', '20', '女');  
INSERT INTO `tblstudent` VALUES ('1016', '李秋水', '21', '女');  
INSERT INTO `tblstudent` VALUES ('1017', '黄药师', '18', '男');  
INSERT INTO `tblstudent` VALUES ('1018', '李莫愁', '18', '女');  
INSERT INTO `tblstudent` VALUES ('1019', '冯默风', '17', '男');  
INSERT INTO `tblstudent` VALUES ('1020', '王重阳', '17', '男');  
INSERT INTO `tblstudent` VALUES ('1021', '郭襄', '18', '女');  

-- ----------------------------  
-- Table structure for `tblteacher`  
-- ----------------------------  
DROP TABLE IF EXISTS `tblteacher`;  
CREATE TABLE `tblteacher` (  
  `TeaId` varchar(3) NOT NULL COMMENT '教师编号',  
  `TeaName` varchar(10) NOT NULL COMMENT '教师名称',  
  PRIMARY KEY (`TeaId`)  
) ENGINE=InnoDB DEFAULT CHARSET=utf8;  

-- ----------------------------  
-- Records of tblteacher  
-- ----------------------------  
INSERT INTO `tblteacher` VALUES ('001', '姚明');  
INSERT INTO `tblteacher` VALUES ('002', '叶平');  
INSERT INTO `tblteacher` VALUES ('003', '叶开');  
INSERT INTO `tblteacher` VALUES ('004', '孟星魂');  
INSERT INTO `tblteacher` VALUES ('005', '独孤求败');  
INSERT INTO `tblteacher` VALUES ('006', '裘千仞');  
INSERT INTO `tblteacher` VALUES ('007', '裘千尺');  
INSERT INTO `tblteacher` VALUES ('008', '赵志敬');  
INSERT INTO `tblteacher` VALUES ('009', '阿紫');  
INSERT INTO `tblteacher` VALUES ('010', '郭芙蓉');  
INSERT INTO `tblteacher` VALUES ('011', '佟湘玉');  
INSERT INTO `tblteacher` VALUES ('012', '白展堂');  
INSERT INTO `tblteacher` VALUES ('013', '吕轻侯');  
INSERT INTO `tblteacher` VALUES ('014', '李大嘴');  
INSERT INTO `tblteacher` VALUES ('015', '花无缺');  
INSERT INTO `tblteacher` VALUES ('016', '金不换');  
INSERT INTO `tblteacher` VALUES ('017', '乔丹');  

1、查询“001”课程比“002”课程成绩高的所有学生的学号;

Select StuId From tblStudent s1
Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId=’001’)>
(Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId=’002’);

【执行情况】
mysql> Select StuId From tblStudent s1
Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId=’001’)>
(Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId=’002’);
+——-+
| StuId |
+——-+
| 1001 |
| 1009 |
| 1010 |
+——-+
3 rows in set

mysql>

使用自连接实现
mysql> select DISTINCT A.StuId from tblscore A,tblscore B
where A.CourseId=’001’ and B.CourseId=’002’ and A.Score>B.score and A.stuid=B.stuid;
+——-+
| StuId |
+——-+
| 1001 |
| 1009 |
| 1010 |
+——-+
3 rows in set

2、查询平均成绩大于60分的同学的学号和平均成绩;

Select StuId,Avg(Score) as AvgScore From tblScore
Group By StuId
Having Avg(Score)>60;

【执行情况】
mysql> Select StuId,Avg(Score) as AvgScore From tblScore
Group By StuId
Having Avg(Score)>60;
+——-+——————-+
| StuId | AvgScore |
+——-+——————-+
| 1001 | 89.5 |
| 1002 | 69.83333333333333 |
| 1004 | 75.5 |
| 1006 | 71.8 |
| 1007 | 82 |
| 1008 | 68.4 |
| 1009 | 88.4 |
| 1010 | 91 |
+——-+——————-+
8 rows in set

3、查询学习过‘001’课程的男生和女生人数各是多少?

mysql> select A.StuSex sex,count(*) as CountSex from tblstudent A,tblscore B
where B.courseid=’001’ and A.stuid=B.stuid group by A.StuSex ;
+—–+———-+
| sex | CountSex |
+—–+———-+
| 女 | 5 |
| 男 | 5 |
+—–+———-+
2 rows in set

4、查询姓“李”的老师的个数;

Select Count(*) From tblTeacher Where TeaName like ‘李%’;
【执行情况】
mysql> Select Count(*) From tblTeacher Where TeaName like ‘李%’;
+———-+
| Count(*) |
+———-+
| 1 |
+———-+
1 row in set

5、查询“张无忌”的所有学习课程名称和授课老师姓名;

【执行情况】
mysql> select a.stuid,a.stuname,c.CourseName,d.teaname from tblstudent a,tblscore b,tblcourse
c,tblteacher d where a.stuid=b.stuid and b.courseid=c.courseid
and c.teaid=d.teaid and a.stuname=’张无忌’;

+——-+———+————+———+
| stuid | stuname | CourseName | teaname |
+——-+———+————+———+
| 1000 | 张无忌 | 数据库 | 裘千尺 |
| 1000 | 张无忌 | Flash动漫 | 姚明 |
+——-+———+————+———+
2 rows in set

6、查询每一门课程的课程名称,授课教师姓名,课程平均成绩;

mysql> select avg(b.score) as AvgScore,c.CourseName,d.teaname from tblstudent a,tblscore b,tblcourse
c,tblteacher d where a.stuid=b.stuid and b.courseid=c.courseid
and c.teaid=d.teaid group by b.courseid ;
+——————-+—————-+———-+
| AvgScore | CourseName | teaname |
+——————-+—————-+———-+
| 67.7 | 企业管理 | 叶平 |
| 79.14285714285714 | 马克思 | 赵志敬 |
| 71.375 | UML | 裘千仞 |
| 43.4 | 数据库 | 裘千尺 |
| 70 | 逻辑电路 | 裘千仞 |
| 56.4 | 英语 | 叶开 |
| 72.5 | 电子电路 | 独孤求败 |
| 92 | 毛泽东思想概论 | 孟星魂 |
| 24.5 | 西方哲学史 | 白展堂 |
| 79.25 | 线性代数 | 乔丹 |
| 53 | 计算机基础 | 吕轻侯 |
| 59.5 | AUTO CAD制图 | 花无缺 |
| 97 | 平面设计 | 佟湘玉 |
| 75 | Flash动漫 | 姚明 |
| 85 | Java开发 | 阿紫 |
| 76.66666666666667 | C#基础 | 叶平 |
+——————-+—————-+———-+
16 rows in set

mysql>

7、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

Select StuId,StuName From tblStudent st
Where (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And s1.CourseId=’001’)>0
And
(Select Count(*) From tblScore s2 Where s2.StuId=st.StuId And s2.CourseId=’002’)>0;

【执行情况】
mysql> Select StuId,StuName From tblStudent st
Where (Select Count(*) From tblScore s1 Where s1.StuId=st.StuId And s1.CourseId=’001’)>0
And
(Select Count(*) From tblScore s2 Where s2.StuId=st.StuId And s2.CourseId=’002’)>0;
+——-+———+
| StuId | StuName |
+——-+———+
| 1001 | 周芷若 |
| 1002 | 杨过 |
| 1004 | 小龙女 |
| 1009 | 韦小宝 |
| 1010 | 康敏 |
| 1013 | 郭靖 |
+——-+———+
6 rows in set

方法二:
【执行情况】
mysql> SELECT C.stuid,C.stuName from tblStudent C where C.stuid in (SELECT A.stuid from
tblScore A where A.CourseId=’001’) and C.stuid
in(SELECT b.stuid from tblScore b where b.CourseId=’002’);
+——-+———+
| stuid | stuName |
+——-+———+
| 1001 | 周芷若 |
| 1002 | 杨过 |
| 1004 | 小龙女 |
| 1009 | 韦小宝 |
| 1010 | 康敏 |
| 1013 | 郭靖 |
+——-+———+
6 rows in set

8、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;

Select StuId,StuName From tblStudent s1
Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId=’001’)>
(Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId=’002’);

【执行情况】
mysql> Select StuId,StuName From tblStudent s1
Where (Select Score From tblScore t1 Where t1.StuId=s1.stuId And t1.CourseId=’001’)>
(Select Score From tblScore t2 Where t2.StuId=s1.stuId And t2.CourseId=’002’);
+——-+———+
| StuId | StuName |
+——-+———+
| 1001 | 周芷若 |
| 1009 | 韦小宝 |
| 1010 | 康敏 |
+——-+———+
3 rows in set

mysql>

9、查询已经学完所有课程的同学的学号、姓名;

Select StuId,StuName From tblStudent st
Where (Select Count(*) From tblScore sc Where st.StuId=sc.StuId)=
(Select Count(*) From tblCourse)
【执行情况】 无结果
mysql> Select StuId,StuName From tblStudent st
Where (Select Count(*) From tblScore sc Where st.StuId=sc.StuId)=
(Select Count(*) From tblCourse);
Empty set

10、查询课程补考过的学生学号,课程号;[同一门课程成绩存在两次代表补考]

Select AcourseId,Astuid From tblStudent st,
(Select Count(*) as CountNum,courseId as AcourseId,stuid as Astuid From tblScore sc group by sc.courseId,stuid) A where st.stuid=A.Astuid and A.CountNum>1;

mysql> Select AcourseId,Astuid From tblStudent st,
(Select Count(*) as CountNum,courseId as AcourseId,stuid as Astuid From tblScore sc group by sc.courseId,stuid) A where st.stuid=A.Astuid and A.CountNum>1;
+———–+——–+
| AcourseId | Astuid |
+———–+——–+
| 009 | 1011 |
| 016 | 1013 |
+———–+——–+
2 rows in set

mysql>

11、查询所有同学的学号、姓名、选课数、总成绩;

mysql> Select StuId,StuName,
(Select Count(DISTINCT CourseId) From tblScore t1 Where t1.StuId=s1.StuId ) as SelCourses,
(Select Sum(Score) From tblScore t2 Where t2.StuId=s1.StuId ) as SumScore
From tblStudent s1;
+——-+———+————+———-+
| StuId | StuName | SelCourses | SumScore |
+——-+———+————+———-+
| 1000 | 张无忌 | 2 | 91 |
| 1001 | 周芷若 | 4 | 358 |
| 1002 | 杨过 | 6 | 419 |
| 1003 | 赵敏 | 6 | 356 |
| 1004 | 小龙女 | 4 | 302 |
| 1005 | 张三丰 | 1 | 23 |
| 1006 | 令狐冲 | 5 | 359 |
| 1007 | 任盈盈 | 4 | 328 |
| 1008 | 岳灵珊 | 5 | 342 |
| 1009 | 韦小宝 | 5 | 442 |
| 1010 | 康敏 | 3 | 273 |
| 1011 | 萧峰 | 1 | 49 |
| 1012 | 黄蓉 | 1 | 30 |
| 1013 | 郭靖 | 6 | 314 |
| 1014 | 周伯通 | 0 | NULL |
| 1015 | 瑛姑 | 0 | NULL |
| 1016 | 李秋水 | 0 | NULL |
| 1017 | 黄药师 | 0 | NULL |
| 1018 | 李莫愁 | 0 | NULL |
| 1019 | 冯默风 | 0 | NULL |
| 1020 | 王重阳 | 0 | NULL |
| 1021 | 郭襄 | 0 | NULL |
+——-+———+————+———-+
22 rows in set

12、创建一个查询视图,视图中包括学生学号,学生姓名,授课教师编号,教师姓名,课程编号,课程名称,成绩,查询出视图中的内容

create view tianmin_view as select a.stuid,a.stuname,d.teaid,d.teaname,c.Courseid,c.CourseName,b.score from tblstudent a,tblscore b,tblcourse
c,tblteacher d where a.stuid=b.stuid and b.courseid=c.courseid and c.teaid=d.teaid ;

mysql> select * from tianmin_view;
+——-+———+——-+———-+———-+—————-+——-+
| stuid | stuname | teaid | teaname | Courseid | CourseName | score |
+——-+———+——-+———-+———-+—————-+——-+
| 1001 | 周芷若 | 006 | 裘千仞 | 003 | UML | 90 |
| 1001 | 周芷若 | 008 | 赵志敬 | 002 | 马克思 | 87 |
| 1001 | 周芷若 | 002 | 叶平 | 001 | 企业管理 | 96 |
| 1001 | 周芷若 | 017 | 乔丹 | 010 | 线性代数 | 85 |
| 1002 | 杨过 | 006 | 裘千仞 | 003 | UML | 70 |
| 1002 | 杨过 | 008 | 赵志敬 | 002 | 马克思 | 87 |
| 1002 | 杨过 | 002 | 叶平 | 001 | 企业管理 | 42 |
| 1002 | 杨过 | 017 | 乔丹 | 010 | 线性代数 | 65 |
| 1003 | 赵敏 | 003 | 叶开 | 006 | 英语 | 78 |
| 1003 | 赵敏 | 006 | 裘千仞 | 003 | UML | 70 |
| 1003 | 赵敏 | 006 | 裘千仞 | 005 | 逻辑电路 | 70 |
| 1003 | 赵敏 | 002 | 叶平 | 001 | 企业管理 | 32 |
| 1003 | 赵敏 | 017 | 乔丹 | 010 | 线性代数 | 85 |
| 1003 | 赵敏 | 013 | 吕轻侯 | 011 | 计算机基础 | 21 |
| 1004 | 小龙女 | 005 | 独孤求败 | 007 | 电子电路 | 90 |
| 1004 | 小龙女 | 008 | 赵志敬 | 002 | 马克思 | 87 |
| 1005 | 张三丰 | 002 | 叶平 | 001 | 企业管理 | 23 |
| 1006 | 令狐冲 | 009 | 阿紫 | 015 | Java开发 | 85 |
| 1006 | 令狐冲 | 003 | 叶开 | 006 | 英语 | 46 |
| 1006 | 令狐冲 | 006 | 裘千仞 | 003 | UML | 59 |
| 1006 | 令狐冲 | 007 | 裘千尺 | 004 | 数据库 | 70 |
| 1006 | 令狐冲 | 002 | 叶平 | 001 | 企业管理 | 99 |
| 1007 | 任盈盈 | 013 | 吕轻侯 | 011 | 计算机基础 | 85 |
| 1007 | 任盈盈 | 003 | 叶开 | 006 | 英语 | 84 |
| 1007 | 任盈盈 | 006 | 裘千仞 | 003 | UML | 72 |
| 1007 | 任盈盈 | 008 | 赵志敬 | 002 | 马克思 | 87 |
| 1008 | 岳灵珊 | 002 | 叶平 | 001 | 企业管理 | 94 |
| 1008 | 岳灵珊 | 015 | 花无缺 | 012 | AUTO CAD制图 | 85 |
| 1008 | 岳灵珊 | 003 | 叶开 | 006 | 英语 | 32 |
| 1009 | 韦小宝 | 006 | 裘千仞 | 003 | UML | 90 |
| 1009 | 韦小宝 | 008 | 赵志敬 | 002 | 马克思 | 82 |
| 1009 | 韦小宝 | 002 | 叶平 | 001 | 企业管理 | 96 |
| 1009 | 韦小宝 | 017 | 乔丹 | 010 | 线性代数 | 82 |
| 1009 | 韦小宝 | 004 | 孟星魂 | 008 | 毛泽东思想概论 | 92 |
| 1010 | 康敏 | 006 | 裘千仞 | 003 | UML | 90 |
| 1010 | 康敏 | 008 | 赵志敬 | 002 | 马克思 | 87 |
| 1010 | 康敏 | 002 | 叶平 | 001 | 企业管理 | 96 |
| 1011 | 萧峰 | 012 | 白展堂 | 009 | 西方哲学史 | 24 |
| 1011 | 萧峰 | 012 | 白展堂 | 009 | 西方哲学史 | 25 |
| 1012 | 黄蓉 | 006 | 裘千仞 | 003 | UML | 30 |
| 1013 | 郭靖 | 008 | 赵志敬 | 002 | 马克思 | 37 |
| 1013 | 郭靖 | 002 | 叶平 | 001 | 企业管理 | 16 |
| 1013 | 郭靖 | 005 | 独孤求败 | 007 | 电子电路 | 55 |
| 1013 | 郭靖 | 003 | 叶开 | 006 | 英语 | 42 |
| 1013 | 郭靖 | 015 | 花无缺 | 012 | AUTO CAD制图 | 34 |
| 1000 | 张无忌 | 007 | 裘千尺 | 004 | 数据库 | 16 |
| 1002 | 杨过 | 007 | 裘千尺 | 004 | 数据库 | 55 |
| 1004 | 小龙女 | 007 | 裘千尺 | 004 | 数据库 | 42 |
| 1008 | 岳灵珊 | 007 | 裘千尺 | 004 | 数据库 | 34 |
| 1013 | 郭靖 | 002 | 叶平 | 016 | C#基础 | 86 |
| 1013 | 郭靖 | 002 | 叶平 | 016 | C#基础 | 44 |
| 1000 | 张无忌 | 001 | 姚明 | 014 | Flash动漫 | 75 |
| 1002 | 杨过 | 002 | 叶平 | 016 | C#基础 | 100 |
| 1004 | 小龙女 | 002 | 叶平 | 001 | 企业管理 | 83 |
| 1008 | 岳灵珊 | 011 | 佟湘玉 | 013 | 平面设计 | 97 |
+——-+———+——-+———-+———-+—————-+——-+
55 rows in set

mysql>

13、查出”周芷若”同学所有未选课程编号和课程名称

mysql> select X.Courseid ‘未选课程编号’,X.CourseName ‘未选课程名称’ from tblcourse X where Courseid not in(
select c.Courseid from tblstudent a,tblscore b,tblcourse
c where a.stuid=b.stuid and b.courseid=c.courseid and a.stuname=’周芷若’);
+————–+—————–+
| 未选课程编号 | 未选课程名称 |
+————–+—————–+
| 004 | 数据库 |
| 005 | 逻辑电路 |
| 006 | 英语 |
| 007 | 电子电路 |
| 008 | 毛泽东思想概论 |
| 009 | 西方哲学史 |
| 011 | 计算机基础 |
| 012 | AUTO CAD制图 |
| 013 | 平面设计 |
| 014 | Flash动漫 |
| 015 | Java开发 |
| 016 | C#基础 |
| 017 | Oracl数据库原理 |
+————–+—————–+
13 rows in set

14、查出和”周芷若”同学一起上过课的所有同学学号和姓名

实现思路通过名字查出学号,通过学号,查询出学生学习过的课程,
使用where in进行筛选学过这些课程的学生信息,去除重复值,去除‘周芷若’
mysql> select DISTINCT A.stuid,A.stuname from tblstudent A,tblscore B where B.courseid in(
select DISTINCT C.courseid from tblscore C where stuid=(select stuid from tblstudent
where stuname=’周芷若’)) and A.stuname!=’周芷若’;
+——-+———+
| stuid | stuname |
+——-+———+
| 1000 | 张无忌 |
| 1002 | 杨过 |
| 1003 | 赵敏 |
| 1004 | 小龙女 |
| 1005 | 张三丰 |
| 1006 | 令狐冲 |
| 1007 | 任盈盈 |
| 1008 | 岳灵珊 |
| 1009 | 韦小宝 |
| 1010 | 康敏 |
| 1011 | 萧峰 |
| 1012 | 黄蓉 |
| 1013 | 郭靖 |
| 1014 | 周伯通 |
| 1015 | 瑛姑 |
| 1016 | 李秋水 |
| 1017 | 黄药师 |
| 1018 | 李莫愁 |
| 1019 | 冯默风 |
| 1020 | 王重阳 |
| 1021 | 郭襄 |
+——-+———+

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Carrots_vegetables/article/details/80323225
个人分类: SQL
想对作者说点什么? 我来说一句

Sql高级查询练习题(有答案)

2014年09月21日 49KB 下载

没有更多推荐了,返回首页

不良信息举报

Mysql高级查询语句练习

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭