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 DESC;
8、以Cno升序、Degree降序查询Score表的所有记录。
-
SELECT * FROM SCORE
-
ORDER BY CNO,DEGREE DESC;
9、查询‘95031’班的学生人数。
-
SELECT COUNT(*) FROM STUDENT
-
WHERE CLASS='95031';
10、查询Score表中的最高分的学生学号和课程号。
-
SELECT SNO,CNO FROM SCORE
-
ORDER BY DEGREE DESC
-
LIMIT 1;
11、查询‘3-105’号课程的平均分。
-
SELECT AVG(DEGREE) FROM SCORE
-
WHERE CNO='3-105';
12、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
-
SELECT A.avg
-
FROM (SELECT CNO,AVG(DEGREE) as avg,COUNT(*) FROM SCORE
-
WHERE CNO LIKE '3%'
-
GROUP BY CNO
-
HAVING COUNT(*) > 5) AS A;
13、查询最低分大于70,最高分小于90的Sno列。
-
SELECT SNO FROM SCORE
-
GROUP BY SNO
-
HAVING MAX(DEGREE)<90 AND MIN(DEGREE)>70;
14、查询所有学生的Sname、Cno和Degree列。
-
SELECT A.SNAME,B.CNO,B.DEGREE
-
FROM STUDENT A INNER JOIN SCORE B
-
ON A.SNO=B.SNO;
15、查询所有学生的Sno、Cname和Degree列。
-
SELECT B.SNO,A.CNAME,B.DEGREE
-
FROM COURSE A INNER JOIN SCORE B
-
ON A.CNO=B.CNO;
16、查询所有学生的Sname、Cname和Degree列。
-
SELECT A.SNAME,B.CNAME,C.DEGREE
-
FROM STUDENT A INNER JOIN COURSE B INNER JOIN SCORE C
-
ON A.SNO=C.SNO AND B.CNO=C.CNO;
17、查询‘95033’班所选课程的平均分。
-
SELECT AVG(DEGREE)
-
FROM STUDENT A INNER JOIN SCORE B
-
ON A.SNO=B.SNO
-
WHERE CLASS='95033';
18、假设使用如下命令建立一个grade表。
查询所有同学的Sno、Cno和rank列。
-
SELECT SNO,CNO,RANK
-
FROM SCORE A,GRADE B
-
WHERE DEGREE BETWEEN B.LOW AND B.UPP;
19、查询选修‘3-105’课程的成绩高于‘109’号同学成绩的所有同学的记录。
-
SELECT A.*
-
FROM SCORE A JOIN SCORE B
-
WHERE A.CNO='3-105' AND A.DEGREE>B.DEGREE AND B.SNO=109 AND B.CNO='3-105' ;
-
SELECT A.*,B.DEGREE,CNO
-
FROM STUDENT A INNER JOIN SCORE B
-
ON A.SNO=B.SNO
-
WHERE CNO='3-105'
-
AND DEGREE > (SELECT B.DEGREE
-
FROM STUDENT A INNER JOIN SCORE B
-
ON A.SNO=B.SNO
-
WHERE A.SNO=109 AND B.CNO='3-105');
20、查询score中选学一门以上课程的同学中分数为非最高分成绩的记录。
-
SELECT * FROM SCORE
-
WHERE DEGREE < (SELECT MAX(DEGREE) FROM SCORE)
-
GROUP BY SNO
-
HAVING COUNT(SNO)>1
-
ORDER BY DEGREE ;
21、查询成绩高于学号为109,课程号为3-105的成绩的所有记录。
-
SELECT * FROM SCORE
-
WHERE DEGREE > (SELECT DEGREE FROM SCORE WHERE SNO=109 AND CNO='3-105');
自联接方法得到相同的结果。
-
SELECT A.*
-
FROM SCORE A JOIN SCORE B
-
WHERE A.DEGREE > B.DEGREE AND B.SNO=109 AND B.CNO='3-105';
22、查询和学号为105的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
-
SELECT SNO,SNAME,SBIRTHDAY FROM STUDENT
-
WHERE YEAR(SBIRTHDAY) =
-
(SELECT YEAR(SBIRTHDAY) FROM STUDENT
-
WHERE SNO='105');
23、查询张旭教师任课的学生成绩。
-
SELECT C.CNAME,T.TNAME,S.DEGREE
-
FROM COURSE C INNER JOIN TEACHER T INNER JOIN SCORE S
-
ON C.TNO=T.TNO AND C.CNO=S.CNO
-
WHERE T.TNAME='张旭';
24、查询选修某课程的同学人数多于5人的教师姓名。
-
SELECT T.TNAME
-
FROM COURSE C INNER JOIN TEACHER T INNER JOIN SCORE S
-
ON C.TNO=T.TNO AND C.CNO=S.CNO
-
GROUP BY S.CNO
-
HAVING COUNT(*) > 5;
25、查询95033班和95031班全体学生的记录。
-
SELECT * FROM STUDENT
-
WHERE CLASS IN (95033,95031);
26、查询存在有85分以上成绩的课程Cno。
-
SELECT DISTINCT C.CNAME,C.CNO
-
FROM COURSE C INNER JOIN SCORE S
-
ON C.CNO=S.CNO
-
WHERE S.DEGREE > 85;
27、查询出计算机系教师所教课程的成绩表。
-
SELECT T.DEPART,TNAME,C.CNAME,S.DEGREE
-
FROM COURSE C INNER JOIN SCORE S INNER JOIN TEACHER T
-
ON C.CNO=S.CNO AND C.TNO=T.TNO
-
WHERE T.DEPART='计算机系';
28、查询计算机系教师职称中与电子工程系职称不同的教师的Tname和Prof。
-
SELECT DEPART,TNAME,PROF FROM TEACHER
-
WHERE DEPART='计算机系'
-
AND PROF NOT IN
-
(SELECT PROF FROM TEACHER WHERE DEPART='电子工程系');
29、查询选修编号为3-105课程且成绩至少高于选修编号为3-245的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
-
SELECT * FROM SCORE
-
WHERE CNO='3-105' AND DEGREE >
-
ANY(SELECT DEGREE FROM SCORE WHERE CNO='3-245')
-
ORDER BY DEGREE DESC;
30、查询选修编号为3-105且成绩高于选修编号为3-245课程的同学的Cno、Sno和Degree。
-
SELECT CNO,SNO,DEGREE FROM SCORE
-
WHERE CNO='3-105' AND DEGREE > (SELECT MAX(DEGREE) FROM SCORE WHERE CNO='3-245')
-
ORDER BY DEGREE DESC;
31、查询所有教师和同学的name、sex、和birthday。
-
SELECT SNAME name,SSEX sex,SBIRTHDAY birthday
-
FROM STUDENT
-
UNION
-
SELECT TNAME,TSEX,TBIRTHDAY
-
FROM TEACHER;
32、查询所有女教师和女同学的name、sex和birthday。
-
SELECT SNAME name,SSEX sex,SBIRTHDAY birthday
-
FROM STUDENT
-
WHERE SSEX='女'
-
UNION
-
SELECT TNAME,TSEX,TBIRTHDAY
-
FROM TEACHER
-
WHERE TSEX='女';
33、查询成绩比该课程平均成绩低的同学的成绩表。
-
SELECT A.SNO,DEGREE,B.AVG
-
FROM SCORE A INNER JOIN (SELECT CNO,AVG(DEGREE) AVG FROM SCORE
-
GROUP BY CNO) B
-
ON A.CNO=B.CNO
-
WHERE A.DEGREE < B.AVG;
34、查询所有任课老师的Tname和Depart。
-
SELECT TNAME,DEPART
-
FROM TEACHER T INNER JOIN COURSE C
-
WHERE T.TNO=C.TNO;
35、查询所有未讲课的教师的Tname和Depart。
SELECT TNAME,DEPART
FROM TEACHER
WHERE TNO NOT IN (SELECT TNO FROM COURSE);
36、查询至少有2名男生的班号。
-
SELECT SSEX,CLASS,COUNT(*) FROM STUDENT
-
GROUP BY CLASS,SSEX
-
HAVING COUNT(SSEX='男') > 2;
37、查询Student表中不姓王的同学记录。
-
SELECT * FROM STUDENT
-
WHERE SNAME NOT LIKE '王%';
38、查询STUDENT表中每个学生的姓名和年龄。
-
select sname,timestampdiff(year,sbirthday,curdate()) age
-
from student;
39、查询Student表中最大和最小的Sbirthday日期值。
-
select sname,sbirthday as THEMAX from student
-
where sbirthday =(select min(SBIRTHDAY) from student)
-
union
-
select sname,sbirthday as THEMIN from student
-
where sbirthday =(select max(SBIRTHDAY) from student);
SELECT MAX(SBIRTHDAY),MIN(SBIRTHDAY) FROM STUDENT;
40、以班号和年龄从大到小的顺序查询Student表中的全部记录。
-
SELECT CLASS,TIMESTAMPDIFF(YEAR,SBIRTHDAY,CURDATE()) AS YEAR FROM STUDENT
-
ORDER BY CLASS DESC,SBIRTHDAY;
41、查询男教师及其所上的课程。
-
SELECT T.*,C.CNAME
-
FROM TEACHER T INNER JOIN COURSE C
-
ON T.TNO = C.TNO
-
WHERE TSEX='男';
42、查询最高分同学的SNO、CNO和DEGREE列。
-
SELECT SNO,CNO,DEGREE
-
FROM SCORE
-
ORDER BY DEGREE DESC
-
LIMIT 1;
43、查询和李军同性别的所有同学的Sname。
-
SELECT SNAME FROM STUDENT
-
WHERE SSEX= (SELECT SSEX FROM STUDENT WHERE SNAME='李军');
44、查询和李军同性别且同班同学的SNAME。
-
SELECT SNAME FROM STUDENT
-
WHERE SSEX = (SELECT SSEX FROM STUDENT WHERE SNAME='李军')
-
AND CLASS = (SELECT CLASS FROM STUDENT WHERE SNAME='李军');
45、查询所有选修计算机导论课程的男同学的成绩表。
-
SELECT C.*
-
FROM STUDENT A INNER JOIN COURSE B INNER JOIN SCORE C
-
ON A.SNO=C.SNO AND B.CNO=C.CNO
-
WHERE A.SSEX='男' AND B.CNAME='计算机导论';