✅ 操作成功!

数据库实验

发布时间:2023-06-11 作者:admin 来源:文学

数据库实验

数据库实验

-

2023年3月4日发(作者:经典的轻音乐)

实验一数据库和表的建立

实验目的

1.掌握数据库和表的基础知识

2.掌握使用创建数据库和表的方法

3.掌握数据库和表的修改、查看、删除等基本操作方法

实验内容和要求

一、数据库的创建

在开始菜单中,启动SQlServer程序中的“SQLServerManagementStudio”,在对象资源

管理器窗口中,右键单击“数据库”,选择“新建数据库”,创建成绩管理数据库Grademanager,

要求如下表所示:

Grademanager数据库参数表

参数参数值参数参数值

存储的数据文件路

D:dbgrademanager_

f

存储的日志文件路

D:dbgrademanager_

f

数据文件初始大小5MB日志文件初始大小2MB

数据文件最大值

20MB

日志文件最大值

15MB

数据文件增长量原来10%日志文件增长量

2MB

二、表的创建、查看、修改和删除

1.表的创建

在Grademanager数据库中,右键单击“表”,选择“新建表”命令,创建如下表所示的表:

(1)Student表的表结构

字段名称数据类型长度精度小数位数

是否允许

Null值

说明

SnoChar1000

否学号,主码

SnameVarchar800

是姓名

SsexChar200

是性别,取值:男或女

SbirthdayDate800

是出生日期

SdeptChar1600

是系名

SpecialityVarchar2000

是专业名

特别注意:

为属性Ssex设置约束,需选中属性Ssex行,然后单击菜单中的“表设计器”,选择“CHECK

约束”命令,然后按照图1进行设置。

精选文档

2

图1设置性别的约束

(2)Course表(课程名称表)的表结构

字段名称数据类型长度精度小数位数是否允许Null值说明

CnoChar500

否课程号,主码

CnameVarchar2000

否课程名

(3)SC表(成绩表)的表结构

字段名称数据类型长度精度小数位数是否允许Null值说明

SnoChar1000

否学号,外码

CnoChar500

否课程号,外码

DegreeDecimal551

是成绩,0~100之间

特别注意:

①为属性Degree约束,可参照属性Ssex进行设置,“CHECK约束对话框”中的表达式为

Degree>=1AndDegree<=100

②为SC表设置外键Sno和Cno的方法:

右键单击表SC,选择“设计”命令,然后选择菜单“表设计器”中的“关系”命令,打

开“外键关系”窗口,选择“添加”按钮,然后单击“表和列规范”后的按钮,按照图2进行

设置,即可将SC表中的Cno属性设置为外键。按照相同的方法,将属性Sno也设置为外键。

精选文档

3

图2为SC表设置外键Cno

2.向上述表中输入如下数据记录

学生关系表Student(右键单击表Student,选择“编辑前200行”)

SnoSnameSsexSbirthdaySdeptSpeciality

20050101

李勇男

1987-01-12CS

计算机应用

20050201

刘晨女

1988-06-04IS

电子商务

20050301

王敏女

1989-12-23MA

数学

20050202

张立男

1988-08-25IS

电子商务

课程关系表Course成绩表SC

CnoCname

C01

数据库

C02

数学

C03

信息系统

C04

操作系统

3.修改表结构(找到操作的方法即可,不需要真正地修改表中的属性)

(1)向student表中增加“入学时间”列,其数据类型为日期型

(2)将student表中的sdept字段长度改为20

(3)将student表中的Speciality字段删除

思考题

1.SQLServer的数据库文件有几种?扩展名分别是什么?

2.如何实现数据库的备份和还原?

2.在定义基本表语句时,NOTNULL参数的作用是什么?

3.主码可以建立在“值可以为NULL”的列上吗?

SnoCnoDegree

20050101C0192

20050101C0285

20050101C0388

20050201C0290

20050201C0380

20050301C0191

20050301C0275

20050202C0187

精选文档

4

实验二单表查询

实验目的

1.掌握SELECT语句的基本用法

2.使用WHERE子句进行有条件的查询

3.掌握使用IN和NOTIN,BETWEEN…AND和NOTBETWEEN…AND来缩小查询范围的方法

4.掌握聚集函数的使用方法

5.利用LIKE子句实现字符串匹配查询

6.利用ORDERBY子句对查询结果排序

7.利用GROUPBY子句对查询结果分组

实验内容和要求

一、表结构修改

1.在实验一的所建立的数据库中增加Teacher表,结构如下:

字段名称数据类型长度精度小数位数是否允许Null值说明

TnoChar300

否教师号,主码

TnameVarchar800

是教师名

TsexChar200

是性别,取值:男或女

TbirthdayDate800

是出生日期

TdeptChar1600

是所在系

2.在实验一的所建立的数据库中增加Teaching表,表结构如下:

Teaching表(授课表)的表结构

字段名称数据类型长度精度小数位数是否允许Null值说明

CnoChar500

否课程号,外码

TnoChar300

否教师号,外码

CtermTinyint100

是1-8之间

3.向上述两表中输入如下数据记录

教师表Student授课表Teaching

TnoTnameTsexTbirthdayTdept

101

李新男

1977-01-12CS

102

钱军女

1968-06-04CS

201

王小花女

1979-12-23IS

202

张小青男

1968-08-25IS

二、完成下面查询

CnoTnoCterm

C011012

C021021

C032013

C042024

精选文档

5

1.查询所有男生信息

2.查询年龄大于24岁的女生学号和姓名

3.查询所有教师的Tname、Tdept

4.查询“电子商务”专业的学生姓名、性别和出生日期

5.查询成绩低于90分的学生学号及课号,并按成绩降序排列

6.查询Student表中所有的系名

7.查询“C01”课程的开课学期

8.查询成绩在80分至90之间的学生学号及课号

9.统计有学生选修的课程门数

10.查询成绩为77,88或99的记录

11.计算“C02”课程的平均成绩

12.输出有成绩的学生学号

13.查询所有姓“刘”的学生信息

14.统计输出各系学生的人数

15.查询选修了“C03”课程和学生的学号及其成绩,查询结果按分数的降序排列

16.查询各个课程号及相应的选课人数,并为选课人数取别名为“人数”

17.统计每门课程的选课人数和最高分,并为选课人数和最高分分别取别名为“人数”、“最高

分”

18.统计每个学生的选课门数和考试总成绩,并为选课门数和总成绩分别取别名为“门数”、

“总成绩”,并按选课门数降序排列。

思考题

1.聚集函数能否直接使用在:SELECT子句、HAVING子句、WHERE子句、GROUPBY子句中?

2.关键字ALL和DISTINCT有什么不同的含义?

3.SELECT语句中的通配符有几种?含义分别是什么?

4.利用BETWEEN…AND运算符表示数据的范围能否与其他方法表示?怎样表示?

精选文档

6

实验三多表查询及数据更新

实验目的

1.掌握SELECT语句在多表查询中的应用

2.掌握多表连接的几种连接方式及应用

3.掌握利用INSERT命令实现对表数据的插入操作

4.掌握利用UPDATE命令实现对表数据的修改操作

5.掌握利用DELETE命令实现对表数据的删除操作

实验内容和要求

一、连接查询

1.查询女学生的学生学号及总成绩

2.查询李勇同学所选的课程号及成绩

3.查询李新老师所授课程的课程名称

4.查询女教师所授课程的课程号及课程名称

5.查询姓“王”的学生所学的课程名称

6.查询选修“数据库”课程且成绩在80到90之间的学生学号及成绩

7.查询选修“C02”课程的学生的平均年龄

8.查询学习课程名为“数学”的学生学号和姓名

9.查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩

10.查询在第3学期所开课程的课程名称,选修其课程的学生学号和成绩

二、嵌套查询

1.查询至少选修两门课程的男学生姓名

2.查询与李勇同一个系的同学姓名;

3.查询学号比刘晨同学大,而年龄比他小的学生姓名

4.查询出生日期大于所有女同学出生日期的男同学的姓名及系别

5.查询成绩比该课程平均成绩高的学生的学号、课程号及成绩

6.查询不讲授“C01”课的教师姓名

7.查询没有选修“C02”课程的学生学号及姓名

8.查询选修了“数据库”课程的学生学号、姓名及系别

9.查询选修了全部课程的学生姓名

10.分别用子查询和连接查询,求“C02”号课程在80分以上的学生信息

三、数据更新

1.向Student表中插入记录('20050203','张静','女','1981-3-21','CS','电子商务')

2.插入学号为20050302,姓名为李四学生信息

3.把男学生记录保存到表TS中

精选文档

7

(提示:利用selectinto命令可备份数据库中的表

格式:select*into新表名from原表名

where子句;)

4.将学号为20050202的学生姓名改为张华,系别改为“CS”,专业改为“多媒体技术”

5.将20050201学生选修“C03”号课程的成绩改为该课的平均成绩

6.把女同学的成绩提高5%

7.把选修了“数据库”课程学生的成绩全改为空值(NULL)

8.删除学号为20050302的学生记录

9.把“刘晨”同学的选课记录全部删除

10.删除电子商务专业所有学生的选课记录

思考题

1.使用存在量词[NOT]EXISTS的嵌套查询时,何时外层查询的WHERE条件为真,何时为假?

2.DROP命令和DELETE命令的本质区别是什么?

3.利用INSERT、UPDATE和DELETE命令可以同时对多个表操作吗?

精选文档

8

实验四索引与视图的创建

实验目的

1.掌握索引的创建和使用

2.掌握视图的创建和删除

实验内容和要求

一、索引的创建与使用

1.用索引管理器创建SC表的索引IX_XS_KC。

(1)选择要创建索引的数据库文件夹,并在右边的对象窗口中选择并打开其中的“表”对象。

(2)选择所要创建索引的SC表,右键单击该表,在弹出的快捷菜单中选择“设计”命令,然

后在工具栏中单击“管理索引和键”按钮,打开“索引和键”窗口。

(3)单击其中的“添加”按钮,创建新的索引,并为其设置相应的属性。

为SC表创建一个基于“课程号”列和“成绩”列的索引IX_XS_KC,其中课程号列按升序

排列,成绩列按降序排列。设置完成后,如图3所示。

图3创建索引IX_XS_KC

2.强制使用刚才创建的索引查询数据。

在查询命令窗口中输入以下SQL查询命令并执行:

SELECTSNO,CNO,DEGREE

FROMSC

WITH(INDEX(IX_XS_KC))

WHEREDEGREE>=60

观察一下显示出来的数据是否有序。

3.利用SQL命令实现下列操作:

(1)为Student表创建一个名为S_dept的索引,以系别排序

(2)为Teacher表创建一个名为T_name的聚集索引,以Tname降序排序

精选文档

9

(3)删除S_dept索引

二、视图的创建与使用

1.创建一个简单视图view1,查询“计算机系”学生的信息

2.创建一个简单视图view2,统计每门课程的选课人数和最高分

3.创建一个复杂视图view3,查询与“张立”同学同一系别的学生信息

4.删除视图View3

思考题

1.使用索引为什么能提高查询速度?

2.索引经常被建立在哪些字段上?

3.聚集索引与其他索引有什么不同?

👁️ 阅读量:0