版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章SQLServer概述
1、有个用户的计算机不能连接到中心机房的SQLServer2000上。你在调试过程中发现这个
用户的计算机的网络功能是正常的,而且其他用户都能正常地连接到SQLServer2000。
下面的哪些工具有助于你诊断和解决该问题?(多选)
A.EnterpriseManager
B.ServerNetworkUtility
C.Profiler
D.QueryAnalyzer
E.ClientNetworkUtility
答:B和E
2、你在SQLServer2000创建了酒店管理系统的数据库HotelDB,并创建了表Custlnfo。当
下面的哪些数据库被删除的情况下,仍能正确地执行“SELECT*FROMCustlnfo?
A.Model
B.Tempdb
C.Msdb
D.Master
E.Pubs
答:A、C、E
3、你正在使用SQLServer2000开发银行交易系统,为了保证商业数据在网络传输(用
TCP/IP协议)时不会被窃取,你在SQLServer2000中启用了网络加密功能。请问该功能
在哪一层被实现?
A.TCP/IP协议软件
B.超级套接字层
C.开放式数据服务
D.关系引擎
E.存储引擎
答:B
4、你正在使用SQLServer2000开发超市收银系统。在客户端编写软件时使用SQL语句
“SELECT*FROMProducts”来查询商品的信息,但是不小心把Products输入成Product。
请问该错误在哪一层被发现?
A.客户端的数据库API
B.客户端的NET-LIBRARY
C.服务器端的开放式数据服务
D.服务器端的关系引擎
E.服务器端的存储引擎
答:D
5、你要为中小型商场开发一个商场收银软件,该软件由多个收银员在各自的收银台使用。
后端数据库是SQLServer2000,所有收银员的收银信息集中存放在几个表内。在采用两
层架构(2-Tier)的软件开发时,商场收银软件需要数据库的帐号和密码(SQLServer认
证)或Windows认证才能连接和访问数据库,就象SQLServer2000的查询分析器在刚运
行的时候要求你输入帐号和密码或使用Windows认证才能访问数据库。显然,你希望只
有商场收银软件才有权力访问数据库,而收银员不应当有使用查询分析器等其它软件直
接修改数据库数据的权力,否则可能会导致贪污和恶意破坏的发生。所以,
(1)软件使用的数据库帐号采用Windows认证还是SQLServer认证,如何实现该目
标?
(2)在采用三层架构(3-Tier)的软件开发时,客户端程序会不会出现该问题?
答:(1)不能采用Windows认证,只能采用SQLServer认证。因为商场收银软件若
采用Windows认证,收银员登录到Windows系统后,不光商场收银软件可以访问数据库,
收银员也可以用SQLServer2000的查询分析器等软件以Windows认证方式来访问数据
库。
如果采用SQLServer认证方式,商场收银软件需要帐号和密码,当然这不能
由收银员来提供。一种典型的做法是:将数据库的帐户和密码放在商场收银软件中(或在
Windows的注册表中),并禁止在数据库中改动该帐号和密码.帐号和密码在软件中要适
当加密,就很难从软件的可执行代码内获得帐号和密码,这种安全级别对一般的商场收银
系统已经足够。为了检验收银员的身份,你要自己编写管理收银员的软件代码,在收银软
件刚开始运行时要求输入收银员的代号和密码,这些代号和密码可以放在数据库的一个表
中。
(2)在采用三层架构(3-Tier)的软件开发时,客户端程序不会出现该问题。
三层架构分为:客户端(收银员操作界面),应用服务器(商业逻辑),数据库服务器(SQL
Server2000)。客户端只向应用服务器发出请求,应用服务器接收请求后,根据商业逻辑
对数据库服务器发出命令来访问数据库,最后将结果传送给客户端。因为客户端不直接访
问数据库服务器,它不需要数据库服务器的帐号和密码。
6、已经在SQLServer中为Windows2000用户创建了一个新的登录账户。希望该组的成员能
够使用SQLServer,那么你还需要完成其他哪些额外的安全设置任务?
答:首先,必须把Windows2000用户组添加到希望用户访问的数据库中,之后,将
权限授予希望用户访问的数据库对象。
7、希望浏览SQLServer数据库中对象的元数据。那么你应该使用什么方法?
答:可以查询信息架构视图、执行系统存储过程或使用系统函数。也可以直接查询系
统表,但不推荐使用这种方法,原因是在产品的后续版本中,这些表可能会发生变化。
8、希望引用同一个服务器上的不同数据库中的两个表。从Inventory数据库中,希望引用
Sales数据库中的某个表。那么如何在•个查询中引用Sales数据库中的该表?
答:应该使用完整修饰名称引用Sales数据库中的表。例如,应该指定
Sales.dbo.tablename或Sales.tablename«
第2章创建和管理数据库
1.数据库操作时服务器突然掉电,当重新启动后,您如何恢复已经完成但还没把数据写入
硬盘的事务,以及正在进行一半的事务?
A、运行ROLLFORWARDALLTRANSACTION
B、不用。SQLServer2000自动恢复,即通过日志恢复所有已经完成但还没把数据写
入硬盘的事务到硬盘,并撤消正在进行一半的事务。
C、先备份事务日志,再将数据库恢复到上一完全数据库备份,再把刚备份的事务日
志恢复到当前数据库的日志中。
D、没有办法。只能使用数据库以前的备份。
答:B
9、你使用SQLServer2000数据库开发一个小型的酒店管理系统。你用下面的语句创建数据库:
CREATEDATABASEJiuDian
ONPRIMARY
(NAME=JiuDianData,
HLENAME='c:\cyjUiuDianData.mdf,
SIZE=100,
MAXSIZE=200,
FILEGROWTH=10)
LOGON
(NAME=JiuDianLog,
FILENAME='c:\cyj\JiuDianLog\
SIZE=50,
MAXSIZE=100,
FILEGROWTH=10
现在酒店营业的数据为150MB。对其中50%的数据进行备份并删除后,要把数据库
立即缩小为初始的大小(即100MB)。下面哪条语句能够实现该功能?
A.DBCCSHRINKFILE(JiuDianData,NOTRUNCATE)
B.DBCCSHRINKDATABASE(JiuDianData,25)
C.DBCCSHRINKDATABASE(JiuDianData,100)
D.ALTERDATABASEJiuDianDataSETAUTOSHRINKON
答:B
10、用SQL语句创建满足如下要求的数据库:
(1)数据库名称为Library;
(2)主文件组有两个数据文件。
第一个数据文件:逻辑名为LibraryDatal,文件名为“c:\cyj\LibraryData_l.mdf,,文件初始大
小为50MB,文件的最大大小不受限制,文件的增长率为20%。
第二个数据文件:逻辑名为LibraryData2,文件名为“c:\cyj\LibraryData_2.ndF',文件初始大
小为50MB,文件的最大大小不受限制,文件的增长率为10MB„
(3)日志只有一个数据文件,逻辑名为LibraryLog,文件名为“c:\cyj\LibraryLog.ld『,文
件初始大小为10MB,文件的最大大小为50MB,文件的增长率为10MB;
答:
CREATEDATABASELibrary
ONPRIMARY(NAME=LibraryData1,
FILENAME='c:\cyj\LibraryData_l.mdf,
SIZE=50MB,MAXSIZE=UNLIMITED,
FILEGROWTH=20%),
(NAME=LibraryData2,
FILENAME='c:\cyj\Library_2,ndf,
SIZE=50MB,MAXSIZE=UNLIMITED,
FILEGROWTH=10)
LOGON
(NAME=LibraryLog,
FILENAME='c:\cyj\LibraryLog.ldf,
SIZE=10MB,MAXSIZE=50MB,FILEGROWTH=10MB)
11、您现在有四个物理硬盘来存放一个很大的数据库,该数据库存放大量的销售数据。数
据库主要用于数据读取和统计,以便市场经理决定经营策略。为了提高数据的读取性能,
数据库内的表进行了大量索引。如何生成数据库,使性能最佳?
答:可以创建用户自定义的文件组fgroupl,同时分别在三个硬盘上创建三个文件
(Datal.ndfxData2.ndf和Data3.ndf),并蒋这三个文件指派到文件组fgroupl中。然
后,指定文件组fgroupl为默认的文件组。在创建表时,如果没有特别声明,都自动创建
在默认的文件组,以后存放在表中的数据将自动分散在三个硬盘上。这样,以后对表中数
据的查询也将分散到三个磁盘上,因而性能得以提高。另外,在第四个硬盘创建日志文件。
12、SQLServer在故障(如掉电)或服务器关闭之后重启时对数据库的恢复有三个阶段:分
析阶段,重做阶段,取消阶段。参考本章讨论该问题时的附图,请举例说明为什么取消阶
段会涉及到最后一个检查点以前的事务,而不是只涉及最后一个检查点以后的事务?
答:因为可能有一些事务在最后一个检查点到来之前就已经开始,但是到故障(如掉
电)或服务器关闭时该事务还没有结束,这些事务必须取消。
13、你正在创建一个不经常修改的数据库,该数据库主要用于决策支持和只读查询。你会为
事务日志分配多大的数据库空间百分比?
答:答案并不唯一。可以在10%到20%之间。不应该超过20%。由于该数据库的更
改活动相当少,分配的空间百分比接近10%是合理的。
14、使用文件组有那些优点?
答:可以把表放在指定的硬盘上。能够独立地备份大型表.
15、你正在负责管理你的机构中关键任务的帐务记录。哪一种数据恢复模型适合你的数据
库?
答:应该使用FullRecovery(完全恢复)模型。
16、GAM、SGAM和IAM页都跟踪数据分配。那么,IAM页与GAM和SGAM页有什么不
同?
答:GAM和SGAM页跟踪所有对象。IAM页只跟踪一个特定表或索引的分配。
第3章创建数据类型和表
2.在学生成绩表tblCourseScore中的列Score用来存放某学生学习某课程的考试成绩
(0〜100分,没有小数),用下面的哪种类型最节省空间?
A、int
B、smallint
C、tinyint
D、decimal。,0)
答:C
17、你在SQLServer2000数据库中建立了一些相似的表,其格式如下,只是表名和列名不同。
CREATETABLEOneTable
(pkuniqueidentifier,
namevarchar(20),
otheruniqueidentifier,
)
应用程序开发人员对这些表编写了一些相似的查询。因为列的名称相似,他们喜欢用
ROWGUIDCOL关键字来引用列名。当执行这些查询时,会产生什么结果?
A、SQLServer2000会返回错误,因为表包含两个类型为uniqueidentifier的列;
B、当执行的查询在引用ROWGUIDCOL关键字的时候,SQLServer2000会返回错
误;
C、SQLServer2000会返回错误,因为列pk没有声明为关键字;
D、SQLServer2000不会产生错误。
答:B
18、定单表Orders的列OrderlD的类型是小整型(smallint),根据业务的发展需要改为整型
(integer),应该使用下面的哪条语句?
A、ALTERCOLUMNOrderlDintegerFROMOrders
B、ALTERTABLEOrders(OrderlDinteger)
C、ALTERTABLEOrdersALTERCOLUMNOrderlDinteger
D、ALTERCOLUMNOrders.OrderlDinteger
答:C
19、一个数据库中的用户定义数据类型能够用于同一个服务器上的另一个数据库中吗?
答:不能。用户定义数据类型局限于单个数据库。你可以在另一个数据库中创建一个与
之匹配的数据类型,也可以在model数据库中创建用户自定义数据类型。
20、你正在设计一个要存储数百万种不同产品的信息数据库,而且想以最少的空间存储产品信
息。每一个产品在products表中都有一行描述。有时候,产品描述需要200个字符,但绝大
多数产品描述只需要50个字符。那么,你应该使用哪一种数据类型?
答:使用varchar(200)数据类型,因为它既保持了行的紧凑,同时也能够容纳偶然情况
下所需要的200个字符的产品描述。
21、在Employees表中的列Remarks用来记录员工的备注信息,该列大部分不到800字节,但有
时会达到20000字节。如何处理以提高读取性能?
答:用行中text列的方式。因为20000字节超过一个记录的长度(约8000字节),所
以该列只能用text类型。为了提高读取性能,当记录中该列不到800字节时,把它直接放
在该行。具体做法是:
CREATETABLEEmployees
RemarkstextNULL)
EXECUTEsp-tableoptionEmployees,'textinrow,,800)
22、有家企业要用表tblCustomerlnfo来存储客户的信息。客户的信息包括:代号(整型
IDENTITY,从100001开始,每次增加5),名称(最长40个汉字),电话(20个字符),
传真(20个字符),备注(最长1000个汉字)。电话号码和传真号码要用同一自定义类
型lype_TelphoneNum。
(D请写出创建该表的SQL语句。
(2)后来因手机流行,需要在表tblCustomerlnfo中再添加列“手机”,该列的类型也
是type_TelphoneNum。请写出添加该列的SQL语句。
答:要注意存放一个汉字要用两个字节,所以“名称”和“备注”的长度要乘2。具体的SQL
语句如下:
EXECUTEsp_addtypetype_TelphoneNum,'varchar(20),,NULL
CREATETABLEtblCustomerlnfo
(代号integerIDENTITY(10001,5)NOTNULL,
名称varchar(80)NOTNULL,
电话type_TelphoneNum,
传真type_TelphoneNum,
备注varchar(2000)NULL
)
ALTERTABLEtblCustomerlnfo
ADD手-机type_TelphoneNum
23、你需要运行一个使用SQLServer企业管理器创建的脚本。那么你该如何做呢?
答:使用SQL查询分析器或osql,打开并运行脚本。
第4章实现数据完整性
1.在学生管理系统中使用下面的学生信息表:
CREATETABLE学生信息表
(学号char(8)PRIMARYKEYNONCLUSTERED,
姓名varchar(20)NOTNULL,
身份证号码varchar(30)NOTNULL,
出生日期datetimeNULL,
系号char(2)NOTNULL
学生的身份证号码是唯•的。你想把每个学生的信息按照身份证号码的顺序物理地存放在
数据库文件中。下面的哪个约束可以完成改任务?
A、UNIQUECLUSTERED
B、UNIQUENONCLUSTERED
C、PRIMARYKEYCLUSTERED
D、PRIMARYKEYNONCLUSTERED
答:A
2.在SQLServer2000中创建一些新对象的脚本如下:
CREATETABLEPublishers
(publisher_idintPRIMARYKEY,
publisher_namevarchar(100)notnull
CREATETABLEBooks
(book_idintCONSTRAINTPK_title_idPRIMARYKEY,
book_titlenvarchar(2000)notnull,
book_contentntextnotnull,
fieldOlvarchar(lOO)unique,
field02char(1000),
field03char(1000),
field04char(lOOO),
publisher_idintnotnull,
CONSTRAINTFK_publisher_id
FOREIGNKEY(publisherjd)REFERENCESPublishers(publisher_id)
CREATETABLEThirdTable
(third_idintIDENTITY(45,17)PRIMARYKEY,
fieldOlvarchar(l00)FOREIGNKEYREFERENCESBooks(fieldO1),
从下面中选择正确的说法。
A.上面的创建语句没有错误;
B.表Books的一行的长度超过允许的最大长度;
C.表ThirdTable的列的third_id的种子要能被增量整除;
D.列fieldOl的类型是varchar,不能作为外部关键字;
E.不能直接在表Books的列bookjd上使用CONSTRAINT关键字,使用CONSTRAINT
关键字要象该表的CONSTRAINTFK_publisher_id一样另起一行。
答:A
3.在登记学生成绩时要保证列Score的值在0到100之间,下面的方法中哪种最简单?
A.编写一个存储过程,管理插入和检查数值,不允许直接插入;
B.生成用户自定义类型type_Score和规则,将规则与数据类型type_Score相关联,然后设
置列Score的数据类型类型为type_Score;
C.编写一个触发器来检查Score的值,如果不在0和100之间,则撤消插入;
D.在Score列增加检查限制。
答:D
4.在数据库中应该将哪种约束添加到Country字段中,以确保你的印度尼西亚子公司只与
其他印度尼西亚公司进行贸易。
答:CHECK约束(或规则)。
5.在实现问题4的约束(或规则)后,数据录入操作员抱怨他们不得不一遍又一遍地输入
Indonesia这个单词,有什么办法可以解决它吗?
答:创建一个DEFAULT约束(或默认值)。
6.假设你的业务改变了并且你也不在印度尼西亚工作。你的子公司迁移到了马来群岛与
其他儿个东亚国家做生意。现在,在country字段中包括印度尼西亚在内的记录有四百五十
万条。如何加入新的国家而且保留包含印度尼西亚的行呢?
答:修改表来删除现有的约束,然后添加新的约束。在添加新约束时,使用WITH
NOCHECK选项。
7.在学生管理系统中已经创建了学生信息表tblStudlnfo和系信息表tblDeptlnfo,而且这两
个表都存放了不少数据。创建表的语句如下:
CREATETABLEtblDeptlnfo
(
DeptIDchar(2)notnullPRIMARYKEY,
DeptNamevarchar(20)notnull,
Remarksvarchar(255)
)
CREATETABLEtblStudlnfo
(
StudlDchar(8)notnullPRIMARYKEY,
Namevarchar(20)notnull,
Birthdaydatetimenull,
DeptIDchar(2)notnull
)
学生信息表tblStudlnfo的列DeptID,用来存放学生所在系的代号。该列引用系信息表
tblDeptlnfo的列DeptID,但是在创建表时没有创建该约束。请在不删除表的情况下,写出
创建该约束的SQL语句。
答:可以使用ALTERTABLE语句来创建该约束,
ALTERTABLEtblStudlnfo
ADDCONSTRAINTFK_DeptID
FOREIGNKEY(DeptID)REFERENCEStblDeptlnfo(DeptlD)
8.某公司使用数据库进行内部管理:表tblEmployees存储雇员的代号(4位字符,唯一)、
身份证号码(18个字符)、名字(最长20个字符)和工资等信息;表tblDepartments存储
部门的部门号(2个字符,唯一)、部门名称(30个字符)等信息;表tblWork每一行表示
某雇员在某部门工作过及其开始工作时间和备注。请写出创建这三个表的SQL语句,要保
证:工资的值大于0,身份证号码唯一,并且当删除某雇员时该雇员在表tblWork的所有信
息自动删除。
答:
CREATETABLEtblEmployees
(雇员代号char(4)notnullPRIMARYKEY,
姓名varchar(20)notnull,
身份证号码char(18)notnullUNIQUE,
工资integernotnullCHECK(工资>0)
)
CREATETABLEtblDepartments
(部门号,char(2)notnullPRIMARYKEY,
部门名称varchar(30)notnull
)
CREATETABLEtbIWork
(
雇员代号char(4)notnull,
部门号char(2)notnull,
开始时间datetimenotnull,
备注varchar(lOOO)null,
CONSTRAINTPK_tblWorkPRIMARYKEY(雇员代号,部门号,开
始时间),
CONSTRAINTFK_tblEmployeesFOREIGNKEY(雇员代号)
REFERENCEStblEmployees(雇员代号)ONDELETECASCADE,
CONSTRAINTFK_tblDepartmentsFOREIGNKEY(部门号)
REFERENCEStblDepartments(部门号)
)
9.定单录入系统有两个主要的表:Orders和Customers。如果希望惟一地标识每个定单和
客户,应该考虑哪种数据完整性组件?如何管理这两个表之间的关系?
答:确定在Customers表中定义了PRIMARYKEY约束。在Orders表中使用FOREIGN
KEY约束来引用Customers表。
第5章Transact-SQL介绍
1.执行下面脚本,共有多少条记录插入到表tblTemp中?
CREATETABLEtblTemp
(TempIDintegernotnull,
TempDatedatetimenotnull)
go
DECLARE@countinteger
SET@count=1
WHILE@count<=10
BEGIN
IF(SELECTCOUNT(*)FROMtblTemp)>8
BEGINBREAKEND
ELSE
INSERTtblTempVALUES(@count,GETDATE())
SET@count=@count+1
END
A、0B、8C、9D、10
答:C
2.你的数据库存放产品的序列号,序列号以整型存储。你需要把序列号按如下的格式显示:
(999)999-9999
假设你已经把一个序列号放在一个变量中,该变量的定义如下:
DECLARE@SerialNumberint
下面哪个语句可以正确地完成该任务?
A.
SELECT•SerialNumber'='('
+SUBSTRING(CONVERT(varchar(10),@SerialNumber),3,0)+')'
+SUBSTRING(CONVERT(varchar(10),@SerialNumber),3,3)
++SUBSTRING(CONVERT(varchar(10),@SerialNumber),4,6)
B.
SELECT'SerialNumber'='('
+SUBSTRING(CONVERT(varchar(10),@SerialNumber),3,l)+y
+SUBSTRING(CONVERT(varchar(10),@SerialNumber),3,4)
++SUBSTRING(CONVERT(varchar(10),@SerialNumber),4,7)
C.
SELECT'SerialNumber'='('
+SUBSTRING(CONVERT(varcha「(10),@SerialNumber),0,3)+')'
+SUBSTRING(CONVERT(varchar(10),@SerialNumber),3,3)
++SUBSTRING(CONVERT(varchar(10),@SerialNumber),6,4)
D.
SELECTSerialNumber'='('
+SUBSTRING(CONVERT(varchar(10),@SerialNumber),l,3)+,}'
+SUBSTRING(CONVERT(varchar(10),@SerialNumber)A3)
++SUBSTRING(CONVERT(varchar(10),@SerialNumber),
答:D
3.描述Transact-SQL语句的基本类型及它们的用法。
答:数据定义语言(DDL)语句允许在数据库中创建对象。数据控制语言(DCL)语句能够决
定谁能查看和修改数据。数据操纵语言(DML)语句允许查询和修改数据。
4.Transact-SQL和ANSISQL-92的关系是什么?
答:Transact-SQL符合ANSISQL-92入口级规范,并通过SQLServer特定的扩展而
且具有附加的功能。
5.下面的语句错在什么地方?
DECLARE@ainteger
SET@a=1
SELECT@a
GO
SET@a=@a+l
答:当执行GO命令时,GO前面的批处理就结束,该批处理中的局部变量@2已经被
清除。当执行SET@a=@a+1语句时,会因为变量@a没有定义而产生错误。
6.写出Transact-SQL语句,将SQLServer2000服务器的名称放在局部变量@a中(用两
种方法)。
答:
DECLARE@avarchar(300)
SET@a=@@SERVERNAME
和
DECLARE@avarchar(300)
SELECT@a=@@SERVERNAME
7.表tblTemp的定义如下:
CREATETABLEtblTemp
(TempIDintegernotnull,
TempDatedatetimenotnull)
(1)请写出SQL语句来显示列TempID是偶数的记录中列TempDate的年份。(2)请写出
几条SQL语句显示列TempID的值是该列的最大值的所有记录。
较.
口•
selectyear(TempDate)
fromtblTemp
whereTempID%2=0
DECLARE@Tempinteger
SELECT@Temp=max(TempID)
FROMtblTemp
SELECT*FROMtblTemp
WHERETempID=@Temp
第6章使用Transact-SQL查询工具
3.一个脚本有如下代码:
CREATETABLEEmployees一第一条语句
(EmployeelDintIDENTITY(10001,1)PRIMARYKEY,
Namevarchar(40)notnull,
Birthdaydatetimenull
)
SELECT*FROMEmployees一第二条语句
CREATEDEFAULTphone_no_default・•第三条语句
AS•(000)000-0000,
CREATETABLECustomers--第四条语句
(CustomerlDint1DENTITY(100001,1)PRIMARYKEY,
Namevarchar(40)notnull.
Phonevarchar(20)null
)
EXECUTEsp_bindefaultphone_no_default,'Customers.Phone'--第五条语句
在执行过程中会因为缺少GO宿团而出现错误,下面哪些是必须的?
A.在“第一条语句”和“第二条语句”之间添加GO语句
B.在“第二条语句”和“第三条语句”之间添加GO语句
C.在“第三条语句”和“第四条语句”之间添加GO语句
D.在“第四条语句”和“第五条语句”之间添加GO语句
答:B,C
24、为了捕获文本文件中的查询结果,在批处理文件中最好使用什么查询工具?为什么?
答:最好使用osql命令行实用工具执行查询,然后通过使用命令行选项-0filename.txt
小巴夕吉果*{呆彳竽至个*文~中O
在SQL查询分析器中,使用适当的命令行选项也能完成上述操作。
25、要想将来重新使用Transact-SQL语句,创建并使用它的最好方法是什么?
答:使用对象浏览器直接从对象生成Transact-SQL语句脚本,或者从模板生成
Transact-SQL语句脚本。也可以把Transact-SQL脚本保存到文件中,供日后修改或使用。
26、Transact-SQL批处理和Transact-SQL脚本有何不同?
答:Transact-SQL批处理是由GO语句描绘的一系列语句,这些语句将立即被分析和
执行。Transact-SQL脚本是一个文件,此文件包含一个或多个要执行的批处理。
27、您打算用SQLServer2000的查询分析器来浏览部门信息表tblDepartments中的记录信息,
可以采用哪些方法?
答:在SQLServer2000的查询分析器中执行SQL语句SELECT*FROM
tblDepartments,或者在SQLServer2000的查询分析器的对象浏览窗口选中表
tblDepartments,按鼠标右键并选中快捷菜单中的“打开表”功能。
28、在WINDOWS系统中,一个程序A(严格讲应称为“进程”)可以启动运行带参数的另外
一个程序B,程序B运行结束后会返回结果(一个整数)给程序A,供程序A判断程序B运行是
否正常。假设您在编写一个商场管理信息系统的安装软件,该安装软件要在SQLServer2000服
务器上创建数据库和表等对象。您已经把创建数据库和表等对象的SQL语句放在install.sql文件
中。如何轻松地完成创建数据库和表等对象的任务?
答:可以通过运行osql.exe来执行创建数据库和表等对象的SQL语句。程序A可以运
行如下命令:
如果使用Windows身份验证模式,则执行
osql.exe-S服务器名称-E-ie:\setup\install.sql
如果使用SQLServer身份验证模式,则执行
osql.exe-S服务器名称-Usa-P密码-ie:\setup\install.sql
更详细的信息请看SQLServer的联机帮助:osql实用工具。
29、请比较SQLServer2000的查询分析器和企、业管理器的优缺点。
答:企业管理器使用向导的方式,比较简单和直观,适合初学和维护数据库时使用。但
是,企业管理器也有缺点。比如,创建数据库等对象后若不小心删除这些对象,重新生成
这些对象比较费劲,容易缺漏。
查询分析器使用文本命令行(Transact-SQL语句)的方式,比较适合在开发实际系统
时使用。在开发阶段,您可以使用Transact-SQL语句在开发环境中创建数据库和表等对
象,并保存这些语句到文本文件中,以后在实际运行环境中只要运行这些命令行就可以重
新创建数据库和表等对象。同时,使用Transact-SQL语句还可以生成大量的测试数据。
使用查询分析器的缺点在于要记住很多Transact-SQL语句的格式和使用方法。
第7章检索数据
1.您需要显示从2001年1月1日到2001年12月31日雇佣的所有职员的姓名和雇佣
日期。职员信息表tblEmployees包含列Name和列HireDate,下面哪些语句能完成
该功能?
A、SELECTName,HireDateFROMtblEmployees
B、SELECTName,HireDateFROMtblEmployees
WHEREHireDate=2001-01-0rOR'200L12-31'
C、SELECTName,HireDateFROMtblEmployees
WHEREHireDateBETWEEN'2000-12-31'AND42002-01-0r
D、SELECTName,HireDateFROMtblEmployees
WHEREHireDateDATEPART(yy,HireDate)=2001
答:D
2.在SQLServer2000创建了定单表,创建语句如下:
CREATETABLE定单表
(定单代号intIDENTITY(IJ)PRIMARYKEY,
客户代号intnotnull,
雇员代号intnotnull,-经手该笔业务的雇员的代号
定单日期datetimenotnull,
销售金额moneynotnull,
备注varchar(200)null
)
你需要获得定单信息列表,包括雇员代号、销售金额和定单日期。你想按日期从近
到早的顺序显示,并且对于每一天的定单,按销售金额从大到小的顺序排序。
假设列“销售日期”的时间部分的值都是0,下面哪条语句能够准确地完成该任务?
A.SELECT雇员代号,销售金额,定单日期
FROM定单表
ORDERBY销售金额,定单日期DESC
B.SELECT雇员代号,销售金额,定单日期
FROM定单表
ORDERBY定单日期,销售金额DESC
C.SELECT雇员代号,销售金额,定单日期
FROM定单表
ORDERBY定单日期DESC,销售金额DESC
D.SELECT雇员代号,销售金额,定单日期
FROM定单表
ORDERBY销售金额DESC,定单R期DES
答:C
3.你是一位健康护理计划的数据库管理员。使用下面语句创建physicians表:
CREATETABLEdbo.physicians(
physician_noiniIDENTITY(100,2)NOTNULL,
f_namevarchar(25)NOTNULL,
l_namevarchar(25)NOTNULL,
streetvarchar(50)NULL,
cityvarchar(255)NULL,
statevarchar(255)NULL,
postal_codevarchar(7)NULL,
co_paymoneyNOTNULLCONSTRAINTphys_co_payDEFAULT(10)
)
a)如何检索在纽约州(NY)、华盛顿州(WA)、弗吉尼亚州(VA)、或加利福尼
亚州(CA)实习的医生信息?
答:用下面类型的WHERE子句编写一个SELECT语句。
WHEREstate='NY'ORstate='WA'ORstate=...
Or,useaWHEREclausethatincludestheINkeyword:
WHEREstatein('NY','WA','VA','CA')
b)在结果集中,如何产生一个没有重复州的列表?
答:在SELECT语句中使用DISTINCT关键字。
c)在结果集中,如何产生一个列,包含co_pay值加每位医生$5.00的服务费,并且
给该列取一个别名Amt_Due?
答在选择列表中使用计算列。使用列别名'Amt_Due'=(co_pay+5)。
4.学生成绩表包含列“学号”、歹U“课程代号”、歹广成绩”、歹ij“考试时间”等。歹产成绩”
的值为NULL表示该学生缺考这门课。请用SELECT语句查询学号为“98120001”的学生所
有缺考的课程数。
答:SELECTCOUNT(*)
FROM学生成绩表
WHERE学号='98120001'AND成绩ISNULL
5.雇员信息表包含列“雇员代号”、歹!J“雇员姓名”、歹!J“出生日期”、歹!基本工资”、列
“津贴”,总工资=基本工资+津贴,请用SELECT语句查询1972年以后出生的雇员的姓名、
出生日期和总工资,按总工资递减的顺序显示。
答:SELECT雇员姓名,基本工资+津贴AS总工资,出生日期
FROM雇员信息表
WHERE出生日期>='1972。-01,
ORDERBY总工资DESC
6.现在要做一个电话查询网页,供人们查询某大学的教职工的家庭电话号码。使
用者在网页输入教职工的部分姓名,网页就返回匹配该查询条件的所有教职工的姓名和电
话号码。输入的部分姓名可以多种多样,比如,查找“张小明”,可以输入“张”、"小”、"明”、
“张明,,、“小明,,等等。假设教职工的姓名和电话号码存放在表⑹Teiphone,局部变量
@PartialName存放输入的部分姓名,请用Transact-SQL语句写一段代码完成该查询。(请
参考第五章的字符串函数SUBSTRING,和SQLServer联机丛书。)
答:
DECLARE@SearchConditionvarchar(200)
DECLARE@ismallint,@Countsmallint
SET@SearchCondition='%'
SET@Count=LEN(@PartialName)
SET©i=1
WHILE@i<=©Count
BEGIN
SET@SearchCondition=©SearchCondition+SUBSTRING(@PartialName,@i,
1)+'%'
SET@i=@i+1
END
SELECT*
FROMtblTelphone
WHERE姓名like©SearchCondition
第8章数据分组与汇总
4.你在SQLServer2000数据库中创建了定单表,其创建语句如下:
CREATETABLE定单表
(定单号intIDENTITY。」)PRIMARYKEY,
雇员代号intNOTNULL,
地区代号intNOTNULL,
订购□期datetimeNOTNULL,
订购金额moneyNOTNULL
)
销售经理想要获得总的销售金额和按地区分组的总销售金额。下面哪条语句能完
成该任务?
A.SELECT雇员代号,地区代号,订购金额
FROM定单表
ORDERBY地区代号
COMPUTESUM(订购金额)
B.SELECT雇员代号,地区代号,订购金额
FROM定单表
ORDERBY地区代号
COMPUTESUM(订购金额)BY地区代号
COMPUTESUM(订购金额)
C.SELECT雇员代号,地区代号,SUM(订购金额)
FROM定单表
GROUPBY雇员代号,地区代号
D.SELECT雇员代号,地区代号,SUM(订购金额)
FROM定单表
GROUPBY雇员代号,地区代号
答:B
30、下面哪些关键字能影响SELECT语句返回的结果的行数?(多选)
A.TOPn
B.WHER
C.ORDERBY
D.DISTINCT
答:A、B和D
31、一个营销部的雇员想让你提供关于产品销售的汇总数据。她需要对早餐的谷类食品按类别
(如冷、热或低脂类)、厂商和销售产品的商店的规模(小、中或大)分类。假设一个表中
保存了所有这些信息,你的SELECT语句将使用什么样的子句或运算符?为什么?
答:最好使用GROUPBY子句和CUBE运算符。GROUPBY和HAVING子句只能提
供一种级别的汇总(或分组)。ROLLUP运算符可以提供一种类型的汇总。CUBE运算符
可以提供多种类型的汇总。也可以使用COMPUTE或COMPUTEBY子句生成基本报表。
32、你的经理要求你把包含从问题3得到的所有数据的文件提供给另外一个开发小组使用,此开
发小组负责报表生成和图形化工具。使用COMPUTE和COMPUTEBY子句适合这个任务
吗?为什么或为什么不适合?
答:不合适。因为COMPUTE和COMPUTEBY子句生成的是非关系型格式的附加的
汇总数据。尽管这些数据便于查看,所返回的结果集却不适合出现在其它应用程序中。应
该使用GROUPBY子句和CUBE或ROLLUP运算符提供标准关系格式的数据,这样其他
客户比较容易使用。
33、某班级的学生成绩表包含列“学号”、歹上课程代号"、歹『'成绩"、歹「学期号”,请统计学期号
为,,第三学期,,的每个学生所有科目的平均成绩。
答:SELECT学号,AVG(成绩)
FROM学生成绩表
WHERE学期』第三学期’
GROUPBY学号
34、接上题,现在想评定该班级第二学年(包括第三学期和第四学期)的优秀学生奖学金,要求
从该班级选出平均成绩排前5名的同学。请用SELECT语句显示这些同学的学号和平均成绩。
(要考虑可能有多个同学并列第5名)
答:SELECTTOP5WITHTIES学号,AVG(成绩)AS平均成绩
FROM学生成绩表
WHERE学期」第三学期'OR学期』第四学期’
GROUPBY学号
ORDERBY平均成绩DESC
35、接上题,学校规定前三学年(第一学期到第六学期)总平均分在90分以上而且没有一次
考试不及格(成绩>=60分)的同学可以参加学校最高级别的评奖。请用SELECT语句显示
该班级中满足评奖条件的候选人的学号和前三学年的总平均分。
答:
SELECT学号,AVG(成绩)AS三年平均成绩
FROM学生成绩表
WHERE学期=,第一学期'OR学期='第二学期,
OR学期=,第三学期,OR学期』第四学期’
OR学期='第五学期'OR学期=,第六学期’
GROUPBY学号HAVINGAVG(成绩)>=9()ANDMIN(成绩)>=60
ORDERBY三年平均成绩DESC
36、查看在SELECT语句中使用GROUPBY子句和CUBE运算符的结果。在结果集中你将
发现空值,而且空值在SELECT语句使用的表中是允许出现的。你是如何用空值区分详细
数据行与汇总数据行。
答:在允许空值的列中使用GROUPING函数。如果是一个汇总行,通过GROUPING
函数产生的列值会出现数字1。
37、需要提供前100个产品和销售倒数百分之五的产品的列表。可以使用SELECTTOPn
[PERCENT]语句解答每个问题吗?还有其他方法来解答这些问题吗?
答:可以。可以使用SELECTTOP“PERCENT]语句解答每个问题。第一个问题可以
用SELECTTOP100...ORDERBY…DESC语句,这样会使销售量最高的列在上面。
第二个问题可以用SELECTTOP5PERCENT...ORDERBY...ASC语句,这样会使
销售量最低的列在上面。
第9章多表联接
1.你在SQLServer2000数据库中创建了如下两个表:
CREATETABLE雇员表
(雇员代号intIDENTITY(10001,1)PRIMARYKEYNONCLUSTERED,
雇员姓名varchar(20)NOTNULL,
通信地址varchar(200)NULL
)
CREATETABLE定单表
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 剧毒化学品道路运输通行证核发表格
- 2026安康公考面试题及答案
- 2026安徽民航面试题及答案
- 任务四 汽车垂直媒体平台促销
- 热力总站技术室工作职责培训课件
- 《物联网概论》课件 5.4应用实例-无线传感器网络
- 2025年区域粮食市场协同监管
- 拌和站安全技术交底汇编
- 教案3-项目一 汽车测评知识认知-汽车测评基础知识
- 招聘服务流程外包合同
- 2026高考作文终极预测10大母题超详细指导(写作指导+误区+热点素材+高分范文)
- 2026年安全生产月-人人讲安全、个个会应急-排查整治风险隐患
- 2026年高考作文备考预测之“新质生产力与科技自强”:主题素材+写作维度+试题分析
- 2026年江西有色智联科技有限公司招聘6人笔试参考试题及答案解析
- 2026厦门国有资本运营有限责任公司招聘笔试历年常考点试题专练附带答案详解
- 2026山东威海热电集团有限公司招聘44人笔试参考题库及答案解析
- 2026年陕西好猫卷烟材料有限责任公司招聘(10人)笔试模拟试题及答案解析
- 2026中国能源传媒集团有限公司社会招聘(6人)笔试模拟试题及答案解析
- 可燃气体报警系统施工方案
- 2025-2026学年河北省唐山市第五十四中学八年级下学期5月月考数学试题(含答案)
- 国开2026年社区护理学(本)形考任务1-5答案
评论
0/150
提交评论