数据库原理实验教材.docx
《数据库原理实验教材.docx》由会员分享,可在线阅读,更多相关《数据库原理实验教材.docx(73页珍藏版)》请在冰豆网上搜索。
数据库原理实验教材
实验一
实验题目:
SQLServer2000基本操作
一、实验目的:
1、熟悉SQLServer2000环境和系统结构;
2、熟悉SQLServer2000的基本工具;
3、使用企业管理器实现对服务器和数据库的管理;
4、使用查询分析器进行SQL脚本的编写、编译和运行。
二、实验仪器
计算机
三、实验原理:
在用SQLServer为企业提供信息服务之前,要先熟悉SQLServer的运行环境。
熟练使用数据库系统提供的工具是一个系统管理员必要的学习步骤。
SQLServer最基本的运行环境是它的企业管理器。
从企业管理器界面上,用户可以进一步接触到其他的各种工具。
当需要编写SQL脚本时,最常用的工具则是查询分析器。
通过本实验,使大家对SQLServer的运行环境逐步熟悉起来。
四、实验内容与步骤:
1、练习企业管理器的使用
SQLServer2000的基本工具。
使用企业管理器控制SQLServer服务。
使用企业管理器查看当前数据库实例的配置数据。
(1)通过选择“开始”程序MicrosoftSQLServer”企业管理器”命令,打开企业管理器窗口,如图1-1所示。
图1-1SQLServer企业管理器
企业管理器的界面是一个标准的Windows界面,由标题栏、菜单栏、工具栏、树窗口和任务对象窗口组成。
(2)打开企业管理器,展开【SQLServer组】节点。
在SQLServer组下边的节点(BHDX-734BEAC40C(WindowsNT))右击,将弹出图1-2所示菜单。
从该菜单上可以看到目前用户可以对实例BHDX-734BEAC40C(WindowsNT)进行的操作。
单击图1-2所示菜单命令中的【断开】,则将断开当前企业管理器这个应用和SQLServer服务器之间的连接通信。
这时(BHDX-734BEAC40C(WindowsNT)以下所有节点都将收缩。
(3)单击图1-2所示菜单命令中的【暂停】,可以暂停当前SQLServer服务。
(4)单击图1-2所示菜单命令中的【停止】,可以停止当前正在运行的SQLServer服务。
(5)单击图1-2所示菜单命令中的【启动】,可以重新启动当前已经停止的SQLServer服务。
(6)单击图1-2所示菜单命令中的【属性】,则将弹出图1-3所示的对话框。
该对话框定义了许多SQLServer实例级别的配置参数。
也可以修改这些配置参数。
图1-2操作实例的菜单选项
图1-3SQLServer实例级别的配置参数
2、练习查询分析器的使用
查询分析器基本知识。
熟悉查询分析器的环境。
查询分析器用于执行Transaction-SQL命令等SQLScripts,以查询、分析或处理数据库中的数据。
对于掌握SQL语言理解SQLServer的工作有很大帮助。
(1)通过选择“开始”程序MicrosoftSQLServer”查询分析器”命令,打开“查询分析器“对话框,如图1-4所示。
图1-4“SQLServer查询分析器“对话框
(2)在查询分析器的右边的【脚本编辑器】里输入如下命令:
usepubs
go
sp_helpauthors
go
select*
fromauthors
go
(3)按Ctrl+F5键对该语句进行编译(或者按工具栏的绿色对号)。
(4)按F5键(或工具栏的
)执行该语句,返回结果如图1-5所示。
图1-5程序执行返回后的结果
(5)输入并执行如下语句:
USEnorthwind
Go
Selectcompanyname,city,region
Fromsuppliers
返回结构如图1-6所示:
图1-6
(6)按Ctrl+L,系统返回查询计划分析,如图1-7所示。
图1-7查看查询分析计划
(7)单击查询分析器个节点,并在各节点上右击,查看查询分析器的细节特征。
3、服务管理器
(1)服务管理器用于启动、暂停或停止数据库服务器SQLServer、SQLServerAgent、MSDTC(MicrosoftDistributedTransactionCoordinator)。
在对SQLServer数据库进行任何操作之前,必须启动本地或远程SQLServer服务,这个过程可以在SQLServer服务管理器中完成。
通过选择“开始”程序MicrosoftSQLServer”服务管理器”命令,打开“服务管理器“窗口,如图1-8所示。
在SQLServer服务管理器中有如下操作:
在SQLServer服务管理器中的“服务器”框中选择服务器名,例如:
BHDX-734BEAC40C;
在“服务“下拉式列表中选择一种服务,如图1-9所示,例如SQLServer。
单击
,
,
按钮,以启动、暂停、
图1-8“SQLServer服务管理器“对话框停止所选择的服务。
如果要在启动操作系统时自动启动所选择的服务,可以选择“当启动OS时自动启动服务”复选框。
图1-9“SQLServer服务管理器“对话框服务选项
4、客户端网络实用工具
客户端网络实用工具是一个图形工具,用于配置客户端的连接、测定网络库的版本信息以及设定本地数据库的相关选项。
启动方法:
“开始”程序MicrosoftSQLServer”客户端网络实用工具”命令,打开“客户端网络实用工具“对话框,如图1-10所示。
安装所需要的协议以后,就可以从客户计算机访问包含在网络库和数据库中的例程。
图1-10“SQLServer客户端网络实用工具“对话框
5、服务器网络实用工具
服务器网络实用工具用于配置服务器端的连接、测定网络库的版本信息。
启动服务器网络实用工具的方法:
“开始”程序MicrosoftSQLServer”服务器网络实用工具”命令,打开“服务器网络实用工具“对话框,如图1-11所示。
图1-11“SQLServer服务器网络实用工具“对话框
6、熟悉系统数据库的结构
在企业管理器中。
依次打开所有四个系统数据库:
master,,model,,msdb,tempdb,并查看其中所有的数据对象,包括:
表、视图、存储过程、用户、角色、规则、默认值、用户定义的数据类型、用户定义的函数和全文目录。
(1)在企业管理器中展开master数据库节点,显示出master数据库中所有的表。
(2)从这些表中找出名为“sysservers”的表,这个表存储有当前SQLServer环境中的实例描述。
在目前我们的环境中,只有一个BHDX-734BEAC40C实例存在,所有该表中的数据应该只有一行。
(3)在该表上,右击,将进入【打开表】子菜单,选择【返回所有行】。
系统返回结果如下图所示。
(4)请按照这样的方法查看其他表的内容。
图1-12查看系统表的内容
7、熟悉样例数据库的内容
请在企业管理器中,依次打开所有两个样例数据库:
pubs,Northwind,并查看其中所有的数据对象,包括:
表、视图、存储过程、用户、角色、规则、默认值、用户定义的数据类型、用户定义的函数和全文目录。
五、实验报告要求
1、实验报告由个人独立完成,每人一份。
2、实验项目要写全。
3、实验的基本步骤要合理正确。
4、内容充实,字迹工整。
六、思考题:
1、下列那个数据库是可以在运行SQLServer过程中被删除?
A、masterB、modelC、pubsD、Northwind
2、请认真查看master数据库中所有表,并查看表中的内容分别包含了什么?
3、SQLServer提供哪几个系统数据库?
4、SQLServer提供哪几个样例数据库?
5、判断:
如果master数据库被损坏了,SQLServer照常可以运行。
()
6、如果SQLServer被停止运行,则tempdb数据库中的所有数据都将丢失。
()
实验二
实验题目表、数据库的基本操作
一、实验目的:
1、掌握如何创建一个SQLServer数据库。
2、掌握如何创建表,输入数据。
3、理解SQLServer2000数据库的存储结构。
二、实验仪器
计算机
三、实验原理:
数据库用于存放数据和各种数据库对象,数据库日志文件用来记录数据库的各种变化,以及对数据库进行的各种操作的备忘录。
本实验联系实际操作,创建数据库、表并在表中输入数据。
四、实验内容与步骤:
1、创建一个SQLServer数据库
建立库
(1)打开“服务管理器”以及“查询分析器”,在“查询分析器“编辑栏输入以下内容:
CREATEDATABASETest
ON
(NAME='Test_dat',
FILENAME='g:
\microsoftsqlserver\mssql\data\testdat.mdf',
size=10,
maxsize=50,
filegrowth=5)
logon
(name='test_log',
FILENAME='g:
\microsoftsqlserver\mssql\data\testlog.ldf',
size=5mb,
maxsize=25mb,
filegrowth=5mb)
go
(2)按Ctrl+F5键对该语句进行编译(或者按工具栏的绿色对号)。
(3)按F5键(或工具栏的
)执行该语句,返回结果如图2-1所示。
以上数据库定义了一个主文件Test_dat,大小10,自动增长率5;定义了一个日志文件'test_log,大小55mb,自动增长率5mb。
也可以利用企业管理器创建数据库:
(1)通过选择“开始”程序MicrosoftSQLServer”企业管理器”命令,打开企业管理器窗口。
展开数据库节点右击数据库节点新建数据库(如图2-2至2-5所示)。
要求:
主文件Test_dat,大小10,自动增长率5;定义了一个日志文件test_log,大小55mb,自动增长率5mb。
图2-1创建一个test数据库
图2-2新建数据库
图2-3
图2-4
图2-5
查看库
(1)打开“服务管理器”以及“查询分析器”,在“查询分析器“编辑栏输入以下内容:
sp_helpdbtest
(2)按Ctrl+F5键对该语句进行编译(或者按工具栏的绿色对号)。
(3)按F5键(或工具栏的
)执行该语句,返回结果如图2-6所示。
图2-6查看库的结果
图2-7
也可以在企业管理器里看:
右击test数据库查看任务版,如图2-7所示。
修改数据库
(1)打开“服务管理器”以及“查询分析器”,在“查询分析器“编辑栏输入以下内容:
ALTERDATABASETest
ADDFILE
(NAME=Test_data,
FILENAME='g:
\ProgramFiles\microsoftsqlserver\mssql\data\test_data.mdf',
SIZE=5,
MAXSIZE=50,
FILEGROWTH=1
)
(2)按Ctrl+F5键对该语句进行编译(或者按工具栏的绿色对号)。
(3)按F5键(或工具栏的
)执行该语句,返回结果如图2-8所示。
ADDFILE是指增加一个数据文件,还可以是ADDLOGFILE、REMOVEFILE、MODIFYFILE等,分别代表增加日志文件、删除数据库文件和修改文件信息等。
图2-8修改返回的结果
建立表
表1Student表
表2、SC表
表3、课程表(Course)
建表的定义语句格式:
CREATETABLE<表名>(<列名><数据类型>[<列级完整性约束条件>]
[,<列名><数据类型>[<列级完整性约束条件>]]…
[,<表级完整性约束条件>]);
<表名>:
所要定义的基本表的名字
<列名>:
组成该表的各个属性(列)
<列级完整性约束条件>:
涉及相应属性列的完整性约束条件
<表级完整性约束条件>:
涉及一个或多个属性列的完整性约束条件
建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成。
其中学号不能为空,值是唯一的,并且姓名取值也唯一。
(1)打开“服务管理器”以及“查询分析器”,在“查询分析器“编辑栏输入以下内容:
CREATETABLEStudent
(SnoCHAR(5)NOTNULLUNIQUE,
SnameCHAR(20)UNIQUE,
SsexCHAR
(2),
SageINT,
SdeptCHAR(15));
(2)按Ctrl+F5键对该语句进行编译(或者按工具栏的绿色对号)。
(3)按F5键(或工具栏的
)执行该语句,返回结果如图2-10所示。
也可以在企业管理器里建立表:
(1)通过选择“开始”程序MicrosoftSQLServer”企业管理器”命令,打开企业管理器窗口。
展开数据库节点右击数据库节点pubs右击表新建表,(如图2-11所示)。
在图2-11相应列输入字段名、数据类型以及数据长度,保存。
图2-10用查询分析器建立表
图2-11用企业管理器建立表
表2和表3可用同一方法建立。
输入数据
语句格式:
INSERT
INTO<表名>[(<属性列1>[,<属性列2>…)]
VALUES(<常量1>[,<常量2>]…)
将一个学生记录:
(学号:
95001;姓名:
李勇;性别:
男;年龄:
20岁;所在系:
CS)插入到Student表中。
(1)打开“服务管理器”以及“查询分析器”,在“查询分析器“编辑栏输入以下内容:
INSERT
INTOStudent
VALUES(‘95020’,‘陈冬’,‘男’,18,‘IS’);
(2)按Ctrl+F5键对该语句进行编译(或者按工具栏的绿色对号)。
(3)按F5键(或工具栏的
)执行该语句,返回结果如图2-12所示。
图2-12插入数据返回的结果
表1的其他记录和表2、表3的记录用同一方法输入。
也可以通过企业管理器输入数据:
通过选择“开始”程序MicrosoftSQLServer”企业管理器”命令,打开企业管理器窗口。
展开数据库节点右击数据库节点pubs左击表在右边的表中找到Student表右击Student表打开表返回所有行(或返回首行,如图2-12,2-13所示)。
在图2-13中输入记录。
Student表中其他记录和表2、表3的记录用同一方法输入。
图2-12返回所有行
图2-13输入记录
五、实验报告要求
1、实验报告由个人独立完成,每人一份。
2、项目要写全。
3、实验的基本步骤要合理正确。
4、内容充实,字迹工整。
六、思考题:
1、选择要执行的数据库,应该是哪个SQL命令?
A、USEB、GOC、EXECD、DB
2、下列那个数据文件是创建和正常使用一个数据库必不可少的?
A、日志文件B、安装程序文件C、主文件D、次文件
3、判断:
主键可以建立在“值可以为NULL”的列上。
()
4、判断:
删除表必须小心注意的操作,因为表一旦删除便无法恢复。
()
5、判断:
SQLServer在进行数据操作的时候,总是先写数据库,然后记录日志。
()
6、判断:
数据库一旦建立就不允许修改大小。
()
实验三
实验题目SQL数据查询语言的使用
一、实验目的:
1、掌握SELECT语句的基本用法。
2、实用WHERE子句进行有条件的查询。
3、掌握IN,NOTIN,BETWEEN使用来查询。
4、利用LIKE子句实现模糊查询。
5、利用子句为结果排序。
二、实验仪器
计算机
三、实验原理:
用户用来和数据库进行交流,向数据库提出要求的语言是Transact-SQL。
实际上,Transact-SQL也是数据库管理系统可以理解的唯一语言。
使用Transact-SQL编写应用程序可以完成所有的数据库管理工作。
任何应用程序,只要目的是向SQLServer的数据库管理系统发出指令以获得数据库管理系统的响应,最终都必须体现为以Transact-SQL语句为表现形式的指令。
四、实验内容与步骤:
查询语句格式
SELECT[ALL|DISTINCT]<目标列表达式>
[,<目标列表达式>]…
FROM<表名或视图名>[,<表名或视图名>]…
[WHERE<条件表达式>]
[GROUPBY<列名1>[HAVING<条件表达式>]]
[ORDERBY<列名2>[ASC|DESC]];
SELECT子句:
指定要显示的属性列
FROM子句:
指定查询对象(基本表或视图)
WHERE子句:
指定查询条件
GROUPBY子句:
对查询结果按指定列的值分组,该属性列值相等的元组为一个组。
通常会在每组中作用集函数。
HAVING短语:
筛选出只有满足指定条件的组
ORDERBY子句:
对查询结果表按指定列值的升序或降序排序
1、单表查询
(1)选择表中的若干列,这就是投影操作。
查询全体学生的学号与姓名。
通过选择“开始”程序MicrosoftSQLServer”查询分析器”命令,打开“查询分析器“对话框在查询分析器的右边的【脚本编辑器】里输入如下命令:
SELECTSno,Sname
FROMStudent;
按Ctrl+F5键对该语句进行编译(或者按工具栏的绿色对号),按F5键(或工具栏的
)执行该语句,返回结果如图3-1所示。
图3-1查询返回的结果
查询全体学生的姓名、学号、所在系。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-2所示。
SELECTSname,Sno,Sdept
FROMStudent;
图3-2查询返回的结果
本例改变了列的顺序。
查询全体学生的详细记录。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-3所示。
SELECT*
FROMStudent;
等价于:
SELECTSno,Sname,Ssex,Sage,Sdept
FROMStudent;
查全体学生的姓名及其出生年份。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-4所示。
SELECTSname,1996-Sage
FROMStudent;
目标列经过计算。
图3-3查询返回的结果
图3-4查询返回的结果
查询全体学生的姓名、出生年份和系,并用别名。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-5所示。
SELECTSnameNAME,'YearofBirth:
'BIRTH,
2000-SageBIRTHDAY,SdeptDEPARTMENT
FROMStudent;
图3-5查询返回的结果
(2)选择表中的若干元组。
查询选修了课程的学生学好并取消重复列。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-6所示。
SELECTDISTINCTSno
FROMSC;
图3-6查询返回的结果
查询所有年龄在20岁以下的学生姓名及其年龄。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-7所示。
SELECTSname,Sage
FROMStudent
WHERESage<20;
图3-7查询返回的结果
等价于:
SELECTSname,Sage
FROMStudent
WHERENOTSage>=20;
查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-8所示。
SELECTSname,Sdept,Sage
FROMStudent
WHERESageBETWEEN20AND23;
图3-8查询返回的结果
BETWEEN…AND包括边界,NOTBETWEENAND不包括边界。
查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-9所示。
SELECTSname,Ssex
FROMStudent
WHERESdeptIN('IS','MA','CS');
图3-9查询返回的结果
查询学号为95001的学生的详细情况。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-10所示。
SELECT*
FROMStudent
WHERESnoLIKE'95001';
等价于:
SELECT*
FROMStudent
WHERESno='95001';
图3-10查询返回的结果
查询所有姓刘学生的姓名、学号和性别。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-11所示。
SELECTSname,Sno,Ssex
FROMStudent
WHERESnameLIKE'刘%';
图3-11查询返回的结果
查询名字中第2个字为"阳"字的学生的姓名和学号。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-12所示。
SELECTSname,Sno
FROMStudent
WHERESnameLIKE‘____阳%';
图3-12查询返回的结果(没有记录被查询到)
查询DB_Design课程的课程号和学分。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-13所示。
SELECTCno,Ccredit
FROMCourse
WHERECnameLIKE'DB\_Design'ESCAPE'\'
图3-13查询返回的结果(没有记录被查询到)
某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。
查询缺少成绩的学生的学号和相应的课程号。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-14所示。
SELECTSno,Cno
FROMSC
WHEREGradeISNULL;
图3-14查询返回的结果(没有记录被查询到)
ISNULL”不能用“=NULL”代替
查询计算机系年龄在21岁以下的学生姓名。
在查询分析器的右边的【脚本编辑器】里输入如下命令,编译并运行,结果如图3-15所示。
SELECTSname
FROMStudent
WHERESdept='CS'ANDSage<21;
图3-15查询返回的结果
(3)对查询结果排序
查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。
在查询