实验二 数据的查询、更新
一、实验目的
1、掌握用户自定义数据类型的方法
2、掌握用T-SQL语句进行数据的插入、修改、删除的方法
3、熟练掌握SELECT语句,能够运用该语句完成各种查询
二、实验要求
1、实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;
2、能认真独立完成实训内容;
3、实验后做好实验总结,根据实验情况完成总结报告。
三、实验内容
1、用T-SQL语句,创建一用户自定义数据类型:名称为“char20”,数据类型为varchar,长度为20,允许为空。
提示:sp_addtype [@typename=]用户自定义类型的名字
[, @phystype=]系统类型名
[, [@nulltype=] ' not null | null '] [, [@owner=] '拥有该类型的用户名 ']
例:自定义一个名为address的类型,其所属系统类型为varchar,长度为80,不能为空。
sp_addtype address,' varchar(80)', ' not null '
2、用T-SQL语句,建立一个“学生课程数据库”,在此基础上建立该数据库包含的学生表,课程表,学生选修表,并向各表插入如下相应的数据。
学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 其中Sno 为主键、Ssex取值为男或女、Sage在15到30之间:
Sno |
Sname |
Ssex |
Sage |
Sdept |
95001 |
李敏勇 |
男 |
20 |
CS |
95002 |
刘晨 |
女 |
19 |
IS |
95003 |
王敏 |
女 |
18 |
MA |
95004 |
张立 |
男 |
18 |
IS |
课程表:Course(Cno,Cname,Cpno,Credeit,remarks) 其中Cno为主键、Teacher的类型为char20即为用户定义的数据类型;
Cno |
Cname |
Cpno |
Credit |
Teacher |
1 |
数据库 |
5 |
4 |
王芳 |
2 |
数学 |
NULL |
2 |
刘新 |
3 |
信息系统 |
1 |
4 |
刘新 |
4 |
操作系统 |
6 |
3 |
高升 |
5 |
数据结构 |
7 |
4 |
宋明 |
6 |
数据处理 |
NULL |
2 |
张彬 |
7 |
Pascal语言 |
6 |
4 |
李磊 |
学生选修表:SC(Sno,Cno,Grade) 其中Sno,Cno为主键同时又为外键、Grade值在0到100;
Sno |
Cno |
Grade |
95001 |
1 |
92 |
95001 |
2 |
85 |
95001 |
3 |
88 |
95002 |
2 |
90 |
95003 |
2 |
55 |
95004 |
2 |
70 |
3、用T-SQL语句,修改上面所建学生课程数据库中数据:
1) 向学生表:Student中加入一条记录:(95030,谢非,男,22,CS)并保存
2) 将李敏勇的数据库的成绩改为98分
3) 删除学生表Student中谢非的记录并保存
4) 能不能从Student表中删除李敏勇学生的记录,为什么?能不能删除王敏, 张立两个学生的记录?
4、用T-SQL语句,完成下面简单的查询
1)查询全体学生的学号、姓名及年龄.
2)查询全体学生的姓名, 年龄及所在系(要用小写字母表示系名,并用“系名”来表示
列名)。
3)查询选修了课程的学生学号
4)查询信息系全体学生的姓名
5)查询所有年龄在20岁以下的学生姓名及其年龄
6)查询年龄在20到18间的学生的姓名,系别及年龄
7)查询年龄不在23到19间的学生的姓名,系别及年龄
8)查询不是信息系(IS)和计算机系(CS)学生的姓名和性别
9)查询所有姓刘的学生的姓名,学号和性别
10)查询姓“张”且名为一个汉字的学生的姓名
11)查询名字中第2个字为”敏”字的学生姓名和学号
12)查询所有不姓刘的学生姓名
13)查询全体学生情况,结果按所在系升序排列,同一系中的学生按年龄降序
14)查询学生表中所有学生信息,要求只显示前10%行数据
15)按成绩降序查询输出SC表中成绩大于等于70分的所有学生的学号,要求只显示前2
行数据,若第3行后的数据也等于70分也要显示。
16)查询每个学生的学号、课程号及分数,同时统计每个学生的总分
17)查询每个学生的各科分数、最高分、最低分、总分、平均分
5、用T-SQL语句完成下面的查询
1)查询学生的总人数
2)查询选修了课程的学生人数
3)计算选2号课程的学生平均成绩
4)查询选修2号课程的学生最高分数
5)求各个课程号及相应的选课人数
6)查询选修了2门以上的课程的学生学号
7)查询每个学生及其选修课程的情况
8)查询每一门课的间接先修课(即先修课的先修课
)
9)查询选修2号课程且成绩在90分以上(包括90分)的所有学生。