-- select * from teacher;
-- select * from student;
-- SELECT * from score;
-- select * from course;
-- 1、 查询Student表中的所有记录的Sname、Ssex和Class列。
SELECT sname,ssex,class FROM student ;
-- 2、 查询教师所有的单位即不重复的Depart列。
SELECT DISTINCT depart FROM teacher;
--
-- 3、 查询Student表的所有记录。
SELECT * FROM student ;
-- 4、 查询Score表中成绩在60到80之间的所有记录。
SELECT * FROM score WHERE degree BETWEEN 60 AND 80;
-- 5、 查询Score表中成绩为85,86或88的记录。
SELECT * FROM score WHERE degree in (85,86,88);
--
-- 6、 查询Student表中“95031”班或性别为“女”的同学记录。
--
SELECT * FROM student WHERE class =95031 or ssex ='女';
-- 7、 以Class降序查询Student表的所有记录。
--
SELECT * FROM student ORDER BY class asc;
-- 8、 以Cno升序、Degree降序查询Score表的所有记录。
--
SELECT * FROM score ORDER BY cno ASC,degree DESC;
-- 9、 查询“95031”班的学生人数。
--
SELECT class,COUNT(sno) FROM student WHERE class=95031;
-- 10、查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
--
SELECT sno,cno,degree FROM score ORDER BY degree DESC LIMIT 1;
-- 11、 查询每门课的平均成绩。
--
SELECT cno,AVG(degree) FROM score GROUP BY cno
-- 12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
--
SELECT cno,AVG(degree),COUNT(sno)
FROM score
WHERE cno LIKE '3%'
GROUP BY cno HAVING COUNT(sno) >5;
-- 13、查询分数大于70,小于90的Sno列。
--
SELECT sno FROM score WHERE degree >70;
-- 14、查询所有学生的Sname、Cno和Degree列。
--
SELECT sname ,cno,Degree FROM student LEFT JOIN score ON student.sno=score.sno;
-- 15、查询所有学生的Sno、Cname和Degree列。
--
SELECT score.sno,Cname,Degree FROM
score
LEFT JOIN course ON score.cno=course.cno
-- 16、查询所有学生的Sname、Cname和Degree列。
--
SELECT sname,Cname,Degree FROM student
LEFT JOIN score ON student.sno=score.sno
LEFT JOIN course ON score.cno=course.cno;
-- 17、查询“95033”班学生的平均分。
--
SELECT class,avg(degree) FROM student LEFT JOIN score on student.sno=score.sno
WHERE class =95033;
-- 19、查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
SELECT * FROM score WHERE cno='3-105' AND degree>109;
--
-- 21、查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
--
SELECT *FROM score WHERE sno=109 and cno='3-105';
-- 22、查询和学号为108、101的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
--
SELECT Sno,Sname,Sbirthday,YEAR(Sbirthday) FROM student
WHERE sno in ('108','101') AND YEAR(Sbirthday) in
(SELECT if(a.sno=student.sno,null,YEAR(sbirthday)) FROM student as a WHERE sno in ('108','101') );
-- 23、查询“张旭“教师任课的学生成绩。
--
SELECT * FROM score WHERE cno=
(SELECT cno FROM course WHERE tno=
(SELECT tno FROM teacher WHERE tname ='张旭'));
-- 24、查询选修某课程的同学人数多于5人的教师姓名。
--
SELECT cno,COUNT(sno) as 数量 FROM score GROUP BY cno HAVING 数量>5;
-- 25、查询95033班和95031班全体学生的记录。
SELECT * FROM student WHERE class in (95033,95031);
--
-- 26、 查询存在有85分以上成绩的课程Cno。
--
SELECT DISTINCT cno FROM score WHERE degree>85;
-- 27、查询出“计算机系“教师所教课程的成绩表。
--
SELECT tname,cname FROM teacher LEFT JOIN course ON teacher.tno=course.tno WHERE depart ='计算机系';
-- 28、查询“计算 机系”与“电子工程系“不同职称的教师的Tname和Prof。
--
SELECT tname,prof FROM teacher WHERE depart in('计算机系','电子工程系') GROUP BY prof HAVING COUNT(prof)=1;
-- 29、查询选修编号为“ 3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
--
SELECT * FROM score
WHERE
(SELECT min(degree) FROM score as a WHERE cno='3-105' and a.sno=score.sno)>=
(SELECT min(degree) FROM score as a WHERE cno='3-245' and a.sno=score.sno)
GROUP BY sno,cno
ORDER BY degree DESC;
-- 30、查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree。
--
SELECT * FROM score
WHERE
(SELECT min(degree) FROM score as a WHERE cno='3-105' and a.sno=score.sno)>
(SELECT min(degree) FROM score as a WHERE cno='3-245' and a.sno=score.sno)
GROUP BY sno,cno
ORDER BY degree DESC;
-- 31、 查询所有教师和同学的name、sex和birthday。
SELECT tname,tsex,tbirthday,'老师' 称呼 FROM teacher UNION
SELECT sname,ssex,sbirthday,'学生' FROM student;
--
-- 32、查询所有“女”教师和“女”同学的name、sex和birthday。
--
SELECT tname,tsex,tbirthday,'老师' 称呼 FROM teacher WHERE tsex='女' UNION
SELECT sname,ssex,sbirthday,'学生' FROM student WHERE ssex='女';
-- 33、 查询成绩比该课程平均成绩低的同学的成绩表。
--
SELECT *,(SELECT avg(degree) FROM score as a WHERE a.cno=score.cno GROUP BY cno ) as 平均分
FROM score GROUP BY sno,cno HAVING degree<
(SELECT avg(degree) FROM score as a WHERE a.cno=score.cno GROUP BY cno );
-- 34、 查询所有任课教师的Tname和Depart。
--
SELECT tname,depart FROM teacher ;
-- 35 、查询所有未讲课的教师的Tname和Depart。
--
SELECT tname,depart FROM teacher LEFT JOIN course on teacher.tno=course.tno WHERE cno not in
(SELECT cno FROM score) ;
-- 36、查询至少有2名男生的班号。
--
SELECT class FROM student WHERE ssex ='男' GROUP BY class HAVING COUNT(sno)>=2;
-- 37、查询Student表中不姓“王”的同学记录。
--
SELECT * FROM student WHERE sname not LIKE '王%' ;
-- 38、查询Student表中每个学生的姓名和年龄。
--
SELECT sname,TIMESTAMPDIFF(YEAR,sbirthday,NOW() )FROM student ;
-- ??? 39、查询Student表中最大和最小的Sbirthday日期值。
--
SELECT Sbirthday FROM student WHERE UNIX_TIMESTAMP(Sbirthday)=
(SELECT max(UNIX_TIMESTAMP(Sbirthday))FROM student) or
UNIX_TIMESTAMP(Sbirthday)=
(SELECT min(UNIX_TIMESTAMP(Sbirthday))FROM student);
-- 40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
--
SELECT class,sname,TIMESTAMPDIFF(YEAR,sbirthday,NOW() ) as 年龄 FROM student GROUP BY class,年龄 DESC ;
-- 41、查询“男”教师及其所上的课程。
--
SELECT tname,cname FROM teacher LEFT JOIN course on teacher.tno=course.tno WHERE tsex='男' ;
-- 42、查询最高分同学的Sno、Cno和Degree列。
--
SELECT sno,Cno,Degree FROM score ORDER BY DESC LIMIT 1;
-- 43、查询和“李军”同性别的所有同学的Sname。
SELECT sname FROM student WHERE ssex=
(SELECT ssex FROM student WHERE sname='李军') AND sname !='李军';
--
-- 44、查询和“李军”同性别并同班的同学Sname。
--
SELECT sname FROM student WHERE ssex=
(SELECT ssex FROM student WHERE sname='李军')
AND sname !='李军'
AND class =(SELECT class FROM student WHERE sname='李军');
-- 45、查询所有选修“计算机导论”课程的“男”同学的成绩表。
--
SELECT course.* FROM student LEFT JOIN score on student.sno=score.sno LEFT JOIN course on score.cno= course.cno
WHERE ssex='男' AND cname='计算机导论' ;
--
-- 46、查询选修了所有男生所选的全部课程的女生的学号和姓名。
--
--
(SELECT student.sno,COUNT(cno) FROM student LEFT JOIN score on student.sno=score.sno WHERE ssex='女' GROUP BY student.sno)
SELECT student.sno,sname FROM student LEFT JOIN score on student.sno=score.sno where ssex='女' and cno in
(SELECT score.cno FROM student LEFT JOIN score on student.sno=score.sno
WHERE ssex='男')
--
-- 47、查询选课人数最多的课程号和课程名(包含并列);
--
--
-- 48.列出同时选修“1”号课程和“2”号课程的所有学生的姓名;
--
--
--
-- 49.. 查出和”周芷若”同学一起上过课的所有同学学号和姓名
--
-- 50. 查出”周芷若”同学所有未选课程编号和课程名称
--
-- 51. 查询课程补考过的学生学号,课程号;[同一门课程成绩存在两次代表补考]
--
-- 52. 查询已经学完所有课程的同学的学号、姓名;
--
-- select * from dept
-- select * from emp
--
-- 1.列出所有员工的姓名及其直接上级的姓名。 因为是查询所有员工,所以要用左连接,不能用内连接
--
-- 2.列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。
--
-- 3 列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。
--
-- 4. 列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级。
--
-- 5.列出与庞统从事相同工作的所有员工及部门名称。
--
-- 6.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。
--
-- 7.列出每个部门的员工数量、平均工资。
sql 07
猜你喜欢
转载自blog.csdn.net/Captain_DUDU/article/details/103489758
今日推荐
周排行