admin 管理员组

文章数量: 887021


2024年1月18日发(作者:llvm语言)

利用学生选课数据库进行SQL查询。

学生{学号,姓名,性别,系别,年龄}

课程{课程号,课程名,学分}

学生选课{学号,课程号,成绩 }

查询条件及相应的SQL语句如下:

(1)查询全体学生的姓名、学号。

SELECT学号, 姓名FROM 学生;

(2)查询所有选修过课的学生的学号。

SELECT DISTINCT 学号FROM 学生选课;

(3)查询年龄在19到22之间的学生姓名、系别和年龄。

SELECT 姓名, 系别, 年龄FROM 学生WHERE 年龄 BETWEEN 19 AND 23;

年龄 > 19 and 年龄 < 23

谓词BETWEEN„AND„ 和NOT BETWEEN „ AND„可以查找属性值在(或不在)指定范围内的元组。

(4)查询出成绩为80、85、87的记录。

SELECT * FROM 学生选课 WHERE 成绩 IN(80,85,87);

成绩=80 or成绩=85 or成绩=87

谓词IN可以用来查找属性值属于指定集合的元组。

(5)查询第二个字为“艳”的学生的姓名和系别。

SELECT 姓名,系别FROM 学生WHERE 姓名 LIKE ‘_艳%’;

谓词LIKE可以用来进行字符串的匹配。其中%代表任意长的的字符串,_代表任意单个字符。

(6)查询所有学生的姓名、选修的课程名及成绩。

SELECT 学生.姓名, 课程.课程名, 学生选课.成绩

From 学生 join学生选课 on 学生.学号 = 学生选课.学号

join 课程 on学生选课.课程号 = 课程.课程号

SELECT 学生.姓名, 课程.课程名, 学生选课.成绩

From 学生, 学生选课, 课程

Where 学生.学号 = 学生选课.学号 and 学生选课.课程号 = 课程.课程号

此查询为复合条件查询。

(7)查询选修了“数据库系统原理”课程的学生姓名。

SELECT 姓名FROM 学生

WHERE 学号 IN (SELECT 学号 FROM 学生选课

WHERE 课程号 IN (SELECT 课程号 FROM 学生选课

WHERE 课程名=’数据库系统原理’));

SELECT 姓名

Where 学生.学号 = 学生选课.学号 and 学生选课.课程号 = 课程.课程号

And课程名=’数据库系统原理’

此查询为嵌套查询。子查询在上一级查询处理之前找出,即嵌套查询是从里向外进行的,这样,外查询可以用内查询的结果,在此例中,首先在“课程”中找出“数据库系统原理”课程的课程号“课程号”;然后在“学生选课”中找出“课程号”等于第一步给出的“课程号”集合中元素的“学生号”;最后在“学生”中选出符合条件的“姓名”放入结果列表。


本文标签: 学生 课程 查询 选课 姓名