一、单项选择题
1.在 SQL Server中,系统存储过程保留的前缀是( C )
A. sb
B. sd
C. sp
D. sg
2.SQL语言中,删除一个表的命令是(B )
A. DELETE
B. DROP
C. CLEAR
D. REMORE
3.建立基本表结构时,定义字段的有效性规则是实现数据的 ( C )
A.实体完整性
B.参照完整性
C.域完整性
D.表完整性
4.用来表示可变长度的非Unicode数据的类型是( C )。
A、CHAR
B、NCHAR
C、V ARCHAR
D、NV ARCHAR
5.下列不属于设计表时要明确的项目是(D)。
A、列的名称
B、列的数据类型和宽度
C、表间的关系
D、表中的数据
6.连接有内连接、外连接和交叉连接,其中外连接只能对( A )表进行。
A、两个
B、三个
C、四个
D、任意个
7.已知成绩表如图1所示。
执行SQL语句:
SELECT COUNT(DISTINCT学号)
FROM成绩
WHERE分数>70
查询结果中包含的记录数目是( A )。
图1
A. 1
B. 2
C. 3
D. 4
8.已知有表R(sno, sname, age),其中sname表示学生的姓名,类型为nvarchar(5)。
查询所有名字中带有‘红’字的学生姓名(sname),SQL语句是( B )
A.SELECT sname FROM R WHERE sno = ′%红′
B.SELECT sname FROM R WHERE sno LIKE ′%红%′
C.SELECT sname FROM R WHERE sno = ′%红_′
D.SELECT sname FROM R WHERE sno LIKE ′_红_′
9.一个事务内的所有操作要么全执行,要么不执行,这一特性是指事务的( A )A.原子性 B.一致性 C.隔离性 D.持久性
10.不允许在表中出现重复记录的约束是通过 ( C )
A.外键实现
B.索引实现
C.主键实现
D.惟一索引实现
11.下列关于主关键字叙述正确的是(A )。
A 、一个表可以没有主关键字
B 、只能将一个字段定义为主关键字
C 、如果一个表只有一个记录,则主关键字字段可以为空值
D 、都正确
12.有一个表:学生(学号,姓名,系别),规定学号的值域是8个数字组成的字符串,这一规则属于( C )
A 、实体完整性约束
B 、参照完整性约束
C 、用户自定义完整性约束
D 、关键字完整性约束)
13.在SQL语句中,与X BETWEEN 20 AND 30等价的表达式是( B )
A.X>20 AND X<30
B.X>=20 AND X<=30
C.X>20 AND X<=30
D.X>=20 AND X<30
14.在关系数据库系统中,为了简化用户的查询操作,而又不增加数据的存储空间,常用的方法是创建(C)
A. 另一个表(table)
B. 游标(cursor)
C.视图(view)
D. 索引(index)
15.带有前缀名为xp的存储过程属于( C )。
A 、用户自定义存储过程
B 、系统存储过程
C 、扩展存储过程
D 、以上都不是
16.下列哪个数据库对象可以用来实现表间的数据完整性(A)。
A 、触发器
B 、存储过程
C 、视图
D 、索引
17.声明了变量:declare @i int,@c char ( 4 ),现在为@i 赋值10 ,为@c 赋值'abcd' ,正确的语句是( C )
A 、set @i=10,@c='abcd'
B 、set i=10 , set @c='abcd'
C 、select @i=10,@c='abcd'
D 、select @i=10, select @c='abcd'
18.下列关于修改数据库设置叙述错误的是(D )。
A、ALTER DA TABASE 语句可以更改数据库名称
B、ALTER DATABASE 语句可以删除数据库文件
C、ALTER DATABASE 语句可将数据库设置为只读
D、ALTER DA TABASE 语句可修改数据库的磁盘文件名称
19.关于"死锁",下列说法中正确的是(B)
A.死锁是操作系统中的问题,数据库系统中不存在
B.只有出现并发操作时,才有可能出现死锁
C.在数据库操作中防止死锁的方法是禁止两个用户同时操作数据库
D.当两个用户竞争相同的资源时不会发生死锁
20. 关于主键描述正确的是:( C )
A.包含一列
B.包含两列
C.包含一列或者多列
D. 以上都不正确
21.表建好后,可以使用( B )语句在表中添加记录。
A.DELETE
B.INSERT
C.UPDATE
D.INSEATER
22.在SQL Server 2005中,当数据表被修改时,系统自动执行的数据库对象是( B )。
A. 存储过程
B. 触发器
C. 视图
D. 以上都不正确
23.以下关于索引的正确叙述是 ( C )
A.使用索引可以提高数据查询速度和数据更新速度
B.使用索引可以提高数据查询速度,但会降低数据更新速度
C.使用索引可以提高数据查询速度,对数据更新速度没有影响
D.使用索引对数据查询速度和数据更新速度均没有影响
24.对视图的描述错误的是:( C )
A. 是一张虚拟的表
B. 在存储视图时存储的是视图的定义
C. 在存储视图时存储的是视图中的数据
D. 可以像查询表一样来查询视图
25.要删除一个名为A1的过程,用命令:( C )Procedure A1 。
A 、Delete B、Alter C、Drop D、Execute
26.若想查询出所有姓张的、且出生日期为空的学生信息,则WHERE条件应为( C )。
A、姓名LIKE ‘张%’ AND 出生日期 = NULL
B、姓名LIKE ‘张*’ AND 出生日期 = NULL
C、姓名LIKE ‘张%’ AND 出生日期 IS NULL
D、姓名LIKE ‘张_’ AND 出生日期 IS NULL
27.SQL Server 2005是一个( C )的数据库系统。
A.网状型
B.层次型
C.关系型
D.以上都不是
28.部分匹配查询中有关通配符“_”的正确的叙述是 ( D )
A.“_”代表多个字符
B.“_”可以代表零个或多个字符
C.“_”不能与“%”一同使用
D.“_”代表一个字符
29.在一个表上最多能有( C )个触发器。
A.1
B.2
C.3
D.4
30.假如有两个表的连接是这样的: table_a inner join table_b 其中table_a和table_b 是两个具有公共属性的表,这种连接会生成( D )结果集。
A. 包括table_a中的所有行,不包括table_b的不匹配行
B. 包括table_b中的所有行,不包括table_a的不匹配行
C. 包括两个表的所有行
D.只包括table_a和table_b满足条件的行
31.在SQL SERVER中局部变量前面的字符为:( D )
A.*
B.#
C.@@
D. @
32.在“连接”组中有两种连接认证方式,其中在( B )方式下,需要客户端应用程序连接时提供登录时需要的用户标识和密码。
A、Windows身份验证
B、SQL Server 身份验证
C、以超级用户身份登录时
D、其他方式登录时
33下面字符串能与通配符表达式 [ABC]%a 进行匹配的是:( C )。
A 、BCDEF
B 、A_BCD
C 、ABC_a
D 、A%a
34.如果SELECT语句返回的结果集合中的行数太多,可以使用( B )选项来限制返回的数
据行数。
A.GO B.TOP n C.RETURN D.FIRST
35.SQL Server提供的单行注释语句是使用( B )开始的一行内容。
A. “/*”
B. “--”
C. “{”
D. “/”
36.数据库会保存视图的( B )。
A.数据 B.定义 C.约束 D.索引
37.在SQL语言中授权的操作是通过( C )语句实现的。
A、CREATE
B、REVOKE
C、GRANT
D、INSERT
38.下面对union的描述正确的是( D )。
A、任何查询语句都可以用union 来连接
B、union 只连接结果集完全一样的查询语句
39.DBMS是什么?( B )
A.操作系统
B.数据库管理系统
C.数据库
D. 数据库管理员
40.修改表的结构的关键字是( A )。
A.ALTER B.CREATE C.UPDATE D.INSERT
41. 在SQL语言的SELECT语句中,用于对结果集进行排序的是( C )子句。
A.GROUP BY
B.HAVING
C.ORDER BY
D.WHERE
42.表在数据库中是一个非常重要的数据对象,它是用来(C )各种数据内容的。
A、显示
B、查询
C、存放
D、检索
43.一个m:n联系转换为一个关系模式。关系的码为( B )
A、某个实体的码
B、各实体码的组合
C、n端实体的码
D、任意一个实体的码
44. 下列对DELETE权限的叙述中,正确的是( A )。
A. 允许删除数据
B. 允许删除表
C. 允许对数据库进行删除
D. 和DROP权限等价
45.触发器不能由下面( D )来触发。
A.INSERT B.UPDATE C.DELETE D.SELECT
46.部分匹配查询中与通配符“[m-o]”不匹配的字符是 ( C )
A.m
B.n
C.-
D.o
47.假定学生表是S(SNO,SNAME,SEX,AGE)
课程表是C(CNO,CNAME,CREDIT)
学生选课表是SC(SNO,CNO,GRADE)
要查找选修"数据库"课程的女学生的姓名,将涉及到的表是( D )。
A. S B. C,SC C. S,SC D. S,C,SC
48.在创建或修改数据库时使用下列哪个子句可以指定文件的增长速度( C )。
A 、SIZE
B 、MAXSIZE
C 、FILEGROWTH
D 、FILENAME
49.SQL server中日志文件的后缀默认为:( B )。
A、.ndf
B、.ldf
C、.mdf
D、.idf
50.删除数据库使用的T-SQL语句是( B )。
A、 DELETE DATABASE
B、 DROP DATABASE
C、 CLEAR DATABASE
D、 REMOVE DATABASE
51.使用关键字( A )可以把查询结果中的重复行屏蔽。
A、DISTINCT
B、UNION
C、ALL
D、TOP
52.如果更新表中记录,使用以下哪个命令动词( A )。
A、UPDATE
B、INSERT
C、ALTER
D、MODIFY 53.数据库中的物理数据存储在( A )中。
A 、表
B 、数据库
C 、视图
D 、查询
54.下列关于视图的描述中,错误的是:( D )。
A、视图不是真实存在的基础表,而是一张虚拟表。
B、当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化。
C、在创建视图,若其中某个目标列是聚合函数时,必须为其指定列名。
D、在一个语句中,一次可以修改一个以上的视图对应的基表。
55.可以用来查看数据库中特定表中的索引的存储过程是( B )。
A、sp_helpdb B、sp_helpindex C、sp_help D、sp_helptext
56. SELECT查询中,要把结果中的行按照某一列的值进行排序,所用到的子句是(A)。
A 、ORDER BY
B 、WHERE
C 、GROUP BY
D 、HA VING
57.替代触发器(instead of)是在触发触发器的修改操作( D )执行。
A、执行后
B、停止执行时
C、同时
D、之前
C、union是筛选关键词,对结果集再进行操作。
D、union 可以连接结果集中数据类型个数相同的多个结果集。
58. SQL Server采用的身份验证模式有(D)。
A 、仅Windows 身份验证模式
B 、仅SQL Server身份验证模式
C 、仅混合模式
D 、Windows 身份验证模式和混合模式
59.SQL Server的主数据库是( A )。
A、MASTER
B、TEMPDB
C、MODEL
D、MSDB
60. 下列( D )数据库不属于SQL Server 2005在安装时创建的系统数据库。
A.master
B.tempdb
C.model
D.bookdb
二、填空题
1.数据库的创建既可以在查询分析器中创建,也可以在企业管理器中创建。
2.SQL语言中,用于事务回滚的语句是__ROLLBACK____。
3.SQL语言提供__GRANT____语句,实现对用户的授权操作。
4.角色是将用户组成一个集体授权的单一单元。
5.在一个表中最多只能有一个关键字为___PRIMARY KEY____的约束。
6.SQL Server中索引类型包括三种,分别是聚簇索引、非聚簇索引和惟一索引。7.在CREATE INDEX语句中使用CLUSTERED 选项建立聚簇索引。
8.在SQL Server中,索引的顺序和数据表的物理顺序相同的索引是__聚集索引__ 。9.触发器在执行时,会产生两个特殊的表,它们是inserted 和deleted 。10.多个事务在并发执行时可能产生不可重复读、丢失修改等问题。
11.修改数据表的字段名称可使用系统存储过程__sp_rename_______。
12.SQL Server 2005的文件包括: 数据文件(.mdf或.ndf)和日志文件。13.在使用一个游标的时候可以分为以下几步:声明游标、打开游标、从打开的游标中提取行、___关闭游标____、释放游标。
14.在SQL Server中,建立一个存储程序之后,使用EXECUTE 语句执行存储过程。15.如果要计算表中的行数,可以使用聚合函数___count____。
16.在查询分析器中恢复数据库,可以通过执行RESTORE 语句来完成。
17.具有显示数据对象的相关属性功能的系统存储过程是_ sp_help 。
18.在SQL Server 2005中,要访问某个数据库,除了需要有一个登录帐号外,还必须有一个该数据库的__用户____帐号。
19.压缩数据库可以使用DBCC SHRINKDATABASE 命令来完成。
20.使用__ windows ____身份验证方式登录SQL Server 时,不需输入登录名和密码。
21.安装SQL Server时创建的系统管理员账号名称是__ sa ____。
22.用来返回特定字段中所有值的总和的聚合函数是 __SUM ____。
23.对数据进行统计时,求最大值的函数是_max___。
24.可以使用___ COMMIT TRAN _______语句进行显式事务的提交。
25.若想给列指定默认值,使用到的关键字是DEFAULT 。
26.两个表的主关键字和外关键字的数据应对应一致,这是属于___参照___完整性。27.__ UNIQUE ___约束通过确保在列中不输入重复值保证一列或多列的实体完整性。28.编写查询语句时,使用% 通配符可以匹配多个字符。
29.模糊查询中,查询条件 e%im 代表意思是___以e开头im结尾中间任意字符的字符串_。
30.查看视图定义文本的存储过程是sp_helptext 。
31.删除视图的T-SQL语句是DROP VIEW 。
32.触发器有3种类型,即INSERT类型、___UPDATE类型____、DELETE类型。33.在SQL Server 2005中修改表的结构应使用关键字__ALTER TABLE_____。
34.T-SQL中以@ 符号开头的标识符表示局部变量。
35.在T-SQL语言中,若要创建一个数据库,应该使用的语句是__CREATE DATABASE _。36.触发器是一种特殊的存储过程,基于表而创建,主要用来保证数据的完整性。37.判断使用FETCH语句读取数据是否成功的全局变量为__@@fetch_status___。38.一个数据文件如果没有指定文件组,则默认属于PRIMARY 文件组。
39.表的关联就是外键约束。
40.在SQL中字符串常量使用单引号作为定界符。
三、设计题
(一)
设“学生-选课”数据库中有如下三表:
学生:S(sno, sname, age),其属性的含义依次为学号、姓名、年龄。
课程:C(cno, cname)其属性的含义依次为课程号、课程名称。
成绩:SC(sno, cno, grade),其属性的含义依次为学号、课程号、分数。
试用SQL语句完成以下操作:
1.创建成绩表SC,其中学号和课程号属性不能为空,并且以二者的组合作为主键。CREATE TABLE SC(
SNO VARCHAR(10) NOT NULL,
CNO VARCHAR(5) NOT NULL,
GRADE INT,
PRIMARY KEY(SNO,CNO))
2.显示考试成绩不及格的学生的学号。
SELECT DISTINCT SNO
FROM C
WHERE GRADE<60
3.将课程号为C4的课程的所有成绩提高10%。
UPDATE SC
SET GRADE=GRADE*1.1
WHERE CNO=‘C4’
4.列出各门课程中成绩超过90的人数。
SELECT CNO,COUNT(*)
FROM SC
WHERE GRADE>=90
GROUP BY CNO
5.查询选修了课程名为‘MATHS’的学生学号和姓名。
SELECT SNO,SNAME
FROM S
WHERE SNO IN
(SELECT SNO FROM SC WHERE CNO IN
(SELECT CNO FROM C WHERE CNAME=‘MATHS’))
或者:
SELECT S.SNO,SNAME
FROM S,C,SC
WHERE S.SNO=SC.SNO AND https://www.wendangku.net/doc/368309545.html,O=https://www.wendangku.net/doc/368309545.html,O AND CNAME=’MATHS’
6.创建视图S_VIEW,使其能够显示每个学生及其选修的课程名和成绩。
CREATE VIEW S_VIEW
AS
SELECT S.SNO,SNAME,https://www.wendangku.net/doc/368309545.html,AME,SC.GRADE
FROM S,C,SC
WHERE S.SNO=SC.SNO AND https://www.wendangku.net/doc/368309545.html,O=https://www.wendangku.net/doc/368309545.html,O
7.创建一存储过程P_COUNT,要求能够根据用户给定的课程号,计算该门课程的平均成绩,并将该成绩以输出量返回给用户。
CREATE PROC P_COUNT
@CNO VARCHAR(5),@CGRADE INT OUTPUT
AS
SELECT @CGRADE=AVG(GRADE)
FROM SC
WHERE CNO=@CNO
GO
8.创建一触发器TR_S,要求每当在S表中修改数据时,将向客户端显示一条“记录已修改!”的消息。
CREATE TRIGGER TR_S
ON S
FOR UPDATE
AS
PRINT '记录已修改!'
GO
9. 为SC表的grade列设置约束,使该列的值在0到100之间。
ALTER TABLE SC
ADD CONSTRAINT ck_grade
CHECK (grade>=0 and grade<=100)
10.显示考试成绩在60分以上的学生的学号。
SELECT DISTINCT sno
FROM sc
WHERE grade>60
11.查询姓“王”且全名只有3 个汉字的学生信息。
SELECT *
FROM s
WHERE sname like ‘王_ _’
12.查询各门课程中不及格的人数。
SELECT cno,COUNT(*)
FROM sc
WHERE grade<60
GROUP BY cno
13.计算1号课程的学生平均成绩。
SELECT AVG(Grade)
FROM SC
WHERE Cno='1'
14.创建视图S_VIEW,使其能够显示每个学生的姓名及其选修的课程名和成绩。
CREATE VIEW S_VIEW
AS
SELECT sname,cname,grade
FROM s,sc,c
WHERE s.sno=sc.sno and https://www.wendangku.net/doc/368309545.html,o=sc.con
15.查询出“C语言”课程成绩前5名的学生的学号、姓名和班级。
SELECT TOP 5 s.sno, sname, class
FROM s,sc , c
WHERE s.sno = sc.sno AND https://www.wendangku.net/doc/368309545.html,o = https://www.wendangku.net/doc/368309545.html,o
AND cname= ‘C语言’
ORDER BY grade DESC
16.创建一存储过程P_COUNT,要求能够根据用户给定的课程号,查询该门课程的最低成绩,并将该成绩以输出量返回给用户。
CREATE PROC P_COUNT
@CNO VARCHAR(5),@CGRADE INT OUTPUT
AS
SELECT @CGRADE=min(成绩)
FROM 选课
WHERE 课程号=@CNO
GO
17. 为student表创建一个名称为my_trig的触发器,当用户成功删除该表中的一条或多条记录时,触发器自动删除SC表中与之有关的记录。
Create trigger my_trig
On student
For Delete
As
Delete From sc
Where 学号 in (Select 学号 From Deleted)
Go
18.查询选的课程的学分为3,并且成绩大于80的学生的学号、姓名和性别。
SELECT DISTINCT s.stuno, stuname, sex
FROM student s , course c , stucou sc
WHERE s.stuno=sc.stuno and sc.couno=c.couno
And c.credit =3 and sc. Grade>80
(二)
设有一个“顾客商品”数据库,有三个基本表,表结构如下:
商品表:Article (ano,aname,price,stock) ,其属性的含义依次为:商品号,商品名,单价,库存量.
客户表:Customer (cno,cname,sex), 其属性的含义依次为:顾客号,顾客名,性别.
订单表:OrderItem (cno,ano,quantity), 其属性的含义依次为:顾客号,商品号,购买数量.
1. 创建商品表:Article,其中商品号属性不能为空,并且其值唯一。
CREATE TABLE Article(
ano VARCHAR(10) NOT NULL,
aname NVARCHAR(5),
price DECIMAL(8,2),
stock INT,
PRIMARY KEY(ano))
2.请用SQL语言检索出一次购买数量超过50的顾客号。
SELECT DISTINCT cno
FORM OrderItem
WHERE quantity>50
3. 将商品号为’008’的商品的单价降低5%。
UPDATE Article
SET price=price*0.95
WHERE ano=‘008’
4.请用SQL语言显示每个顾客所购买的商品种类。
SELECT cno,count(distinct ano)
FORM OrderItem
GROUP BY cno
5. 请用SQL语言找出女顾客购买的商品号、商品名。
SELECT ano,aname
FROM Article
WHERE ano in
(SELECT ano FROM OrderItem WHERE cno in
(SELECT cno FROM Customer WHERE sex=’女’))
或
SELECT Article.ano,aname
FROM Article,OrderItem,Customer
WHERE Article.ano=OrderItem.ano and https://www.wendangku.net/doc/368309545.html,o=https://www.wendangku.net/doc/368309545.html,o
And Customer.sex=’女’
6. 请用SQL语言创建一个视图GM_VIEW,检索顾客的顾客号、顾客名和订购商品的商品名。CREAT VIEW GM_VIEW
AS
SELECT https://www.wendangku.net/doc/368309545.html,o,cname,aname
FORM Article a, Customer c, OrderItem oi
WHERE a.ano=oi.ano and https://www.wendangku.net/doc/368309545.html,o=https://www.wendangku.net/doc/368309545.html,o
7.创建一存储过程P_list,要求能够根据用户给定的顾客号,显示该顾客所购买的全部商品的商品号和商品名。
CREATE PROC P_list
@CNO VARCHAR(5)
AS
SELECT Article.ano,aname
FROM Article,OrderItem
WHERE Article.ano=OrderItem.ano and https://www.wendangku.net/doc/368309545.html,o=@CNO
GO
8.创建一触发器TR_Article,要求每当在Article表中删除数据时,将向客户端显示一条“不允许删除!”的消息。
CREATE TRIGGER TR_Article
ON Article
FOR DELETE
AS
PRINT '不允许删除!'
四、数据库设计
(一)
建立关于学校运动会管理的关系数据库。其中包括:
(1)有若干班级,每个班级包括:班级号、班级名、专业、人数。
(2)每个班级有若干运动员,运动员只能属于一个班,运动员包括:运动员号、姓名、性别、年龄。
(3)有若干比赛项目,包括:项目号、名称、比赛地点。
(4)每名运动员可参加多项比赛,每个项目可有多人参加。
(5)要求能够公布每个比赛项目的运动员名次与成绩。
要求:
1.画出该关系数据库的E-R图;
2. 将该E-R图转换为关系模型,写出各关系模式的组成。
1.E-R图
2.数据库关系模型
班级(班级号,班级名,专业,人数)
运动员(运动员号,姓名,性别,年龄,班级号)
项目(项目号,名称,比赛地点)
比赛(运动员号,项目号,成绩,名次)
(二)
建立一个关系数据库。其中包括:
(1)有若干顾客,每个顾客包括:顾客号、姓名、电话、地址。
(2) 一名顾客可以发出多次订购单进行订货,一张订购单只能属于一名顾客,订购单包括:订购单号、订购日期。
(3)有若干商品,包括:商品号、名称、库存量。
(4) 一张订购单上面可以订购多个商品,一种商品可以被不同的订购单定购。
(5)要知道每张订购单上每种商品的订购数量。
要求:
1.画出该关系数据库的E-R图;
2. 将该E-R图转换为关系模型,写出各关系模式的组成。
1.E-R图
2.数据库关系模型
顾客(顾客号,姓名,电话,地址)
订购单(订购单号,订购日期,顾客号)
商品(商品号,名称,库存量)
订货(订购单号,商品号,数量)