中国地质大学江城学院
数据库原理与SQL Server
课程实验报告
姓 名 祁红杰
班级学号 2611090219
指导教师 冀莉莉
20##年10月1 日
实验1 熟悉SQL Server 2000环境
目的和要求
(1) 掌握SQL Server 服务器的安装
(2) 掌握企业管理器的基本使用方法
(3) 掌握查询分析器的基本使用方法
(4) 对数据库及其对象有一个基本了解
实验准备
(1) 了解SQL Server 2000各种版本安装的软/硬件要求
(2) 了解SQL Server 支持的身份验证模式
(3) SQL Server 各组件的主要功能
(4) 对数据库、表、数据库对象有一个基本了解
(5) 了解在查询分析器中执行SQL 语句的方法
学时安排:1学时
实验内容
1. 利用企业管理器访问系统自带的pubs 数据库。
(1)启动SQL Server 服务管理器。
(2)以系统管理员身份登录到企业管理器并访问pubs数据库。
(3)在企业管理器的目录树中展开文件夹→展开pubs 数据库图标,则将列出该数据库所有对象,如表、视图、存储过程、默认、规则等。
(4)选中pubs 下的“表”图标,将列出pubs 数据库所有的表(系统表和用户表),在此以用户表 publishers 为例,打开该表,查看其内容。
(5)在表的尾部插入记录(9943,zhang,Beijing,null,china)和(1408,li,shanghai,null,china),会发生情况?
(9943,zhang,Beijing,null,china)这个可以成功
(1408,li,shanghai,null,china)这个不成功,出现了如下的错误
(6)在表中删除步骤(5)插入的记录。
2.查询分析器的使用
(1)在查询分析器对象浏览器的的目录树中展开pubs 数据库图标,则将列出该数据库的所有对象,如表、视图、存储过程等。
(2)以pubs 数据库的用户表stores 为例,选中该表的图标,单击鼠标右键,出现快捷菜单,执行“打开”菜单项,打开该表,查看其内容。
(3)在表的尾部插入一记录。
(4)在查询分析器的输入窗口,输入如下T-SQL 语句:
use pubs
go
select * from stores
go
看看执行结果是什么?
实验2 数据库管理
目的和要求
(1) 了解SQL Server数据库的逻辑结构和物理结构
(2) 了解表的结构和特点
(3) 了解SQL Server 的基本数据类型
(4) 了解空值概念
(5) 学会在企业管理器中创建数据库和表
(6) 学会使用T-SQL 语句创建、修改数据库和表
实验准备
(1)明确创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。
(2)创建数据库必须要确定数据库名、数据库大小(最初的大小、最大的大小、是否允许增长即增长方式)和存储数据的文件。
(3)确定数据库包含哪些表,以及所包含的个表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表。
(4)了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T-SQL语句创建。
学时安排:1学时
实验内容
1. 创建test1数据库,逻辑文件名为test1data ,数据文件名为test1data.mdf,初始容量为1MB,最大容量为10MB,空间大小按10%递增。
create database test
on
(
name=testdata,
filename='d:\sqldata\test1data.mdf',
size=1MB,
maxsize=10MB,
filegrowth=10%
)
2. 创建test2数据库,逻辑主数据文件名为testdata,存放在文件夹“D:\text”中,数据文件名为test2data.mdf,日志文件名为test2data.ldf,初始容量为2MB,最大容量为20MB,递增大小为2MB。
3. 修改test2数据库,添加两个次数据文件test_add1和test_add2,他们的初始大小为10MB,不允许自动增长空间。将test2数据库中的test2data主数据文件的初始大小修改为5MB,添加一个日志文件test2log.ldf,初始容量为1MB,最大容量为5MB,空间大小按10%递增。
4. 压缩test2数据库文件为原来的20%。
5. 删除test1数据库。
6. 创建名称为“通讯录”数据库,并在该数据库中创建名为“个人信息”的数据表,包括如下字段:编号(int,自动编号)、姓名(char(8)not null)、性别(char(2)not null)、出生日期(datetime)、联系方式(char(16))。
7. 利用ADD子句为个人信息表添加家庭地址字段(text,null),修改性别为int类型。从表中删除性别、联系方式字段。
8. 在“个人信息”表中插入如下记录信息:
9. 将编号为103记录的姓名改为“楮红”。
10. 删除所有男同志的数据记录。
实验3 查询管理
目的和要求
(1)理解索引的概念、索引的作用、索引的分类;
(2)掌握使用命令和企业管理器创建和删除索引的方法。
(3)理解查询的概念;掌握使用SQL命令创建查询的方法;
实验准备
(1)了解CREATE INDEX 语句的语法格式
(2)了解DROP INDEX语句的语法格式
(3)了解SELECT 语句的基本语法格式
(4)了解SELECT 语句的执行方法
学时安排:2学时
实验内容
1. 创建“个人信息”表,在“个人信息”表中插入如下记录信息:
(1)关于姓名、性别建立复合唯一索引,索引名为“name-id”,要求输入数据时,显现重复的姓名和性别组合的值时,忽略数据的重复。
(2)关于出生日期建立非簇索引,要求填充因子为90,索引名为“birthday-ID”。
(3)修改索引birthday-ID,要求按照出生日期的降序排序,填充因子为90,指定删除同名索引。
(4)使用SQL命令查看“个人信息”表的空间使用情况。
2. 设学生选课数据库中有三个数据表:
S(SNO,SNAME,SEX,BIRTHDAY,SDEPARTMENT,TEL)
C(CNO,CNAME,TEACHER,PCNO)
SC(SNO,CNO,GRADE)
完成下列任务:
(1)定义表结构并向S、C和SC表中输入记录。
(2)检索每个学生的出生年份。
(3)在S中检索学生的姓名和出生年份,输出的列名分别为STUDENT_NAME和BIRTH_YEAR。
(4)向基本表SC中插入一条元组(S0404,C06,90)。
(5)把课程名为VB的成绩从基本表SC中删除。
(6)把女生的成绩提高10%。
实验4 视图和查询管理
目的和要求
(1)掌握子查询和连接查询的表示
(2)掌握SELECT语句的GROUP BY 子句的作用和使用方法
(3)掌握SELECT 语句的ORDER BY 子句的作用和使用方法
(4)理解视图的概念
(5)掌握使用视图设计器和SQL命令创建视图的方法
(6)掌握视图数据的查询、插入、修改、删除
实验准备
(1)了解子查询和连接查询的方法
(2)了解SELECT 语句的GROUP BY 子句的作用和使用方法
(3)了解SELECT 语句的ORDER BY 子句的作用和使用方法
(4)理解视图与查询的区别
(5)掌握使用视图设计器创建视图的方法
(6)掌握使用SQL命令创建视图的方法
学时安排:2学时
实验内容:
设学生选课数据库中有三个数据表:
S(SNO,SNAME,SEX,BIRTHDAY,SDEPARTMENT,TEL)
C(CNO,CNAME,TEACHER,PCNO)
SC(SNO,CNO,GRADE)
完成下列任务
1. 检索学习课程号为C02的学生学号和姓名。
2. 检索没有选修课程“数据库”的学生学号和姓名。
3. 检索选修课程号为C02或C04的学生学号。
4. 检索至少选修课程号为C02和C04的学生姓名。
5. 检索没有选修课程“数据库”的学生的姓名和年龄。
6. 列出选修课程超过3门的学生姓名和选修门数。
7. 求选修了各课程的学生人数。
8. 在表SC中求选修课程C01的学生的学号和得分,并将结果按分数降序排序。
9. 查找每个学生的学号及选修课程的平均成绩情况。
10. 创建视图pride7,按照学号升序,将前30%的同学的学号、平均成绩显示出来。
11. 创建加密视图pride4,将课程名及课程平均成绩显示出来。
12. 创建视图pride5,将课程成绩大于80分的学生姓名、课程名及课程成绩显示出来。要求当修改视图pride5时,必须满足限制条件:成绩大于80分。
13. 从视图pride4中查询课程平均成绩在70到80分之间的课程名。
14. 向视图pride6中,插入一条记录:(j0408,乔海石,1997-07-07,计算机系,女)
15. 删除视图pride6中在1997年出生的所有记录。
实验5 T-SQL 编程
目的与要求
(1)进一步巩固第二章至第四章所学的内容
(2)掌握变量的分类及使用
(3)掌握各种控制语句的使用
(4)理解游标的概念并掌握游标的使用方法
实验准备
(1)了解T-SQL支持的各种基本数据类型
(2)了解T-SQL控制语句的功能及使用方法
(3)了解系统函数的调用方法
实验内容
1. 查询每个学生出生30个月和30个星期后的日期。
2. 建立视图,要求显示学生的学号和课程“数据结构”的成绩,如果学生没有选修此课程,则显示没有成绩信息。
3. 为表S男同学的行声明游标,并使用FETCH NEXT逐个提取这些行。
4. 创建一个视图,如果某个学生所有课程成绩的平均分小于60分,那么设置奖学金类型为“三等奖”。如果大于或等于90分,则设置奖学金类型为“一等奖”。其余设置为“二等奖”。
5.读程序,写出程序的运行结果。
DECLARE @POSITION INT , @STRING CHAR(8)
SET @POSITION=1
SET @STRING=’GREEN’
WHILE @POSITION <=DATALENGTH(@STRING)
BEGIN
SELECT ASCII(SUBSTRING(@POSITION,1)),
CHAR(ASCII(SUBSTRING(@POSITION,1)))
SET @POSITION=@POSITION+1
END
第二篇:SQL Server数据库程序设计复习题
SQL Server数据库程序设计复习题之填空题
1. SQL Server与Windows 2000等操作系统完全集成,可以使用操作系统的用户和域账号作为数据库的____
2. SQL Server采用的结构化查询语言称为 ______ 。
3. 常见的SQL Server2000的版本一般包括_______、_______、_______、开发版和评估版等。
4. 安装SQL Server时需要以本地____________身份登录操作系统。
5. 如果在Windows NT/2000上安装,需要事先设置至少一个_______。
6. SQL Server主数据文件、次数据文件和事务日志文件默认的扩展名分别为_______、_______和_______ 。
7. SQL Server的数据库分为____________和_______两种类型。
8. 每个SQL Server数据库下都包括_______、_______、_______和_______四个系统数据库。
9. _______系统数据库主要用来进行复制、作业调度和管理报警等活动。
10. SQL Server客户机传递到服务器上的一组完整的数据和SQL语句称为 _______ 。
11. SQL Server中的数据类型主要包括________、________、________、二进制、位和双字节等类型。
12. SQL Server提供的最常用的管理工具是______________和______________。
13. Microsoft SQL
Server2000是运行在__________操作系统平台上的、逻辑模型为________型数据库管理系统。
14. 在一个已存在数据的表中增加一列,一定要保证所增加的列允许________值。
15. 对表中记录的维护工作主要有增加、________和________操作,均可通过企业管理器或Transact-SQL语句完成。
16. 在Transact-SQL语句中需要把日期时间型数据常量用__________括起来。
17. 找回被删除表的惟一方法是事先做好数据库的_______工作。
18. 可以将视图理解为存储在SQL Server数据库中的一条经过预编译的 语句。
19. _______是一种常用的改善数据库性能的技术。
20. SQL Server中为局部变量赋值的语句是_______和_______ 。
21. 触发器是一种特殊的_______,基于表而创建,主要用来保证数据的完整性。
22. 使用create database命令定义一个数据库,包括定义__________文件和__________文件两个部分。
23. 使用create database命令定义一个数据库,定义其数据文件以关键字________开始,定义日志文件以关键字________开始。
24. 修改数据库定义的命令关键字为___________,删除整个数据库的命令关键字为____________。
25. 在SQL Server中,打开一个数据库使之成为当前库,有________种方法,其中之一使用的命令关键字为_______。
26. 在SQL Server中,通常不需要用户建立索引,而是通过使用________约束和________约束,由系统自动建立索引。
27. 单行或行尾注释的开始标记为________,多行注释的开始标记为________,结束标记为________。
28. 局部变量的开始标记为______,全局变量的开始标记为________。
29. 每条________语句能够同时为多个变量赋值,每条________语句只能为一个变量赋值。
30. 定义局部变量的语句关键字为__________,被定义的各变量之间必须用________字符分开。
31. 在SQL Server中,每个程序块的开始标记为关键字__________,结束标记为关键字________。
32. 每次执行使用游标的取数、修改或________操作的语句时,能够对表中的________个记录进行操作。
33. 在SQL Server中,一个事务是一个__________的单位,它把必须同时执行或不执行的一组操作________在一起。
31. 在SQL
Server中,一个事务处理控制语句以关键字________________开始,以关键字________________或________________结束。
35.
每个存储过程可以包含________条Transact-SQL语句,可以在过程体中的任何地方使用__________语句结束过程的执行,返回到调用语句后的位置。
36. 建立一个存储过程的语句关键字为________________,执行一个存储过程的语句关键字为____________。
37. 要访问SQL Server数据库服务器,用户必须提供正确的__________和__________。
38. 对用户授予和收回数据库操作的语句关键字分别为__________和__________。
39. 在授予用户访问权限的语句中,所给表名选项以关键字________开始,所给用户名选项以关键字________开始。
40. 在收回用户访问权限的语句中,所给表名选项以关键字________开始,所给用户名选项以关键字________开始。
41. SQL Server2000采用 __________ 计算模型,通过中央服务器集中存储数据资源。
42. SQL Server2000数据库应用的处理过程分布在_______和服务器上。
43. SQL Server2000服务器可以被多台客户机访问,数据库服务器仅返回客户端应用程序所需要的数据,这样做的好处是可以减少_______。
44. SQL Server2000提供了动态的自我管理机制,能够自动增大或缩小数据库所占用的 ______ 。
45.在网络环境下,当多个用户同时访问数据库时,就会产生并发问题,SQL Server2000是利用_______ 完成并发控制的。
46. SQL Server2000与Windows 2000等操作系统完全集成,可以使用操作系统的用户和域账号作为数据库的_______
47. SQL Server2000采用的结构化查询语言称为_______ 。
48. 常见的SQL Server2000的版本一般包括_______ 、_______、_______ 、开发版和评估版等。
49. 安装SQL Server2000时需要以本地_______身份登录操作系统。
50. 如果在Windows NT/2000上安装SQL Server2000,需要事先设置至少一个 _______。
51. 默认情况下,SQL Server2000服务器的名字为 。
52. SQL Server2000服务管理器程序的主要作用是启动_______、_______ 、_______ 服务器。
53. 在网络多用户环境下,在停止SQL Server2000服务之前,最好先执行 操作。
54. SQL Server2000将数据组织成用户可以看见的逻辑组件,而在磁盘上则作为 _______实现。
55. 常用的数据库对象主要包括缺省、约束、用户、图表、用户自定义数据类型、 ________ 、_______、_______、_______、_______等。
56. SQL Server2000主数据文件、次数据文件和事务日志文件默认的扩展名分别为_______、_______和_______。
57. SQL Server2000的数据库分为_________和_______两种类型。
58. 每个SQL Server2000数据库下都包括_______、_______、_______和_______ 四个系统数据库。
59. _______系统数据库主要用来进行复制、作业调度和管理报警等活动。
60. SQL Server2000客户机传递到服务器上的一组完整的数据和SQL语句称为 ________。
61. 一般可以使用_______命令来标识Transact-SQL批处理的结束。
62. SQL Server2000中的数据类型通常是指字段列、存储过程参数和 ____ 的数据特征。
63. varchar数据类型可以自动去掉字段或变量尾部的_______以节省空间。
64. SQLServer2000的datetime和smalldatetime数据类型主要用来存储________和________的组合数据。
65. 在SQL Server2000中,通常使用________数据类型来表示逻辑数据。
66. 函数LEFT(‘abcdef’,2)的结果是_______ 。
67. SQL Server2000规定了2种类型的标识符,即____________和____________。
68. SQL Server2000中的整数类型包括__________、__________、__________和__________四种。
69. SQL Server2000中的整数类型分别为bigint、int、smallint和tinyint,它们分别占用______、______、______和______个存储字节。
70. SQL Server2000中的数据类型主要包括________、________、________、二进制、位和双字节等类型。
71. SQL Server2000提供的最常用的管理工具是______________和______________。
72. 在SQL Server2000中主要是通过使用______________运行Transact-SQL语句。
73. 如果希望修改数据库的名字,可以使用的系统存储过程是 。
74. SQL Server2000主要通过查询分析器和____________这两种工具来完成数据库的管理工作。
75. 数据库备份和恢复的Transact-SQL语句分别是____________________和__________________。
76. 在一个已存在数据的表中增加不带默认值的列,一定要保证所增加的列允许________值。
77. 对表中记录的维护工作主要有增加、________和________操作,它们均可通过企业管理器或Transact-SQL语句完成。
78. 在Transact-SQL语句中需要把日期时间型数据常量用__________括起来。
79. 找回被删除表的惟一方法是事先做好数据库的_______工作。
80. 可以将视图理解为存储在SQL Server2000数据库中的一条经过预编译的_______ 语句。
81. _______是一种常用的改善数据库性能的技术。
82. SQL Server2000中引入索引主要是为了加速________速度,也可保证数据的惟一性。
83. 索引可以加速selcet语句中Order By和____________选项的执行速度。
84. 索引一经创建就完全由SQL Server2000系统___________选择和维护。
85. 索引会影响对基本表的________、________和________等操作的速度。
86. 从是否改变基本表记录的物理位置角度可将索引分为__________和__________索引两类。
87. 聚集索引与非聚集索引相比,查询速度更___________。
88. 注释是一些说明性的文字,而不是_______语句,不参与程序的编译。
89. SQL Server2000支持两种形式的变量,即_______ 和_______ 。
90. 一个局部变量的使用范围局限于一个_______内,即两个GO语句之间的那一部分。
91. SQL Server2000中为局部变量赋值的语句是_______和_______。
92. 触发器是一种特殊的_______,基于表而创建,主要用来保证数据的完整性。
93. 使用create database命令定义一个数据库,包括定义__________文件和__________文件两个部分。
94. 使用create database命令定义一个数据库,定义其数据文件以关键字________开始,定义日志文件以关键字________开始。
95. 修改数据库定义的命令关键字为________________,删除整个数据库的命令关键字为________________。
96. 在SQL Server2000中,打开一个数据库使之成为当前库,有________种方法,其中之一使用的命令关键字为_______。
97. 索引可以由系统根据约束条件自动建立,也可以由用户通过命令或菜单方式建立,但它的________和_______将根据需要由系统自动实现,无须用户过问。
98. 索引是在基本表的列上建立的一种数据库对象,它同基本表分开存储,使用它将降低数据的________、________、_________速度。
99. 基本表中的记录数越______,每条记录占用的字节数越______时,使用索引就越有利。 100. 创建索引的命令关键字为________________,删除索引的命令关键字为________________。
101. 在索引命令中使用关键字CLUSTERED或NOCLUSTERED分别表示将建立的是________或________索引。
102. 在基本表的某个列上建立索引,可以使基本表中的所有记录按该列值的________或________排列。
103. 当指定基本表中某一列或若干列为主码时,则系统将在这些列上自动建立一个________、________和________的索引。
104. 当指定基本表中某一列或若干列为UNIQUE约束时,则系统将在这些列上自动________一个唯一值________。
105. 若规定基本表中某一列或若干列为非空和唯一值双重约束,则这些列就是该基本表的________码,若只规定为唯一值约束,则__________空值重复出现。
106. 在SQL Server2000中,通常不需要用户建立索引,而是通过使用________约束和________约束,由系统自动建立索引。
107. 单行或行尾注释的开始标记为________,多行注释的开始标记为________,结束标记为________。
108. 局部变量的开始标记为______,全局变量的开始标记为________。
109. 每条________语句能够同时为多个变量赋值,每条________语句只能为一个变量赋值。 110. 定义局部变量的语句关键字为__________,被定义的各变量之间必须用________字符分开。
111. 在SQL Server2000中,每个程序块的开始标记为关键字__________,结束标记为关键字________。
112. 在SQL Server2000中,前后相邻的语句之间可以使用________、________或________字符分开。
113. 在SQL Server2000中,CASE结构是一个________,只能作为一个________使用在另一个语句中。
114. 在SQL Server2000中,CASE函数具有______种格式,每种格式中可以带有________
个WHEN选项,可以带有______个ELSE选项。
115. 在条件结构的语句中,关键字IF和ELSE之间和ELSE之后,可以使用________语句,也可以使用具有____________格式的语句块。
116. 在循环结构的语句中,当执行到关键字__________后将终止整个语句的执
行,当执行到关键字__________后将结束一次循环体的执行。
117. 声明游标语句的关键字为________________,该语句必须带有__________子句。 118. 打开和关闭游标的语句关键字分别为________和________。
119. 判断使用FETCH语句读取数据是否成功的全局变量为________________。
120. 使用游标对基本表进行修改和删除操作的语句中,WHERE选项的格式为“WHERE __________ OF ____________。
121. 每次执行使用游标的取数、修改或________操作的语句时,能够对表中的________个记录进行操作。
122. 在SQL Server2000中,一个事务是一个__________的单位,它把必须同时执行或不执行的一组操作________在一起。
123. 在SQL Server2000中,一个事务处理控制语句以关键字________________开始,以关键字________________或________________结束。
124. 每个存储过程可以包含________条Transact-SQL语句,可以在过程体中的任何地方使用__________语句结束过程的执行,返回到调用语句后的位置。
125. 建立一个存储过程的语句关键字为________________,执行一个存储过程的语句关键字为____________。
126. 在一个存储过程定义的AS关键字前可以定义该过程的________,AS关键字之后为该过程的__________。
127. 触发器是一种特殊的存储过程,它可以在对一个表上进行________、________和________操作中的任一种或几种操作时被自动调用执行。
128. 创建和删除一个触发器的语句关键字为________________和________________。
129. 在一个表中最多只能有一个关键字为_____________的约束,关键字为FOREIGN KEY的约束可以出现________次。
130. CHECK约束被称为________约束,UNIQUE约束被称为__________约束。
131. 使用一种约束时,可以使用关键字_____________和标识符____________的选项命名该约束,也可以省略该选项由系统自动命名,因为用户很少再使用其约束名。
132.
当一个表带有约束后,执行对表的各种________操作时,将自动________相应的约束,只有符合约束条件的合法操作才能被真正执行。
133. 在SQL Server2000中,数据库的安全机制分为4个等级,分别为客户端____________的安全、数据库的________安全、数据库使用安全和数据库对象的使用安全。
134. 数据库的安全管理问题归结为对________和________的管理问题。
135. 要访问SQL Server2000数据库服务器,用户必须提供正确的__________和__________。 136. 对用户授予和收回数据库操作的语句关键字分别为__________和__________。
137. 在授予用户访问权限的语句中,所给表名选项以关键字________开始,所给用户名选项以关键字________开始。
138. 在收回用户访问权限的语句中,所给表名选项以关键字________开始,所给用户名选项以关键字________开始。
139. 使用游标取数和释放游标的语句关键字分别为____________和____________。