数据库原理实验指导书cslg.docx
《数据库原理实验指导书cslg.docx》由会员分享,可在线阅读,更多相关《数据库原理实验指导书cslg.docx(39页珍藏版)》请在冰点文库上搜索。
数据库原理实验指导书cslg
《数据库原理与应用》实验指导与报告
/学年第学期
姓名:
______________
学号:
______________
班级:
______________
指导教师:
______________
计算机科学与工程学院
2016
实验一SQLServer使用初步
一、实验目的
1、熟悉SQLServer的组成及基本功能。
2、掌握SQLServer的安装、登录及注册。
3、掌握SQLServer企业管理器的使用方法。
4、熟悉查询分析器的基本使用。
二、实验预习
1、什么是数据库管理系统DBMS?
你所知道的DBMS有哪些?
2、SQLServer2000(2005)的安装步骤?
三、实验内容和要求
1、安装SQLServer2000
(1)安装SQLServer2000;
(2)启动SqlServer服务,练习用不同的方法启动SQLServer服务;
(3)练习创建数据库:
创建一个数据库,要求如下:
1)数据库名"testDB"。
2)数据库中包含一个数据文件,逻辑文件名为testDB_data,磁盘文件名为testDB_data.mdf,文件初始容量为5MB,最大容量为15MB,文件容量递增值为1MB。
3)事务日志文件,逻辑文件名为TestDB_log,磁盘文件名为TestDB_log.ldf,文件初始容量为5MB,最大容量为10MB,文件容量递增值为1MB。
4)添加一个数据文件,逻辑文件名为TestDB2_data,实际文件为TestDB2_data.ndf,文件初始容量为1MB,最大容量为6MB,文件容量递增值为1MB。
5)将日志文件的最大容量增加为15MB,递增值改为2MB。
2、注册服务器
基本步骤:
(1)打开企业管理器
(2)右击SQLServer组→新建SQLServer注册
(3)添加可用的服务器(实际数据库服务器的名称或IP地址)
(4)选择身份验证模式(选“系统管理员分配给我的登录信息”)
(5)输入正确的登录名和密码
(6)选择SQLServer组(选“在现有的SQLServer组中添加SQLServer”)
(7)完成注册
若注册成功,则显示注册成功的信息。
3、连接SQLServer服务器
(1)右键单击上面注册的数据库服务器,选择连接,建立与数据库服务器的连接。
观察连接后服务器图标的变化;
(2)右键单击选择编辑SQLServer注册属性,观察已注册数据库服务器的属性信息;
(3)右键单击选择删除SQLServer注册。
为保证数据库的安全性,使用完毕自己的数据库后,可采取删除的方式,断开与数据库的连接;
(4)重复注册服务器的步骤,再次建立与数据库的连接;
4、熟悉企业管理器
(1)单击建立的服务器连接,观察服务器的项目,写出它们的名称。
通过查看联机帮助,总结每个项目的基本功能。
1.数据库
在Microsoft®SQLServer™2000中,数据库由包含数据的表集合和其它对象(如视图、索引、存储过程和触发器)组成,目的是为执行与数据有关的活动提供支持。
存储在数据库中的数据通常与特定的主题或过程(如生产仓库的库存信息)相关。
2。
数据转换服务
Microsoft®SQLServer™2000数据转换服务(DTS)是一组图形工具和可编程对象,使您得以将取自完全不同源的数据析取、转换并合并到单个或多个目的。
3.管理
Microsoft®SQLServer™服务器管理由多种管理任务组成,其中包括:
∙注册服务器和指派密码。
∙重新配置网络连接。
∙配置链接服务器,从而使您得以对整个企业内的OLEDB数据源执行分布式查询和分布式事务。
∙配置远程服务器,使您得以使用某个SQLServer实例执行驻留在另一SQLServer实例上的存储过程。
∙配置备用服务器。
∙设置服务器配置选项。
∙管理SQLServer消息。
∙设置轮询间隔。
4.复制
Microsoft®SQLServer™2000的复制是在数据库之间对数据和数据库对象进行复制和分发并进行同步以确保其一致性的一组技术。
使用复制可以将数据分发到不同位置,通过局域网、使用拨号连接、通过Internet分发给远程或移动用户。
复制还能够使用户提高应用程序性能,根据数据的使用方式物理分隔数据(例如,将联机事务处理(OLTP)和决策支持系统分开),或者跨越多个服务器分布数据库处理。
5.安全性
数据库必须具有坚固的安全系统,才能控制可以执行的活动以及可以查看和修改的信息。
无论用户如何获得对数据库的访问权限,坚固的安全系统都可确保对数据进行保护。
6.支持服务
分布式和邮件服务支持
7.MetaDataService
Microsoft®SQLServer™2000MetaDataServices支持通过元数据浏览器浏览已注册的知识库数据库。
可以通过以下两种方式使用元数据浏览器:
使用SQLServer2000中的SQLServer企业管理器
将其作为一个独立的管理单元添加到Microsoft管理控制台(MMC),然后单独从SQLServer企业管理器运行
以什么方式使用浏览器将决定工作时的功能集。
(2)单击数据库,观察Northwind数据库下的项目,写出项目名称,通过联机帮助了解它们的基本功能。
1.关系图
数据库设计器是一种可视化工具,允许您对所连接的数据库进行设计和可视化处理。
在设计数据库时,可以使用数据库设计器创建、编辑或删除表、列、键、索引、关系和约束。
为使数据库可视化,可创建一个或更多的关系图,以显示数据库中的部分或全部表、列、键和关系。
2.表
表是包含数据库中所有数据的数据库对象。
表定义为列的集合。
与电子表格相似,数据在表中是按行和列的格式组织排列的。
每行代表唯一的一条记录,而每列代表记录中的一个域。
例如,在包含公司雇员数据的表中每一行代表一名雇员,各列分别表示雇员的详细资料,如雇员编号、姓名、地址、职位以及家庭电话号码等。
3.视图
视图是一个虚拟表,其内容由查询定义。
同真实的表一样,视图包含一系列带有名称的列和行数据。
但是,视图并不在数据库中以存储的数据值集形式存在。
行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
对其中所引用的基础表来说,视图的作用类似于筛选。
定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。
分布式查询也可用于定义使用多个异类源数据的视图。
如果有几台不同的服务器分别存储组织中不同地区的数据,而您需要将这些服务器上相似结构的数据组合起来,这种方式就很有用。
通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少。
下图显示了在两个表上建立的视图。
4.存储过程
在使用Microsoft®SQLServer™2000创建应用程序时,Transact-SQL编程语言是应用程序和SQLServer数据库之间的主要编程接口。
使用Transact-SQL程序时,可用两种方法存储和执行程序。
可以在本地存储程序,并创建向SQLServer发送命令并处理结果的应用程序;也可以将程序在SQLServer中存储为存储过程,并创建执行存储过程并处理结果的应用程序。
SQLServer中的存储过程与其它编程语言中的过程类似,原因是存储过程可以:
∙接受输入参数并以输出参数的形式将多个值返回至调用过程或批处理。
∙包含执行数据库操作(包括调用其它过程)的编程语句。
∙向调用过程或批处理返回状态值,以表明成功或失败(以及失败原因)。
可使用Transact-SQLEXECUTE语句运行存储过程。
存储过程与函数不同,因为存储过程不返回取代其名称的值,也不能直接用在表达式中。
使用SQLServer中的存储过程而不使用存储在客户计算机本地的Transact-SQL程序的优势有:
∙允许模块化程序设计。
只需创建过程一次并将其存储在数据库中,以后即可在程序中调用该过程任意次。
存储过程可由在数据库编程方面有专长的人员创建,并可独立于程序源代码而单独修改。
∙允许更快执行。
如果某操作需要大量Transact-SQL代码或需重复执行,存储过程将比Transact-SQL批代码的执行要快。
将在创建存储过程时对其进行分析和优化,并可在首次执行该过程后使用该过程的内存中版本。
每次运行Transact-SQL语句时,都要从客户端重复发送,并且在SQLServer每次执行这些语句时,都要对其进行编译和优化。
∙减少网络流量。
一个需要数百行Transact-SQL代码的操作由一条执行过程代码的单独语句就可实现,而不需要在网络中发送数百行代码。
∙可作为安全机制使用。
即使对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。
5.用户
用户标识符(ID)在数据库内标识用户。
在数据库内,对象的全部权限和所有权由用户帐户控制。
用户帐户与数据库相关。
sales数据库中的xyz用户帐户不同于inventory数据库中的xyz用户帐户,即使这两个帐户有相同的ID。
用户ID由db_owner固定数据库角色成员定义。
6.角色
角色是一个强大的工具,使您得以将用户集中到一个单元中,然后对该单元应用权限。
对一个角色授予、拒绝或废除的权限也适用于该角色的任何成员。
可以建立一个角色来代表单位中一类工作人员所执行的工作,然后给这个角色授予适当的权限。
当工作人员开始工作时,只须将他们添加为该角色成员,当他们离开工作时,将他们从该角色中删除。
而不必在每个人接受或离开工作时,反复授予、拒绝和废除其权限。
权限在用户成为角色成员时自动生效。
7.规则
规则是一个向后兼容的功能,用于执行一些与CHECK约束相同的功能。
CHECK约束是用来限制列值的首选标准方法。
CHECK约束比规则更简明,一个列只能应用一个规则,但是却可以应用多个CHECK约束。
CHECK约束作为CREATETABLE语句的一部分进行指定,而规则以单独的对象创建,然后绑定到列上。
8.默认值
如果在插入行时没有指定列的值,那么默认值指定列中所使用的值。
默认值可以是任何取值为常量的对象,例如:
∙持续
∙内置函数
∙数学表达式
有两种使用默认值的方法:
∙在CREATETABLE中使用DEFAULT关键字创建默认定义,将常量表达式指派为列的默认值。
这是首选的标准方法,也是定义默认值的更简明的方法。
∙使用CREATEDEFAULT语句创建默认对象,然后使用sp_bindefault系统存储过程将它绑定到列上。
这是一个向前兼容的功能。
9.用户定义的数据类型
用户定义数据类型基于Microsoft®SQLServer™2000中的系统数据类型。
当多个表的列中要存储同样类型的数据,且想确保这些列具有完全相同的数据类型、长度和为空性时,可使用用户定义数据类型。
例如,可以基于char数据类型创建名为postal_code的用户定义数据类型。
10.用户定义的函数
函数是由一个或多个Transact-SQL语句组成的子程序,可用于封装代码以便重新使用。
Microsoft®SQLServer™2000并不将用户限制在定义为Transact-SQL语言一部分的内置函数上,而是允许用户创建自己的用户定义函数。
可使用CREATEFUNCTION语句创建、使用ALTERFUNCTION语句修改、以及使用DROPFUNCTION语句除去用户定义函数。
每个完全合法的用户定义函数名(database_name.owner_name.function_name)必须唯一。
必须被授予CREATEFUNCTION权限才能创建、修改或除去用户定义函数。
不是所有者的用户在Transact-SQL语句中使用某个函数之前,必须先给此用户授予该函数的适当权限。
若要创建或更改在CHECK约束、DEFAULT子句或计算列定义中引用用户定义函数的表,还必须具有函数的REFERENCES权限。
在函数中,区别处理导致删除语句并且继续在诸如触发器或存储过程等模式中的下一语句的Transact-SQL错误。
在函数中,上述错误会导致停止执行函数。
接下来该操作导致停止唤醒调用该函数的语句。
(3)查看Northwind的表项目,单击表,观察表的名称、所有者、类型以及创建日期。
回答:
▪这些表的所有者有哪几种?
Dbo一种
▪这些表的类型有哪几种?
系统和用户
▪选择表Employees,在右键菜单中选择打开表->返回所有行,观察表中的数据,说出这些数据的实际含义。
观察其他用户类型的表,你还能说出它们数据的实际含义吗?
员工编号
姓名
职称
称呼
生日
录用日期
地址
城市
宗教信仰
能
(4)查看Northwind的视图项目,单击视图,观察视图的名称、所有者、类型以及创建日期。
选择视图ProductSalesfor1997,同上面观察表中数据的方法一样,观察视图中的数据,说出这些数据的意义。
商品类型
商品名称
销量
(5)查看Northwind的用户项目,单击用户。
回答:
▪有哪类用户?
查看它们的属性对话框,它们的角色和权限是否相同?
Dbo
Guest
不同
▪通过联机帮助,写出dbo、Guest用户的区别。
Guest:
guest用户帐户允许没有用户帐户的登录访问数据库。
当满足下列所有条件时,登录采用guest用户的标识:
∙登录有访问Microsoft®SQLServer™实例的权限,但没有通过自己的用户帐户访问数据库的权限。
∙数据库中含有guest用户帐户。
Dbo:
Databaseowner
在数据库中有全部权限。
(6)查看Northwind的角色项目,单击角色。
回答:
▪有哪些角色类型?
通过查看联机帮助,写出它们各自的含义和作用。
db_owner
在数据库中有全部权限。
db_accessadmin
可以添加或删除用户ID。
db_securityadmin
可以管理全部权限、对象所有权、角色和角色成员资格。
db_ddladmin
可以发出ALLDDL,但不能发出GRANT、REVOKE或DENY语句。
db_backupoperator
可以发出DBCC、CHECKPOINT和BACKUP语句。
db_datareader
可以选择数据库内任何用户表中的所有数据。
db_datawriter
可以更改数据库内任何用户表中的所有数据。
db_denydatareader
不能选择数据库内任何用户表中的任何数据。
db_denydatawriter
不能更改数据库内任何用户表中的任何数据。
(7)查看Northwind的安全性项目,单击项目中的登录,观察不同的登录名称、类型、服务器访问、默认数据库,找到你自己的登录名称,右键单击打开属性对话框,观察对话框中的设置,写出登录属性对话框中的设置作用。
Systemadministrators
为了控制访问权限
5、熟悉查询分析器
(1)打开查询分析器。
基本步骤:
▪单击注册的数据库服务器,确定服务器已经连接;
▪在主菜单“工具”中选择“SQL查询分析器”;
▪在打开的查询分析器窗口中,左侧的对象浏览器为注册的服务器,在工具栏的数据库选择中选择Northwind数据库为当前数据库;右侧窗口为查询窗口。
(2)分别在查询窗口中输入如下查询语句,观察查询结果,写出结果的数据记录个数:
查询语句1:
SELECT*
FROMShippers
ORDERBYCompanyName
结果记录数:
3
查询语句2:
SELECTFirstName,HomePhone
FROMNorthwind.dbo.Employees
ORDERBYFirstNameASC
结果记录数:
9
查询语句3:
SELECTROUND((UnitPrice*.9),2)ASDiscountPrice
FROMProducts
WHEREProductID=58
结果记录数:
1
查询语句4:
SELECTOrderID,
DATEDIFF(dd,ShippedDate,GETDATE())ASDaysSinceShipped
FROMNorthwind.dbo.Orders
WHEREShippedDateISNOTNULL
结果记录数:
809
查询语句5:
SELECTProductID,ProductName
FROMNorthwind.dbo.Products
WHERECategoryID=1ORCategoryID=4ORCategoryID=5
结果记录数:
29
四、实验小结
出题人脑子进水了
五、评阅成绩
实验预习20%
实验过程20%
实验结果30%
实验报告30%
总成绩
实验二数据定义
一、实验目的
1、掌握SQL数据定义功能:
数据库定义、表的定义、索引定义。
2、掌握利用企业管理器和SQL语句定义表、索引的方法。
二、实验预习
1、SQL中基本表定义语句格式:
2、SQL中修改基本表语句格式:
三、实验内容和要求
1、在企业管理器中,利用菜单操作的方式在各自的数据库中建立如下四个基本表:
(1)供应商表S:
列名
说明
数据类型
约束
SNO
供应商号
CHAR(6)
PRIMARYKEY
SNAME
供应商名
VARCHAR(20)
NOTNULL
STATUS
供应商状态
VARCHAR(50)
CITY
所在城市
VARCHAR(50)
(2)零件表P:
列名
说明
数据类型
约束
PNO
零件号
CHAR(6)
PRIMARYKEY
PNAME
零件名
VARCHAR(20)
NOTNULL
COLOR
颜色
CHAR
(2)
WEIGHT
重量
NUMERIC(9,2)
CHECK(WEIGHT>0ANDWEIGHT<=100)
(3)工程项目表J:
列名
说明
数据类型
约束
JNO
项目号
CHAR(6)
PRIMARYKEY
JNAME
项目名
VARCHAR(20)
NOTNULL
CITY
城市
VARCHAR(50)
(4)供应情况表SPJ:
列名
说明
数据类型
约束
SNO
供应商号
CHAR(6)
NOTNULL
PNO
零件号
CHAR(6)
NOTNULL
JNO
项目号
CHAR(6)
NOTNULL
QTY
供应数量
SMALLINT
DEFAULT100
2、用CREATE语句建立如下三个表,并写出相应的语句。
(1)学生表Student:
列名
说明
数据类型
约束
SNO
学号
CHAR(7)
主码
SNAME
姓名
CHAR(10)
NOTNULL
SSEX
性别
CHAR
(2)
取“男”或“女”
SAGE
年龄
SMALLINT
取值15-45
SDEPT
所在系
VARCHAR(20)
默认“计算机系”
语句:
(2)课程表Course:
列名
说明
数据类型
约束
CNO
课程号
CHAR(10)
主码
CNAME
课程名
VARCHAR(20)
NOTNULL
CCREDIT
学分
SMALLINT
大于0
SEMSTER
学期
SMALLINT
大于0
PERIOD
学时
SMALLINT
大于0
语句:
(3)选课表Sc:
列名
说明
数据类型
约束
SNO
学号
CHAR(7)
主码,引用Student的外码
CNO
课程号
CHAR(10)
主码,引用Course的外码
GRADE
成绩
SMALLINT
大于0
语句:
3、利用SQL语句对表结构进行修改。
(1)为零件表P增加一个规格(GUIGE)列,数据类型为字符,长度50;
(2)修改课程表Course的CNAME属性列的类型为VARCHAR(30);
(3)为供应情况表SPJ添加参照完整性约束;
SPJ的SNO列参照S表SNO列
SPJ的PNO列参照P表PNO列
SPJ的JNO列参照J表JNO列
(4)删除零件表P的规格(GUIGE)列
4、利用企业管理器向表中添加数据
(1)供应商表S:
SNO
SNAME
STATUS
CITY
S1
精益
20
天津
S2
盛锡
10
北京
继续往表中增加一条记录:
四个字段的数据分别是S1,东方红,30,北京,会出现什么情况?
为什么?
(2)零件表P:
PNO
PNAME
COLOR
WEIGHT
P1
螺母
红
12
P2
螺栓
绿
17
P3
螺丝刀
蓝
105.5
是否能够正常输入三条数据?
如果否,问题出在哪里,为什么?
(3)工程项目表J:
JNO
JNAME
CITY
J1
一汽
北京
J2
半导体厂
南京
J3
常州
第三条记录是否能够正常输入,若否,会出现什么问题,为什么?
(4)供应情况表SPJ:
SN0
PNO
JNO
QTY
S1
P1
J1
200
S1
P1
J3
S2
P2
J4
输入过程中是否会遇到问题,若有,出在哪,为什么?
四、实验小结
五、评阅成绩
实验预习20%
实验过程20%
实验结果30%
实验报告30%
总成绩
实验三数据查询
一、实验目的
1、掌握查询语句的基本组成和使用方法
2、掌握常用查询技巧
二、实验预习
1、SQL中查询语句格式:
2、连接查询有哪些不同的连接方式?
有什么特点。
三、实验内容和要求
1、按照下表中的内容,在企业管理器中为数据库表输入相应的数据。
学生表:
Student
Sno
Sname
Ssex
Sage
Sdept
9512101
李勇
男
19
计算机系
9512103
王敏
女
20
计算机系
9521101
张莉
女
22
信息系
9521102
吴宾
男
21
信息系
9521103
张海
男
20
信息系
9531101
钱小平
女
1