数据库原理及应用实验指导书Word格式文档下载.docx
《数据库原理及应用实验指导书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《数据库原理及应用实验指导书Word格式文档下载.docx(30页珍藏版)》请在冰豆网上搜索。
varchar(100)
SC(选课)
sno
主键(同时都是外键)
grade
成绩
在SQLServer2000的数据库中,文件夹是按数据库对象的类型建立的,文件夹名是该数据库对象名。
当在企业管理器中选择服务器和数据库文件夹,并打开己定义好的学生选课数据库后。
会发现它自动设置了关系图、表、视图、存储过程、用户、角色、规则、默认等文件夹。
要建立“student”表,先选中学生选课数据库中的表文件夹,单击鼠标右键,在弹出的菜单中选择“新建表”,随后的输入表结构对话框。
输入表结构对话框是一张表,它的列属性有列名、数据类型、长度和是否允许空4项。
用户把新建表的结构填入对话框的表中,表中的每一行定义新建表(Course)的一列,每一列定义新建表的一个列属性。
当光标移到表中的某一行时,下面的列描述就会对应当前行显示输入项,用户可在其中对关系的属性进行进一步说明。
列描述包括数据的精度、小数位数、默认值、是否标识等项。
(2)使用T-SQL语句建立student,course,SC三个表
CreateTablestudent
(
snovarchar(20)primarykey,
Snamevarchar(50)notnull,
Ageint,
Sexchar
(2),
Deptvarchar(50)
);
Createtablecourse
cnovarchar(20)primarykey,
Cnamevarchar(50)notnull,
Creditfloatnotnull,
Pcnovarchar(20)notnull,
Describevarchar(100)notnull
CreatetableSC
snovarchar(20),
Cnovarchar(20),
Gradefloat,
primarykey(sno,cno),
foreignkey(sno)REFERENCESstudent(sno),
foreignkey(cno)REFERENCEScourse(cno)
5.定义表的完整性约束和索引
表的约束包括码(主键)约束、外键约束(关联或关系约束)、惟一性约束、Check(检查)约束4种。
这些约束可以在表属性对话框中定义。
(l)定义索引和键
选择“索引/键”页面,其界面如图10所示。
l)查看、修改或删除索引时,先要在“选定的索引”下拉列表框中选择索引名,其索引内容就显示在表中。
需要时,可以直接在表中修改索引内容。
如改变索引列名、改变排序方法等。
对于不需要的索引可以单击“删除”按钮,直接删除此索引。
2)新建一个索引时,单击“新建”按钮,并在下面的表中输入索引名、索引列名及排列顺序;
3)设置UNIQUE复选框,确定是否为惟一索引约束。
设置CLUSTERED复选框,确定是否为群集索引(CLUSTERED)。
(2)定义表间关联
选择表页面,其界面如图12所示。
l)查看、修改或删除表关联时,先要在“选定的关系”下拉列表框中选择关联名(即关系名),其关联内容就显示在表中。
需要时,可以直接在表中修改关联内容,例如改变主键、改变外键键等。
对于不需要的关联可以单击“删除”按钮,直接删除此关联。
2)新建一个关联时,单击“新建”按钮,选择库中的关联表(参照表)后,在表中输入关联名、主键和外键。
3)设置“创建中检查现存数据”复选框,确定新建关联时是否对数据进行检查,要求符合外键约束;
设置“对复制强制关系”复选框。
确定在进行数据复制时是否要符合外键约束:
设置“对INSERT和UPDATE强制关系”复选框,确认在对数据插入和更新时,是否符合外键约束:
设置“级联更新相关的字段”复选框和“级联删除相关的记录”复选框,确认被参照关系的主键位被修改时,是否也将参照表中的对应的外键值修改,而被参照关系的上码值被删除时,是否也将参照表中对应外键的记录删除。
(3)定义CHECK约束
选择CHECK约束页面。
其界面如图13所示。
图12表属性对话框中的表关联页面图13表属性对话框中的约束页面
1)查看、修改或删除CHECK约束时,先要在“选定的约束”下拉列表框中选择约束名,其约束内容就显示在约束表达式框中。
需要时,可以直接在框中修改约束表达式。
对于不需要的CHECK约束可以按“删除”按钮,直接删除此约束。
2)新建一个CHECK约束时,单击“新建”按钮,并在表中输入约束名和约束表达式。
3)设置“创建中检查现存数据”,确认在创建约束时是否对表中数据进行检查,要求符合约束要求;
设置“对复制强制约束”复合框,确认对数据复制时是否要求符合约束条件;
设置“对INSERT和UPDATE强制约束”,确认在进行数据插入和数据修改时,是否要求符合约束条件。
6.修改表结构
(1)使用企业管理器修改表结构
当需要对建好的表修改结构时,首先要在企业管理器中找到该表,用鼠标右击该表名,就会弹出一个菜单,如图14所示。
随后,在弹出的菜单中选择“设计表”项,企业管理器会调出如图9所示的建表对话框,用户可对原有内容进行修改。
图14在弹出菜单中选择“设计表”项
(2)使用T-SQL语句修改表结构
可以使用Alter语句增加、删除或修改字段信息。
例如为学生表中增年龄字段增加约束,限制年龄至少要15岁:
ALTERTABLEstudentADDCONSTRAINTAGECHECK(AGE>
15)
例如在学生表中增加班集字段为字符型,长度为50:
ALTERTABLEstudentADDClassvarchar(50)NULL
例如修改学生表中的班集字段的长度为20:
AlterTablestudentALTERCOLUMNClassvarchar(20)
例如删除学生表中的班集字段:
ALTERTABLEstudentDROPCOLUMNClass
四、注意事项
1.建表中如果出现错误,应采用相应的修改结构或删除结构的方法。
2.注意数据库的主键、外键和数据约束的定义。
五、思考题
1.数据库中一般不允许更改主键数据。
如果需要更改主键数据时,怎样处理?
2.为什么不能随意删除被参照表中的主键。
实验三数据库的建立和维护实验
本实验需要2学时。
一、实验目的
要求学生熟练掌握使用Transact-SQL和SQLServer企业管理器向数据库输入数据、修改数据和删除数据的操作。
二、实验内容
(1)通过企业管理器,在数据库的student、course和SC三个表中各输入10条记录。
要求记录不仅满足数据约束要求,还要有表间关联的记录。
(2)通过企业管理器实现对学生选课数据库的student、course和SC三个表中数据的插入、删除和修改操作。
(3)通过企业管理器实现对学生选课库的数据增加、数据删除和数据修改操作。
要求学生、课程和选课表中各有10条以上的记录。
sname
sex
dept
001101
张林
18
男
计算机系
001102
程明
001103
王艳
19
女
001104
严平平
20
001201
王敏
数学系
001202
王林
001203
李计
21
001204
孙祥欣
17
001205
孙研
001206
孙小
Credit
1310101
计算机基础
5
可自学
1310102
C++程序设计
4
1310206
离散数学
1310208
数据结构
1310209
操作系统
1310210
微机原理
1310212
数据库原理
1310301
计算机网络
3
1310302
软件工程
1310211
图形学
Grade
88
76
62
70
91
84
95
78
三、实验步骤
(1)使用企业管理器更新数据
在MicrosoftSQLserver2000的企业管理器中,对表进行数据增、删、改操作非常简便。
其操作方法是:
1)选中服务器,展开数据库文件夹,进一步展开指定的数据库。
单击表文件夹,找到需要更新数据的基本表。
2)用鼠标右击要更新数据的表,会出现与表相关操作的弹出菜单,如图15所示。
在弹出菜单中选择“打开表”→“返回所有行”。
图15基本表的弹出菜单
在该对话框中,数据以表格形式组织,每个字段就是表中的一列,每条记录是表中的一行。
原有的记录已经在表格中,通过移动右边的滑块可查阅所有的记录。
3)需要数据插入时,就在最后一条记录后输入一条记录。
当鼠标点击其他行时,输入的记录会自动保存在表中。
4)需要修改记录时,直接对表中已有记录的数据进行改动,用新值替换原有值。
5)需要删除记录时,先用鼠标单击要删除行的左边灰色方块,使该记录成为当前行,然后按(Delete)键。
为了防止误操作,SQLserver2000将弹出一个警告框,要求用户确认删除操作,单击“确认”按钮即可删除记录,也可通过先选中一行或多行记录,然后再按(Delete)键的方法一次删除多条记录。
(2)使用T-SQL语句更新数据
请给每个学生选修三门课,在期未时给每门课一个成绩。
如张林同学选修了计算机基础这门课,期未的考试成绩为95分,SQL语句如下:
InsertintoSC(sno,cno)values('
001101'
'
1310101'
)
UpdateSCsetgrade=95wheresno='
andcno='
1.输入数据时要注意数据类型、主键和数据约束的限制。
2.数据更改和数据删除时要注意外键约束。
1.数据库中一般不允许更改主键数据。
2.为什么不能随意删除被参照表中的主键。
实验四数据库的简单查询和连接查询实验
使学生掌握SQLServer查询分析器的使用方法,加深对Transact-SQL语言的查询语句的理解。
熟练掌握简单表的数据查询、数据排序和数据联结查询的操作方法。
1.简单查询操作
该实验包括投影、选择条件表达、数据排序、使用临时表等。
2.连接查询操作
该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
(1)简单查询实验
1)用Transact-SQL语句表示下列操作,在学生选课库中实现其数据查询操作:
①求数学系学生的学号和姓名。
②求选修了课程的学生学号。
③求选修课程号为1310101的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
④求选修课程号为1310101的成绩在80-90分之间的学生学号和成绩,并将成绩乘以系数0.8输出。
⑤求数学系或计算机系姓张的学生的信息。
⑥求缺少了成绩的学生的学号和课程号。
(2)连接查询实验
用Transact-SQL语句表示,并在学生选课库中实现下列数据连接查询操作:
①查询每个学生的情况以及他(她)所选修的课程。
②求学生的学号、姓名、选修的课程名及成绩。
③求选修离散数学课程且成绩为90分以上的学生学号、姓名及成绩。
④查询每一门课的间接先行课(即先行课的先行课)。
1.查询结果的几种处理方式。
2.内连接、左外部连接和右外部连接的含义及表达方法。
3.输入SQL语句时应注意,语句中均使用西文操作符号。
1.如何提高数据查询和连接速度。
2.对于常用的查询形式或查询结果,怎样处理好?
实验五数据库的嵌套查询实验
使学生进一步掌握SQLServer查询分析器的使用方法,加深Transact-SQL语言的嵌套查询语句的理解。
在SQLServer查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。
用Transact-SQL语句表示,在学生选课库中实现其数据嵌套查询操作。
(l)求选修了离散数学的学生学号和姓名。
SELECTS#,SNAME
FROMS
WHERES#IN(SELECTS#
FROMSC
WHEREC#IN(SELECTC#
FROMC
WHERECNAME=‘离散数学’
(2)求1310101课程的成绩高于张林的学生学号和成绩。
(3)求其他系中年龄小于计算机系年龄最大者的学生。
(4)求其他系中比计算机系学生年龄都小的学生。
(5)求选修了1310206课程的学生姓名。
SELECTSNAME
WHEREC#=‘1310206’
(6)求没有选修1310206课程的学生姓名。
WHERES#NOTIN(SELECTS#
(7)查询选修了全部课程的学生的姓名。
答案:
selectsname
Fromstudent
Wherenotexists
(select*
Fromcourse
Fromsc
Wheresno=student.snoandcno=o))
(8)求至少选修了学号为“001103”的学生所选修的全部课程的学生学号和姓名。
selectsno,sname
Wheresnoin
(selectscx.sno
Fromscscx
Fromscscy
Wherescy.sno=’001103’andnotexists
Fromscscz
Wherescz.sno=scx.snoando=o)))
1.输入SQL语句时应注意,语句中均使用西文操作符号。
2.语句的层次嵌套关系和括号的配对使用问题。
试用多种形式表示实验中的查询语句,并进行比较。
实验六数据库的组合查询和统计查询实验
使学生熟练掌握SQLServer查询分析器的使用方法,加深对Transact-SQL语言的查询语句的理解。
熟练掌握数据查询中的分组、统计、计算和组合的操作方法。
1.分组查询实验。
该实验包括分组条件表达、选择组条件的表达方法。
2.使用函数查询的实验。
该实验包括统计函数和分组统计函数的使用方法。
3.组合查询实验。
4.计算和分组计算查询的实验。
在学生课程数据库中实现其查询操作
(1)查找选修“计算机基础”课程的学生成绩比此课程的平均成绩大的学生学号,成绩。
(2)求选修计算机基础课程的学生的平均成绩。
(3)列出各系学生的总人数,并按人数进行降序排列。
(4)统计各系各门课程的平均成绩。
(5)查询选修计算机基础和离散数学的学生学号和平均成绩。
1.子句WHERE(条件)表示元组筛选条件,子句HAVING(条件)表示组选择条件。
2.组合查询的子句间不能有语句结束符。
3.子句HAVING(条件)必须和CROUPBY(分组字段)子句配合使用。
1.组合查询语句是否可以用其他语句代替,有什么不同?
2.使用GROUPBBY(分组条件)子句后,语句中的统计函数的运行结果有什么不同?
实验七数据库的视图和图表的定义及使用实验
使学生掌握SQLServer中的视图创建向导和图表创建向导的使用方法,加深对视图和SQLserver图表作用的理解。
1.创建、查看、修改和删除视图。
2.创建、编辑和删除数据库图表。
1.创建视图
根据学生选课数据库中已经建立了student、course和SC三个表,结构如下:
student(sno,sname,age,sex,dept);
course(cno,cname,credit,pcno,describe);
SC(sno,cno,grade)。
如果要在上述3个表的基础上建立一个视图,取名为SC_VIEW;
其操作用SQL语句表示为:
CREATEVIEWSC_VIEW
ASSELECTSTUDENT.*,COURSE.*,SC.GRADE
FROMSTUDENT,COURSE,SC
WHERESTUDENT.SNO=SC.SNOANDCOURSE.CNO=SC.CNO
下面利用SQLServer中提供的视图创建向导,来创建SC_VIEW视图。
1)打开企业管理器窗口,确认服务器,打开数据库文件夹,选中新视图所在的数据库。
2)选择菜单“工具”→“向导”,如图18所示。
3)在如图19所示的向导选择对话框中,单击数据库左边的“+”号,使之展开。
选择“创建视图向导”项,单击“确定”按钮。
4)进入创建视图向导后,首先出现的是欢迎进入创建视图向导对话框,其中简单介绍了该向导的功能,如图20所示。
单击“下一步”按钮后,就会出现如图21所示的选择“数据库名称”对话框。
图18选择向导工具选项
图19在向导对话框中选择视图向导
图20欢迎进入创建视图向导对话框图21选择数据库名称对话框
5)在“选择数据库名称”对话框中,选择视图所属的数据库。
本例的数据库为“学生选课”;
单击“下一步”按钮,则进入如图22所示的选择表对话框。
6)在选择表对话框中,列出了指定数据库中所有用户定义的表和视图。
用户可以从中选择构造视图所需的一个表或多个表(或视图),被选中的表成为构造视图的参考表。
选择构造视图参考表的方法是:
用鼠标单击表名后的“包含在视图中”列,使义选框为选中状态。
本例的数据库中的3个表都应当被选中。
单击“下一步”按钮,则进入选择列对话框,如图23所示。
7)列选择对话框中以表格形式列出了创建视图参考表的全部属性,每个属性占表的一行。
创建视图的参考属性可以在表格中选出。
选择视图参考属性的方法是用鼠标单击属性名后边的“选择列”,使其复选框为选中状态。
单击“下一步”按钮,进入创建视图的定义限制对话框,如图24所示。
8)在定义限制对话框中,输入表的连接和元组选择条件。
本例应输入“WHERESTUDENT.SNO=SC.SNOANDCOURSE.CNO=SC.CNO”。
图22创建视图向导的选择表对话框图23创建视图向导的选择列对话框
图24创建视图的定义限制对话框图25定义视图名称对话框
单击“下一步”按钮后,出现视图名对话框,如图25所示。
9)在输入视图名对话框中输入所建视图的标识名。
本例的视图名为“SC_VIEW”。
单击“下一步”按钮,则出现如图26所示的视图创建完成对话框。
图26创建视图向导的完成对话框
在完成对话框中给出了根据前面对话框输入的内容译成的SQL语句。
读者可以认真阅读该SQL语句,如果发现与要求有不符合之处则可以直接进行修改。
确认无误后单击“完成”按钮。
随后出现一个通知用户已成功创建视图的信息框,单击“确认”按钮后,整个创建视图工作就完成了。
2.查看和修改视图
视图创建好后,就可以利用它进行查询信息了。
如果发现视图的结构不能很好地满足要求,还可以在企业管理器对它进行修改。
(1)操作步骤
l)在企业管理器中,选择服务器、数据库,并使数据库展开,然后用鼠标右击要修改结构的视图,会弹出视图功能菜单,如图27所示。
图27视图的功能弹菜单
2)在弹出的菜单上选择“设计视图”项,则弹出一个视图设计对话框,如图28所示。
图中列出了视图结构的详细内容,当对其修改完毕后关闭窗口,新的视图结构就会取代原先的结构。
图28视图设计对话框
图28中的视图设计对话框分为4个区域:
图表区、表格区、SQL语言区和结果区,各区域的作用如下:
(2)视图设计对话中各区域的作用
l)图表区。
图表区域与数据库图表很相似,它图形化地显示了视图中的表以及表之间的关联。
在图表区中,可以添加或去掉视图所基于的表,也可以添加或去掉视图所包含的表列。
2)表格区。
表格区用表格显示视图所有的表列。
在表格区中,可以添加或去