sqlserver大数据库应用与开发教程课后习题参考问题详解.docx
《sqlserver大数据库应用与开发教程课后习题参考问题详解.docx》由会员分享,可在线阅读,更多相关《sqlserver大数据库应用与开发教程课后习题参考问题详解.docx(25页珍藏版)》请在冰豆网上搜索。
![sqlserver大数据库应用与开发教程课后习题参考问题详解.docx](https://file1.bdocx.com/fileroot1/2023-2/10/094103d8-a44f-4ef4-a239-289d500ad9c9/094103d8-a44f-4ef4-a239-289d500ad9c91.gif)
sqlserver大数据库应用与开发教程课后习题参考问题详解
SQLServer2008数据库应用与开发教程(第二版)
第1章习题参考答案
1.简述SQLServer2008系统中主要数据库对象的特点。
答:
主要的数据库对象包括数据库关系图、表、视图、同义词、存储过程、函数、触发器、程序集、类型、规则和默认值等。
“表”节点中包含了数据库最基本、最重要的对象——表。
表实际用来存储系统数据和用户数据,是最核心的数据库对象。
“视图”节点包含了数据库中的视图对象。
视图是一种虚拟表,用来查看数据库中的一个或多个表,视图是建立在表基础之上的数据库对象,它主要以SELECT语句形式存在。
在“同义词”节点中包含了数据库中的同义词对象。
这是MicrosoftSQLServer2008系统新增的一种对象。
“可编程性”对象是一个逻辑组合,它包括存储过程、函数、触发器、程序集、类型、规则和默认值等对象。
数据库中的函数对象包含在“函数”节点中。
函数是接受参数、执行复杂操作并将结果以值的形式返回的例程。
2.SQLServer2008数据库管理系统产品分为哪几个版本,各有什么特点?
答:
SQLServer2008数据库管理系统产品的服务器版本包括了企业版和标准版,专业版本主要包括以下版本:
工作组版(Workgroup)、开发人员版(Developer)、免费精简版(Express)、Web版,以及免费的集成数据库SQLServerCompact3.5。
3.SQLServer2008包含哪些组件,其功能各是什么?
答:
SQLServer2008的体系结构是对SQLServer的组成部分和这些组成部分之间的描述。
MicrosoftSQLServer2008系统由4个组件组成,这4个组件被称为4个服务,分别是数据库引擎、AnalysisServices、ReportingServices和IntegrationServices。
数据库引擎是MicrosoftSQLServer2008系统的核心服务,负责完成数据的存储、处理、查询和安全管理等操作。
分析服务(SQLServerAnalysisServices,简称为SSAS)的主要作用是提供多维分析和数据挖掘功能。
报表服务(SQLServerReportingServices,简称为SSRS)为用户提供了支持Web方式的企业级报表功能。
集成服务(SQLServerIntegrationServices,简称SSIS)是一个数据集成平台,负责完成有关数据的提取、转换和加载等操作。
4.安装SQLServer2008之前应该做什么准备工作?
答:
(1)增强物理安全性
(2)使用防火墙
(3)隔离服务
(4)禁用NetBIOS和服务器消息块
5.SQLServer2008支持哪两种身份验证?
答:
Windows身份验证或混合模式身份验证。
6.如何注册和启动SQLServer服务器?
答:
1.注册服务器
使用MicrosoftSQLServerManagementStudio工具注册服务器的步骤如下:
(1)启动MicrosoftSQLServerManagementStudio工具,选择“视图”|“已注册”命令或者按下快捷键Ctrl+Alt+G,在打开的“已注册的服务器”窗口中选中“数据库引擎”图标。
(2)在“数据库引擎”上单击鼠标右键,从弹出的快捷菜单中选择“新建”|“服务器注册”命令,即可打开如图1-20所示的“新建服务器注册”对话框。
选择“常规”选项卡,可以在该选项卡中输入将要注册的服务器名称。
(3)选择“连接属性”选项卡,如图1-21所示,在该选项卡中可以设置连接到的数据库、网络以及其他连接属性。
(4)然后单击“测试”按钮,可以对当前设置的连接属性进行测试。
如果出现如图1-23所示的“新建服务器注册”消息框,则表示连接属性的设置是正确的。
(5)完成连接属性设置后,单击“保存”按钮,即可完成连接属性的设置操作。
接着单击“保存”按钮,即可完成新建服务器注册的操作。
新注册的服务器名称将出现在列表中。
2.启动服务器
可以通过“开始”菜单来启动SQLServerConfigurationManager,
7.熟悉查询分析器的功能与使用。
(略)
第2章习题参考答案
1.在MicrosoftSQLServer2008中,主数据文件的后缀是_.mdf______,日志数据文件的后缀是__.ldf______。
2.在创建数据库时,系统自动将_master___系统数据库的所有用户定义的对象复制到新建的数据库。
3.每个文件组可以有__多__个日志文件。
4.使用T-SQL语句创建数据库的语句是:
CREATEDATABASE;创建表的语句是:
CREATETABLE
第3章习题参考答案
1.在一个表上可以定义__多_个CHECK约束。
2.创建表的语句是:
_CREATETABLE表名___________。
3.表和表之间的关系是通过__连接实现的。
4.删除表“employ”中的“employdate”列所使用的语句是什么?
答:
ALTERTABLEemploy
(DROPemploydate
)
5.为表“employ”删除主键约束的语句是怎样的?
答:
ALTERTABLEemploy
(
DROPCONSTRAINT约束名PRIMARYKEY
)
第4章习题参考答案
1.在SQLServer2008中对数据使用SSMS图形化界面进行修改,与使用T-SQL修改数据,两种方法相比较,哪一种功能更强大、更为灵活?
试举例说明。
答:
使用T-SQL修改数据功能更强大,更为灵活。
2.向附录A学生成绩(XSCJ)数据库的表中送入或修改成样本数据。
(略)
3.写出T-SQL语句,对产品销售数据库(库名CPXS)产品表进行如下操作:
(1)插入如下记录
0001空调3000200
0203冰箱2500100
0301彩电280050
答:
语句如下:
insertinto产品表Values('0001','空调3000','200');
insertinto产品表Values('0203','冰箱2500','100');
insertinto产品表Values('0301','彩电2800','50');
(2)将产品数据库的产品表中的每种商品的价格打8折。
语句如下:
update产品表SET价格=价格*0.8
(3)将产品数据库的产品表中价格打8折后小于50的商品删除。
DELETEFROM产品表
WHERE价格<50
第5章习题参考答案
1.简述SQLServer2008的安全层次?
答:
在SQLServer2008中,数据的安全保护由4个层次构成。
SQLServer2008主要对其中的3个层次提供安全控制。
下面分别对每个层次进行简介。
(1)远程网络主机通过Internet访问SQLServer2008服务器所在的网络,这由网络环境提供某种保护机制。
(2)网络中的主机访问SQLServer2008服务器,首先要求对SQLServer进行正确配置,其内容将在下一节中介绍;其次是要求拥有对SQLServer2008实例的访问权——登录名,其内容将要在9.2.1小节中介绍。
(3)访问SQLServer2008数据库,这要求拥有对SQLServer2008数据库的访问权——数据库用户,其内容将要在9.2.2小节中介绍。
(4)访问SQLServer2008数据库中的表和列,这要求拥有对表和列的访问权——权限,其内容将要在9.5.2小节中介绍。
2.对SQLServer实例访问,SQLServer2008支持哪几种身份验证模式?
答:
SQLServer2008支持两种身份验证模式:
Windows身份验证模式和混合身份验证模式。
3.在SQLServer2008中有几类角色?
答:
三类:
服务器角色、数据库角色、应用程序角色
4.什么是架构,架构有什么用处?
答:
SQLServer2008实现了ANSI中有关架构的概念。
架构是一种允许用户对数据库对象进行分组的容器对象。
架构对如何引用数据库对象有很大的影响。
在SQLServer2008中,一个数据库对象通过4个命名部分所组成的结构来引用:
<服务器>.<数据库>.<架构>.<对象>
使用架构的一个好处是它可以将数据库对象与数据库用户分离,可以快速地从数据库中删除数据库用户。
在SQLServer2008中,所有的数据库对象都隶属于架构,在对数据库对象或者对其存在于数据库应用程序中的相应引用没有任何影响的情况下,可以更改并删除数据库用户。
这种抽象的方法允许用户创建一个由数据库角色拥有的架构,以使多个数据库用户拥有相同的对象。
5.如何管理SQLServer2008的权限层次结构?
答:
对数据的访问是通过SQLServer2008的权限层次结构进行管理的。
可以使用GRANT、DENY和REVOKE语句来管理这个权限层次结构。
●GRANT:
允许一个数据库用户或角色执行所授权限指定的操作。
●DENY:
拒绝一个数据库用户或角色的特定权限,并且阻止它们从其他角色中继承这个权限。
●REVOKE:
取消先前被授予或拒绝的权限。
6.管理对可编程对象的访问主要涉及哪些可编程对象?
答:
可编程对象,如存储过程及用户定义的函数,具有自己的安全上下文。
数据库用户需要获得授权以执行存储过程、函数和程序集。
一旦数据库引擎检查了执行可编程对象的权限,就会在可编程对象内部对其所执行的操作进行权限检查。
当数据库对象按顺序相互访问时,该访问顺序将形成一个所有权链。
第6章习题参考答案
1.T-SQL和SQL的关系是什么?
答:
SQL全称是“结构化查询语言(StructuredQueryLanguage)”SQL(StructuredQueryLanguage)是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
T-SQL是标准SQL程式设计语言的增强版,它是用来让应用程式与SQLServer沟通的主要语言。
T-SQL提供标准SQL的DDL和DML功能,加上延伸的函数、系统预存程序以及程式设计结构(例如IF和WHILE)让程式设计更有弹性。
可以理解成T-sql是SqlServer支持的sql语法,而不是软件。
2.试述T-SQL语言的特点。
答:
特点包括:
●一体化。
T-SQL语言包含4个组成元素:
数据查询语言(SELECT语句)、数据操纵语言DML(如INSERT,UPDATE,DELETE语句)、数据定义语言DDL(如CREATE,DROP语句)和数据控制语言(如COMMIT,ROLLBACK等语句)。
这些元素集数据定义、数据查询、数据操纵、数据控制、事务管理和附加语言元素为一体,方便用户使用。
其中数据查询语言SELECT是它的核心。
●两种使用方式:
T-SQL支持交互方式和嵌入式方式。
用户既可以使用T-SQL直接查询存储在数据库中的数据,又可以把T-SQL语句嵌入到某种高级程序设计语言(如VisualC#.NET、Java等)中使用。
●非过程化语言。
在T-SQL语句中,用户只需指出“做什么”,而不需要指出系统“如何做”,语句具体的操作过程由系统自动完成。
因此不同的数据库系统均可以使用相同的T-SQL语句作为数据输入与管理的接口。
●以记录集合作为操作对象。
所有T-SQL语句以集合作为输入,并返回集合作为输出。
这种集合特性允许一条T-SQL语句的输出作为另一条T-SQL语句的输入,所以T-SQL可以嵌套,这使其具有极大的灵活性和强大的功能,在很多情况下,一条T-SQL语句就可以实现其他语言中需要大段程序才能实现的功能。
类似于人的思维习惯,容易理解和掌握。
T-SQL与其他编程语言相比,要简单得多。
3.T-SQL的标识符必须遵循哪些原则?
答:
在定义标识符时必须遵守以下规定:
(1)标识符的首字符必须是下列字符之一。
统一码(Unicode)2.0标准中所定义的字母,包括拉丁字母a-z和A-Z,以及来自其他语言的字符。
下划线“_”、符号“@”或者数字符号“#”。
在SQLServer中,某些处于标识符开始位置的符号具有特殊意义。
以“@”符号开始的标识符表示局部变量或参数;以一个数字符号“#”开始的标识符表示临时表或过程,如表“#gzb”就是一张临时表;以双数字符号“##”开始的标识符表示全局临时对象,如表“##gzb”则是全局临时表。
注意:
某些Transact-SQL函数的名称以双at符号(@@)开始,为避免混淆这些函数,建议不要使用以@@开始的名称。
(2)标识符的后续字符可以是以下3种。
统一码(Unicode)2.0标准中所定义的字母。
来自拉丁字母或其他国家/地区脚本的十进制数字。
“@”符号、美元符号“$”、数字符号“#”或下划线“_”。
(3)标识符不允许是Transact-SQL的保留字。
(4)不允许嵌入空格或其他特殊字符。
例如要为明日科技公司创建一个工资管理系统,则可以将其数据库命名为“MR_GZGLXT”。
名字除了要遵守命名规则以外,最好还能准确表达数据库的内容,本例中的数据库名称是以每个字的大写字母命名的,其中还使用了下划线“_”。
4.T-SQL的注释方式是什么?
答:
注释也称注解,是程序代码中不执行的文本字符串。
注释主要描述程序名称、作者名称、变量说明、代码更改日期、算法描述等。
使用注释对代码进行说明,不仅能够使程序易读易懂,而且有助于日后对程序的管理与维护。
在T-SQL中,可以使用两种类型的注释符:
●注释符“--”用于单行注释
使用双连字符“--”作为注释符时,从双连字符开始到行尾的内容都是注释内容。
这些注释内容既可以与要执行的代码处于同一行,也可以另起一行。
双连字符“--”注释方式主要用于在一行中对代码进行解释和描述。
●注释符“/**/”,用于注释多行文字
在正斜线星号“/*…*/”注释方式中,开始注释对“/*”和结束注释对“*/”之间的所有内容均视为注释。
这些注释字符既可用于多行文字,也可以与执行的代码处在同一行,甚至还可以在可执行代码的内部。
5.说明变量的分类及各类变量的特点。
答:
在SQL中,我们常常使用临时表来存储临时结果,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,我们可以考虑使用变量,另外,当一个SQL语句中的某些元素经常变化时,比如选择条件,也可以使用变量。
变量分为局部变量和全局变量。
在SQLServer2008系统中,变量的命名规则如下:
●第一个字符必须是字母、数字、下画线或@符号。
需要注意的是,符号“@”开头的变量表示局部变量、符号“@@”开头的变量表示全局变量。
●变量名不能是T-SQL语言的系统保留字(如IF、ELSE、CONTINUE等),包括大写和小写形式。
变量名中不允许出现空格或其他特殊字符
6.如何使用IF…ELSE和WHILE流程控制语句?
答:
我们经常会遇到这种情况:
一个逻辑表达式的结果要么为真,要么为假。
根据不同的结果,对应于不同的操作。
这时就需要使用IF…ELSE语句在程序中对于给定条件进行判断。
语法格式如下:
IF条件表达式
{语句体1}
[ELSE
{语句体2}]
说明:
●条件表达式的运算结果应该为TRUE(真)或FALSE(假),如果条件表达式中含有SELECT语句,则必须用圆括号将SELECT语句括起来;
●当条件表达式的值为TRUE时执行语句体1,然后执行IF语句之后的语句;如果条件表达式的值为FALSE,则执行ELSE关键字后面的语句体2,然后执行IF语句之后的语句;
可以在IF区域或者ELSE区域嵌套另一个IF语句,对于嵌套的层数没有限制。
WHILE语句是一种将同一段代码循环运行多次的方法,它可以根据一个条件表达式的结果,将代码从0次开始运行到指定次数,或者是持续运行直到遇见BREAK关键字退出循环。
WHILE语句的语法格式如下:
WHILE条件表达式
循环体
语句的执行流程如图3-7所示。
图3-7WHILE语句的流程
说明:
●条件表达式的运算结果为TRUE或FALSE:
当条件表达式的值为TRUE时,执行循环体中的语句,然后再次进行条件判断,重复上述操作,直至条件表达式的值为FALSE,退出循环体的执行。
●循环体中可以继续使用WHILE语句,称之为循环的嵌套。
可以在循环体内设置BREAK和CONTINUE关键字,以便控制循环语句的执行。
7.试述常用函数的分类及各函数的特点。
答:
在SQL中常用函数分为:
数学函数、字符串函数和日期时间函数,它们的特点如下:
数学函数可以执行对数、指数、三角函数、平方根等数学运算,并返回运算结果。
对输入的字符串进行各种操作的函数称为字符串函数。
与数学函数一样,字符串函数也是经常使用的函数。
SQLServer2008提供的日期时间函数不多,但非常实用。
这些函数可以执行正确的DATETIME计算,并考虑闰年及其他历法的细节。
在T-SQL中,可以将日期时间函数用在SELECT查询语句的选择列表或用于WHERE子句中。
第7章习题参考答案
1.简述SELECT语句的基本语法。
SELECT基本语法格式为:
CREATTABLE表名
(
列的名称数据类型[NOTNULL|NULL]/*指定列名称、数据类型、是否为空*/
[COLLATE排序规则名称]/*指定列的排序规则*/
[DEFAULT默认值]/*指定列的默认值*/
[列的约束条件][,…n]/*指定列的约束条件*/
)
2.简述SELECT语句中的FROM、WHERE、GROUP以及ORDER子句的作用。
在SELECT语句中:
1)FROM子句:
用来指定数据来源的表;
2)WHERE子句:
用来限定返回行的搜索条件;
3)GROUPBY子句:
用来指定查询结果的分组条件;
4)ORDERBY子句:
用来指定结果的排序方式。
3.简述WHERE子句可以使用的搜索条件及其意义。
在WHERE子句中,可以使用的查询条件有以下几种情况:
1)使用比较运算符:
比较运算符来比较表达式值的大小,运算结果为TRUE或者FALSE。
2)使用逻辑运算符:
使用逻辑运算符,连接WHERE子句中的多个查询条件。
3)使用LIKE模式匹配:
使用LIKE模式匹配运算符,用于指出一个字符串是否与指定的字符串相匹配。
4)使用BETWEEN和IN运算符来确定范围。
5)使用NULL运算符判断一个表达式的值是否为空值。
4.举例说明什么是内连接、外连接和交叉连接?
内连接是最常见的一种连接,也被称为普通连接或自然连接,它是系统默认形式,在实际使用中可以省略INNER关键字。
如从student表和sc表中,查询所有不及格的学生的学号、学生姓名、所属院系、所选的课程号和成绩。
T-SQL语句为:
SELECTstudent.sno,sname,sdept,cno,grade
FROMstudent,sc
WHEREstudent.sno=sc.snoandgrade<60
外连接是指连接关键字JOIN后面表中指定列连接在前一表中指定列的左边或者右边,如果两表中指定列没有匹配行,则返回空值。
有左外连接、右外连接和全连接三种。
如用左外连接查询student表和sc表中的学生的Sno、Cno、Sname和Grade。
左外连接T-SQL语句为:
SELECTstudent.sno,cno,sname,grade
FROMstudentLEFTJOINscONsc.sno=student.sno
交叉连接即两个表的笛卡尔积,返回结果是由第一个表的每行与第二个表的所有行组合后形成的表,因此,数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
如交叉连接student和sc两表。
T-SQL语句为:
SELECT*FROMstudent
SELECT*FROMsc
SELECTstudent.*,sc.*FROMstudentCROSSJOINsc
5.INSERT语句的VALUES子句中必须指明哪些信息,必须满足哪些要求?
INSERT语句中的VALUES子句为列表中的各列指定值。
如果省略列表,则VALUES子句需要给出插入表中每一列的值。
6.用T-SQL语句创建数据库“销售管理”,并创建其中三张数据表“商品”,“部门”和“销售”。
结构如下:
商品(商品号char(6),商品名称nchar(10),单价money)
部门(部门号char(6),部门名称nchar(10),部门经理nchar(8),电话char(12))
销售(部门号char(6),商品号char(6),数量int,金额money)
创建销售管理数据库:
CREATEDATABASE销售
ON
(name='销售',
filename='e:
\database\销售.mdf',
size=10,
maxsize=50)
创建商品表:
USE销售
CREATETABLE商品(
商品号char(6)notnull,
商品名称nchar(10),
单价money)
创建部门表:
USE销售
CREATETABLE部门(
部门号char(6)notnull,
部门名称nchar(10),
部门经理nchar(8)
电话char(12))
创建销售表:
USE销售
CREATETABLE销售(
部门号char(6)notnull,
商品号char(6)notnull,
数量int,
金额money)
7.用T-SQL语句为上一题中创建的每张表至少添加10条记录。
使用INSERT语句插入记录(略)
8.使用数据库stuinfo,进行如下操作:
1)将任课教师Daad改为Forster
语句为:
UPDATEcourseSETcteacher=N'Forster'WHEREcteacher=N'Daad'
2)增加课程vc++,课程号为07,学分为6,任课教师为Emily
语句为:
INSERTINTOcourseVALUES('07','vc++','6','Emily')
3)删除学生贾新民的相关记录
DELETEFROMstudentWHEREsname=N'贾新民'
4)查询所有学生的姓名及年龄
SELECTsname,sageFROMstudent
5)查询所有考试不及格的学生的学号、姓名和成绩
SELECTsno,sname,grade
FROMstudent,sc
Wherestudent.sno=sc.snoandgrade<60
6)