大型数据库期末试题以及答案Word格式.doc
《大型数据库期末试题以及答案Word格式.doc》由会员分享,可在线阅读,更多相关《大型数据库期末试题以及答案Word格式.doc(15页珍藏版)》请在冰点文库上搜索。
D.SETROWCOUNT10
SELECTCountry,COUNT(*)as“NumCountries”
FROMCustomersGROUPBYCountryORDERBYNumCountriesDesc
4、下列关于数据库、文件和文件组的描述中,错误的是(B)。
A)一个文件或文件组只能用于一个数据库
B)一个文件可以属于多个文件组
C)一个文件组可以包含多个文件
D)数据文件和日志文件放在同一个组中
5、学生成绩表包含列“学号”、“课程代号”、“成绩”、“考试时间”等。
列“成绩”的值为NULL表示该学生缺考这门课。
请用SELECT语句查询学号为“98120001”的学生所有缺考的课程数(A)。
A、SELECTCOUNT(*)FROM学生成绩表
WHERE学号='
98120001'
AND成绩ISNULL
B、SELECTCOUNT(成绩)FROM学生成绩表
C、SELECTCOUNT(*)FROM学生成绩表
WHERE学号='
AND成绩=NULL
D、SELECTCOUNT(成绩)FROM学生成绩表
AND成绩=NULL
6、在录入公司业务信息时,要确保字段“业务量”的值在100到200之间,需要使用下列哪种约束(D)。
A)DEFAULTB)PRIMARYKEY C)UNIQUE D)CHECK
7、以下不是SQLServer2005触发器类型的是(_B___)。
A、INSERT触发器B、SELECT触发器
C、UPDATE触发器D、DELETE触发器
8、在学生成绩表tblCourseScore中的列Score用来存放某学生学习某课程的考试成绩(0~100分,没有小数),用下面的哪种类型最节省空间?
(C)。
A)int
B)smallint
C)tinyint
D)decimal(3,0)
9、以下哪个不能用于处理缺失的信息.(A)
A.innerjoinB.leftouterjoin
C.rightouterjoinD.fullouterjoin
10、修改存储过程使用的语句是(_B___)。
A、INSERTPROCEDURE
B、ALTERPROCEDURE
C、DROPPROCEDUE
D、DELETEPROCEDUE
11、在InsertInto语句中某些列是可以不插入值,给出列时,可以省略这些列,以下说法不正确的是:
(D)
A.具有Identity属性的列,可以省略;
B.具有默认值的列,可以省略;
C.允许为空的列,可以省略;
D.设置为主键的列,可以省略
12、下列条目中,哪个不属于ALTERTABLE的功能(D )
A.增加表的完整性约束 B.修改表中列的定义
C.增加表中的列 D.修改表中的记录
13、创建如下存储过程:
CREATEPROCEDUREmy_proc_def
@firstint=NULL,
@secondint=2,
@thirdint=3
AS
SELECT@first,@second,@third
GO
以下调用存储过程得到的结果错误的是(D)。
A、EXECUTEmy_proc_def 结果值:
NULL23
B、EXECUTEmy_proc_def10,20,30结果值:
102030
C、EXECUTEmy_proc_def@second=500 结果值:
NULL5003
D、EXECUTEmy_proc_def40,@third=50 结果值:
4050050
14、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但至少包括的部分(_D___)。
A、SELECT,INTO B、SELECT,FROM
C、SELECT,GROUP D、仅SELECT
15、在Transact-SQL语法中,使用关键字(_A___)可以把重复行屏蔽。
A、DISTINCT B、UNION
C、ALL D、TOP
16、在Transact-SQL语法中,将多个查询结果返回一个结果集合的运算符是(__B__)。
A、JOIN B、UNION
C、INTO C、LIKE
17、在Transact-SQL语法中,可以对查询结果进行排序的子句是(_C___)。
A、GROUPBY B、COMPUTEBY
C、ORDERBY D、COMPUTE
18、在创建视图时,可以用来将包含创建此视图的文本加密的选项是(_B___)
A、WITHSCHEMABINDING
B、WITHENCRYPTION
C、WITHCHECKOPTION
D、WITHVIEW_METADATA
19、一个数据库可以有几个主文件。
(__C__)
A、可以0个 B、至少一个
C、有且仅有一个 D、可以0个,也可以多个
20、在聚合函数中,即使每行都包含空值,仍会计算所有行的函数是(_C___)。
A、SUM B、MAX
C、COUNT(*) D、COUNT
21、在数据库中创建表可以通过(_D___)等方法来实现。
A、企业管理器 B、查询分析器
C、OSQL D、企业管理器和CREATETABLE语句
22、左外联接中TABLE1LEFTOUTERJOINTABLE2ONJOIN_CONDITION如果现在TABLE2中没有相应的行,则返回(D)。
A、没有返回B、两个表所有行
C、TABLE2中所有行D、TABLE1中所有行
23、LIKE’[A-C]%’匹配的内容是什么(B)
A.匹配以A或C开头的字符串
B.匹配以A到C当中任何一个字母开头的字符串
C.匹配以A或C开头的字符串,且字符串仅包含了两个字符
D.匹配以A到C当中任何一个字母开头的字符串,且字符串仅包含了两个字符
24、关于默认值和规则,下列描述不正确的是(C)
A.列的默认值必须符合绑定到此列上的任何规则和CHECK约束
B.不能为已有默认绑定的列创建DEFAULT约束
C.创建的规则可检查出先前已经存在于数据库中的不符合规则的数据
D.一个列或者用户定义数据类型只能被一个规则绑定
25、下面哪些语句属于数据定义语言(DDL)是(D)。
A.SELECT B.INSERT C.UPDATE D.DROP
26、>
ALL(1,2,3)表示3,>
ANY(1,2,3)表示1(A)。
A、大于,大于 B、大于,小于 C、小于,小于 D、小于,大于
27、以下哪些不是SQLServer的系统数据库(D)。
A、master B、model C、tempdb D、Northwind
28、已知,SQLServer中的触发器使用两种特殊的表:
deleted表和inserted表。
那么下面的描述中那一个说法是错误的(D)。
A、在执行DELETE语句时,行从触发器表中删除,并传输到deleted表中。
B、在执行INSERT语句时,新建行被同时添加到inserted表和触发器表中。
C、在执行UPDATE语句时,首先旧行被复制到deleted表中,然后新行被复制到触发器表和inserted表中。
D、虽然Microsoft®
SQLServer™2005自动创建和管理deleted表和inserted表,但是还是允许我们直接对表中的数据进行更改。
29、定单表Orders的列OrderID的类型是小整型(smallint),根据业务的发展需要改为整型(integer),应该使用下面的哪条语句(C)。
A、ALTERCOLUMNOrderIDintegerFROMOrders
B、ALTERTABLEOrders(OrderIDinteger)
C、ALTERTABLEOrdersALTERCOLUMNOrderIDinteger
D、ALTERCOLUMNOrders.OrderIDinteger
30、执行下面脚本,共有多少条记录插入到表tblTemp中(D)。
CREATETABLEtblTemp
(TempIDintegernotnull,
TempDatedatetimenotnull)
go
DECLARE@countinteger
SET@count=1
WHILE@count<
=10
BEGIN
IF(SELECTCOUNT(*)FROMtblTemp)>
=10
BREAK
ELSE
Begin
INSERTtblTempVALUES(@count,GETDATE())
SET@count=@count+1
end
END
A、0 B、8 C、9 D、10
二、判断题
1、insertintotableAselect*fromwhereaddress=’福建省福州市’,要正确运行如上语句,tableA可以不存在,在查询的过程中生成。
(F)
2、在Transact-SQL语句中,使用通配符“%”只能描述单个字符。
(F)
3、在Transact-SQL语句的WHERE子句中,可以用IN搜索条件来代替由OR操作符连起来的一系列比较操作符。
(T)
4、对包含空值的字段使用聚合函数时,SQLServer的聚合函数都将忽略字段中的空值(F)
5、在Transact-SQL语句中,使用通配符“[]”只能描述单个字符。
(T)
6、selectA,B,C,count(*)fromtableAgroupbyA,B以上语句不存在语法错误(F)
7、以下定义变量及赋值语句是正确的(F)
declare@iint,@jint
set@i=2,@j=2
8、在选择列表中,使用符号“*”代表选择表中所有的字段。
9、触发器可以引用其他表中的列,能强制比CHECK约束更复杂的数据完整性。
(T)
10、触发器是通过事件触发而由系统自动执行的。
11、列约束被指定为列定义的一部分,并且只应用到那一列。
(T)
12、如果要在多列上创建相同的默认值,可以先定义默认值再采用绑定的方法。
(T)
13、一个数据库可以有多个主文件。
(F)
14、UNIQUE约束指明任意两行不能有相同的值。
(F)
17、在游标中,要读取游标当前的值,用select语句。
(F)
16、对一个表插入数据,一次只能插一条记录到表中。
17、禁用触发器后,若再想再次使用,必须重新创建。
三、填空题
1、系统存储过程是存储在master数据库内,以SP_为前缀标识的。
2、可以定义一列或多列的值与同表或其他表中主键的值匹配的约束类型是外键约束。
3、Transact-SQL语句的种类分为DML、DDL和DCL三种。
4、某数据字段,其数据类型为decimail(7,4),若向某记录的该列赋值56.342619,
则该列实际存储的是56.3426。
5、当标识符的第一个字符是符号时,代表它有特殊用处。
以@开头
的标识符代表局部变量或参数;
以@@开头的标识符代表全部变量或参数;
6、当在定义了触发器的表上执行UPDATE语句的时候,原行(前像)被移到
deleted表中,而更新的行(后像)则插入inserted表中。
7、从表或视图中检索数据可以使用关键字select;
将数据插入到表或视图中可使用关键字insert;
更新表或视图中的数据可使用关键字update;
从表或视图中删除数据可使用关键字delete。
8、在Transact-SQL语句中,用来创建对象的关键字是create、用来更改对象的关键字是alter、用来删除对象的关键字是drop。
9、在Transact-SQL语句中,可以使用CREATEDATABASE语句来创建数据库,使用CREATETABLE语句来创建表,使用CREATEVIEW
语句来创建视图,使用CREATEPROC语句来创建存储过程.
10、使用Altertable通过更改、添加或删除列和约束,或者启用或禁用约束和触发器,从而修改表的定义.
11、编写LIKE子句用来检索以字符串inger结尾、以从M到Z的任何单个字母开头的
所有名称:
__LIKE‘[M-Z]inger’____
12、在流程控制语句中_______begin…end_____________语句用于包括一组T-SQL语句,使一组T-SQL语句作为一个单元进行处理。
13、索引按照组织方式分,可以分为聚集索引和非聚集索引两种。
四、程序题
1、请根据如下要求,使用Transact-SQL进行填空
创建一个名为Students的数据库,其中:
主数据文件名为Students_Data1,初始大小10MB,最大大小不受限制,次要数据文件名为Students_Data2,初始大小为5MB,最大不超过50MB;
包含一个日志文件Students_Log,初始大小3MB,最大不能超过5MB,按5%增长;
所有文件均存放在C:
\SQLData文件夹下。
CREATEdatabaseStudentsonprimary
(
name='
Students_Data1'
filename='
C:
\SQLData\Students_Data1.mdf'
size=10mb
)
Students_Data2'
\SQLData\Students_Data2.ndf'
size=5mb,
maxsize=50mb
logon
Students_Log'
\SQLData\Students_Log.ldf'
size=3mb,
maxsize=5mb,
filegrowth=5%
2、某银行数据库,有如下表CardInfo:
列名
数据类型
长度
是否空值
说明
CardID
char
19
否
卡号
pass
6
密码
balance
money
余额
State
8
状态
openDate
datetime
开户时间
1)创建默认值对象default_State,默认值取值为:
‘正常’
createdefaultdefault_Stateas'
正常'
2)并将此默认值对象绑定到上表的State字段中。
createtableCardInfo
CardIDchar(19)notnull,
passchar(6)notnull,
balancemoneynotnull,
Statechar(8)notnull,
openDatedatetimenotnull
execsp_bindefaultdefault_State,'
CardInfo.State'
分值分布情况:
一、填空题(2*10=20)
二、选择题(2*15=30)
四、程序填空题(2*10=20)
五、程序题(30)
(四~五题)范围:
1、创建数据库
答:
createdatabase数据库名
删除数据库
dropdatabasedbname
2、默认对象的创建与绑定.
usexsbook
createdefaultjss_defaultas0--创建默认值对象jss_default
execsp_bindefault'
jss_default'
'
xs.借书数'
--将默认值对象绑定到xs表的列借书数
3、索引的添加
CREATE
[UNIQUE][CLUSTERED
|
NONCLUSTERED]
INDEX
名字
ON
{table_name
view_name}
[WITH
[index_property
[,....n]]
说明:
UNIQUE:
建立唯一索引。
CLUSTERED:
建立聚集索引。
NONCLUSTERED:
建立非聚集索引。
Index_property:
索引属性。
UNIQUE索引既可以采用聚集索引结构,也可以采用非聚集索引的结构,如果不指明采用的索引结构,则SQL
Server系统默认为采用非聚集索引结构。
例如:
CREATEUNIQUEINDEXCourseidONCourse(Cno);
4、视图的创建,往视图添加,修改数据
视图创建:
createview视图名
as
select*from表名
视图添加:
INSERTINTO视图名VALUES('
数据'
)
修改数据:
UPDATE视图名SET字段名=修改的数据
5、触发器的创建,修改,删除(如更新触发器)
创建:
CREATETRIGGER触发器名称
ON表名
FORINSERT、UPDATE或DELETE
T-SQL语句
注意:
触发器名称是不加引号的。
删除:
在查询分析器中使用
droptrigger触发器名称
来删除触发器。
也可以同时删除多个触发器:
droptrigger触发器名称,触发器名称...
重命名:
execsp_rename原名称,新名称
修改:
altertriggertrigger_name
on{table_nameview_name}
{forAfterInsteadof}
[insert,update,delete]
as
sql_statement
例题:
--1、在SC表上,建立后触发的插入触发器Check_Count1,规定每门课程的选课人数不能超过4人,若该课程选课人数未满4人,可以插入数据。
(前提:
一次插入一条记录)
createTriggerCheck_Count1OnSC
ForInsert
Declare@cnoChar(10),@StuCountint
Select@cno=cnofromInserted
Select@StuCount=Count(*)FromSCGroupbycnoHavingcno=@cno
If@StuCount>
4
RollBackTransaction--回滚事务,即使没有使用BeginTransaction语句;
Raiserror('
该课程的选课人数超过,已经满额!
'
16,1)--输出自定义的错误信息,Rollback后的语句仍然被执行;
End
Go
--测试上面的触发器;
selectCno,count(sno)fromSCgroupbyCno
insertintoSCValues('
2006010103'
J004'
null)
--deletefromSCwhereS