项目一思考和练习
填空题
1. SQL Server 2000的数据库管理程序分为 服务器程序 和 客户端程序 两部分,两部分可以安装在同一台计算机上,也可以分别安装在不同的计算机上。
2. SQL Server 2000的实例是一套完整的服务程序,实例中的服务程序多达几百个,大致
可以分为 SQL Server数据库引擎 、 SQL Server代理 和Distribute Transaction Coordinator 3类。
3. SQL Server实例的服务帐户有本地系统帐户和域用户帐户两种。
4. SQL Server实例的身份验证模式有Windows身份验证模式和SQL Server身份验证模式两种。
5. 启动和停止实例的操作可以在SQL Server程序组件的【服务控制器】窗口和Windows
操作系统的【服务】窗口中进行。
选择题
1. 同一台计算机上可以运行(D)个实例。
A.一个 B.两个 C.三个 D.多个
2. 在创建命名实例时,如果是运行在中文版操作系统上的中文版SQL Server 2000,则允
许对实例(C)命名。 A.只能用英文 B.只能用中文
C.允许用英文或中文 D.只能用系统默认名称
3. SQL Server 2000实例的排序规则,不论升序还是降序,都是按照第一个字符的(B)排
序。
A.UNICODE码值 B.ASCII码值 C.英文字符顺序 D.中文拼音顺序
4. 在【企业管理器】中第一次使用SQL Server实例时需要做(B)操作。
A.创建服务器组
B.创建服务器组和注册实例 C.注册实例
D.选择并连接本地实例或网络实例。
简答题
1. 简述SQL Server的服务器组件和客户端组件之间的关系。
答案:
SQL Server 2000可以分成?服务器程序组件?和?客户端程序组件?两部分,服务器组件实现数据的存储和管理,客户端组件是用户访问数据库的工具。两个部分可以安装在一台计算机上,也可以分别安装在多台计算机上,供不同角色的用户使用。
2. 什么是SQL Server的实例?
答案:
SQL Server的一个实例就是一套完整的服务程序。实例中的服务程序多达几百个,大致可以分为3类:SQL Server数据库引擎、SQL Server代理和分布处理协调器。一台计算机允许存在并同时运行多个实例。实例可以分为两种:默认实例和命名实例。 3. 简述SQL Server实例的服务帐号的含义。
答案:
SQL Server 2000的服务帐户分为?本地系统帐户?和?域用户帐户?两种。SQL Server中每一个服务的启动和运行必须由具有权限的操作系统帐户来完成。可以为每一个服务指定一个专用的帐户,多个服务也可以使用同一个帐户。通常情况下?本地系统的帐户?可以启动、运行大部分的服务,只有与网络交互有关的服务器到服务器的活动才必须使用?域用户帐户?。
4. 简述SQL Server实例的身份验证模式有哪几种?
答案:
SQL Server实例的用户允许与Windows操作系统的帐户紧密结合,提供两种身份验证模式,一种是?Windows身份验证模式?,另一种是?SQL Server身份验证模式?。
对于?Windows身份验证模式?,只要以Administrator身份登录Windows操作系统就可以连接SQL Server数据库实例。
如果选择?SQL Server身份验证模式?,在使用的时候,除了登录Windows操作系统外,还需要以数据库管理员sa或其它数据库用户身份登录数据库,才能连接SQL Server数据库实例。
?混合模式?允许在登录实例时,使用任何一种方式。 5. 简述SQL Server实例的排序规则的含义。
答案:
排序规则是根据特定语言和区域设臵的对字符串数据进行排序和比较的规则,体现在查询语句的order by子句。通常,不论英文字符串还是中文字符串,都是按照第一个字符的ASCII值排序。
6. 简述创建SQL Server命名实例的过程。
答案:
创建命令实例的过程就是SQL Server的安装过程
启动SQL Server 2000安装向导界面,在提示的对话框中设臵属性,有些属性采用缺省设臵,创建命名实例需要设臵以下属性。
在【安装选择】对话框中,选择?创建新的SQL Server实例,或安装客户端工具?。 在【安装定义】对话框中,选择?服务器和客户端工具?安装类型。
在【实例名】对话框中,单击【默认】复选框,清除缺省设臵,并且在【实例名】文本框中输入实例名称。
在【服务帐户】对话框中,选中【使用本地系统帐户】单选框。
在【身份验证模式】对话框中,选中【混合模式】单选框,在【输入密码】和【确认密码】文本框中输入系统管理员sa用户的密码。
在其他属性设臵对话框中可以采用缺省选项。按照安装向导的提示完成安装。 7. 简述如何在【服务管理器】中启动、停止实例?
答案:
在【Microsoft SQL Server】程序组件中启动【服务管理器】程序。在【服务器】下拉列表框中选择要启动的实例,在【服务】下拉列表框中选择SQL Server服务。单机【启动】
按钮启动实例。
在【Microsoft SQL Server】程序组件中启动【服务管理器】程序。在【服务器】下拉列表框中选择已经启动的实例,在【服务】下拉列表框中选择SQL Server服务。单机【停止】按钮停止实例。
8. 简述在【企业管理器】中创建服务器组的方法。
答案:
启动【企业管理器】程序,在【Microsoft SQL Servers】节点上单击鼠标右键,在弹出的快捷菜单中单击【新建SQL Server组】菜单项,打开【服务器组】对话框。在【名称】文本框中输入要创建的服务器组名称,并选中【顶层组】单选框。单击【确定】按钮,完成服务器组的创建。
9. 简述在【企业管理器】中注册实例的过程。
答案:
启动【企业管理器】程序,选择一个服务器组节点,并在节点上单击鼠标右键,在弹出的快捷菜单上单击?新建SQL Server注册?菜单项,打开【注册SQL Server向导】窗口。在【选择一个SQL Server】对话框的【可用的服务器】文本框中输入要注册的实例名。在【选择身份验证模式】对话框中,选择身份验证模式,并且在【选择连接项】对话框中输入?登录名?和?密码?。单击?完成?按钮完成注册。 10. 简述在【查询分析器】中联接实例的过程。
答案:
启动【查询分析器】程序,在【连接到SQL Server】窗口中选择以前连接过的实例名,或者打开【连接服务器】对话框。在【活动服务器】列表框中,选择本地计算机和网络中的SQL Server实例。单击【确定】按钮,关闭【连接服务器】对话框。输入用户和密码。单击【确定】按钮,关闭【连接到SQL Server】窗口,激活【SQL分析器】窗口。
练习题
读者自行设计实例的名称、身份验证模式和排序规则,并练习创建命名实例。
项目二思考和练习
填空题
1. 2. 3. 4. 5. 6. 7.
数据库的名称是数据库的唯一标识。
表是数据按逻辑关系做的分类,而数据文件是数据库中数据的物理存储方式。 SQL Server的数据文件有逻辑名称和操作系统文件名两种名称。 描述数据文件的大小有初始尺寸、最大尺寸和自动增长尺寸3种。 数据文件可以存放在一个或多个硬盘分区上。
数据文件组可以分为主要文件组标志为primary和用户定义文件组。
事务日志文件和数据文件一样,具有逻辑名称和操作系统文件名两种名称。
选择题
1. 每一个数据库都有(A)的标识,这个标识就是数据库名称。
A.一个唯一 B.多个 C.两个 D.不同
2. SQL Server的数据文件的名称有(C)。
A.初始尺寸 B.最大尺寸
C.逻辑名称和操作系统名称 D.增长尺寸
3. SQL Server的数据文件可以分为(B)。
A.重要文件和次要文件
B.主要数据文件和次要数据文件 C.初始文件和最大文件 D.初始文件和增长文件 4. 下列哪种描述正确。(D)
A.主要文件组只能包含主要文件。 B.主要文件组不能包含次要文件。 C.主要文件允许在用户定义文件组中。
D. 主要文件组中除了有主要文件,也允许包含次要数据文件。 5. create database是用来(A)。
A.创建数据库 B.删除数据库 C.创建表 D.创建视图
简答题
1. 简述数据库包括哪4个基本属性?
答案:
数据库的4个基本属性是:标识数据库唯一性的?数据库名称?,存储数据的?数据文件?,对数据文件按逻辑关系归类的?文件组?,提高运行效率并能够撤销错误操作的?事务日志文件?。
2. 简述什么是数据文件的逻辑名称和操作系统名称?
答案:
每一个数据文件都有一个惟一的标识,这个标识就是数据文件的?逻辑名称?,而?操作系统文件名?是数据文件在硬盘上的存放路径和文件名的统称。 3. 简述数据文件的尺寸有哪3种?
答案:
初始尺寸是创建数据库时指定的文件大小。最大尺寸表示一个数据文件的最大容量,数据文件的最大尺寸不能大于硬盘的尺寸。文件增长尺寸是指在数据的存储过程中,当数据文件达到初始尺寸后自动增长的尺度。
4. 简述对数据文件进行分组对数据检索的好处。
答案:
如果一个表中的数据分别存放在不同的数据文件中,检索数据时,从多个文件中同时查找,可以提高查询效率。
5. 简述事务日志文件的作用。
答案:
对数据库的每一个操作结果不是立即更新到数据文件中,而是将结果暂时存放在一个临时文件中,这个文件就是?事务日志文件?。只有确认了操作结果或事务日志文件达到一定容量后,才将最终结果更新到数据文件中。?事务日志文件?可以提高数据库的操作效率,也能够撤消某些错误操作。
6. 简述create database语句的语法。
答案:
create database数据库名 on primary ( name=逻辑名称,
filename=操作系统文件名, size=初始尺寸, maxsize=最大尺寸, filegrowth=增长尺寸), filegroup次要文件组名 ( name=逻辑名称,
filename=操作系统文件名, size=初始尺寸, maxsize=最大尺寸, filegrowth=增长尺寸) log on
( name=逻辑名称,
filename=操作系统文件名, size=初始尺寸, maxsize=最大尺寸, filegrowth=增长尺寸) collate排序规则名称
7. 简述alter database语句的语法。
答案:
用alter database语句一次只能修改一个属性,修改不同属性的语法规则也各不相同。 (1)向主要文件组增加数据文件
alter database 数据库名 add file
( name=逻辑名称, Filename=操作系统文件名, Size=初始尺寸, Maxsize=最大尺寸, Filegrowth=增长尺寸)
(2)向用户文件组增加数据文件
Alter database 数据库名 Add file
( name=逻辑名称, Filename=操作系统文件名, Size=初始尺寸, Maxsize=最大尺寸, Filegrowth=增长尺寸) to filegroup 用户定义文件组名
(3)增加事物日志文件
Alter database 数据库名
Add log file ( name=逻辑名称, Filename=操作系统文件名, Size=初始尺寸, Maxsize=最大尺寸, Filegrowth=增长尺寸) (4)修改数据库排序规则 alter database 数据库名 collate排序规则名称
8. 简述drop database语句的语法。
答案:
drop database 数据库名
练习题
读者自行设计数据库的名称、数据文件的逻辑名称和操作系统名称、数据文件组、事务日志文件的逻辑名称和操作系统名称,并且分别用【数据库属性】窗口和create database语句创建数据库。
项目三思考和练习
填空题
1. 表是数据库中数据存储的基本单位。 2. 表是反映现实世界某类事物的数学模型,表由行和列组成。现实世界中事物的属性对应
表的列,表中的一行代表一类事物中的一个特例。
3. 数据类型是指定列所保存数据的类型,是规范表中数据正确性的一种方法。 4. 对表操作的数据定义语言(DDL)有创建表的create table语句、修改表结构的alter table语句和删除表的drop table语句。
5. 对表中数据更新操作的数据定义语言(DML)有添加记录的insert语句、修改记录的
update语句和删除记录的delete语句。
6. 批处理是包含一个或多个T-SQL语句的组合,SQL Server将批处理语句编译成一个完
整的处理单元,由客户端一次性地发送给服务器。
7. 批处理程序在编译和运行过程中,可能会产生编译错误和运行时错误。
选择题
1. 表是反映现实世界中一类事务的数学模型,现实世界中一类事务的属性是表中的(A)。
A.列 B.行 C.记录 D.数值
2. 如果表的某一列的取值为不固定长度的字符串,适合采用(C)数据类型描述。
A.char B.number C.varchar D.int
3. 下列对空值的描述正确的是(D)。
A.char或varchar类型的空格。 B.int类型的0值。
C. char或varchar类型的空格或int类型的0值。
D.既不是char或varchar类型的空格,也不是int类型的0值,而是表的模一列取值不确定的情况。
4. 下列对批处理程序描述正确的是(B)。
A.一条T-SQL语句不能构成批处理程序。
B.可以将批处理程序保存为扩展名为“.sql”的文件,重复利用。 C.必须由多条T-SQL语句组成。 D.每一次必须重新编写批处理程序。
简答题
1. 简述表、表中的列和行的含义。
答案:
表是反映现实世界某类事物的数学模型,表由行和列组成。现实世界中事物的属性对应表的列,表中的每一行记录代表一类事物中的一个特例。 2. 简述常用的数据类型有哪些?
答案:
number(p):整数(p为精度)
decimal(p,s):浮点数(p为精度,s为小数位数) int:整数类型
char(n):固定长度字符串(n为长度) varchar(n):可变长度字符串(n为最大长度) datetime:日期和时间。
3. 简述create table、alter table和drop table语句的语法。
答案:
create table语句的语法:
create table 表名 (
列名 数据类型 是否允许为空值, 列名 数据类型 是否允许为空值, ??
列名 数据类型 是否允许为空值 )
各列之间用“,”隔开
alter table语句语法: (1)修改列的数据类型
alter table 表名
alter column 列名 数据类型 NULL/NOT NULL
(2)为表增加列
alter table 表名
add 列名 数据类型 NULL/NOT NULL
(3)删除表中的列
alter table 表名 drop column 列名
drop table语句的语法:
drop table 表名
4. 简述insert、update和delete语句的语法。
答案:
insert语句的语法:
insert into 表名 (列名,列名,列名??) 列名之间用“,”隔开 values
(数据,数据,数据??)
update语句的语法:
update 表名 set 列名 = 新值, …… 列名 = 新值
where 列名 = 条件表达式
delete语句的语法:
delete from 表名
where 列名 = 条件表达式
练习题
1. 使用create table语句按下列表结构创建表。 “专业表”数据结构 列名 专业编号 专业名称 char varchar 数据类型 长度/精度 3 20 允许空 否 是 描述 英文字符和数字,唯一区分标志,不允许重复。 中文描述。 答案:
create table专业表
(专业编号 char(3) not null, 专业名称 varchar(20))
“班级表”数据结构 列名 班级编号 所属专业编号 班主任编号 char char char 数据类型 长度/精度 3 3 4 允许空 否 是 是 描述 英文字符和数字,唯一区分标志,不允许重复。 中文描述。 取值为“教师表”中的“教师编号”。 答案: create table 班级表
(班级编号 char(3) not null, 所属专业编号 char(3), 班主任编号 char(4))
“课程表”数据结构
列名 课程编号 课程名称 课时 所属专业编号 教师编号 char 数据类型 长度/精度 3 20 8 3 4 允许空 否 是 是 是 是 描述 英文字符和数字,唯一区分标志,不允许重复。 中文描述。 整数。 取值为“专业表”的“专业编号”。 取值为“教师表”中的“教师编号”。 varchar float char char 答案: create table 课程表
(课程编号 char(3) not null, 课程名称 varchar(20), 课时 float(8), 所属专业编号 char(3), 教师编号 char(4))
“成绩表”数据结构 列名 班级编号 学生编号 选修课程编号 成绩 char char char decimal 数据类型 长度/精度 3 4 3 9,2 允许空 是 是 是 是 描述 取值为“班级表“的”班级编号“。 取值为“学生表“的”学生编号“。 取值为“课程表“的”课程编号“。 浮点数。 答案: create table 成绩表 (班级编号 char(3), 学生编号 char(4), 选修课程编号 char(3), 成绩 decimal(9,2))
2. 使用insert语句向表中添加记录 “专业表”数据
专业编号 Z01 Z02 Z03 Z04 计算机系 建筑系 美术系 中医护理 专业名称 答案:
insert into 专业表(专业编号,专业名称) values('Z01','计算机系')
insert into 专业表(专业编号,专业名称) values('Z02','建筑系')
insert into 专业表(专业编号,专业名称) values('Z03','美术系')
insert into 专业表(专业编号,专业名称)
values('Z04','中医护理')
“班级表”数据 班级编号 B01 B02 B03 B04 B05 B06 Z01 Z01 Z02 Z02 Z03 Z03 所属专业编号 J002 J003 J005 J006 J009 J010 班主任编号 答案:
insert into 班级表(班级编号,所属专业编号,班主任编号) values('B01','Z01','J002')
insert into 班级表(班级编号,所属专业编号,班主任编号) values('B02','Z01','J003')
insert into 班级表(班级编号,所属专业编号,班主任编号) values('B03','Z02','J005')
insert into 班级表(班级编号,所属专业编号,班主任编号) values('B04','Z02','J006')
insert into 班级表(班级编号,所属专业编号,班主任编号) values('B05','Z03','J009')
insert into 班级表(班级编号,所属专业编号,班主任编号) values('B06','Z03','J010')
“课程表”数据
课程编号 K01 K02 K03 K04 K05 K06 K07 K08 K09 K10 K11 K12 K13 K14 课程名称 数据结构 数据库原理 编译原理 计算机原理 建筑制图 建筑结构 模型制作 素描基础 色彩构成 自动控制原理 电器工程原理 中医基础 护理基础 病理学 课时 30 40 50 60 50 30 60 70 50 60 55 30 40 60 Z01 Z01 Z01 Z01 Z02 Z02 Z02 Z03 Z03 Z01 Z01 Z01 Z01 Z01 所属专业编号 J002 J003 J002 J002 J005 J005 J005 J008 J009 J004 J004 J011 教师编号 答案:
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K01','数据结构',30,'Z01','J002')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K02','数据库原理',40,'Z01','J003')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K03','编译原理',50,'Z01','J002')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K04','计算机原理',60,'Z01','J002')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K05','建筑制图',50,'Z02','J005')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K06','建筑结构',30,'Z02','J005')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K07','模型制作',60,'Z02','J005')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K08','素描基础',70,'Z03','J008')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K09','色彩构成',50,'Z03','J009')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K10','自动控制原理',60,'Z01','')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K11','电器工程原理',55,'Z01','')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K12','中医基础',30,'Z01','J004')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K13','护理基础',40,'Z01','J004')
insert into 课程表(课程编号,课程名称,课时,所属专业编号,教师编号) values('K14','病理学',60,'Z01','J011')
“成绩表”数据
班级编号 B01 B01 B02 B03 B01 B01 B03 B01 B01 B02 B03 B03 B04 B04 X001 X001 X005 X006 X002 X002 X006 X003 X003 X004 X007 X007 X008 X009 学生编号 K01 K02 K04 K05 K01 K02 K06 K01 K02 K04 K05 K06 K07 K07 选修课程编号 95 85 55 78 88 77 68 66 55 95 87 53 99 89 成绩 B05 B05 B06 B06 B02 B02 X010 X011 X012 X013 X004 X005 T001 T002 K08 K08 K09 K09 K01 K01 K01 K01 90 80 70 60 70 99 100 80 答案: insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B01','X001','K01',95)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B01','X001','K02',85)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B02','X005','K04',55)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B03','X006','K05',78)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B01','X002','K01',88)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B01','X002','K02',77)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B03','X006','K06',68)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B01','X003','K01',66)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B01','X003','K02',55)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B02','X004','K04',95)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B03','X007','K05',87)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B03','X007','K06',53)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B04','X008','K07',99)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B04','X009','K07',89)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B05','X010','K08',90)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B05','X011','K08',80)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B06','X012','K09',70)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩)
values('B06','X013','K09',60)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B02','X004','K01',70)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('B02','X005','K01',99)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('',T001','K01',100)
insert into 成绩表(班级编号,学生编号,选修课程编号,成绩) values('',T002','K01',80)
项目四思考和练习
填空题
1. 主键是唯一能够区分表中每一行记录的一个或多个列。
2. 不是所有的表都必须设置主键,但一个表只能有一个主键,主键不能为空值,并且可以
强制表中的记录的唯一性。主键的标志为“primary key”,简写为“PK”。 3. 被设置为主键的列称为“主键列”。
4. 存在两个表A和B,表A中的主键列在表B中也存在,但并不是表B的主键,仅作为
表B的一个必要的属性,则称此属性为表B的外键。 5. SQL Server中外键的标志为“foreign key”,简写为“FK”。
6. SQL Server的索引有唯一索引、非唯一索引、聚集索引和非聚集索引4类。 7. 索引由表的一个或多个列构成,一个表允许具有多个索引。
选择题
1. 如果将某一列设置为表的主键,在表中此列的值(C)。
A.可以出现重复值 B.允许为空值
C.不允许为空值,也不能出现重复值 D.不允许为空值,但允许列值重复 2. 对于表的外键,下列哪些描述正确。(A)
A.是表的非主键列,是另一个表的主键列。 B.主键和外键不能描述表之间的关系。 C.外键不能是表的索引。 D.外键允许为空值。
3. 下列对索引的描述哪些是正确的。(ABC)
A.索引用create view语句创建。 B.索引用drop view语句删除。
C.索引是描述表中记录存储位置的指针。 D.一个表只允许有一个索引。 4. 表的主键也是表的(D)。
A.非唯一索引 B.聚集索引 C.非聚集索引 D.唯一索引
5. 如果一个表中记录的物理存储顺序与索引的顺序一致,则称此索引为(B)。
A.唯一索引 B.聚集索引 C.非唯一索引 D.非聚集索引
简答题
1. 简述表的主键的含义。
答案:
主键是惟一能够区分表中每一行记录的一个或多个列。关系数据库设计和实施过程中要求表中不能出现全部属性取值完全相同的两条记录。被设臵为主键的列称为?主键列?。不是所有的表都必须设臵主键,但一个表只能有一个主键,主键不能为空值,并且可以强制表中的记录的惟一性。主键的标志为?primary key?,简写为?PK?。 2. 简述在create table语句和alter table语句中定义主键的语法。
答案:
(1)create table语句中设臵主键的语法:
在?列名 数据类型?后面加?primary key?声明。 (2)alter table语句中设臵主键的语法: alter table 表名
add primary key (列名)
3. 简述在alter table语句中移除表的主键的方法。
答案:
alter table语句中移除主键的语法: alter table 表名 drop 主键名
4. 简述表的外键的含义,以及表与表之间的关系的含义。
答案:
假设,存在两个表A和B,表A中的主键列在表B中也存在,但并不是表B的主键,仅作为表B的一个必要的属性,则称此属性为表B的外键。
SQL Server中没有外键的概念,沿用了外键的标志?Foreign Key?来对?关系?命名,?Foreign Key?可以简写为?FK?。
关系数据库系统的主要特点就是表与表之间存在关联关系。在SQL Server中,如果两个表之间存在主键和外键之间的关联,称两个表之间存在关系。
5. 简述在create table语句和alter table语句中定义外键或关系的语法。
答案:
在create table语句中定义关系,只要在外键列的后面加上以下说明即可。 constraint 关系名 foreign key references 主键表(主键列) 其中?关系名?的格式为: FK_外键表名_主键表名
alter table语句中定义关系的语法: alter table 表名
add foreign key (列名) references 主键表(主键列) 6. 简述表的索引的含义。
答案:
索引是由表中的一个或多个列生成的键值,是反映表中数据存储位臵的指针。设计良好
的索引可以快速确定表中数据的存储位臵,能显著提高数据库的查询速度。被设臵为索引的列称为?索引列?。 7. 简述“唯一索引”、“非唯一索引”、“聚集索引”和“非聚集索引”的含义。
答案:
(1)唯一索引
如果表的某列被设臵为索引列,表的全部记录在此列上的列值均不相同,称此索引为?唯一索引?。唯一索引用?unique index?表示。表的主键是特殊的唯一索引。
主键是唯一索引,但唯一索引不一定是主键。例如,?专业表?中?专业名称?列的取值也不相同,但?专业名称?并不是主键。
(2)非唯一索引
如果表的某列被设臵为索引列,表的全部记录在此列上的列值存在重复值,称此索引为?非唯一索引?。非唯一索引用?index?表示。
非唯一索引一定不是主键。 (3)聚集索引
同一个表中的记录在磁盘上的物理存储位臵并不连续,如果记录的物理存储顺序与表的索引的顺序一致,称此索引为?聚集索引?。聚集索引用?clusered index?表示。聚集索引可以大大提高记录的检索速度。
(4)非聚集索引
如果记录的物理存储顺序与表的索引的顺序不一致,称此索引为?非聚集索引?。非聚集索引用?nonclustered index?表示。
8. 简述用create index语句创建索引的语法。
答案:
create index语句的语法:
create [unique/clustered/nonclustered] index 索引名 on 表名 (列名,列名…)
9. 简述用drop index语句删除索引的语法。
答案:
drop index语句的语法: drop index 索引名
练习题
1. 用alter table语句为“专业表”、“班级表”和“教师表”设置主键,主键列的选择参考
“实训一”。 答案:
alter table 专业表
add primary key (专业编号) alter table 班级表
add primary key (班级编号) alter table 教师表
add primary key (教师编号)
2. 用alter table语句定义“班级表”与“专业表”的关系,主键表和外键表参考“实训二”。
答案:
alter table 班级表
add foreign key (所属专业编号) references 专业表 (专业编号) 3. 用create index语句将“学生编号”设置为“成绩表”的索引。
答案:
create index 学生编号索引 on 成绩表(学生编号)
项目五思考和练习
填空题
1. 在select子句中代表全部列的通配符是*。
2. “+”不仅可以作为两个算术表达式相加的算术运算符,而且可以将两个或更多的字符串表达式按顺序组合为一个字符串。
3. 由算术运算符构成的表达式称为“算术表达式”。 4. 由“+”连接的字符串称为“字符串连接表达式”。
5. 在查询结果集中,select子句中表达式通常显示为“无列名”,为了增加查询语句的可读
性,可以对表达式定义别名。
6. 关系表达式和逻辑表达式也称为“条件表达式”,关系表达式和逻辑表达式的结果只能
为“true”或“false”。
7. SQL Server提供逻辑运算符like和no like实现模糊查询。 8. 在order by子句中可以对列按照升序和降序顺序排序。
选择题
1. 查询语句中允许包含下列哪些子句。(ABCD)
A.select子句 B.from子句 C.where子句 D.order by子句
2. 在select子句中允许出现下列哪些项目。(ABC)
A.列名 B.函数 C.表达式 D.表名
3. “成绩 between 10.5 and 99.5”相当于下列哪个逻辑表达式(D)。
A.成绩>=10.5 and成绩<99.5 B.成绩>10.5 and成绩<99.5 C.成绩>=10.5 or 成绩<=99.5 D.成绩>=10.5 and成绩<=99.5
4. 能够消除查询结果中重复记录的函数是(A)。
A.distinct
B.case…when… C.convert D.substring
5. 能够对查询结果分类处理的函数是(B)。
A.distinct
B.case…when… C.convert D.substring
6. 能够按长度截取字符串的函数是(D)。
A.distinct
B.case…when… C.convert D.substring
7. 能够将日期型数据转换为字符串的函数是(C)。
A.distinct
B.case…when… C.convert D.substring
简答题
1. 简述查询语句的基本语法结构。
答案:
查询语句的语法结构,如下所示。 select <*/列名/表达式,......> from <表名>
where <关系表达式/逻辑表达式> group by <列名/表达式>
Having <有聚合函数参与的关系表达式或逻辑表达式> order by <列名/表达式> desc/asc,......
2. 简述SQL Server常用的算术运算符的种类和用法。
答案:
算术运算符对一个列或多个列执行数学运算,常用算术运算符的含义: +(加):执行两个数相加的算术运算 -(减):执行一个数减去另一个数的算术运算 *(乘):执行两个数相乘的算术运算 /(除):执行一个数除以另一个数的算术运算 %(取模):返回一个除法运算的整数余数
由算术运算符构成的表达式称为?算术表达式?。列是最简单的表达式,一个算术表达式也可以嵌套在另一个算术表达式中参与运算。
3. 简述SQL Server的比较运算服和常用的逻辑运算符和含义。
答案:
(1)比较运算符的含义:
=(等于):比较两个表达式的等价性
>(大于):比较两个表达式。当比较非空表达式时,如果左操作数的值大于右操作数,则结果为true,否则结果为false。如果任何一个操作数为null,或两个都为null,则返回null
<(小于):比较两个表达式。比较非空表达式时,如果左操作数的值小于右操作数,则结果为true,否则结果为false。如果任何一个操作数为null,或两个都为null,则返回null
>=(大于等于):比较两个表达式以得出大于或等于的结果
<=(小于等于):比较两个表达式。比较非空表达式时,如果左边操作数的值小于或等于右边的操作数,则结果为true,否则结果为false。如果任何一个操作数为null,或两个都为null,则返回null
<>(不等于):比较两个表达式。当比较非空表达式时,如果左操作数不等于右操作数,
则结果为true,否则结果为false。如果任何一个操作数为null,或两个都为null,则返回null
!=(不等于):测试某个表达式是否不等于另一个表达式。如果任何一个操作数为null,或两个都为null,则返回null。其功能与<>(不等于)比较运算符相同
!<(不小于):比较两个表达式。当比较非空表达式时,如果左边操作数的值不小于右边操作数的值,则结果为true,否则结果为false。如果任何一个操作数为null,或两个都为null,则返回null
!>(不大于):比较两个表达式。当比较非空表达式时,如果左侧操作数的值不大于右侧的操作数,则结果为true,否则结果为false。如果任何一个操作数为null,或两个都为null,则返回null
(2)逻辑运算符的含义: and(与):参与运算的两个表达式全部为true时结果为true,两个表达式任意1个为false时结果为false
or(或):参与运算的两个表达式全部为false时结果为false,两个表达式任意1个为true时结果为true
not(非):参与运算的表达式为true时结果为false,表达式为false是结果为true 4. 简述where子句的语法。
答案:
在实际应用中,表中的记录可能会多达几万条甚至几百万条,如果将全部记录都显示出来,显然为观察查询结果造成困难。SQL Server允许在where子句中使用?关系表达式?和?逻辑表达式?设臵查询条件,只返回符合条件的记录。 5. 简述逻辑联接谓词like和between…and…的用法。
答案:
(1)like模糊查询的通配符的含义: %:包含零个或多个字符的任意字符串 _:任意单个字符
(2)between…and…的含义
列名between最小值and最大值:相当于最小值≤列名≤最大值 6. 简述order by子句的用法。
答案:
能够对指定的列按升序或降序排列查询结果。SQL Server提供?order by?关键字对查询结果进行排序。
7. 简述SQL Server函数的含义。
答案:
数是能够完成特定功能并返回处理结果的一组T-SQL语句,处理需要的基本数据称为?输入参数?,处理过程称为?函数体?,处理结果称为?返回值?。 8. 简述常用函数distinct、case…when…、convert和substring的语法。
答案:
distinct函数消除查询结果中的重复行。语法如下: distinct 列名/表达式
在select子句中使用case…when…函数可以根据列的取值不同,定义不同的查询结果。语法如下:
case 列名 when 列值1 then 查询结果1 when 列值2 then 查询结果2
……
when 列值n then 查询结果n else 其他查询结果 end
用convert类型转换函数将日期时间类型数据转换为字符串类型。语法如下: convert函数的语法格式为:convert(数据类型[(长度/精度)],表达式[,转换样式]) 字符串截取函数substring按长度截取字符串,保留有用信息,舍弃无用信息。 substring函数的语法格式:substring(表达式,起始位臵,截取长度)
练习题
1. 对“课程表”查询,显示专业编号为Z02的课程记录。
答案: select *
from 课程表
where 所属专业编号='Z02'
2. 对“课程表”查询,显示各专业的基础课程信息。提示:课程名称中带有“基础”的记
录。 答案: select *
from 课程表
where 课程名称 like '*基础*'
3. 对“课程表”查询,显示课时在40到60小时的课程信息。
答案: select *
from 课程表
where 课时 between 40 and 60
4. 对“课程表”查询,按专业编号有小到大,课时由多到少的顺序对各课程记录排序。
答案: select *
from 课程表
order by 专业编号 asc,课时 desc 5. 对“课程表”查询,参考“专业表”,将练习题4的结果中的“专业编号”显示为“专
业名称”。 答案:
select 课程编号, 课程名称, 课时,
case 所属专业编号 when 'Z01' then '计算机系' when 'Z02' then '建筑系' when 'Z03' then '美术系' when 'Z04' then '中医护理' end , 教师编号 from 课程表
项目六思考和练习
填空题
1. 常用的聚合函数有:计算最大值的max,计算最小值的min,统计总和的sum,统计记录总数的count和计算平均值的avg。
2. 聚合函数的计算对象不仅是列而且可以是表达式。
3. SQL Server提供了group by关键字,可以按列值对记录进行分组,并且按组统计数据。 4. 根据T-SQL的语法规定,where子句中设置的条件是在分组统计之前使用的,因此where
子句中不能出现聚合函数构成的关系表达式。
5. SQL Server提供了专为分组统计使用的、与where子句功能类似的having子句对分组统计结果进行筛选。 6. 联接谓词any的作用是:比较指定列的值和子查询的结果,指定列的值与子查询结果集
中的任何一个结果满足比较条件即可。
7. 联接谓词all的作用是:比较指定列的值和子查询的结果,指定列的值与子查询结果集
中的全部结果都要满足比较条件。
8. 联接谓词any和all同样必须与“比较运算符”一起使用。
选择题
1. 对列或表达式计算最大值和最小值的函数是(A)。
A.max和min B.sum C.count D.avg
2. 对列或表达式计算总和的函数是(B)。
A.max和min B.sum C.count D.avg
3. 对列或表达式计算平均值的函数是(D)。
A.max和min B.sum C.count D.avg
4. 统计记录总数的函数是(C)。
A.max和min B.sum C.count D.avg
5. 下列哪些描述是正确的。(ABD)
A.聚合函数的运算对象可以是列,也可以是表达式。
B.having子句可以实现where子句额功能,但where子句不能实现having子句的功能。 C.where子句中可以包含聚合函数。
D.order by子句可以对聚合函数的运算结果排序。
6. 如果查询的select子句为select A,B,C*D ,则不能使用的group by子句是(C)。
A. group by A B. group by A,B
C. group by A,B,C*D D. group by A,B,C,D
简答题
1. 简述SQL Server的聚合函数min、max、sum、count和avg的含义和语法。
答案:
min函数:取的所选列的最小值。 max函数:取得所选列的最大值。 sum函数:取得所选列的总和。
count函数:取得所选结果集的记录总数。 avg函数:取得所选列的平均值。
2. 简述在查询语句中group by子句的含义和语法。
答案:
用group by进行分组统计的查询,语法如下所示。 select 列名列表,
聚合函数(列名/表达式), ….
聚合函数(列名/表达式) from 表名
group by 列名列表
3. 简述在查询语句中having子句的含义和语法。
答案:
使用having子句对分组统计结果进行筛选的语法如下所示。 select 列名列表,
聚合函数(列名/表达式), ….
聚合函数(列名/表达式) from 表名
group by 列名列表
having 聚合函数构成的关系表达式/逻辑表达式 4. 简述联接谓词any和all的含义和语法。
答案:
联接谓词any的作用是:比较指定列的值和子查询的结果,指定列的值与子查询结果集中的任意一个结果满足比较条件即可。
联接谓词any必须与?比较运算符?一起使用,语法格式如下: 比较运算符 any (子查询)
联接谓词all的作用是:比较指定列的值和子查询的结果,指定列的值与子查询结果集中的全部结果都要满足比较条件。
联接谓词all同样必须与?比较运算符?一起使用,语法格式如下: 比较运算符 all (子查询)
练习题
1. 查询“教师表”,显示年龄最大和最小的教师记录。
答案:
select max(year(getdate())-year(出生日期)) as 最大年龄, min(year(getdate())-year(出生日期)) as 最小年龄 from 教师表 2. 查询“教师表”,按性别分组统计教师的平均年龄。
答案:
select 性别,
avg(year(getdate())-year(出生日期)) as 平均年龄 from 教师表 group by 性别 3. 查询“课程表”,按“教师编号”统计每位授课教师的课时总和,并且只显示课时总和
80在以上的统计结果。 答案:
select 教师编号, sum(课时) from 课程表
group by 教师编号 having sum(课时)>80
项目七思考和练习
填空题
1. 视图和表都是数据库中的对象,视图的结构虽然与表相同,但视图是虚表。 2. 视图中的数据不会作为真实的对象存储在磁盘上,数据库对视图存储的是定义视图的查
询语句。
3. 每一次使用视图,SQL Server都需要重新执行一次查询语句,查询语句的执行结果构成
了视图中的数据。
4. 视图中的列可以来源于一个表或多个表联接查询的结果。 5. 通过视图可以对数据源表作插入、查询、修改和删除操作。
选择题
1. 【视图设计器】由哪些窗格组成。(ABCD)
A.【关系图窗格】 B.【网格窗格】 C.【SQL窗格】 D.【结果窗格】
2. 对于视图的数据源,描述正确的是(ABCD)。
A.视图中的数据允许来源于一个或多个表。
B.如果视图中的列直接来源于表的某列,可以直接使用数据源表的列名和数据类型。 C.如果视图的列来源于表的列表达式,则有必要对表达式定义别名,数据类型就是表达式结果的数据类型。
D.视图中的数据允许来源于其它数据库的表。 3. 下面语句中,哪种语句用来创建视图(D)。
A.create table
B.alter view C.drop view D.create view
4. 下面语句中,哪种语句用来修改视图(B)。
A.create table B.alter view C.drop view D.create view
5. 下面语句中,哪种语句用来删除视图(C)。
A.create table B.alter view C.drop view D.create view
简答题
1. 简述视图的含义。
答案:
视图和表都是数据库中的对象,视图的结构虽然与表相同,但视图是虚拟表,视图中的数据不会作为真实的对象存储在磁盘上,数据库对视图存储的是定义视图的查询语句。每一次使用视图,SQL Server都需要重新执行一次查询语句,查询语句的执行结果构成了视图中的数据。视图中的列可以来源于一个表或多个表联接查询的结果。 2. 简述create view语句的语法。
答案:
create view 视图名 as
select 列名,列名… from 表名
3. 简述drop view语句的语法。
答案:
drop view 视图名
练习题
1. 从“课程表”创建视图,按“教师编号”统计每位授课教师的课时总和,并且只显示课
时总和80在以上的统计结果。 答案:
create view 教师课时视图 select 教师编号, sum(课时) from 课程表
group by 教师编号 having sum(课时)>80 2. 从“成绩表”、“课程表“和“学生表”创建视图,视图中的记录为选修了编号为“K01”
课程的“学生姓名”、“课程名称”和“成绩”。 答案:
create view 学生K01课程成绩视图
select C.学生姓名, B.课程名称 A.成绩 from 成绩表 A
inner join 课程表 B
on A.课程编号=B.课程编号 inner join 学生表 C
on A.学生编号=C.学生编号 where A.课程编号=’K01’
项目八思考和练习
填空题
1. 内联接查询的含义是指两个存在关联关系的表A和B,表A与表B内联接的查询结果
为C,结果集C中只能包括表A与表B中满足关联条件的记录。
2. 自然联接是指在内联接查询的select子句中出现的列名,虽然来自于不同的表,但列名
不重复,“表别名.列名”的可以简写为“列名”。
3. 在自联接查询中,虽然,数据来源是同一个表,但需要作为不同角色来参与查询,必须
为表定义不同角色的别名。
4. 左联接查询的含义是指两个存在关联关系的表A和B,表A与表B左联接的查询结果
为C。C的列可以来自于A和B的列,C的记录中允许包括表A的全部记录以及表A中与表B满足关联条件的记录,C中A与B不满足关联条件的列值为空值。 5. 右联接的含义是指两个存在关联关系的表A和B,表A与表B右联接的查询结果为C。
C的列可以来自于A和B的列,C的记录中可以包括表B的全部记录以及表A中与表B满足关联条件的记录,C中B与A不能够满足关联条件部分为空值。 6. 全联接的含义是指两个存在关联关系的表A和B,表A与表B全联接的查询结果为C。
C的列可以来自于A和B的列,C的记录中可以包括表A和表B的全部记录,C中B与A以及A与B不满足关联条件的部分为空值。
7. 交叉联接的含义是指两个存在关联关系的表A和B,表A与表B交叉联接的查询结果
为C。C的列可以来自于A和B的列,C中可以包括表A和B的全部记录。C的记录数是A的记录数与B的记录数的乘积,即表A的每一条记录对应表B的全部记录。 8. 联接谓词in或not in的含义是指,确定指定列的值或表达式的值是否与子查询或列表
中的值相匹配/不匹配。
9. 联接谓词exits或not exists的含义是指根据指定子查询的结果是存在还是不存在,进
一步决定是否执行查询操作。
选择题
1. 下列哪个关键字是可以实现表与表的内联接。(A)
A.inner join B.left join C.right join D.cross join
2. 下列哪个关键字是可以实现表与表的左联接。(B)
A.inner join
3.
4.
5.
6.
7.
B.left join C.right join D.full join
下列哪个关键字是可以实现表与表的右联接。(C) A.inner join B.left join C.right join D.cross join
下列哪个关键字是可以实现表与表的全联接。(A) A.full join B.left join C.right join D.cross join
下列哪个关键字是可以实现表与表的交叉联接。(D) A.inner join B.left join C.right join D.cross join
下列哪个联接谓词的含义是指,确定指定列的值或表达式的值是否与子查询或列表中的值相匹配。(C) A.all B.any C.in D.exists
下列哪个联接谓词的含义是指根据指定子查询的结果是存在还是不存在,进一步决定是否执行查询操作。(D) A.all B.any C.in D.exists
简答题
1. 简述表与表内联接查询的含义、语法以及适用情况。
答案:
内联接查询的含义是:两个存在关联关系的表A和B,表A与表B内联接的查询结果为C,结果集C中只能包括表A与表B中满足关联条件(例如,相等)的记录。
内联接查询适于我们所要的信息来自于表A和表B,A和B之间存在关联关系,并且查询结果仅由A和B中存在关联关系的记录组成。
联接表A和表B的关键字是?inner join?,定义关联条件的关键字是?on?。内联接查询语句的语法格式如下所示。
select 主表别名.列名, …… 附表别名.列名, ……
from 主表名 主表别名
inner join 附表名 附表别名 on 关联条件
其他where、group by、having、order by子句 2. 简述什么是自然联接和自联接?
答案:
自然联接是指:在内联接查询的select子句中出现的列名,虽然来自于不同的表,但列名不重复,?表别名.列名?的可以简写为?列名?。对于自然联接,SQL Server在编译、执行时不会因为不能确定某列的来源而提示错误信息。
在自联接查询中,虽然,数据来源是同一个表,但需要作为不同的角色来参与查询,必须为表定义不同角色的别名。
3. 简述表与表左联接查询的含义、语法以及适用情况。
答案:
左联接查询的含义是:两个存在关联关系的表A和B,表A与表B左联接的查询结果为C。C的列可以来自于A和B的列,C的记录中允许包括A的全部记录以及B中与A满足关联条件的记录,C中A与B不满足关联条件的列值为空值。
联接表A和表B的关键字是?left join?,定义关联条件的关键字是?on?。左联接查询语句的语法格式如下所示。
select 主表别名.列名, …… 附表别名.列名, ……
from 主表名 主表别名 left join 附表名 附表别名 on 关联条件
其他where、group by、having、order by子句
4. 简述表与表右联接查询的含义、语法以及适用情况。
答案:
右联接的含义是:两个存在关联关系的表A和B,表A与表B右联接的查询结果为C。C的列可以来自于A和B的列,C的记录中可以包括B的全部记录以及表A中与B满足关联条件的记录,C中B与A不能够满足关联条件部分为空值。
联接表A和表B的关键字是?right join?,定义关联条件的关键字是?on?。右联接查询语句的语法格式如下所示。
select 主表别名.列名, …… 附表别名.列名, ……
from 主表名 主表别名 right join 附表名 附表别名 on 关联条件
其他where、group by、having、order by子句
5. 简述表与表全联接查询的含义、语法以及适用情况。
全联接的含义是:两个存在关联关系的表A和B,表A与表B全联接的查询结果为C。C的列可以来自于A和B的列,C的记录中可以包括A和B的全部记录,C中B与A以及A与B不满足关联条件的部分为空值。
联接表A和表B的关键字是?full join?,定义关联条件的关键字是?on?。全联接查询语句的语法格式如下所示。
select 主表别名.列名, …… 附表别名.列名, ……
from 主表名 主表别名 full join 附表名 附表别名 on 关联条件
其他where、group by、having、order by子句
6. 简述表与表交叉联接查询的含义、语法以及适用情况。
答案:
交叉联接的含义是:两个存在关联关系的表A和B,表A与表B交叉联接的查询结果为C。C的列可以来自于A和B的列,C中可以包括A和B的全部记录。C的记录数是A的记录数与B的记录数的乘积,即A的每一条记录对应B的全部记录。
联接表A和表B的关键字是?cross join?,交叉联接不需要关联条件。交叉联接查询语句的语法格式如下所示。
select 主表别名.列名, …… 附表别名.列名, ……
from 主表名 主表别名 cross join 附表名 附表别名
其他where、group by、having、order by子句 7. 简述联接谓词any和all的含义和语法。
答案:
联接谓词in/not in的含义是:确定指定列的值或表达式的值是否与子查询或列表中的值相匹配/不匹配。语法格式如下:
列名/表达式 in/not in (子查询)
联接谓词exists/not exists的含义是:根据指定子查询的结果是存在还是不存在,进一步决定是否执行查询操作。语法格式如下:
exists/not exists (子查询)
练习题
用内联接从“成绩表”、“课程表“和“学生表”中选择选修了编号为“K01”课程的“学生姓名”、“课程名称”和“成绩”。
答案:
查询语句参考如下: select C.学生姓名, B.课程名称 A.成绩 from 成绩表 A
inner join 课程表 B
on A.课程编号=B.课程编号 inner join 学生表 C
on A.学生编号=C.学生编号 where A.课程编号=’K01’
项目九思考和练习
填空题
1. “磁盘备份设备”是硬盘或其他存储媒体上的文件,与操作系统的文件一样。 2. “磁盘备份设备”可以定义在服务器的本地磁盘上或共享网络资源的远程磁盘上。 3. “磁盘备份设备”根据需要可大可小,最大文件的大小可以相当于磁盘上的可用磁盘空间。
4. 系统存储过程必须用“execute(简写为exec)”命令执行。 5. SQL Server中有3种数据库备份对象:数据库、仅备份数据文件和事务日志文件和指定
的文件和文件组。
6. 数据库的备份有两种方式:完全备份和差异备份。
7. 备份媒体也可以称为备份目的,有文件和备份设备两种。
8. 备份设备最终也是以文件形式体现的。文件的扩展名为“.BAK”。 9. SQL Server在执行备份时不仅备份数据库中的数据和操作,而且记录与备份相关的日期
和时间信息,以便在还原数据库时根据日期和时间的先后选择还原项目。
10. 如果选择“重写备份媒体”的方式,不仅覆盖掉原有的备份数据,而且覆盖掉与备份相
关的日期时间信息。选择“向备份媒体追加”的方式,不仅向原来的备份文件中追击备份数据,而且建立一条信息日期时间信息。
11. 还原操作有3种数据来源:备份设备、数据库和文件和文件组。
12. 还原的目标有数据库、文件和文件组,并且允许还原指定的数据文件、文件组或日志文件。
13. 选择来源为文件和文件组时,SQL Server也自动显示每一次备份的文件和文件组的逻辑名称、操作系统文件名以及备份日期和时间。
选择题
1. 下列哪个是创建“磁盘备份设备”的系统存储过程。(A)
A.sp_addumpdevice B.sp_addmessage C.sp_dropdevice D.sp_addgroup
2. 下列哪个是删除“磁盘备份设备”的系统存储过程。(C)
A.sp_addumpdevice B.sp_addmessage C.sp_dropdevice D.sp_addgroup
3. 下列哪个命令是备份数据库的命令。(B)
A.cmdshell
B.backup database C.restore database D.bcp
4. 下列哪个命令是还原数据库的命令。(C)
A.cmdshell
B.backup database C.restore database D.bcp
简答题
1. 简述什么是备份设备?
答案:
备份设备是磁带机或磁盘上的文件。?磁盘备份设备?是硬盘或其他存储媒体上的文件,与操作系统的文件一样。引用磁盘备份设备与引用任何其他操作系统文件一样。可以在服务器的本地磁盘上或共享网络资源的远程磁盘上定义磁盘备份设备,磁盘备份设备根据需要可大可小。最大文件的大小可以相当于磁盘上可用的磁盘空间。 2. 简述创建备份设备的系统存储过程sp_addumpdevice的语法。
答案:
存储过程 sp_addumpdevice的语法规则: exec sp_addumpdevice
'disk'[硬盘文件]/'tape'[磁带文件]', '备份设备名称', '文件路径和名称'
3. 简述删除备份设备的系统存储过程sp_dropdevice的语法。
答案:
存储过程sp_dropdevice的语法规则: exec sp_dropdevice '备份设备名称',
'delfile'[同时删除文件]/NULL[不删除] 4. 简述数据库备份对象有哪些?
答案:
SQL Server中有3种数据库备份对象:数据库、仅备份事务日志文件、对指定文件和文件组的备份。因为数据库拥有事务日志文件和数据文件,因此对数据库的备份将对以上两者一起备份。
5. 简述数据库备份方案有哪些?
答案:
对数据库的备份有两种方式,完全备份和差异备份。
完全备份是备份整个数据库,不仅包括表、视图、触发器和存储过程等数据库对象,还包括事务日志部分。通常情况下,一个数据库应用系统包括多个数据文件和事务日志文件,所以执行一次完整备份需要很大的磁盘空间和较长的时间。依靠完整备份可以重新恢复整个数据库。如果还原目标中已经存在数据库,还原操作将会覆盖现有的数据库;如果不存在数据库,还原操作将会创建数据库。
差异备份是备份最近一次完全备份之后数据库中发生改变的部分,最近一次完全备份称为差异备份的?基准备份?。
6. 简述数据库备份方式有哪些?
答案:
SQL Server在执行备份时不仅备份数据库中的数据和操作(包括函数、触发器和存储过程等),而且记录与备份相关的日期时间信息。以便在还原数据库时根据日期时间的先后选择还原项目。
如果选择?重写备份媒体?的方式,不仅覆盖掉原有的备份数据,而且覆盖掉与备份相关的日期时间信息。选择向备份媒体追加?的方式,不仅向原来的备份文件中追击备份数据,而且建立一条信息日期时间信息。 7. 简述数据库备份调度的概念。
答案:
备份操作可以随时进行,更多的是按照固定的周期、在固定的时间进行。SQL Server提供自动调度选项,在不同的时间进行自动备份。 8. 简述backup database语句的语法。
答案:
backup database语句的语法规则: backup database 数据库名 file=’数据文件逻辑名’, file=’数据文件逻辑名’, ……
filegroup=‘文件组名’, filegroup=‘文件组名’, ……
to 备份设备名
9. 简述restore database语句的语法。
答案:
(1)restore database语句还原整个数据库的语法规则: restore database 数据库名 from 备份设备名
(2)restore database语句还原指定文件的语法规则: restore database 数据库名 file=‘数据文件逻辑名’, file=‘数据文件逻辑名’, ……
from 备份设备名
(3)restore database语句还原指定文件组的语法规则: restore database 数据库名 filegroup=‘文件组名’, filegroup=‘文件组名’, ……
from 备份设备名
(4)restore database语句还原事务日志的语法规则: restore log 数据库名 from 备份设备名
练习题
1. 用sp_addumpdevice为备份Northwind数据库创建备份设备。
答案:
exec sp_addumpdevice 'disk',
'Northwind数据库备份设备',
'D:\\备份\\Northwind数据库备份设备.bak'
2. 用backup database语句将Northwind数据库备份到练习题1中创建的备份设备上。
答案:
backup database Northwind to Northwind数据库备份设备
3. 用restore database语句恢复练习题2做的备份到数据库Northwind。
答案:
restore database Northwind from Northwind数据库备份设备
项目十思考和练习
填空题
1. SQL Server的导入、导出数据操作也称为数据移植,是指在SQL Server数据库之间、SQL Server数据库与其他异构数据库之间、SQL Server数据库与Excel文件和文本文件之间互相传递数据的操作。 2. SQL Server导入、导出数据时可以采用从源数据库复制表和视图和用一条查询指定要传
输的数据两种方式指定数据源。
3. 向SQL Server数据库中已经存在的表中导入数据时,有覆盖和追加两种方式。
选择题
1. 导入、导出数据有哪两种执行方式。(CD)
A.立即执行。
B.保存为DTS包,在指定的时间调度执行。 C.以覆盖方式向数据库表中导入数据。 D.以追加方式向数据库表中导入数据。 2. 下列描述哪些是正确的。(ABD)
A.向SQL Server数据库中导入数据的同时可以创建表。
B.如果向SQL Server数据库中已经存在的表导入数据,可以采用覆盖方式和追加方式。 C.向SQL Server数据库导入数据时只能用覆盖方式。
D.在执行导入、导出数据时可以对某些列进行编程作转换处理。
简答题
1. 简述将表中的数据导出为Excel文件的基本流程。
答案:
用在【企业管理器】中以?导出数据?菜单项启动【数据转换服务导入/导出向导】。 在【选择数据源】对话框中选择作为源数据的数据库,并选择身份验证模式。 在【选择目的】对话框的【目的】下拉列表框中选择?Excel 97-2000?,在【文件名】文本框中输入Excel文件的路径和名称。
在【指定表复制或查询】对话框中选择?从源数据库复制表或视图?。 在【选择表和视图】对话框中选择要导出的表。
在【保存、调度和复制包】对话框中选择?立即运行?。 完成向导提示的其他选项。
2. 简述将Excel文件中的数据以追加方式导入数据库的基本流程。
答案:
用在【Management Studio】中以?导入数据?菜单项启动【数据转换服务导入/导出向导】。
在【选择数据源】对话框的【数据源】下拉列表框中选择?Excel 97-2000?,在【文件名】文本框中输入Excel文件路径和名称。
在【选择源表和视图】对话框中选择要导入的表名。
在【列映射和转换】对话框中,选中【在目的表中追加行】单选框。 继续执行,直至导入结束。
练习题
用查询语句将查询结果导出为文本文件,查询结果的间隔符为“|”。查询结果要求从“成绩表”、“课程表“和“学生表”中选择选修了编号为“K01”课程的“学生姓名”、“课程名称”和“成绩”。
答案:
查询语句参考如下: select C.学生姓名, B.课程名称 A.成绩 from 成绩表 A
left join 课程表 B
on A.课程编号=B.课程编号 left join 学生表 C
on A.学生编号=C.学生编号 where A.课程编号=’K01’