大学SQL考试复习题

复习题

1.用于求系统日期的函数是( )。

A.YEAR() BGETDATE() C.COUNT() D.SUM()

2.通常情况下,数据模型由( )三部分组成。

(A) 数据结构、数据操作和完整性约束 (B) 层次、数据操作和完整性约束

(C) 关系、数据操作和完整性约束 (D) 层次、关系和完整性约束

3.向用户授予操作权限的SQL语句是( )。

A.CTEATE B.REVOKE C.SELECT DGRANT

4.有如下定义,( )插入语句是正确的。

CREATE TABLE student

(studentid int notnull,

name char(10)null,

age intnot null,

sex char(1)not null,

dis char(10) )

(A) INSERT INTO student VALUES(11,’abc’,20,’f’)

(B) INSERT INTO student(studentid,sex,age) VALUES (11,f,20)

(C) INSERT INTOstudent(studentid,sex,age) VALUES(11,20,’f’,NULL)

(D) INSERT INTO student SELECT 11,’ABC’,20,’F’,’test’

5.在SQLSERVER2008中,声明游标应使用()。 (A)DEFINE(B)OPEN(C)DECLARE(D)FETCH

6.数据操纵语言(DML)所实现的操作包括()。

(A)查询、删除、修改(B)授权、查询、排序

(C)授权、修改、排序(D)模式定义、删除、修改

7.SELECT 语句中将多个查询结果返回一个结果集中的关键字是( )

A) JOIN B) UNION C) INTOD) LIKE

8.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,从职员到部门的联系类型是( )

(A)多对多  (B)一对一   C)多对一    (D)一对多

9.在SQLSERVER2008中,能够获取系统当前日期和时间的函数是()。(A)YEAR(B)GETDATE(C)DATE(D)DATETIME

10.在SELECT语句中,可以嵌套子查询的语句是()。(A)GROUPBY(B)HAVING(C)ORDERBY (D)FROM

11.下列关于INSERT语句的说法中正确的是()。

(A)一个INSERT语句只能插入一个记录

(B)INSERT语句不能插入空值
(C)INSERT语句中必须指定表中的字段名

(D)有些视图允许使用INSERT语句插入记录

12.下列选项中违反实体完整性的是()。

(A)DELETE(B)UPDATE(C)CREATE(D)SELECT

13.修改表时,在表中新增一个约束应使用语法( )。

(A)Alter Column (B) Add Rule

(C) Drop Constraint (D) Add Contraint

14.在SQLSERVER2008中,系统存储过程都以()打头。

(A)ap_(B)sp_(C)ar_(D)sr_

15.在SQLSERVER2008的GRANT语句中,如果希望被授权的用户可以将其所获得的权限转授给其他用户,应使用()。

(A)WITHGRANTOPTION

(B)WITHGRANTCASCADE

(C)SETGRANTOPTION
(D)SETGRANTCASCADE

16.下面关于存储过程的描述中( )是正确的。

(A).自定义存储过程与系统存储过程名称可以相同

(B).存储过程最多能够支持64层的嵌套

(C).命名存储过程中的标识符时,长度不能超过256个字符

(D).存储过程中参数的个数不能超过2100

17.在查询结果集中显示全校所有班级并消除重复,正确的语句是()

A) SELECT 班级 FROM 学生

B) SELECT top 100 班级 FROM 学生

C) SELECT all 班级 FROM 学生

D) SELECT distinct 班级 FROM学生

18.在SQLSERVER2008中,下列关于触发器的说法中错误的是()。
(A)触发器是一种特殊的存储过程
(B)可以向触发器传递参数
(C)可以在视图上定义触发器
(D)触发器可以实现复杂的完整性规则

19.( )是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用户或应用程序提供访问数据库的方法。数据库在建立、使用和维护时由其统一管理、统一控制。

ADBMS B.DB

C.DBS D.DBA

20.在SQL中,建立表用的命令是 ( )。

A.CREATE SCHEMA B.CREATE TABLE

C.CREATE VIEW D.CREATE INDEX

21.一个事务的执行不能被其他事务干扰,这个性质称为事务的()。

(A)原子性(B)一致性(C)隔离性(D)持续性

22.在SQL语言中,DELETE语句的作用是()。

(A)删除基本表(B)删除视图(C)删除列(D)删除基本表中的元组

23.在SQLSERVER中,表示范围的通配符是()。

(A)_ (B)% (C)[] (D){}

24.在SQLSERVER中定义局部变量应使用()。

(A)DECLARE (B)SET (C)DEFINE (D)PUT

25.在SQL语句中,可以完成两个表间的笛卡尔积运算的选项是()。

A)INNERJOIN (B)LEFTJOIN (C)CROSSJOIN (D)FULLJOIN

26.在SQL语句中,条件“<ANY”等价于()。

(A)<MAX (B)<MIN (C)>MAX (D)>MIN

22、删除游标stud_cursor的命令是( )。

(A).CLOSE stud_cursor (B)DEALLOCATE stud_cursor

(C).DROP stud_cursor (D).DELETE stud_cursor

27.下列四项中,不正确的提法是( )。

A.SQL语言是关系数据库的国际标准语言

B.SQL语言具有数据定义、查询、操纵和控制功能

C.SQL语言可以自动实现关系数据库的规范化

D.SQL语言称为结构查询语言

28.8.在MS SQL Server中,用来显示数据库信息的系统存储过程是( )。

A. sp_dbhelp B.sp_db

C. sp_help D. sp_helpdb

29.SQL语言中,删除一个表中所有数据,但保留表结构的命令是()

ADELETE B、DROP

C、CLEAR D、REMORE

30.10.SQL的视图是从( )中导出的。

A. 基本表 B. 视图

C. 基本表或视图 D. 数据库

31.8.查询毕业学校名称与“清华”有关的记录应该用( )。

A. SELECT * FROM 学习经历 WHERE 毕业学校 LIKE ’*清华*’

B. SELECT * FROM 学习经历 WHERE 毕业学校 = ’%清华%’

C. SELECT * FROM 学习经历 WHERE 毕业学校 LIKE ’?清华?’

D. SELECT * FROM 学习经历 WHERE毕业学校 LIKE%清华%

32.3. 哪个关键字用于测试跟随的子查询中的行是否存在( )。

A.MOV BEXISTS

C.UNION D.HAVING

33.使用索引下列哪个说法是正确的( )。

A. 节省磁盘空间

B. 缩短查询时间

C. 在执行插入、修改、删除时节省时间

D. 与表无关

34.15.查询员工工资信息时,结果按工资降序排列,正确的是( )

A、ORDER BY 工资 BORDER BY工资 desc

C、ORDER BY 工资 asc D、ORDER BY 工资 dictinct

35.下列聚合函数中正确的是( )

A、SUM (*) B、MAX (*)

CCOUNT (*) D、AVG (*)

36.SQL中,下列涉及通配符的操作,范围最大的是( )

A、name like ’hgf#’ B、name like ’hgf_t%’

Cname likehgf% D、name like ’hgf#%’ escape ’#’

37.在MS SQL Server中,关于数据库的说法正确的是( )

A、一个数据库可以不包含事务日志文件

B、一个数据库可以只包含一个事务日志文件和一个数据库文件

C、一个数据库可以包含多个数据库文件,但只能包含一个事务日志文件

D、一个数据库可以包含多个事务日志文件,但只能包含一个数据库文件

38.SQL中,下列涉及空值的操作,不正确的是( )

A、age IS NULL B、age IS NOT NULL

Cage = NULL D、NOT (age IS NULL)

39.在T-SQL语言中,修改表结构时,应使用的命令是()

A.UPDATE B. INSERT

C. ALTER D. MODIFY

40.模式查找like '_a%',下面哪个结果是可能的

A.aili B. bai

C.bba D.cca

41.下列标识符可以作为局部变量使用( )。

A. Myvar B. My var

C. Myvar D. @My var

42.以下关于主键的描述正确的是( )。

A.标识表中唯一的实体 B.创建唯一的索引,允许空值

C.只允许以表中第一字段建立 D.表中允许有多个主键

43.脚本文件是在( )中执行的。

A、企业管理器 B、查询分析器

C、服务管理器 D、事件探查器

44.当关系R和S自然联接时,能够把R和S原该舍弃的元组放到结果关系中的操作是( )

A、左外联接 B、右外联接

C、内联接 D、全外联接

45.在视图上不能完成的操作是( )

A.更新视图数据 B.查询

C.在视图上定义新的基本表D.在视图上定义新视图

46.阅读下列代码,判断运行结果是( )。

Declare @sum int,@count int

Select @sum=0,@count=1

Label1:

Select @sum=@sum+@count

Select@count=@count+1

if @count<=5

Goto label1

Select @count-1,@sum

A5 15 B.5 10 C.4 15 D.4 10

三、填空题(每空1分,共20分)

1.SQL Server 2008局部变量名字必须以____@_____开头,而全局变量名字必须以____@@_____开头。

2.给变量@temp 赋值为b的语句有_______select @temp=b__________和____set @temp =b___________。

3.执行存储过程proc_sample的语法为____exec proc_sample_____________。

4.在SQL Server 2008中,数据库对象包括___表___、__视图____、触发器、过程、列、索引、约束、规则、默认和用户自定义的数据类型等。

5. 在E-R图中,用__矩形__表示实体,用_菱形_____表示联系,用___椭圆形__表示属性。

6.语句 select datediff(hour,'05/04/2013',’5/6/2013’)的执行结果是: __48_______。

7.检索姓名字段中含有'娟'的表达式为 姓名like ‘%娟%’

8.______实体完整性_______用于保证数据库中数据表的每一个特定实体的记录都是惟一的。

9.索引的类型有____聚集索引__________和非聚集索引。

10.SQL语言主要由_______DDL_________、_______DML________和数据控制语言(DCL)组成。

11.SQL Server登录身份验证模式类型有___Windows认证______和____Windows和SQL Server混合认证_____两种。

12.事务的4个属性:原子性、一致性、___隔离____性和____持久___性。

13.____存储过程___是已经存储在SQL Server服务器中的一组预编译过的Transact-SQL语句。

14.____关系完整性____是为保证数据库中数据的正确性和相容性,对关系模型提出的某种约束条件或规则。

15.HAVING子句与WHERE子句很相似,其区别在于:

WHERE子句作用的对象是_____表和视图_________,HAVING子句作用的对象是______组__________。

16.建立和使用____约束____的目的是为了保证数据的完整性。

17.BACKUP命令是对数据库进行____备份______,RESTORE命令是对数据库进行_____还原_____。

18.SQL Server 2008提供的数据库备份类型有___完整____备份和____差异____备份、_____事务日志_______备份。

三:编程题

1. 创建数据库。要求用SQL语句创建满足如下要求的数据库:

(1) 数据库名称为School;

(2) 主数据文件:逻辑名为SchoolData,文件名为“D:\ School\SchoolData.mdf”,文件初始大小为50MB,文件的最大大小不受限制,文件的增长率为20%。

(3) 日志文件:逻辑名为SchoolLog,文件名为“D:\ School\SchoolLog.ldf”,文件初始大小为10MB,文件的最大大小为50MB,文件的增长率为1MB;

--创建数据库

create databaseschool

on primary

(

name='schoolData',

filename='D:\school\schoolData.mdf',

size=50MB,

filegrowth=20%

)

log on

(

name='schoolLog',

filename='D:\school\schoolLog.ldf',

size=10MB,

maxsize=50MB,

filegrowth=1MB

)

2. 创建数据类型和表,增加约束。

(1)表tblstudent(学生表):

列名

数据类型

可空性

约束

备注

stuID

bigint

非空

primary key

学号

stuName

nvarchar(10)

非空

姓名

stuSex

nchar(1)

非空

只能是‘男’或‘女’

性别

stuBirth

datetime

可空

小于系统当前时间getdate()

出生日期

stuNum

nvarchar(18)

可空

Unique

身份证号

Departed

Int

可空

系号

City

nvarchar(10)

可空

默认是‘成都’

城市

stuTelphone

Char(11)

可空

电话

说明:type_telphone是自定义类型,要求自己创建,使用系统数据类型char(11),可空。

--创建表

--自定义类型

exec sp_addtypeType_telphone,'char(11)',NULL,NULL

use school

create table tblstudent(

stuID bigint not null,--学号

stuName nvarchar(10) notnull, --姓名

stuSex nchar(1) not null CONSTRAINT CK_SexCheck(stuSexin('','')),--条件约束,性别

stuBirth datetime Unique CONSTRAINT CK_Bir Check(stuBirth<=getDate()),--唯一约束,生日

stuNum nvarchar(18) Unique,--身份证

Departed int, --系号

City nvarchar(10) Default('成都'),--城市

stuTelephone Type_telphone, --电话

PRIMARY KEY(stuID)

)

(2)表tblscore(成绩表):

列名

数据类型

可空性

约束

备注

stuID

bigint

非空

foreign key 引用tblstudent中的stuID

学号

Math

Int

可空

0~100分

数学

English

Int

可空

0~100分

英语

Computer

Int

可空

0~100分

计算机

Summary

Int

可空

总分

create tabletblscore

(

stuID bigintnot null,--学号

Math intCONSTRAINT CK_MathCheck(Math<= 100andMath >= 0),--数学

English intCONSTRAINT CK_EnglishCheck(English<= 100and English >= 0),--英语

Computer intCONSTRAINT CK_Computer Check(Computer<= 100and Computer >= 0),--电脑

Summary int, --CONSTRAINT INTCK_Summary Check(Summary = Math + English + Computer),

FOREIGN KEY(stuID)REFERENCEStblstudent(stuID)

)

(3)表tblteacher(教师表):

列名

数据类型

可空性

约束

备注

teaID

Int

非空

primary key

学号

teaName

nvarchar(10)

非空

姓名

teaSex

nchar(1)

非空

只能是‘男’或‘女’

性别

teaTelphone

Char(11)

可空

电话

create tabletblteacher

(

teaID int not null,--学号

teaName nvarchar(10)notnull, --姓名

teaSex nchar(1) not null CONSTRAINT CK_teaSexCheck(teaSexin('','')),

teaTelphone Type_telphone

)

3. 用SQL语句给表插入如下数据。

(1)表tblstudent(学生表):

stuID

stuName

stuSex

stuBirth

stuNum

departID

city

stuTelphone

1001

赵毅

1990-1-1

510111199001014279

1

成都

13888888888

1002

钱尔

1993-2-2

110008199302022325

2

北京

null

1003

孙山

1989-3-9

510111198903092619

2

成都

13333333333

insert intotblstudent(stuID,stuName,stuSex, stuBirth,stuNum,Departed, City,stuTelephone)

values

('1001','赵毅','','1990-1-1','51011199001014279','1','成都','13888888888')

INSERT INTO

tblstudent(stuID,stuName,stuSex,stuBirth, stuNum,Departed,City, stuTelephone)

SELECT

'1002','钱尔','','1993-2-2','110008199302022325','2', '北京',null

UNION ALL

SELECT

'1003','孙山','','1989-3-9','510111198903092619','2', '成都','13333333333'

(2)表tblscore(成绩表):

stuID

Math

English

computer

summary

1001

70

80

90

null

1002

45

55

60

null

INSERT INTO tblscore(stuID,Math,English, Computer,Summary)

SELECT

'1001','70','80', '90',null

UNION ALL

SELECT

'1002','45','55', '60',null

(3)表tblteacher(教师表):

teaID

teaName

teaSex

teaTelphone

102

李丝

13987654321

203

王武

13012345678

INSERT INTO tblteacher(teaID,teaName,teaSex, teaTelphone)

SELECT

'102','李丝','','13987654321'

UNION ALL

SELECT

'203','王武','','13012345678'

4. 更新总分=数学+英语+计算机。

update tblscoresetSummary = Math + English+ Computer;

5. 找出所有系的男生,显示学号、姓名、性别及系号。

SELECT stuID,stuName,stuSex, Departed FROM tblstudent WHERE stuSex='';

6. 找出总成绩最高的学生的学号和姓名。

SELECT stuID,stuName FROM tblstudent

WHERE stuID=(

SELECTstuIDFROMtblscore WHERE Summary =

(

SELECTMAX(Summary)FROM tblscore

)

)

7.统计男生女生人数。

select tblstudent.stuSex,count(stuSex)from tblstudent where stuSex =''Groupby stuSex

select tblstudent.stuSex,count(stuSex)from tblstudent where stuSex=''Groupby stuSex

8. 创建视图vwStudentTeacher,要求显示所有教师和学生的姓名和电话。

--GO

--CREATEVIEW vwStudentTeacher(stuName,stuTelephone, teaName, teaTelephone)

--AS

--SELECTstuName, stuTelephone, teaName, teaTelphone FROM tblstudent, tblteacher

CREATE VIEW vwStudentTeacher(name,tel)

AS

SELECT stuName ASNAME,stuTelephoneAStel FROM tblstudent

UNION ALL

SELECT teanameASNAME,teaTelphoneAStel fromtblteacher

9.在创建存储过程proGetNamebyID。此存储过程根据学生ID得到学生姓名。

GO

CREATE PROCEDUREproGetNamebyID@stuIDbigint

AS

SELECT stuNameFROMtblstudent WHERE @stuID=stuID

10.创建一个事务,当插入tblscore表math字段值大于100的一条记录时,插入不能成功,并回滚操作

begin transactioncontrolMathCol

save transaction myStatus

insert into tblscore(Math) values(200)

if @@ERROR<> 0

begin

print '遇到错误回滚'

waitfor delay '0:00:30'

rollback transaction myStatus

end

else

begin

print '操作完毕'

end

commit transaction controlMathCol

11.创建标量函数:函数名:fnGetLevelbySum,参数:@summary,返回值:@Level。总分>=240为优;210<=总分<240为中;180<=总分<210为及格;总分<180为不及格。

go

create functionfnGetLevelbySum(@summaryint)

returns varchar(10)

begin

declare @funRes varchar(10)

if @summary>= 240 set@funRes= ''

if @summary> 210 and@summary< 240 set @funRes =''

if @summary> 180 and@summary< 210 set @funRes ='及格'

if @summary< 180 and@funRes='不及格'

return @funRes

end

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值