XUANKE表
CNO SNO GRADE
C01 9512101 100
C02 9512101 86
C06 9512101 NULL
C02 9512102 78
C04 9521101 66
C01 9512102 92
C02 9521102 75
C04 9512102 92
C02 9521103 68
C06 9512103 NULL
C01 9512101 90
C05 9512101 95
C05 9521102 85
XUESHENG表
SNO SNAME SSEX SAGE SDEPT
9512101 李さん 男 19 文学
9512102 汪さん 男 20 文学
9512103 王さん 女 20 文学
9521101 張さん 男 20 芸術
9521102 中村さん 女 21 芸術
9521103 高村さん 男 20 芸術
9531101 鷹村さん 女 18 体育
9531102 村田さん 男 19 体育
KECHENG表
CNO CNAME HOURS
C01 计算机文学 70
C02 VB 90
C03 计算机网络 80
C04 数据库基础 108
C05 高等数学 180
C06 数据结构 72
1.分别查询学生表和学生修课表中的全部数据。
2.查询成绩在70到80分之间的学生的学号、课程号和成绩。
3.查询C01号课程成绩最高的分数
4.查询学生都选修了哪些课程,要求列出课程号。
5.查询修了C02号课程的所有学生的平均成绩、最高成绩和最低成绩。
6.统计每个系的学生人数。
7.统计每门课程的修课人数和考试最高分。
8.统计每个学生的选课门数,并按选课门数的递增顺序显示结果。
9.统计选修课的学生总数和考试的平均成绩。
10.查询选课门数超过2门的学生的平均成绩和选课门数。
11.列出总成绩超过200分的学生,要求列出学号、总成绩。
12.查询选修了c02号课程的学生的姓名和所在系。
13.查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩的降序排列结果。
14.查询计算机系男生修了"数据库基础"的学生的姓名、性别、成绩。
15.查询哪些学生的年龄相同,要求列出年龄相同的学生的姓名和年龄。
16.查询哪些课程没有人选,要求列出课程号和课程名。
17.查询有考试成绩的所有学生的姓名、修课名称及考试成绩
18.分别查询信息系和计算机系的学生的姓名、性别、修课名称、修课成绩,
19.用子查询实现如下查询:
1.查询选修了C01号课程的学生的姓名和所在系。
2.查询数学系成绩80分以上的学生的学号、姓名。
3.查询计算机系学生所选的课程名.
20.删除修课成绩小于50分的学生的修课记录
21.将所有选修了"c01"课程的学生的成绩加10分。
1.SELECT *
FROM XUESHENG;
SELECT *
FROM XUANKE;
2.SELECT SNO,CNO,GRADE
FROM XUANKE
WHERE GRADE BETWEEN 70 AND 80;
3.SELECT MAX(GRADE)
FROM XUANKE
WHERE CNO='C01';
4.SELECT DISTINCT (K.CNO),X.SNO
FROM KECHENG K,XUANKE X
WHERE K.CNO=X.CNO;
5.SELECT MAX(GRADE) MAX,MIN(GRADE) MIN,AVG(GRADE) AVG
FROM XUANKE
WHERE CNO='C02';
6.SELECT SDEPT,COUNT(*) NUMBERS
FROM XUESHENG
GROUP BY SDEPT;
7.SELECT XUANKE.CNO,COUNT(*) NUMBERS,MAX(GRADE) CHENGJI
FROM XUANKE
GROUP BY XUANKE.CNO
ORDER BY CNO;
8.SELECT SNO,COUNT(CNO) NUMBERS
FROM XUANKE
GROUP BY SNO
ORDER BY (COUNT(CNO));
9.SELECT CNO,COUNT(DISTINCT SNO),AVG(GRADE)
FROM XUANKE
GROUP BY CNO;
10.SELECT SNO,AVG(GRADE),COUNT(CNO)
FROM XUANKE
GROUP BY SNO
HAVING COUNT(CNO)>2;
11.SELECT SNO,SUM(GRADE)
FROM XUANKE
GROUP BY SNO
HAVING SUM(GRADE)>200;
12.SELECT SNAME,SDEPT
FROM XUANKE,XUESHENG
WHERE XUANKE.SNO=XUESHENG.SNO
AND XUANKE.CNO='C02';
13.SELECT SNAME,CNO,GRADE
FROM XUANKE,XUESHENG
WHERE XUANKE.SNO=XUESHENG.SNO
AND XUANKE.GRADE>'80'
ORDER BY GRADE DESC;
14.SELECT SNAME,SSEX,GRADE
FROM XUESHENG,KECHENG,XUANKE
WHERE XUANKE.CNO=KECHENG.CNO
AND XUANKE.SNO=XUESHENG.SNO
AND KECHENG.CNAME='数据库基础';
15.SELECT T.SNAME,T.SAGE
FROM XUESHENG T
WHERE SAGE IN
(SELECT S.SAGE
FROM XUESHENG S
GROUP BY S.SAGE
HAVING COUNT(SAGE)>1);
或:
SELECT T.SNAME,T.SAGE
FROM XUESHENG T,XUESHENG S
WHERE T.SAGE=S.SAGE
GROUP BY T.SNAME,T.SAGE
HAVING COUNT(S.SAGE)>1;
16.SELECT CNO,CNAME
FROM KECHENG
WHERE NOT CNO IN
(SELECT CNO
FROM XUANKE);
17.SELECT SNAME,CNAME,GRADE,COUNT(GRADE)
FROM KECHENG,XUANKE,XUESHENG
WHERE XUANKE.SNO=XUESHENG.SNO
AND XUANKE.CNO=KECHENG.CNO
GROUP BY SNAME,CNAME,GRADE
HAVING NOT COUNT(GRADE)=0;
18.SELECT SNAME,SSEX,CNAME,GRADE
FROM XUESHENG,KECHENG,XUANKE
WHERE SDEPT IN('文学','芸術')
AND XUANKE.SNO=XUESHENG.SNO
AND XUANKE.CNO=KECHENG.CNO
GROUP BY SNAME,SSEX,CNAME,GRADE;
19.
1.SELECT SNAME,SDEPT
FROM XUESHENG
WHERE SNO IN
(SELECT SNO
FROM XUANKE
WHERE CNO='C01');
2.SELECT SNO,SNAME
FROM XUESHENG
WHERE SNO IN
(SELECT SNO
FROM XUANKE
WHERE GRADE>80);
3.SELECT CNAME
FROM KECHENG
WHERE CNO IN
(SELECT CNO
FROM XUANKE
WHERE SNO IN
(SELECT SNO
FROM XUESHENG
WHERE SDEPT='文学'));
20.DELETE FROM XUANKE
WHERE GRADE<60;
21.UPDATE XUANKE
SET GRADE=GRADE+10
WHERE CNO='C01';
小结:
sql语句的写法思路
1.找到所需字段所在的表
2.关联各表
3.去除重复
*4.在select语句中,只有group by子句中用到的字段不加聚集函数,其他字段必须用到聚集函数;having子句必须用到聚集函数,否则会报错。
以上です。