数据库查询练习题1.doc
文本预览下载声明
数据库练习题
一、用你的姓名的全拼新建一个数据库,用create语句在数据库中建立以下三张表
学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)
列名 数据类型 长度 备注 Sno char 11 设为关键字 Sname char 20 Ssex char 2 其值只能为“男”或“女”,默认值为“男” Sage smallint Sdept char 20 允许为空
列名 数据类型 长度 备注 Cno char 4 设为关键字 CName char 20 Cpno char 4 外码参照cno即foreign key (Cpno) references course(cno) Ccredit smallint 10
列名 数据类型 长度 备注 Sno char 11 设为主码,外键引用,参照Student中的字段Sno Cno char 4 设为主码,外键引用,参照Course中的字段Cno Grade smallint (正确)
二、仿照下面的格式用insert语句给三张表添加数据,要求学生表和选课表的记录至少要达到25条记录以上,课程表至少达到10条以上记录,可用本班级的学生姓名和所学课程为基本数据。(出错时请认真理解实体完整性、参照完整性、用户自定义的完整性)
学 号
Sno 姓名
Sname 性别
Ssex 年龄
Sage 所 在 系
Sdept 200215121
200215122
200215123
200515125 李勇
刘晨
王敏
张立 男
女
女
男 20
19
18
19 CS
CS
MA
IS
课程号
Cno 课程名
Cname 先行课
Cpno 学分
Ccredit 1 数据库 5 4 2 数学 2 3 信息系统 1 4 4 操作系统 6 3 5 数据结构 7 4 6 数据处理 2 7 PASCAL语言 6 4
学 号
Sno 课程号
Cno 成绩
Grade 200215121
200215121
200215121
200215122
200215122 1
2
3
2
3 92
85
88
90
80
三、用SQL语句完成下列单表查询
1、查询全体学生的学号与姓名。
2、查询全体学生的姓名、学号、所在系。
3、查询全体学生的详细记录。
4、查全体学生的姓名及其出生年份。(表达式)
5、查询全体学生的姓名、出生年份和所有系,要求用小写字母表示所有系名;改变查询结果的列标题:使用列别名“姓名”替换Sname,“出生年份”作为所计算的列名。
6、查询选修了课程的学生学号(即有选修记录)。
7、查询计算机科学系全体学生的名单。
8、查询所有年龄在20岁以下的学生姓名及其年龄。
9、查询考试成绩有不及格的学生的学号。
10、查询年龄在18~22岁(包括18岁和22岁)之间的学生的姓名、系别和年龄
11、查询年龄不在20~23岁之间的学生姓名、系别和年龄
12、查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
13、查询既不是信息系、数学系,也不是计算机科学系的学生的姓名和性别。
14、查询学号为09102040203的学生的详细情况。
15、查询所有姓“张”学生的姓名、学号和性别。
16、查询姓“李”且全名为三个汉字的学生的姓名。
17、查询名字中第2个字为“丽”字的学生的姓名和学号。
18、查询所有不姓“陈”的学生姓名。
19、查询DB_Design课程的课程号和学分。
20、查询以DB_开头,且倒数第3个字符为 i的课程的详细情况。
SELECT * FROM Course WHERE Cname LIKE DB\_%i__ ESCAPE 其中ESCAPE \ 表示“ \” 为换码字符
21、某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。查询缺少成绩的学生的学号和相应的课程号。
22、查所有有成绩的学生学号和课程号。
23、查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
24、查询全体学生情况,查询结果按所在系号升序排列,同一系中的学生按年龄降序排列。
25、查询学生总人数。SELECT COUNT(*) FROM Student;
26、查询选修了数学课程的学生人数。
27、计算1号课程的学生平均成绩。
28、查询选修1号课程的学生最高分数。
29、查询学号为200215121的学生选修课程的总学分数。
显示全部