sql 07

-- 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.列出每个部门的员工数量、平均工资。

发布了70 篇原创文章 · 获赞 14 · 访问量 2625

猜你喜欢

转载自blog.csdn.net/Captain_DUDU/article/details/103489758