数据库原理实验指导9.docx
- 文档编号:7344941
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:15
- 大小:21.92KB
数据库原理实验指导9.docx
《数据库原理实验指导9.docx》由会员分享,可在线阅读,更多相关《数据库原理实验指导9.docx(15页珍藏版)》请在冰点文库上搜索。
数据库原理实验指导9
《数据库原理》课程实验
2010.9
本文档介绍的是本学期课程实验内容,其中有四次实验需要提交实验报告或设计报告,前三次每份报告记平时成绩4分,第四份报告(同时要提供建立数据库、数据表的代码)记平时成绩8分并。
请各位同学注意按时提交报告,按实验报告格式打印。
实验1创建数据库
一、实验目的
熟悉SQLServerManagementStudio界面;掌握通过图形化向导和执行Transact-SQL语句创建数据库的方法。
二、实验环境
WindowsXP操作系统,SQLServer2005软件。
三、实验课时
2课时。
四、实验内容
SQLServer中的一个数据库必须至少包含一个数据文件和一个事务日志文件,所以创建数据库就是建立主数据文件和日志文件。
在SQLServer2005中创建数据库的方法主要有两种:
一是在SQLServerManagementStudio窗口中使用可视化界面,通过方便的图形化向导创建,二是通过执行Transact-SQL语句创建。
(一)向导方式创建
1、从“开始”菜单选择“所有程序”→“MicrosoftSQLServer2005”,打开“SQLServerManagementStudio”窗口,使用Windows或SQLServer身份验证建立连接。
2、在“对象资源管理器”窗格中展开服务器,选择“数据库”节点右击,从弹出的快捷菜单中选择“新建数据库”命令,打开“新建数据库”窗口。
3、该窗口中有3个页,分别是“常规”、“选项”和“文件组”,完成这3个页的内容即可完成数据库的创建。
这里,我们仅设置“常规”的相应内容,其他2个页的内容按照默认设置即可。
(1)“数据库名称”文本框中输入数据库的名称,如“sample_st”,再输入该数据库的所有者,这里使用默认值即可。
(也可以通过单击文本框右边的“浏览”按钮选择所有者。
(2)“数据库文件”列表中包括两行,一个是数据文件,一个是日志文件。
通过单击下面相应的按钮可以添加或删除相应的数据文件。
●逻辑名称:
指定该文件的文件名。
●文件类型:
用于区别当前文件是数据文件还是日志文件。
●文件组:
显示当前数据库文件所属的文件组。
●初始大小:
指定该文件的初始容量。
在SQLServer2005中数据文件的默认值为3MB,日志文件的默认值为1MB。
●自动增长:
用于设置在文件容量不够用时,文件根据何种增长方式自动增长。
●路径:
指定存放在文件的目录。
默认情况下,SQLServer2005将存放路径设置为其安装目录下的data子目录,单击该列中的按钮可以在打开的“定位文件夹”对话框中更改数据库的存储路径。
完成上述操作后,单击“确定”按钮关闭“新建数据库”窗口,即完成了数据库的创建,可以在“对象资源管理器”窗格中看到新建的数据库。
(二)语言方式创建
SQLServer2005使用的Transact-SQL语言是标准SQL的增强版本,使用它提供的CreateDatabase语句同样可以完成对数据库的建立(参考内容见附录)。
1、单击“新建查询”按钮,创建一个查询输入窗口将附录中的语句复制到该窗口。
选择创建数据库的命令,单击工具栏中的“分析”按钮,可以检查语法错误;单击“执行”按钮即可执行语句,在查询窗口内的“查询”窗格中可以看到“命令已成功完成”的提示消息。
在“对象资源管理器”窗格中刷新,即可看到新建的数据库。
2、继续执行CreateDatabase之后的语句,在“sample_st”数据库中用CreateTable命令依次建立Student、Course和SC这三个数据表,利用Insert命令为各数据表添加数据。
(参考内容见附录)
(三)知识巩固
仿照附录内容,用SQL-DDL语言创建“产品订购”数据库,包含四个数据表S、P、J和SPJ,表结构及内容见教材P74。
附录:
USEmaster
CREATEDATABASEsheji_st
ONPRIMARY
(
NAME=sheji_st_data,
FILENAME='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\data\sample_st.mdf',
SIZE=10MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=1MB
)
LOGON
(
NAME=sheji_st_log,
FILENAME='C:
\ProgramFiles\MicrosoftSQLServer\MSSQL\data\sample_st.ldf',
SIZE=2MB,
MAXSIZE=UNLIMITED,
FILEGROWTH=1MB
)
GO
USEsheji_st
CREATETABLE图书
(
图书号char(5)notnullprimarykey,
图书名char(10),
作者char(10),
出版社char(10),
)
CREATETABLE读者
(
读者号char(6)notnullprimarykey,
姓名char(12),
性别char(4),
职业char(4),
专业char(4),
)
CREATETABLE借还书
(
读者号char(5),
图书号char(5),
借书日期char(5),
还书日期char(5),
PrimaryKey(读者号,读者姓名),
ForeignKey(读者号)References读者(读者号),
ForeignKey(图书号)References图书(图书号)
)
USEsample_st
insertstudentvalues('01001','李平','男',22,'经济')
insertstudentvalues('01002','周灵','女',22,'经济')
insertstudentvalues('01003','李芳','女',21,'数学')
insertstudentvalues('01004','刘小冬','男',23,'计算机')
insertstudentvalues('01005','刘岳','男',22,'计算机')
insertstudentvalues('01006','吴京','男',22,'计算机')
insertstudentvalues('01007','王芳','女',21,'经济')
insertstudentvalues('01008','黄明明','女',22,'数学')
insertstudentvalues('01009','赵飞','男',21,'数学')
insertstudentvalues('01010','刘冰','男',22,'数学')
insertstudentvalues('02001','孙雨','男',20,'计算机')
insertstudentvalues('02002','韩雨晴','女',21,'经济')
insertstudentvalues('02003','张天一','男',22,'数学')
insertstudentvalues('02004','李伟','男',20,'数学')
insertstudentvalues('02005','孙小丽','女',22,'管理')
insertstudentvalues('02006','张海涛','男',21,'管理')
insertstudentvalues('02007','宋涛','男',21,'计算机')
insertstudentvalues('02008','王依然','女',20,'经济')
insertstudentvalues('02009','周冠军','男',22,'经济')
insertstudentvalues('02010','王海波','男',22,'计算机')
insertstudentvalues('02011','李静','女',20,'管理')
insertcoursevalues('101','高等数学','',6)
insertcoursevalues('102','大学英语','',5)
insertcoursevalues('103','计算机基础','',3)
insertcoursevalues('104','政治经济学','',3)
insertcoursevalues('201','离散数学','101',4)
insertcoursevalues('202','专业英语','102',3)
insertcoursevalues('203','程序设计','103',4)
insertcoursevalues('204','计算机网络','103',3)
insertcoursevalues('205','管理学概论','',4)
insertcoursevalues('206','西方经济学','104',4)
insertcoursevalues('301','数学分析','101',4)
insertcoursevalues('302','数据库原理','201',3)
insertcoursevalues('303','多媒体技术','203',3)
insertcoursevalues('304','系统分析','302',3)
insertscvalues('01001','101',82)
insertscvalues('01002','101',66)
insertscvalues('01003','101',75)
insertscvalues('01004','101',88)
insertscvalues('01005','101',72)
insertscvalues('01006','101',45)
insertscvalues('01008','101',75)
insertscvalues('01009','101',62)
insertscvalues('01010','101',72)
insertscvalues('02001','101',52)
insertscvalues('02002','101',82)
insertscvalues('02003','101',60)
insertscvalues('02004','101',71)
insertscvalues('02005','101',70)
insertscvalues('02006','101',82)
insertscvalues('02007','101',90)
insertscvalues('02008','101',86)
insertscvalues('02009','101',64)
insertscvalues('02010','101',76)
insertscvalues('01004','302',80)
insertscvalues('01005','302',77)
insertscvalues('01006','302',85)
insertscvalues('02001','302',82)
insertscvalues('02007','302',60)
insertscvalues('02010','302',89)
insertscvalues('01003','201',78)
insertscvalues('01008','201',76)
insertscvalues('01009','201',94)
insertscvalues('01010','201',85)
insertscvalues('02004','201',82)
insertscvalues('01004','201',80)
insertscvalues('01005','201',77)
insertscvalues('01006','201',85)
insertscvalues('02001','201',82)
insertscvalues('02007','201',60)
insertscvalues('02004','304',null)
insertscvalues('02007','304',null)
实验2数据库的简单查询
一、实验目的
掌握单表查询中各个子句(Select、From、Where、Group、Having、Order)的用法,特别要掌握比较运算符和逻辑运算符的使用。
二、实验环境
WindowsXP操作系统,SQLServer2005软件。
三、实验课时
2课时。
四、实验内容
在已建立的数据库和数据表的基础上,用Select语句完成下列查询操作。
1、查询全体学生的学号和姓名。
2、查询全体学生的所有基本信息(仅针对Student表)。
3、对SC表查询全体学生的选课记录,在显示结果中为“Grade”列增加5分。
4、查询全体学生的学号和姓名,将原来的英文列名设置中文别名。
5、显示所有选课学生的学号,去掉重复结果。
6、查询成绩在80分以上的学生选课记录。
7、查询经济系所有学生的学号和姓名。
8、查询成绩在80~90分的学生选课记录。
9、查询年龄不在22~25的学生记录。
10、查询所有姓“刘”的学生记录。
11、查询无考试成绩(成绩为空值)的学号、课程号。
12、查询考试成绩非空值的学号、课程号。
13、查询数学系年龄小于20岁的学生记录。
14、查询选修了“101”或“102”课程的选课记录。
15、查询学生总人数。
16、查询选修了课程的学生人数。
17、查询选修了“101”课程的学生的平均成绩。
18、查询学号为“01003”的学生的考试总成绩。
19、查询“101”课程的最高分和最低分。
20、查询每门课程的选课人数。
21、查询每个学生的学号、选课数、平均成绩和总成绩。
22、查询选课数超过2的学生学号及其选课数。
23、查询所有学生信息,查询结果按年龄降序排列。
(针对Student表操作)
24、查询所有学生信息,查询结果按系名升序,同系学生按年龄降序排列。
25、查询选课数超过2的学生学号及其选课数,查询结果按选课数降序排列。
五、实验要求
本次实验要求学生独立完成并提交SQL—Select命令的具体内容,请各位同学于实验后的下一周提交实验报告,记平时成绩4分。
实验3数据库的多表连接查询
一、实验目的
继续熟练SQL-SELECT语句的使用;理解多表查询的概念;掌握多表连接查询中各个子句的用法,特别要比较内连接和外连接的结果。
二、实验环境
WindowsXP操作系统,SQLServer2005软件。
三、实验课时
2课时。
四、实验内容
在已建立的数据库和数据表的基础上,用Select语句的连接查询完成下列操作。
1、查询每个学生的基本信息及其选课情况。
2、查询选修“101”课程的学生学号、姓名和成绩。
3、查询与“李平”在同一个系学习的学生记录。
4、查询与“李平”年龄相同的学生记录。
5、查询选修课程名为“数据库原理”的选课记录。
6、查询选修课程名为“数据库原理”的学生记录。
7、查询选修“101”课程且成绩≥90的学号、姓名和成绩。
8、查询“李平”的所有选课记录。
9、查询数学系学生选修的课程号,要求结果中去掉重复记录。
10、查询计算机系选修课程数≥2的学号、姓名及平均成绩,查询结果按平均成绩降序。
11、查询每个学生的学号、选修课程号、课程名及成绩。
12、查询所有学生的选修情况(包括选课和未选课的学生),要求显示学号、姓名、课程号和成绩。
五、实验要求
本次实验要求学生自主复习并完成SQL—Select命令。
实验4数据库的子查询、组合查询
一、实验目的
继续熟练SQL-SELECT语句的使用;掌握非相关子查询、相关子查询的用法,理解它们的执行过程;学会在SQLServer中用Exists实现交运算,用NotExists实现差运算。
二、实验环境
WindowsXP操作系统,SQLServer2005软件。
三、实验课时
2课时。
四、实验内容
在已建立的数据库和数据表的基础上,用Select语句的嵌套查询完成下列操作。
1、查询选修“101”课程且成绩≥90的学号、姓名。
2、查询“李平”的所有选课记录。
3、查询与“李平”在同一个系学习的学生记录。
4、查询与“李平”年龄相同的学生记录。
5、查询选修课程名为“数据库原理”的选课记录,输出结果包括学号和成绩。
6、查询选修课程名为“数据库原理”的学生记录,输出结果包括学号、姓名和所在系。
7、查询学号为“01003”学生的选修课程号和课程名。
8、查询没有选修“101”课程的学生学号和姓名。
9、查询选修“101”课程或“102”课程的学生姓名。
10、查询选修“101”课程和“102”课程的学生学号。
11、查询选修“101”课程但没选修“102”课程的学生学号。
12、查询没有选修任何课程的学生记录,输出结果包括学号、姓名和所在系。
13、查询数学系学生选修的课程号,要求结果中去掉重复记录。
14、查询选修课程至少包含“01003”选修课程的学生学号。
五、实验要求
本次实验要求学生独立完成并提交SQL—Select命令的具体内容,请各位同学于实验后的下一周提交实验报告,记平时成绩4分。
实验5数据库更新
一、实验目的
掌握Insert、Update、Delete语句的使用;对于Insert语句,要求理解默认值约束、空值约束在插入记录时所起的作用。
二、实验环境
WindowsXP操作系统,SQLServer2005软件。
三、实验课时
2课时。
四、实验内容
在已建立的数据库和数据表的基础上,向数据库中添加一个临时表ST,其结构与Student表结构相同。
用Insert语句向临时表输入数据,输入有误时用Update语句进行修改。
再用三个更新语句完成下列操作。
1、向Student表添加若干新记录,内容自定。
(观察已定义的表的约束情况)
2、向SC表添加新记录,内容自定,不低于10条(注意不能违反参照完整性)。
3、为临时表ST添加记录。
4、把Student表的所有行一次性地加到临时表ST中。
5、在ST表中把所有学生的成绩加2分。
6、在ST表中把所有学生的年龄增加1。
7、在ST表中把“李平”的所在系改为“计算机”。
8、在ST表中将选修课程“数据库原理”的学生成绩加2分。
9、在SC表中删除所有成绩为空值的选修记录。
10、删除计算机系选修成绩不及格的选课记录。
五、实验要求
本次实验要求学生自主复习并完成SQL的更新命令。
实验6数据库的视图定义及使用
一、实验目的
理解视图的概念,掌握CreateView、DropView语句的使用;掌握基于视图的查询语句的使用。
二、实验环境
WindowsXP操作系统,SQLServer2005软件。
三、实验课时
2课时。
四、实验内容
在已建立的数据库和数据表的基础上,完成下列操作。
1、建立数学系学生的视图MAST。
2、建立计算机系选修课程名为“数据库原理”的学生视图,视图名:
CSTVIEW,该视图中应包括属性列:
学号、姓名、成绩。
3、创建一个名为STSUMVIEW的视图,包括所有学生的学号和总成绩。
4、建立学生选课视图SCVIEW,包括所有学生的学号、姓名、课程号、课程名和成绩。
5、通过MAST视图查询学生基本信息。
6、通过SCVIEW查询成绩大于90分的学生的学号和成绩。
7、查询计算机系选修课程名为“数据库原理”并且成绩大于85分的学生的学号和成绩。
8、通过MAST视图将学号为“01008”学生的年龄修改为21岁。
9、通过MAST视图将学号为“01009”学生所在系改为“经济”,是否能成功执行?
若不能成功请说明理由;若修改成功,请再次通过MAST视图查询学生基本信息,是否能查询到该生?
若不能查询请说明理由。
10、通过SCVIEW视图将学号为“01004”学生的总成绩修改为380分,是否能成功执行?
若不能成功请说明理由。
五、实验要求
本实验要求学生独立完成并提交SQL—视图操作的具体内容,请各位同学于实验后的下一周提交实验报告,记平时成绩4分。
实验7数据库的安全与保护
一、实验目的
理解SQLServer的用户与权限管理机制,掌握用对象资源管理器创建服务器登录帐号,并同时建立用户。
掌握如何为给定的用户分配权限。
二、实验环境
WindowsXP操作系统,SQLServer2005软件。
三、实验课时
2课时。
四、实验内容
用户与权限管理
(1)打开“SQLServerManagementStudio”窗口,使用对象资源管理器创建两个服务器登录帐号Test1和Test2,并在“sample_st”数据库中创建两个对应的同名用户。
设置Test1用户和Test2用户的默认架构为guest。
(2)使用Test1身份登录,并为Test2分配创建数据表的权限;用Test2身份登录来验证权限分配成功。
(3)使用Test1身份登录,收回刚刚分配给Test2的创建数据表的权限;用Test2身份登录来验证权限回收成功。
五、实验步骤
1、使用对象资源管理器创建两个服务器登录帐号。
以系统管理员身份登录SQLServer。
打开“SQLServerManagementStudio”窗口,在对象资源管理器列表中,打开展开“安全性”文件夹,选择“登录名”图标,单击鼠标右键,在弹出的菜单中选择“新建登录名”。
在打开的对话框中依次建立Test1和Test2,选择“SQLServer身份验证”,同时还要输入密码,默认数据库为“sample_st”。
(2)在“用户映射”中列出了当前登录帐号可以选择访问的数据库如“sample_st”,在其左侧的复选框中打勾,表示当前登录帐号可以访问对应的数据库,默认用户名与登录帐号相同。
(3)单击“确定”按钮完成创建。
2、创建新的数据库用户。
在对象资源管理器中选中要访问操作的数据库,展开“安全性”文件夹,在“用户”文件夹中查找是否已建立与登录名Test1和Test2同名的数据库用户,若已建立,则在属性中修改其默认架构为guest;否则右击鼠标在菜单中选择“新建用户”选项,出现“数据库用户-新建”对话框,建立相应的用户。
3、用Grant、Revoke命令实现对用户的授权和收权。
4、用Create命令创建数据表验证授权和收权是否成功。
5、以系统管理员身份登录SQLServer。
使用:
“GRANTSELECTONSCTOTest1WITHGRANTOPTION”命令,再分别以Test1和Test2身份登录,进行授权及查询数据表,验证“WITHGRANTOPTION”能否成功执行。
6、以系统管理员身份使用“R
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 实验 指导