简单oracle语句练习

为什么80%的码农都做不了架构师?>>>简单oracle语句练习
文章图片

XUANKE表
CNOSNOGRADE
C019512101100
C02951210186
C069512101NULL
C02951210278
C04952110166
C01951210292
C02952110275
C04951210292
C02952110368
C069512103NULL
C01951210190
C05951210195
C05952110285
XUESHENG表
SNOSNAMESSEXSAGESDEPT
9512101李さん男19文学
9512102汪さん男20文学
9512103王さん女20文学
9521101張さん男20芸術
9521102中村さん女21芸術
9521103高村さん男20芸術
9531101鷹村さん女18体育
9531102村田さん男19体育
KECHENG表
CNOCNAMEHOURS
C01计算机文学70
C02VB90
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子句必须用到聚集函数,否则会报错。
以上です。
【简单oracle语句练习】转载于:https://my.oschina.net/wdpp/blog/752768

    推荐阅读