《SQL Server 数据库管理与开发》习题答案.docx
《《SQL Server 数据库管理与开发》习题答案.docx》由会员分享,可在线阅读,更多相关《《SQL Server 数据库管理与开发》习题答案.docx(26页珍藏版)》请在冰豆网上搜索。
![《SQL Server 数据库管理与开发》习题答案.docx](https://file1.bdocx.com/fileroot1/2023-6/26/0b5d747c-065f-43b9-bf1e-fc052cb1c541/0b5d747c-065f-43b9-bf1e-fc052cb1c5411.gif)
《SQLServer数据库管理与开发》习题答案
《SQLServer2000数据库管理与开发》习题答案
习题1答案
1.1SQLServer2000有哪些版本?
能在Windows98和WindowsMe操作系统平台上运行的有哪些版本?
在Windows2000AdvancedServer平台上运行的有几些版本?
答:
SQLServer2000的版本包括:
企业版、标准版、个人版、开发版和用于测试的评估版。
能在Windows98和WindowsMe操作系统平台上运行的版本有:
个人版、评估版。
能在Windows2000AdvancedServer平台上运行的版本有:
企业版、标准版、个人版、开发版和评估版。
1.2在Windows98或WindowsMe操作系统平台上安装SQLServer2000个人版。
答:
略
1.3在Windows2000AdvancedServer操作系统平台上安装SQLServer2000标准版或企业版。
答:
略
1.4服务管理器的作用是什么?
答:
SQLServer服务管理器负责启动、暂停和停止SQLServer的进程。
1.5叙述启动、暂停、和停止本地或远程服务器上的SQLServer服务进程的操作步骤?
答:
(1)在“服务器”框中输入要连接的服务器名称。
(2)从“服务”下拉列表中选择一种服务,可以是DistributedTransactionCoordinator、MicrosoftSearch、SQLServer或SQLServerAgent。
(3)单击启动按钮
、暂停按钮
或停止按钮
,以启动、暂停或停止所选择的服务。
启动服务器的方法有:
除上述启动方法外,还可以单击“开始”菜单下的“运行”命令,在运行文本框中输入命令Netstartmssqlserver。
1.6在企业管理器中注册一个名为“student”服务器,并创建一个名为“stu”的服务器组。
答:
略
1.7简述SQLServer企业管理器作用?
答:
SQLServer企业管理器是SQLServer2000中最重要的一个管理工具,它可以在微软管理控制台(MMCMicrosoftConsole)中使用,用于配置SQLServer系统环境,创建和管理所有SQLServer对象。
1.8简述SQLServer查询分析器的作用?
答:
略SQLServer2000查询分析器是一种图形工具,它允许用户输入和执行SQL语句并返回语句的执行结果。
1.9简述数据导入、导出工具的意义。
答:
数据导入、导出工具是一个向导程序,用于在不同的SQLServer服务器之间传递数据,也用于在SQLServer与其他数据库管理系统(如Access、FoxPro)或其他数据格式(如电子表格或文本文件)之间交换数据。
习题2答案
2.1在SQLServer2000中数据库文件有哪三类?
各有什么作用?
答:
数据库文件根据其作用不同,可以分为以下三种类型。
(1)主数据文件(primaryfile):
用来存储数据和数据库的启动信息。
(2)辅助数据文件(secondaryfile):
用来存放数据。
使用辅助数据文件可以扩展存储空间。
(3)事务日志文件(transactionlog):
用来存放数据库的修改信息。
凡是对数据库中的数据进行的修改操作(如:
INSERT、UPDATE、DELETE等SQL命令),都会记录在事务日志文件中。
2.2安装SQLServer2000时,系统自动提供的四个系统数据库分别是什么?
答:
在安装SQLServer2000时,安装程序自动安装了几个特殊的数据库有:
master、tempdb、model、msdb四个系统数据库。
2.3与数据库相关的磁盘文件分为主数据文件、辅助数据文件和事务日志文件,它们的扩展名分别是什么?
答:
主数据文件的扩展名为.mdf,辅助数据文件的扩展名为.ndf,事务日志文件的扩展名为.ldf。
2.4在查询分析器中,使用__________命令创建数据库,使用__________命令查看数据库定义信息,使用__________命令设置数据库选项,使用__________命令修改数据库结构,使用__________命令删除数据库。
答:
CreateDatabase、SP_helpdb、SP_dboption、AlterDatabase、DropDatabase
2.5在企业管理器中,右击要操作的数据库,在弹出的快捷菜单中,单击__________命令可以创建数据库,单击__________命令可以查看数据库定义信息,单击__________命令可以设置数据库选项,单击__________命令可以修改数据库,单击__________命令可以删除数据库。
答:
新建数据库、属性、属性、属性、删除。
2.6写出查看数据库信息可以使用的语句?
答:
方法一:
EXECSP_helpdb
方法二:
SELECT*FROMsysdatabases
2.7当数据库处于什么情况下,不能被删除?
答:
当有用户正在数据库使用时,当数据库正在被恢复时,当数据库正在参与复制时。
2.8在查询分析器中,输入并执行CREATEDATABASE命令,具体要求如下:
(1)数据库名称为Test;
(2)主数据文件:
逻辑文件名为Testdat1,物理文件名称为Testdat1.mdf,初始容量为1MB,最大容量为10MB,递增量为1MB;
(3)辅助数据文件:
逻辑文件名为Testdat2,物理文件名称为Testdat2.ndf,初始容量为1MB,最大容量为10MB,递增量为1MB;
(4)事务日志文件:
逻辑文件名为Testlog1,物理文件名称为Testlog1.ldf,初始容量为512KB,最大容量为5MB,递增量为512KB。
.
答:
CREATEDATABASEtest
ONPRIMARY
(NAME=testdat1,FILENAME='d:
\testdat1.mdf',SIZE=1MB,MAXSIZE=10MB,FILEGROWTH=1MB),
(NAME=testdat2,FILENAME='d:
\testdat2.ndf',SIZE=1MB,MAXSIZE=10MB,FILEGROWTH=1MB)
LOGON
(NAME=testlog1,FILENAME='d:
\testlog1.ldf',SIZE=512KB,MAXSIZE=5MB,FILEGROWTH=512KB)
习题3答案
3.1实体完整性要求表中所有的__________惟一,它可以通过建立__________、__________、__________、__________等措施来实现。
答:
行、主键约束、惟一约束、标识列、惟一索引
3.2参照完整性要求有关联的两个或两个以上表之间数据的__________。
参照完整性可以通过建立__________和__________来实现。
答:
一致性、主键约束、外键约束
3.3域完整性用于保证给定字段中数据的__________。
它要求表中指定列的数据具有正确的__________、__________和__________。
答:
有效性、数据类型、格式和有效的数据范围
3.4在一个表上能创建__________个主键约束,主键值__________为空。
答:
一、不能
3.5在一个表上能创建__________个惟一约束,惟一值__________为空,但不能有多个空。
答:
多、可以
3.6外键约束用来建立两个表之间的关联的。
外键列的取值可以为__________,可以为__________值,但其值必须是引用列的列值之一。
引用列必须是创建了__________或__________的列。
答:
空、重复值、主键约束、惟一约束。
3.7__________是用来限制输入值的取值范围。
答:
检查约束
3.8创建表用__________语句,向表中添加记录用__________语句,查看表的定义信息用__________语句,修改表用__________语句,删除表用__________语句。
答:
CREATETABLE、、INSERT、SP_help、ALTERTABLE、DROPTABLE。
3.9在企业管理器中创建一个“学生档案”的数据库,并在该数据库中创建“人事表”和“成绩表”两张表,其中“人事表”,包括学号(从2001开始自动递增,递增量为1)、姓名、性别、电话号码、家庭住址字段组成。
“成绩表”包括学号,选修课程名称,成绩三个字段。
答:
略
3.10分别在“人事表”的学号字段设置主键约束,在“成绩表”的学号字段设置外键约束,在成绩字段设置大于等于0小于等于100的检查约束,在家庭住址字段设置惟一约束,在性别字段设置默认值为“男”
答:
略
3.11给两个表添加一些记录。
答:
略
习题4答案
4.1指定要检索的列,编写一条SELECT语句,检索goods表中的“货品名称”、“库存量”列。
答:
SELECT货品名称,库存量FROMgoods
4.2基于比较运算符选择行,编写一条SELECT语句,检索goods表中“状态”为1(处于整理中)的货品记录。
答:
SELECT*FROMgoodsWHERE状态=1
4.3基于列表选择行,编写一条SELECT语句,从goods表中检索出货品名称为“pen”、“book”、“desk”的货品的“货品名称”、“库存量”、“供应商”信息。
答:
SELECT货品名称,库存量,供应商FROMgoodsWHERE货品名称IN('pen','book','desk')
4.4改变结果集的列标题,用两种方法编写SELECT语句,从goods表检索出所有库存量大于等于1000且小于等于2000的“货品名称”、“库存量”、“价格”信息。
列标题分别为“货品的名称”、“货品的库存量”、“货品的单价”。
答:
方法1:
SELECT货品的名称=货品名称,货品的库存量=库存量,货品的单价=价格FROMgoodsWHERE库存量>1000AND库存量<2000
方法2:
SELECT货品名称货品的名称,库存量货品的库存量,价格货品的单价FROMgoodsWHERE库存量 BETWEEN1000AND2000
4.5使用算术运算符对结果集中的列进行计算,编写一条SELECT语句,显示goods表中所有货品的货品名称、价格和折价10%后的价格,使用别名“9折后的价格”标识被计算的列,查询结果按价格由高到低排序。
答:
SELECT货品名称,价格,9折后的价格=价格*0.9FROMgoodsORDERBY价格DESC
4.6基于未知值(NULL)选择查询结果,编写一条SELECT语句,选出所有尚未定价的货品的信息。
答:
SELECT*FROMgoodsWHERE价格ISNULL
4.7基于字符串匹配条件选择查询结果,编写一条SELECT语句,列出customers表中姓王的客户信息。
答:
SELECT*FROMcustomersWHERE姓名LIKE '王%'
4.8基于多个条件的查询,编写一条SELECT语句,查询2002年上半年、销售数量大于1000的订单信息。
答:
SELECT*FROMorders WHERE订货日期BETWEEN'2002/01/01'and'2002/06/30'
and数量>1000
4.9计算查询到的结果的数目,编写一个SELECT语句,查询订购了“pen”的订单的个数。
答:
SELECTCOUNT(*)FROMordersWHERE货品名称='pen'
4.10实现外连接,查询出重庆客户的姓名、电话号码并显示他们的订单信息。
答:
SELECT姓名,电话,订单号,货品名称,数量,总金额,订货日期FROMcustomersLEFTJOINordersONcustomers.客户编号=orders.客户编号AND地址LIKE'重庆%'
4.11实现内连接,查询出有订单的重庆客户的姓名、电话号码并显示他们的订单信息。
答:
SELECT姓名,电话,订单号,货品名称,数量,总金额,订货日期FROMcustomersJOINordersONcustomers.客户编号=orders.客户编号AND地址LIKE'重庆%'
4.12实现自连接,编写一个SELECT语句,查询customers表中。
地址相同的客户的“姓名”、“地址”列。
答:
SELECTa.姓名,a.地址FROMcustomersaJOINcustomersbONa.地址=b.地址ANDa.客户编号<>b.客户编号
4.13建立子查询,编写一个SELECT语句,查询所有购买了“book”货品的客户姓名,要求结果集中不存在重复的记录。
答:
SELECTDISTINCT姓名FROMcustomersWHERE客户编号IN(SELECT客户编号FROMordersWHERE货品名称='book')
4.14相关子查询,编写一个SELECT语句,查找订货数量大于该货品的平均订货数量的订单信息。
答:
SELECT*FROMordersaWHERE数量>(SELECTAVG(数量)FROMordersbWHEREa.货品名称=b.货品名称)
4.15向表中添加行,编写一条INSERT语句,在goods表中添加一行。
数据如下:
货品名称库存量供应商状态价格
-----------------------------------------------------
pencil200NULL00.3
答:
INSERTgoods(货品名称,库存量,状态,价格)VALUES('pencil',200,0,0.3)
4.16修改表中数据,编写一条UPDATE语句,将所有库存量大于1000的货品的价格降低10%。
答:
UPDATEgoodsSET库存量=库存量*0.9WHERE库存量>1000
4.17删除表中记录,编写一条DELETE语句,删除orders表中2号客户的订单信息。
答:
DELETEordersWHERE客户编号=2
4.18用两种方法删除表中所有记录,哪种方法更好?
答:
“DELETE表名”和“TRUNCATETABLE表名”都是删除表中所有记录而不删除表的结构,“DROPTABLE 表名”则表结构和表记录都删除。
若删除的记录不再恢复,可使用“TRUNCATETABLE表名”命令,它的执行速度更快。
若删除的记录要恢复,可使用“DELETE表名”命令。
4.19创建一个新表,新表中包含订购了“pen”的订单信息。
答:
SELECT*INTOnewtableFROMordersWHERE货品名称='pen'
4.20嵌套子查询与相关子查询的区别。
答:
在相关查询中,子查询为外部查询的每一行都要执行一次;而在嵌套子查询中,子查询总共仅执行一次。
在相关查询中,子查询的WHERE子句中引用了外部查询表中的列。
而在嵌套子查询中,则没有引用了外部查询表中的列。
习题5答案
5.1视图是由__________构成而不是由__________构成的虚表。
视图中的数据存储在__________中。
答:
SELECT语句、数据、基表。
5.2对视图的更新操作,操作的其实是__________数据。
当基表中的数据发生变化,__________从视图中反映出来。
答:
基表、能
5.3使用视图的好处__________、__________、__________。
答:
集中数据简化查询操作、控制用户提取的数据达到数据安全保护的目的、便于数据的交换操作。
5.4创建视图用__________语句,修改视图用__________语句,删除视图用__________语句。
查看视图中的数据用__________语句。
查看视图的基本信息用__________存储过程。
查看视图的定义信息用__________存储过程。
查看视图的依赖关系用__________存储过程。
答:
CreateView、Alterview、DropView、Select、SP_help、SP_helptext、SP_depends。
5.5创建视图是带__________参数,使视图的定义语句加密。
带__________参数,对视图执行的修改操作必须遵守定义视图时WHERE子句指定的条件。
答:
Encryption、Checkoption
5.6更新视图中的数据时,因注意__________、____________________。
答:
不能对含有某些特殊列的视图更新、一次不能同时更新多个基表的数据、通过视图插入和修改的数据必须符合基表中的约束和规则。
5.7使用T-SQL语句从orders表和customers表中创建视图,其内容是所有北京客户的订单信息,视图包含以下列:
客户编号、姓名、电话、订单号、货品名称、数量。
答:
CREATEVIEWMYVIEW
AS
SELECTcustomers.客户编号,姓名,电话,订单号,货品名称,数量FROMcustomersJOINordersONcustomers.客户编号=orders.客户编号AND地址='北京%'
5.8索引分哪几类?
答:
按是否改变表的物理存放顺序来分:
可分为聚集索引和非聚集索引。
按索引列的值是否惟一来分,可分为惟一索引和非惟一索引。
5.9聚集索引与非聚集索引之间有哪些不同点?
答:
聚集索引改变表记录的物理存储顺序,使之与索引列的顺序完全相同。
非聚集牵引不改变表记录的存放顺序。
5.10在哪些情况下SQLServer会自动建立索引?
这些索引能否用DROPINDEX语句来删除?
如果不能应当用什么方法来删除?
答:
SQLServer在创建主键约束时,默认情况下会自动聚集惟一索引,SQLServer在创建惟一约束时,默认情况下会自动非聚集惟一索引。
不能使用DROPINDEX语句来删除这些索引。
可使用带DROPCONSTRAINT子句的ALTERTABLE语句来删除加在该字段上的主键约束或惟一性约束,这些约束一旦被删除,相关的索引随之被删除。
5.11使用CREATEINDEX语句在market数据库的customers表的“电话“列在创建一个非聚集惟一索引。
答:
USEmarket
CREATEUNIQUEINDEXcustomers_indexONcustomers(电话)
习题6答案
6.1什么是批处理?
批处理的结束标志是什么?
在放有结束标志的行中能否有其他语句?
答:
批处理就是一个或多个Transact-SQL语句的集合,从应用程序一次性发送到SQLServer并由SQLServer编译成一个可执行单元,此单元称为执行计划。
建立批处理时,使用GO命令作为批处理的结束标记。
在一个GO命令行中不能包含其他Transact-SQL语句,但可以使用注释文字。
6.2建立批处理时有哪此注意事项?
答:
建立批处理时,应当注意以下几点:
(1)CREATEDEFAULT、CREATEPROCEDURE、CREATERULE、CREATETRIGGER及CREATEVIEW语句,在一个批处理中只能提交一次。
(2)不能在一个批中引用其他批中所定义的变量。
(3)不能把规则和默认值绑定到表字段或用户自定义数据类型上之后,立即在同一个批处理中使用它们。
(4)不能定义一个CHECK约束之后,立即在同一个批处理中使用该约束。
(5)不能修改表中的一个字段名之后,立即在同一个批处理中引用新字段名。
(6)如果一个批处理中的第一个语句是执行某个存储过程的EXECUTE语句,则EXECUTE关键字可以省略;如果该语句不是第一个语句,则必须使用EXECUTE关键字。
6.3什么是脚本?
脚本文件的扩展名是什么?
执行脚本有哪几种方法?
答:
脚本是存储在文件中的一系列SQL语句,也即一系列按顺序提交的批。
脚本文件的扩展名是:
.sql。
执行脚本可以在查询分析器中进行,也可以isql或osql实用程序运行。
6.4注释是程序中不被执行的正文,说明其作用都有哪些?
有哪两种形式的注释语句?
答:
注释用于语句代码的说明,或暂时禁用的部分语句和批处理的解释。
SQLServer支持两种形式的注释语句,即行内注释和块注释。
6.5Transact-SQL语句中局部变量是什么语句来声明?
答:
Transact-SQL语句中局部变量是declare语句来声明的。
6.6选择:
@n是使用Declare语句声明的一个局部变量,能对该变量赋值的语句是()
A.SET@n=123B.LET@n=123
C.@n=123D.SELECT@n=123
答:
A、D
6.7下列语句能否正确执行?
为什么?
DECLARE@assvarchar(50)
SET@ass='sadfasf'
GO
PRINT@ass
答:
不能正确执行,因在第二个批处理中ass变量没声明,即不能在一个批中引用其他批中所定义的变量。
6.8填空:
CASE表达式用于______________,它可以用在________________________地方并根据条件的不同而返回_____________。
CASE表达式它不能单独执行,而只能作为__________________________来使用。
CASE表达式分为______________________和__________________两种类型。
答:
空中依次填入:
简化SQL表达式、任何允许使用表达式的、不同的值、一个可以单独执行的语句的一部分、简单CASE表达式、搜索CASE表达式
6.9简述简单CASE表达式执行的过程。
答:
执行CASE表达式时,测试表达式的值依次与每一个WHEN子句的测试值相比较,直到它发现第一个与测试表达式的值完全相同的测试值时,即测试表达式等于测试值,便将该WHEN子句所指定的结果表达式返回。
如果没有任何一个WHEN子句的测试值和测试表达式相同,SQLServer将检查是否有ELSE子句存在,如果存在ELSE子句,便将ELSE子句之后的结果表达式返回;如果不存在ELSE子句,便返回一个NULL值。
在一个简单CASE函数中,一次只会有一个WHEN子句的THEN所指定的结果表达式返回,若同时有多个测试值与测试表达式的值相同,则只有第一个与测试表达式值相同的WHEN子句后的结果表达式返回。
6.10执行While语句时,当指定的条件成立时,__________________________;当这个条件不成立时,______________________________。
在循环体内部使用Break或Continue语句,以便_________________________________________。
答:
空中依次填入:
循环将重复执行、循环将停止执行、程序提前退出循环,并将控制权转移给循环之后的语句;或使程序直接跳回到WHILE命令行,重新执行循环,而忽略