数据库实验二.docx
- 文档编号:12787581
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:13
- 大小:662.70KB
数据库实验二.docx
《数据库实验二.docx》由会员分享,可在线阅读,更多相关《数据库实验二.docx(13页珍藏版)》请在冰豆网上搜索。
数据库实验二
实验二数据的查询、更新
一、实验目的
1、掌握用户自定义数据类型的方法
2、掌握用T-SQL语句进行数据的插入、修改、删除的方法
3、熟练掌握SELECT语句,能够运用该语句完成各种查询
二、实验要求
1、实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;
2、能认真独立完成实训内容;
3、实验后做好实验总结,根据实验情况完成总结报告。
三、实验学时
4学时
四、实验内容
1、用T-SQL语句,创建一用户自定义数据类型:
名称为“char20”,数据类型为varchar,长度为20,允许为空。
提示:
sp_addtype[@typename=]用户自定义类型的名字
[,@phystype=]系统类型名
[,[@nulltype=]'notnull|null'][,[@owner=]'拥有该类型的用户名']
例:
自定义一个名为address的类型,其所属系统类型为varchar,长度为80,不能为空。
sp_addtypeaddress,'varchar(80)','notnull'
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,Teacher)其中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)查询全体学生的姓名,年龄及所在系(要用小写字母表示系名,并用“系名”来表示
列名)。
//lower()大写变小写;upper()小写变大写;
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分)的所有学生。
6.用T-SQL语句完成下面的查询
1)查询与“刘晨”在同一个系学习的学生
2)查询选修了课程名为“数学”的学生学号和姓名
3)查询其它系中比信息系中某一学生年龄小的学生姓名和年龄
4)查询其它系中比计算机系所有学生年龄都小的学生姓名及年龄
5)查询所有选修了2号课程的学生姓名
6)查询没有选修3号课程的学生姓名
7、用T-SQL语句完成下面的复杂查询
1)至少选修刘老师所授课程中一门课程的女学生姓名
2)检索王同学不学的课程的课程号
3)检索全部学生都选修的课程的课程号与课程名。
4)检索选修课程包含刘老师所授课的学生学号。
5)求选修课程号为2的学生的平均年龄。
6)求刘老师所授课程的每门课程的学生平均成绩。
7)检索学号比刘同学大,而年龄比他小的学生姓名。
8)求年龄大于女同学平均年龄的男同学姓名和年龄。
9)求年龄大于所有女同学年龄的男学生姓名和年龄。
10)检索每一门课程成绩都大于等于80分的学生学号、姓名和性别,并把检索到的值送往另一个已存在的基本表S(SNO,SNAME,SEX)。
11)把选课数学课不及格的成绩全改为空值。
12)把王同学的选课信息全部删去。
13)把低于总平均成绩的男同学成绩提高5%。
14)检索没有选修‘1’课程的学生学号和姓名
15)检索至少有一门课程超过学生‘95001’一门成绩的学生学号
16)向学生选修课程表中插入元组“学生95003选修课程1”。
17)求出女同学的每一年龄组(超过10人)有多少人?
要求查询结果按人数升序排列,人数相同的按年龄降序排列。
18)定义视图S_AVG,其中包括学生学号以及每个学生选修课程的门数(要求成绩非空)和平均成绩。
五、思考题
1、在创建基本表时是否可以缺省主码?
可以,在定义基本表时可以定义主码也可以先不定义主码
2、简述GROUPBY、COMPUTE、COMPUTEBY的
GROUPBY生成单个结果集。
COMPUTE生成多个结果集。
GROUPBY子句返回的结果集中只有合计数据,而没有原始的详细记录。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 实验