🎯 问题及答案:
1.查看学生全部信息。
SELECT sno,sname,age,sex
FROM S;
或.SELECT * FROM S;
2.查询全部学生的学号和姓名。
SELECT sno,sname
FROM S
3.查询学生学号、姓名和出生年份。
SELECT sno,sname,2019-age as 出生年份
FROM S ;
4.查询选修了课程的学生学号
SELECT DISTINCT sno
FROM SC;
5、查询女学生的学号、姓名和年龄。
SELECT sno,sname,age
FROM S
WHERE sex=‘女’;
6.查询所有年龄大于19岁的女生的姓名和学号。
SELECT sname,sno
FROM S
WHERE age>19 and sex=‘女’;
7.查询学生学号、姓名和出生年份,并按出生年份的升序排列,出生年份相同时,按学号的降序排列。
SELECT sno,sname,2019-age as 出生年份
FROM S
ORDER BY 生出年份 ,sno desc
8.查询所有姓王的学生的全部信息。
SELECT *
FROM S
WHERE sname LIKE ‘王%’;
9.查询学号第二位是1的所有学生姓名。
SELECT sname
FROM S
WHERE sno LIKE ‘_1%’
10.查询课程名为“DB_DE”的课程号。
SELECT cno
FROM C
WHERE cname LIKE ‘DB/_DE’ ESCAPE ‘/’;
11.查询选修了课程但没参加考试的学生的学号。
SELECT sno
FROM SC
WHERE grade IS NULL;
12.查询所有有成绩的学生学号和课程号
SELECT sno,cno
FROM SC
WHERE grade IS NOT NULL;
13.查询所有年龄在17到18岁之间的学生的学号和姓名。
SELECT sno,sname
FROM S
WHERE age >=17 and age <=18
或者
SELECT sno,sname
FROM S
WHERE age BETWEEN 17 and 18
14.查询所有年龄不在17到18岁之间的学生的学号和姓名。
SELECT sno,sname
FROM S
WHERE age<17 or age>18
或者
SELECT sno,sname
FROM S
WHERE age NOT BETWEEN 17 and 18
15.查询选修了课程号c1或c2的学生的学号。
SELECT sno
FROM SC
WHERE cno=‘c1’ or cno=‘c2’
或者
SELECT sno
FROM SC
WHERE cno IN (‘c1’, ‘c2’);
16.查询年龄不是17岁和18岁的学生的学号
SELECT sno
FROM S
WHERE age!=17 and age!=18 或者
SELECT sno
FROM S
WHERE age NOT IN (17, 18);
17.求c2课程的平均成绩。
SELECT AVG(grade)
FROM SC
WHERE cno=‘c2’
18.求男同学的总人数和平均年龄。
SELECT COUNT(*), avg(age)
FROM S
WHERE sex=‘男’;
19.统计选修了课程的学生人数。
SELECT COUNT ( distinct sno )
FROM SC;
20.求选修课程c2的学生的最高分和最低分。
SELECT MAX(grade) as 最高分, MIN(grade)as 最低分
FROM SC
WHERE cno=‘c2’;
21.求每个同学平均分。
SELECT AVG(grade) as 平均分
FROM SC
GROUP BY sno;
22.查询平均分在80以上的同学的平均分。
SELECT sno,AVG(grade)
FROM SC
GROUP BY sno
HAVING AVG(grade)>80;
23.查询至少选修两门课程的学生学号。
SELECT sno
FROM SC
GROUP BY sno
HAVING COUNT(cno)>=2;
24.查询有一门课程成绩等于95分的学号、姓名、课程号和成绩。
SELECT S.sno,sname,cno,grade
FROM S, SC
WHERE S.sno=SC.sno and grade=95
25.查询女学生的学号、姓名、成绩。
SELECT S.sno,sname,grade
FROM S, SC
WHERE S.sno=SC.sno and sex=’女’;
26.找出平均成绩80以上的女生姓名。
SELECT sname
FROM S, SC
WHERE S.sno=SC.sno and sex=’女’
GROUP BY sname
HAVING AVG(grade)>80 ;
27.求刘正老师所授的每门课程的课程号、课程名和学生平均成绩。
SELECT C.cno,cname,AVG(grade)
FROM C, SC
WHERE C.cno=SC.cno and tname=’刘正’
GROUP BY C.cno,cname
28检索至少选修两门课程的学生姓名。(采用连接查询)
SELECT sname
FROM SC,S
WHERE SC.sno=S. sno
GROUP BY sname
HAVING COUNT(cno)>=2;
29.查询选修c2或c3课程的学生学号和姓名。
SELECT distinct S.sno,sname
FROM S, SC
WHERE S.sno=SC.sno and ( cno=‘c2’or cno=‘c3’);
30.查询选修c2和c3课程的学生学号。
SELECT X.sno
FROM SC as X,SC as Y
WHERE X.sno=Y.sno and X.cno=‘c2’and Y.cno=‘c3’ ;
31.查询选修了课程’c1’并且选修课程在三门以上的同学学号。
SELECT X.sno
FROM SC X, SC Y
WHERE X.sno=Y.sno and X.cno='c1'
GROUP BY X.sno
HAVING COUNT ( Y.cno )>2
32.检索至少选修两门课程的学生姓名。(采用自身连接查询)
SELECT sname
FROM SC X, SC Y, S
WHERE X.sno=Y.sno AND X.sno=S.sno
AND X.cno<>Y.cno;