SQL查询语句练习

基于数据表基于第一次分享的SQL语句联系 点击跳转

Snum Sname Ssex Sage Sphone Dname
S001 王明 19 86824571 数学系
S002 李勇 23 89454321 物理系
S003 刘燕 21 计算机系
S004 王萍 23 电子系
S005 王佳 24 13098765892 计算机系
S006 赵婷 20 物理系

学生表S

Snum Cnum Score
S001 C1 83
S001 C2 89
S001 C3 NULL
S001 C4 85
S001 C5 69
S002 C3 78
S002 C4 75
S003 C1 85
S004 C2 NULL
S005 C1 92
S005 C3 76

选课表SC

Cnum Cname Cfreq
C1 数据库系统原理 4
C2 C程序设计 4
C3 计算机体系结构 3
C4 自动控制原理 2
C5 数据结构 4

课程表C

下面是题目的分享:

1. 简单查询操作。

1)求数学系学生的学号和姓名。

2)求选修了课程的学生学号。

3)求选修课程号为‘C1’的学生号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。

4)求选修课程号为‘C1’且成绩在80~90之间的学生学号和成绩,成绩乘以0.8输出。

5)求数学系或计算机系姓王的学生的信息。

6)求缺少了成绩的学生的学号和课程号。

7)查询有选课记录的所有学生的学号,用DISTINCT限制结果中学号不重复。

2. 连接查询操作。

1)查询每个学生的情况以及他所选修的课程。

2)求学生的学号、姓名、选修的课程及成绩。

3)求选修课程号为‘C1’且成绩在90以上的学生学号、姓名和成绩。

解题步骤如下,为个人代码,均成功测试过,仅供参考

--(1)
SELECT Snum,Sname FROM 学生 WHERE Dname = '数学系'

--(2)
SELECT Snum FROM 学生 WHERE Snum IN (SELECT Snum FROM 选课)

--(3)
SELECT Snum,Score FROM 选课 WHERE Cnum = 'C1' ORDER BY Score DESC, Snum;

--(4)
SELECT Snum,Score*0.8 as Score FROM 选课 WHERE Cnum = 'C1' AND Score Between 80 AND 90;

--(5)
SELECT Snum,Sname,Ssex,Sage,Sphone,Dname FROM 学生 
WHERE Sname Like '王%' AND Dname IN ('数学系','计算机系')

--(6)
SELECT Snum,Cnum FROM 选课 WHERE Score IS NULL

--(7)
SELECT DISTINCT Snum FROM 选课

--(1)
SELECT 学生.Snum,学生.Sname,学生.Ssex,学生.Sage,学生.Sphone,学生.Dname,课程.Cname 
FROM 学生 LEFT JOIN 选课 on 学生.Snum = 选课.Snum LEFT JOIN 课程 ON 课程.Cnum = 选课.Cnum

--(2)
SELECT 学生.Snum,学生.Sname,课程.Cname,选课.Score
FROM 学生 join 选课 on 学生.Snum = 选课.Snum join 课程 ON 课程.Cnum = 选课.Cnum

--(3)
SELECT 学生.Snum,学生.Sname,选课.Score
FROM 学生 join 选课 on 学生.Snum = 选课.Snum 
WHERE 选课.Cnum = 'C1' AND 选课.Score>= 90
posted @ 2021-04-12 22:21  代码的边城  阅读(293)  评论(0编辑  收藏  举报