数据库原理及应用实验(专科版)
班级:
学号:
姓名:
温州大学城市学院
实验一 数据库的可视化操作
一、实验目的
1、 了解SQL Server 的主要功能,并熟悉SQL Server 的启动方法
2、 掌握用Enterpriser Manager 建数据库、建表、定义约束,修改表结构等操作;
3、 掌握用Enterpriser Manager 增加、删除、修改表中的数据;
4、 进一步理解数据库的实体完整性、参照完整性、自定义完整性约束条件的作用
二、实验指南 1、启动数据库服务
在默认情况下,MS SQL SERVER 安装完成后是没有启动数据库服务的,这时候用户可重启操作系统,MS SQL SERVER 一般会自启动。
根据设置不同,是否自启动MS SQL SERVER 数据库服务是存在差异的,没有启动的情况下可手工启动。运行“服务管理器”,打开WINDOWS 开始菜单,选择所有程序→Microsoft SQL Server →服务管理器。图1-14的状态表示数据库服务没有启动,需要手工启动。
图1-14 SQL Server 服务管理器(停止状态)
单击
启动数据库服务器。图1-15
的状态表示数据库服务已经启动。
图1-15 SQL Server 服务管理器(启动状态) 如果需要每当操作系统重启时自动启动数据库服务,则需要将“自动启动服务”选项选中。如图1-16所示。
图1-16 当启动OS 时自动启动数据库服务
2、进入实验环境MS SQL SERVER 企业管理器
打开WINDOWS开始菜单,选择所有程序→Microsoft SQL Server→企业管理器
图1-1 进入实验环境操作图
3、新建数据库
开始新建
打开SQL Server→本机SQL Server→数据库,在数据库上右击鼠标,选择“新建数据库”(或在操作菜单中选择)。
图1-4 新建数据库
输入正确的数据库属性信息
图1-5 输入数据库名称
选择适当的数据库数据文件存放文件夹位置
图1-6 选择适当的数据库数据文件存放文件夹
选择适当的数据库事务日志文件存放文件夹位置
图1-7 选择适当的数据库事务日志文件存放文件夹
完成以述操作后,其它选项在本实验中可默认不变,单击确定完成操作。
4、新建表
开始新建表
单打开指定数据库(目标数据库),选中“表”项目,右击鼠标右键
图1-8 开始新建表
(或在操作菜单中选择,或右栏表列表空白处右击鼠标)。
定义字段(属性)
在列名①中输入字段(属性)名,②数据类型可下拉选择或直接输入,③长度直接输入适当的数字,④?允许空,?不允许为空,⑤默认值:当该属性值未输入时,自动将默认值填充。
图1-9 定义字段(属性)
定义表名
完成字段定义后,选择快键按钮,或“文件”菜单中的“保存”子菜单,输入适当的表名。
表名的定义要求符合命名规则。
定义主键
选中要定义为主键的字段,右击鼠标选择“设置主键”,或直接单击快键按钮。如果主键为多
个字段的组,则使用Ctrl 键与鼠标的组合来选中多个字段。
图1-10 定义主键
2 3 4
5
定义外码
选中要定义为外码的字段,右击鼠标选择“关系”,单击“新建”按钮。
主键表:被参照表,外键表:外表字段所在的表。
选择正确的主键表,并在主键表下面的列表中选择正确的主键字段名,选择正确的外键表,并在外键表下选择正确的外键字段名。主键字段与外健字段要求类型相同,长度相同,而且要求主键字段必须在主键表(被参照表)中是主码,否则无法完成定义。
关系名:外码名,一般定义格式:FK_外键表名_主键表名_外键字段名_主键字段名。
定义完成之后,单击左上角的快键按钮保存。
图1-11 定义外码
定义Check约束
选中要定义为Check约束的字段,右击鼠标选择“Check约束”,单击“新建”按钮。在“约束表达式”输入框中输入正确的关系表达式。如学生的成绩在0到100之间,表达式如下(学生的成绩字段为Score):Score >=0 and Score <=100
约束名的一般格式为:CK_表名_字段名。单击左上角的快键按钮保存。
图1-12 定义Check约束。
修改表结构
选中要修改结构的表,右键鼠标选择“设计表”(或在操作菜单中选择)。
表中数据操作
打开表:选中要打开数据的表,右键鼠标选择“打开表”—“返回所有行”(或在操作菜单中选择)。
录入数据:在表格的空白处直接输入即可。
修改表中的数据:直接在要修改的单元格中修改即可,若字段类型为Char,则其内容后面的空格可能造成数据长度过长,应先将空格删除。
删除表中的一行数据:将要删除的一行选中,单击鼠标右键选择“删除”。
图1-13 选中一行数据
删除表中的多行数据:使用Ctrl键与鼠标的组合选中多行数据,单击鼠标右键选择“删除”。
三、实验内容
1.启动SQL Server,进入企业管理器
2.建立图书读者数据库,并存于D盘自建的目录
3.建立图书表、读者表、借阅表,表结构如下:
图书(书号,类别,出版社,书名)
读者(读者编号,姓名,单位,性别,电话)
借阅(书号,读者编号,借阅日期,归还日期)
4.上述各表属性类型及宽度自定(要求为属性选择合适的数据类型,长度,是否为空和缺省值),定
义每个表的主码(上述表中划线的属性)。
5.给“图书”表增加“价格,作者,出版日期”3个属性,其中价格类型为数值型,小数位数是2
位,作者为字符型,出版日期为字符型。
6.定义约束:实现读者性别只能是”男”或”女”的检查约束,实现图书的定价不能为负数的检查约束,
借阅表与图书表、借阅表与读者表的外码约束,即实现借阅表中的参照完整性约束。
7.分别在三个表中输入不少于5条记录的数据,内容自定,输入数据时观察实体完整性、参照完整
性、自定义完整性约束的效果。
8.分别对三个表中的数据进行删除,修改操作,修改数据时观察约束的效果。
四、思考题
1、假设图书表、读者表、借阅表中分别存在以下数据
试回答下列的操作是否正确,为什么?
(4)将读者表中编号为“D0010”改为“D1000”。
(5)将读者表中编号为“D1234”改为“D4321”。
实验二单表查询
一、实验目的
1、掌握SQL Server Query Analyzer(查询分析器)的使用方法。
2、掌握用SQL对数据库中的数据进行简单查询操作。
二、实验指南
1、附加数据库
1)进入MS-SQLSERVER2000企业管理器
2)在数据库栏右击鼠标,选择所有任务,选择附加数据库
图2-1 开始附加数据库
3)在本机的指定目录下选择工程零件_Data.MDF文件
图2-2 选择附加数据库的MDF文件
4)确定(开始附加数据库),即可。
2、查询分析器的使用
打开查询分析器
打开WINDOWS开始菜单,选择所有程序→Microsoft SQL Server→查询分析器。
图2-3 打开查询分析器
选择适当数据库查询
如果当前的数据库不是实验环境要求的数据库,可以通过鼠标下拉标处选择适当的数据。
图2-4 选择适当的数据库
编辑SQL命令语句
将正确的SQL命令语句输入SQL查询分析器的编辑框中,使用方法可参考记事本。编辑SQL 命令语句,语句结束不需要分号“;”。
SQL查询分析器的编辑框
图2-5 编辑SQL命令语句
执行SQL语句
执行当前SQL 查询分析器的编辑框中的所有命令语句:单击快按钮,或在“查询”菜单中选择“执行”,或使用快捷键“F5”。查询结果将命令下方显示。
单条SQL命令语句执行:选中当前要执行SQL 命令语句,单击快按钮,或在“查询”菜单中
选择“执行”,或使用快捷键“F5”。查询结果将命令下方显示。
多条SQL命令语句执行:参考“单条SQL命令语句执行”。
三、实验内容
1、将教师指定的两个文件(工程零件_Data.MDF和工程零件_Log.LDF)拷贝至自己机器的D盘自建的文件夹中。
已知各表结构如下:
供应商(供应商代号,姓名,所在城市,联系电话)
零件(零件代号,零件名,规格,产地、颜色)
工程(工程代号,工程名,负责人,预算)
供应零件(供应商代号,工程代号,零件代号,数量,供货日期)
2、查询供应商王平的基本信息,在空白处完成SQL命令语句,并记录运行结果。
3、找出天津供应商的姓名和电话,在空白处完成SQL命令语句,并记录运行结果。
4、查找预算在50000-100000元之间(含)的工程的信息。
5、查询所有姓’王’的供应商的姓名,电话,所在城市。
6、找出使用供应商代号为s1所供的零件代号为P3的工程的工程代号。
7、查询供应商代号为s1的供应商在2001年以后的供货情况,包括工程代号、零件代号、数量、供货日期。
8、找出所有上海产的红色零件的零件名称。
9、查询使用了零件代号为P1或P3零件的工程的工程代号。
四、思考题
1、写between A and B的等效关系表达式。
2、举例说明distinct作用。
实验三统计查询
一、实验目的
1、掌握用SQL对数据库中的数据进行统计查询。
2、进一步熟悉SQL Server2000的查询分析器的使用方法。
二、实验指南
参考“实验二单表查询”。
三、实验内容
1、将教师指定的两个文件(工程零件_Data.MDF和工程零件_Log.LDF)拷贝至自己机器的D盘自建的文件夹中。
已知各表如下:
供应商(供应商代号,姓名,所在城市,联系电话)
零件(零件代号,零件名,规格,产地、颜色)
工程(工程代号,工程名,负责人,预算)
供应零件(供应商代号,工程代号,零件代号,数量,供货日期)
2、查询供应商总人数。
3、查询供应商代号为s1的供应商的供货次数。
4、查询所有工程的平均预算,总预算。
5、查询各工程的工程代号、平均预算,总预算。
6、汇总各种零件的供应情况,包括零件代号、零件名,总数量。
7、查询各工程的工程代号及所使用的零件总数量,总次数,并按零件总数量的升序排序。
8、查询使用了10个以上零件的工程的工程代号。
9、查询使用零件数量最多的工程的工程代号。
四、思考题
(1)第2题如改为:查询供货的供应商总人数,则该如何操作?
(2)通过实例比较WHERE与HA VING的不同用法。
实验四连接查询和嵌套查询
一、实验目的
1、掌握用SQL对数据库多表数据查询
2、进一步理解连接查询方法和嵌套查询方法的实际意义
3、进一步熟悉SQL Server2000的查询分析器和企业管理器的使用方法
二、实验指南
参考“实验二单表查询”。
三、实验内容
1、将教师指定的两个文件(工程零件_Data.MDF和工程零件_Log.LDF)拷贝至自己机器的D盘自建的文件夹中。
已知各表如下:
供应商(供应商代号,姓名,所在城市,联系电话)
零件(零件代号,零件名,规格,产地、颜色)
工程(工程代号,工程名,负责人,预算)
供应零件(供应商代号,工程代号,零件代号,数量,供货日期)
2、查询使用了零件代号为p3的零件的工程代号、工程名
3、查询使用了上海供应商供应的零件的工程代号
4、找出工程代号为j2所使用的各种零件的名称及其总数量
5、查询使用了蓝色零件的工程的工程代号(要求分别用连接查询和嵌套查询两种方法)
6、查询姓”王”的供应商的供货信息,包括零件代号、零件名、数量、供货日期
7、查询没有使用天津产的零件的工程代号
7、查询没有使用天津产的零件的工程代号。
8、查询使用零件数量最多的工程的工程代号、工程名
四、思考题
(1)第3题如果用连接查询是否需要加distinct ,为什么?
(2)第7题能否用如下语句实现?为什么?
Select distinct 工程代号from 供应零件,零件where 零件.零件代号=供应零件.零件代号and 产地<>’天津’
实验五综合查询
一、实验目的
1、掌握用SQL对数据库中的数据进行各种不同要求的查询
2、进一步理解SELECT语句各子句的含义及用法
3、提高用SQL的查询语句解决实际问题的能力
二、实验指南
参考“实验二单表查询”。
三、实验内容
1、将教师指定的两个文件(工程零件_Data.MDF和工程零件_Log.LDF)拷贝至自己机器的D盘自建的文件夹中。
已知各表如下:
供应商(供应商代号,姓名,所在城市,联系电话)
零件(零件代号,零件名,规格,产地、颜色)
工程(工程代号,工程名,负责人,预算)
供应零件(供应商代号,工程代号,零件代号,数量,供货日期)
2、查出每个供应商分别给几个工程提供了零件,分别列出供应商代号和工程数量,结果用视图的形式给出。
3、查询所在地在“上海”的供应商姓名及电话,结果用视图的形式给出。
4、查出哪些工程使用过蓝色的零件,列出工程名,结果用视图的形式给出。
5、供应商(代号)S3发现已供应给各工程的所有零件存在质量问题,想找各工程负责人商议补救办法。请列出相关的工程代号,工程名及负责人名单。
6、查询哪些供应商没有给工程代号为J2的工程供应零件,请列出供应商号。
7、统计各工程分别用了几个P3零件。
8、查询“胡胜利”(供应商名)最近一次供货的时间,并查出相关的工程号。
(提示:日期可以比较大小,2006年3月15日大于2006年3月14日)
四、思考题
查询没有使用天津产的零件的工程代号,试比较下述二个语句,并判断正确性
1)Select distinct工程代号from 供应零件where 零件代号not in (Select 零件代号from 零件where 产地=’天津’)
2)Select 工程代号from 工程where 工程代号not in (Select 工程代号from 供应零件where零件代号in (Select 零件代号from 零件where 产地=’天津’))
实验六用SQL实现数据库的建立与维护
一、实验目的
1、掌握SQL的数据定义功能
2、进一步掌握SQL Server Query Analyzer(查询分析器)的使用方法
二、实验指南
参考“实验一和实验二”。
三、实验内容
1、启动SQL Server,进入企业管理器
2、建立一个数据库,数据库名为自己的姓名,并存于D盘自建的文件夹中。
3、进入查询分析器,用SQL建立学生表、课程表、选课表,表结构如下:
学生(学号,姓名,性别,出生日期)
课程(课程号,名称,学分)
选课(学号,课程号,成绩)
上述各表的属性类型及宽度自定(要求为属性选择合适的数据类型,长度,并且姓名不能为空,
性别的缺省值为”男”,成绩为0--100),定义每个表的主码,主码为划线的属性,并将选课表中的学
号与学生表中的学号建立关联,选课表中的课程号与课程表中的课程建立关联)。在空白处完成SQL
命令语句。
4、用SQL语句在“学生”表中增加“电话”属性。
5、用SQL语句分别在三个表各输入不少于3条记录的数据,内容为自已及同学的信息。
6、用SQL语句实现每门课的学分加1分。
7、用SQL语句建立平均成绩表(学号,平均成绩),内容为每个学生的平均成绩。
8、用SQL语句删除自己的所有信息(包括选课信息)。
四、思考题
(1)删除学生表中的所有信息,试写出SQL语句,执行结果如何,为什么?
(2)更新某人的成绩,更新公式如下:新成绩=新成绩* (1 + 10%),能否采用下列语句,为什么?并完成正确的SQL语句操作。
update 选课, 学生set 成绩= 原成绩* 1.1 where 姓名= ‘某人姓名’
实验七数据库保护
一、实验目的
1、掌握SQL Server中有关用户、权限的管理方法。
2、了解SQL Server的数据备份机制
3、加深对数据库安全性的理解
二、实验内容
1、在MS SQL SERVER企业管理中,创建一个数据库,数据库名为DB1,在该数据库中创建一个学生表(学号,姓名,性别,年龄,所在系)。
2、在MS SQL SERVER的安全性中创建一个登录(Login),登录名为Login1,密码为123456。在查询分析器中以该Login1登录,观察可访问的数据库,并记录。
3、在DB1数据库中创建数据库用户,登录名为Login1,用户名为Login1,再次在查询分析器中观察可访问的数据库,并记录。请在查询分析器中执行如下SQL,观察并记录结果。
1)select * from 学生表
成功
2)用SQL在学生表中插入一条记录
成功
3)create table 课程表(
课号char(10) primary key,
课程名称char(30) not null,
学分smallint not null)
4、新建一个查询分析器窗口,以sa登录,用授权语句赋于Login1用户创建表的权力,查询学生表的权力,向学生表中添加、修改、删除记录的权力。
grant create table to Login1
grant select,insert,update on student to Login1
5、重新执行第3题中的SQL,观察并记录结果。
成功
成功
成功
6、新建一个查询分析器窗口,以sa登录,用收权语句收回Login1用户创建表的权力,查询学生表的权力,向学生表中添加、修改、删除记录的权力。
revoke create table to Login1
revoke select,insert,update on student to Login1
7、重新执行第3题中的SQL,观察并记录结果。
不行
8、新建二个登录,创建二个登录,登录名分别为user1、user2,密码分别为user1、user2,并使他们都能访问DB1数据库。以sa的身份使用查询分析器连接数据库,并选择数据库DB1,用SQL语句将学生表的所有权利赋予user1用户,将课程表的所有权利赋予user2用户。新建二个查询分析器窗口,分别以user1和user2连接DB1数据库,用user1和user2分别对学生表和课程表操作,观察并记录结果。
9、创建四个登录,登录名分别为user3、user4、user5、user6,密码分别为user3、user4、user5、user6,并使他们都能访问DB1数据库。以sa的身份使用查询分析器连接数据库,并选择数据库DB1,用SQL 语句将学生表的所有权利赋予user3用户,并能将权利再授权给其它用户,再用SQL语句将学生表的所有权利赋予user4用户,但不能授权给其它用户。新建二个查询分析器窗口,分别以user3和user4连接DB1数据库,在user3的窗口中,将学生的所有权利赋予user5;在user4的窗口中,将学生的所有权利赋予user6,观察并记录结果。
10、使用SQL语句和可视化操作二种方法备份、恢复数据库,写出SQL语句。
11、使用SQL语句和可视化操作二种方法分离、附加数据库,写出SQL语句。
三、思考题
1、分离数据库和删除数据库有何不同?
2、如果要将实验室中某台计算机中的某个数据库复制到你自己的计算机中,该如何操作?