数据库实验二.docx

上传人:b****1 文档编号:12787581 上传时间:2023-04-22 格式:DOCX 页数:13 大小:662.70KB
下载 相关 举报
数据库实验二.docx_第1页
第1页 / 共13页
数据库实验二.docx_第2页
第2页 / 共13页
数据库实验二.docx_第3页
第3页 / 共13页
数据库实验二.docx_第4页
第4页 / 共13页
数据库实验二.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据库实验二.docx

《数据库实验二.docx》由会员分享,可在线阅读,更多相关《数据库实验二.docx(13页珍藏版)》请在冰豆网上搜索。

数据库实验二.docx

数据库实验二

实验二数据的查询、更新

一、实验目的

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子句返回的结果集中只有合计数据,而没有原始的详细记录。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1