sql复习

更新时间:2024-01-24 17:56:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

复习题

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

A.YEAR() B.GETDATE() C.COUNT() D.SUM()

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

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

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

A.CTEATE B.REVOKE C.SELECT D.GRANT

4. 有如下定义,( )插入语句是正确的。 CREATE TABLE student (studentid int not null, name char(10) null, age int not 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. 在SQL SERVER 2008中,声明游标应使用( )。 (A) DEFINE (B) OPEN (C) DECLARE (D) FETCH

6. 数据操纵语言(DML)所实现的操作包括( )。 (A) 查询、删除、修改 (B) 授权、查询、排序 (C) 授权、修改、排序 (D) 模式定义、删除、修改

7. SELECT 语句中将多个查询结果返回一个结果集中的关键字是( ) A) JOIN B) UNION C) INTO D) LIKE

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

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

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

10. 在SELECT语句中,可以嵌套子查询的语句是( )。(A) GROUP BY (B) HAVING (C) ORDER BY (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. 在SQL SERVER 2008中,系统存储过程都以( )打头。 (A) ap_ (B) sp_ (C) ar_ (D) sr_

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

(B) WITH GRANT CASCADE (C) SET GRANT OPTION

(D) SET GRANT CASCADE

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. 在SQL SERVER 2008中,下列关于触发器的说法中错误的是( )。 (A) 触发器是一种特殊的存储过程 (B) 可以向触发器传递参数 (C) 可以在视图上定义触发器

(D) 触发器可以实现复杂的完整性规则

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

A.DBMS 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. 在SQL SERVER中,表示范围的通配符是( )。 (A) _ (B) % (C) [] (D) {}

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

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

25. 在SQL语句中,可以完成两个表间的笛卡尔积运算的选项是( )。 A) INNER JOIN (B) LEFT JOIN (C) CROSS JOIN (D) FULL JOIN

26. 在SQL语句中,条件“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语言中,删除一个表中所有数据,但保留表结构的命令是() A、DELETE 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 B.EXISTS C.UNION D.HAVING

33. 使用索引下列哪个说法是正确的( )。 A. 节省磁盘空间 B. 缩短查询时间

C. 在执行插入、修改、删除时节省时间 D. 与表无关

34. 15.查询员工工资信息时,结果按工资降序排列,正确的是( ) A、ORDER BY 工资 B、ORDER BY工资 desc

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

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

A、SUM (*) B、MAX (*) C、COUNT (*) D、AVG (*)

36. SQL中,下列涉及通配符的操作,范围最大的是( ) A、name like ?hgf#? B、name like ?hgf_t%?

C、name like?hgf%? D、name like ?hgf#%? escape ?#?

37. 在MS SQL Server中,关于数据库的说法正确的是( ) A、一个数据库可以不包含事务日志文件

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

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

38. SQL中,下列涉及空值的操作,不正确的是( ) A、age IS NULL B、age IS NOT NULL C、age = 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

A.5 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 database school 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_addtype Type_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_Sex Check(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 table tblscore ( stuID bigint not null,--学号 Math int CONSTRAINT CK_Math Check(Math<= 100andMath>= 0),--数学 English int CONSTRAINT CK_English Check(English<= 100andEnglish >= 0),--英语 Computer int CONSTRAINT CK_Computer Check(Computer<= 100andComputer >= 0),--电脑 Summary int, --CONSTRAINT INTCK_Summary Check(Summary = Math + English + Computer), FOREIGN KEY(stuID) REFERENCES tblstudent(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 into tblstudent(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 FROMtblstudent WHERE stuID=( SELECTstuID FROM tblscoreWHERE Summary = ( SELECT MAX(Summary) FROM tblscore ) ) 7.统计男生女生人数。 select tblstudent.stuSex,count(stuSex) from tblstudent wherestuSex ='男' GroupbystuSex select tblstudent.stuSex,count(stuSex) from tblstudent wherestuSex='女' GroupbystuSex 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,stuTelephone AStelFROM tblstudent UNION ALL

SELECT teaname ASNAME,teaTelphone AStelfrom tblteacher

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

CREATE PROCEDUREproGetNamebyID@stuIDbigint AS

SELECT stuNameFROMtblstudentWHERE @stuID=stuID

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

begin transaction controlMathCol 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 function fnGetLevelbySum(@summary int) returns varchar(10) begin

declare @funRes varchar(10)

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

if @summary> 210 and @summary< 240set @funRes ='中' if @summary> 180 and @summary< 210set @funRes ='及格' if @summary< 180 and @funRes='不及格' return @funRes end

AS

SELECT stuName ASNAME,stuTelephone AStelFROM tblstudent UNION ALL

SELECT teaname ASNAME,teaTelphone AStelfrom tblteacher

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

CREATE PROCEDUREproGetNamebyID@stuIDbigint AS

SELECT stuNameFROMtblstudentWHERE @stuID=stuID

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

begin transaction controlMathCol 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 function fnGetLevelbySum(@summary int) returns varchar(10) begin

declare @funRes varchar(10)

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

if @summary> 210 and @summary< 240set @funRes ='中' if @summary> 180 and @summary< 210set @funRes ='及格' if @summary< 180 and @funRes='不及格' return @funRes end

本文来源:https://www.bwwdw.com/article/ssyw.html

Top