数据库原理实验指导书Word格式.docx
《数据库原理实验指导书Word格式.docx》由会员分享,可在线阅读,更多相关《数据库原理实验指导书Word格式.docx(29页珍藏版)》请在冰点文库上搜索。
7
16
数据库的备份和恢复
8
16-17
系统需求分析和关系数据库设计
综合
70
前言
SQLServer2000的安装
将安装光盘插入光驱后,出现图1所示提示框。
选择“安装SQLServer2000组件”,出现图2所示页面后,选择“安装数据库服务器”。
图1
图2
选择“下一步”,然后选择“本地计算机”进行安装。
图3
图4
在“安装选择”窗口,选择“创建新的SQLServer实例...”。
对于初次安装的用户,应选用这一安装模式,不需要使用"
高级选项"
进行安装。
"
中的内容均可在安装完成后进行调整。
图5
在"
用户信息"
窗口,输入用户信息,并接受软件许可证协议。
图6
图7
安装定义"
窗口,选择"
服务器和客户端工具"
选项进行安装。
我们需要将服务器和客户端同时安装,这样在同一台机器上,我们可以完成相关的所有操作,对于我们学习SQLServer很有用处。
如果你已经在其它机器上安装了SQLServer,则可以只安装客户端工具,用于对其它机器上SQLServer的存取。
图8
实例名"
窗口,选择"
默认"
的实例名称。
这样本SQLServer的名称将和Windows2000服务器的名称相同。
SQLServer2000可以在同一台服务器上安装多个实例,也就意味着可以重复安装多次,这时用户就可以选择不同的实例名称。
建议将实例名限制在10个字符之内。
因为实例名会出现在各种SQLServer和系统工具的用户界面中,因此,较短的实例名称相对容易读取。
需要注意的是,实例名称不能是"
Default"
或"
MSSQLServer"
以及SQLServer的保留关键字。
图9
安装类型"
典型"
安装选项,并指定"
目的文件夹"
。
程序和数据文件的默认安装位置都是"
C:
\ProgramFiles\MicrosoftSQLServer\"
如果用户的C盘是系统区、D盘是应用区,也可以选择D盘作为安装区。
如果数据库中数据有10万条以上的记录,则至少预留1G以上的存储空间,以满足庞大的日志空间和索引空间的需求。
图10
服务账号"
窗口,请选择"
对每个服务使用统一账户..."
的选项。
服务设置"
处,选择"
使用本地系统账户"
如果需要"
使用域用户账户"
的话,请将该用户添加至WindowsServer的本机管理员组中。
图11
身份验证模式"
混合模式..."
选项,并设置管理员"
sa"
账号的密码。
如果您的目的只是为了学习的话,可以将该密码设置为空,以方便登录。
如果是真正的应用系统,则千万需要设置和保管好该密码!
如果需要更高的安全性,则可以选择"
Windows身份验证模式"
,这时就只有WindowsServer的本地用户和域用户才能使用SQLServer了。
图12
选择许可模式"
窗口,根据您购买的类型和数量输入(0表示没有数量限制)。
每客户"
表示同一时间最多允许的连接数,"
处理器许可证"
表示该服务器最多能安装多少个CPU。
笔者这里选择了"
并输入了100作为示例。
图13
然后就是约10分钟左右的安装时间,安装完毕后,出现该界面,并新增了以下的菜单。
实验1认识DBMS,建立数据库、表
实验目的
熟练掌握建立数据库和表,向数据库输入数据、修改数据和删除数据的操作。
实验内容
创建用于学生管理数据库,数据库名为XSGL,包含学生的基本信息,课程信息和选课信息。
数据库XSGL包含下列3个表:
(l)student:
学生基本信息。
(2)course:
课程信息表。
(3)sc:
学生选课表。
各表的结构分别如表1、表2和表3所示。
表1学生信息表:
student
列名
数据类型
长度
是否允许为空值
sno
字符型
10
否
sname
ssex
sage
整数型
是
sdept
表2课程信息表:
course
cno
cname
30
credit
pcno
表3学生选课表:
sc
grade
实验方法
一.数据库的建立:
1.用可视化界面建立:
(a)在SQLSERVER中用企业管理器-新建数据库;
2.命令方式建立:
(a)在SQLSERVER中,在查询分析器中使用T-SQL语句:
CREATEDATABASEXSGL
ON(NAME='
XSGL_DATA'
FILENAME='
E:
\XSGL.MDF'
SIZE=10MB,
MAXSIZE=50MB,
FILEGROWTH=5%)
LOGON
(NAME='
XSGL_Log'
e:
\XSGL_Log.ldf'
SIZE=2MB,
MAXSIZE=5MB,
FILEGROWTH=1MB)
二.表的建立:
在SQLSERVER中用企业管理器—数据库—XSCJ—表—右键—新建表;
在SQLSERVER中查询分析器的编辑窗口中用下列SQL语句:
useXSGL
Createtablestudent(snoCHAR(5),snameCHAR(10),ssexCHAR
(2),sageint,sdeptCHAR(4))
go
Createtablecourse(cnoCHAR
(2),cnameCHAR(30),creditINT,pcnoCHAR
(2)NULL)
Createtablesc(snoCHAR(5),cnoCHAR
(2),gradeINTNULL)
三.表数据的添加:
1.用可视化方法:
I:
在SQLSERVER中用企业管理器—数据库—XSCJ—表-表名—右键-打开表-返回所有行;
输入下列数据:
95001
李勇
男
20
CS
95002
刘晨
女
19
IS
95003
王敏
18
MA
95004
张立
95005
刘云
数据库
数学
信息系统
操作系统
数据结构
数据处理
PASCAL语言
92
85
88
90
80
58
2.在SQLSERVER查询分析器的编辑窗口中使用下列SQL语句插入数据:
insertintostudent(sno,sname,ssex,sage,sdept)values('
95001'
'
李勇'
男'
20,'
CS'
)
95002'
刘晨'
女'
19,'
IS'
95003'
王敏'
18,'
MA'
95004'
张立'
19,'
95005'
刘云'
CS'
insertintocourse(cno,cname,credit,pcno)values('
1'
数据库'
4,'
5'
2'
数学'
6,null)
3'
信息系统'
3,'
4'
操作系统'
6'
数据结构'
7'
数据处理'
3,null)
PASCAL语言'
insertintosc(sno,cno,grade)values('
'
92)
85)
88)
90)
80)
58)
四.表数据的修改:
在SQLSERVER中用企业管理器—数据库—XSCJ—表-表名—右键-打开表-返回所有行;
在表格中将相应的数据修改即可。
2.命令方法:
将所有学生的年龄增加一岁:
updatestudentsetsage=sage+1
将4号课程的学分改为4:
updatecoursesetcredit=4wherecno=4
设置7号课程没有先行课:
updatecoursesetpcno=nullwherecno=7
将95001号学生的1号课程的成绩增加3分:
updatescsetgrade=grade+3wheresno=’95001’andcno=’1’
五.表数据的删除:
单击左边的行标记,选定某一行,或单击后拖动选择相邻的多行,再右击鼠标选择弹出式菜单中的删除。
删除学号为95005的学生的记录:
deletefromstudentwheresno=’95005’
删除所有的课程记录:
deletefromcourse
删除成绩为不及格(少于60分)的学生的选课记录:
deletefromscwheregrade<
60
参考资料
企业管理器(EnterpriseManager)
企业管理器是SQLServer2000主要的管理工具,它提供了简单易用的管理控制台(MMC)用户界面,使初学者可以通过菜单和向导的模式建立数据库、定义数据表、备份和还原、数据导入导出、以及管理用户权限和数据库安全级别等高级功能。
1.登陆企业管理器用户界面
首先通过【开始】→【程序】→【MicrosoftSQLServers】→【企业管理器】进入企业管理器界面。
图16
在企业管理器的左边列出的是控制台管理目录,依次是数据库类型(SQLServers)、数据库群组名(SQLServers组)、数据库服务器主机名(如:
GUOLH(WindowsNT),其中:
GUOLH为数据库所在的机器名,默认连接为本机)和该数据库服务器提供的所有的管理工具(包括数据库、数据转换服务、管理、复制、安全性、支持服务等)。
在“数据库”选项中列出的是当前服务器中所有的数据库名(master、model、msdb、Northwind等),其中master、model、tempdb等为系统数据库,记录其他数据库的公有属性和某些隐藏信息,用户不要直接对系统数据库(也就是master库)中的表和数据项进行修改和删除,否则将会给数据库系统造成不可挽回的损失。
在本机上安装完毕SQLServer2000,第一次打开企业管理器,系统将自动以管理员身份(用户名:
sa)登录,如果出现登录是要求输入用户名和密码,请以sa为登录账号,密码为安装时设置的密码。
图17
如果忘记密码,也不要紧,只要当前连接的数据库主机是自己的电脑,只需在数据库服务器主机名(如:
GUOLH(WindowsNT))上点击右键,选择“编辑SQLServer注册属性”,弹出如下对话框:
图18
将“连接模式”改为“使用Windows身份验证”。
点击“确定”,关闭企业管理器,再重新进入,就不会再出现登录界面,此时只要用户登录Windows2000的账号是管理员账号,用户就具备了管理数据库的最高权限。
由于SQLServer2000支持网络访问和远程管理,所以建议用户及时修改SQLServer身份验证模式中的管理员密码,方法是进入“安全性”→“登录”,双击“sa”,出现如下对话框:
图19
在密码框中输入新密码,点击确定,再次确认密码即可。
2.建立数据库
要建立数据库最简单的方法是在“数据库”选项上点右键弹出菜单,选择“新建数据库”,出现如下对话框:
图20
在名称栏目中输入数据库的名称(如:
我的数据库),其他选项采用默认设置,点“确定”一个新的数据库就生成了。
新的数据库名将出现在“数据库”列表中。
(在一个数据库服务器上可以新建许多个数据库,他们之间相对独立)
如果在数据库中定义数据表,只要双击进入“我的数据库”,再双击进入“表”,企业管理器的右边将列出该数据库中所有的可见表。
如下图所示:
图21
所列的数据表的名称的前三个字母都是“sys”,他们都是该数据库的系统表,用户请不要把这些表删除,以免给该数据库造成不可挽回的破坏。
用户要定义自己的表,只要在“表”右键菜单中选择“新建表”,出现如下图所示的表字段定义对话框。
由于一个空的数据库中含有很多系统表,用户可以将所有的系统库和系统表进行隐藏,具体操作请看前面的“已注册的SQLServer属性”对话框。
图22
用户定义视图可以点击工具栏上的“添加表”按钮来添加视图的基表,选择各表中的字段的存在形式。
也可以在SQL编辑器中直接输入建立视图的SQL语句。
如下图:
图23
“关系图”也是数据库设计的常用操作,在“关系图”上点击出现右键菜单,选择“新建数据库关系图”。
出现“创建数据库关系图先导”,直接点击下一步,选择需要参与关系设计的有关数据表和视图。
继续下一步,然后完成。
如图出现关系图设计界面。
用户只要用鼠标拖动,设置各种属性,就可以将各表中的相关字段建立某种关系。
图24
图26
实验2数据查询
本实验的目的是使学生掌握SQLServer查询分析器的使用方法,加深对SQL和SQL语言的查询语句的理解。
熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。
一.单表查询:
1.查询全体学生的学号和姓名:
selectsno,snamefromstudent
2.查询全体学生的所有信息:
select*fromstudent
或者selectsno,sname,ssex,sage,sdeptfromstudent
3.查询全体学生的姓名,出生年份,和所在系,并用小写字母表示所有系名:
selectsname,'
出生年份为:
'
year(getdate())-sage,lower(sdept)fromstudent
4.给上例的结果集指定列名:
出生,year(getdate())-sage年份,lower(sdept)系名fromstudent
5.查询选修了课程的学生的学号:
selectdistinctsnofromsc
比较:
selectsnofromsc
6.查询年龄在20岁以下的学生的姓名及其年龄:
selectsname,sagefromstudentwheresage<
7.查询考试成绩有不及格的学生的学号:
selectdistinctsnofromscwheregrade<
selectsnofromscwheregrade<
8.查询年龄在20-30岁直接的学生的姓名,姓名,所在系:
selectsname,ssex,sdeptfromstudentwheresagebetween20and30
9.查询IS,CS,MA系的所有学生的姓名和性别:
selectsname,ssexfromstudentwheresdeptin('
'
)
10.查找所有姓’李’的学生的姓名,学号和性别:
selectsname,sno,ssexfromstudentwheresnamelike'
李%'
将学生表中的’95001’号学生的姓名’李勇’改为’李勇勇’,再执行:
李_'
11.查询没有先行课的课程的课程号cno和课程名cname:
selectcno,cnamefromcoursewherepcnoisnull
二.查询结果排序
12.查询选修了3号课程的学生的学号和成绩,并按分数降序排列:
selectsno,gradefromscwherecno='
orderbygradeDESC
23.查询全体学生的情况,查询结果按所在系号升序排列,同一系中的学生按年龄降序排列:
select*fromstudentorderbysdeptASC,sageDESC
三.连接查询:
14.查询每个学生及其选修课程的情况:
selectstudent.*,sc.*fromstudent,scwherestudent.sno=sc.sno
比较:
笛卡尔集:
selectstudent.*,sc.*fromstudent,sc
自然连接:
selectstudent.sno,sname,ssex,sdept,cno,gradefromstudent,scwherestudent.sno=sc.sno
15.查询每一门课程的间接先行课(只求两层即先行课的先行课):
selectFo,Second.pcno间接先行课fromcourseFirst,courseSecondwhereFirst.pcno=So
selectFo,Second.pcno间接先行课fromcourseFirst,courseSecondwhereFirst.pcno=SoandSecond.pcnoisnotnull
16.列出所有学生的基本情况和选课情况,若没有选课,则只列出基本情况信息:
SQLServer中:
selects.sno,sname,ssex,sdept,cno,gradefromstudents,scscwheres.sno*=sc.sno
17.查询每个学生的学号,姓名,选修的课程名和成绩:
selectS.sno,sname,cname,gradefromstudentS,courseC,scSCwhereS.sno=SC.snoandC.cno=SC.cno
四.使用带IN谓词的子查询
1.查询与’刘晨’在同一个系学习的学生的信息:
select*fromstudentwheresdeptin
(selectsdeptfromstudentwheresname='
select*fromstudentwheresdept=
)的异同
)andsname<
>
'
刘晨V
selectS1.*fromstude