SQLServer练习题_第1页
SQLServer练习题_第2页
SQLServer练习题_第3页
SQLServer练习题_第4页
SQLServer练习题_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL Server练习题一、填空题1 .数据库系统的特点分别是数据的结构化、数据共享、数据独立性和可控冗余度。2 .在数据库的表中,主键 是指表中的某一列或几列,它的值唯一标识一行。Server 2005的文件包括:数据文件(.mdf或.ndf)和 日志文件 。4 .在SQL Server 2005中,要访问某个数据库,除了需要有一个登录帐号 外,还必须有一个该数据库的用户帐号。5 .数据库管理系统,简称DBMS,它是指帮助用户建立、使用和管理数据库的软件系统。6 .在T-SQL语言中,若要修改某张表的结构,应该使用的修改关键字是ALTER ;若要创建一个数据库,应该使用的语句是 CREAT

2、E DATABASE7 .命令 Truncate Table的功能是 清空数据库 。8 .数据完整性是指存储在数据库中的数据的一致性和准确性,根据完整性机制所作用的数据库对象和范围不同,可以分为:实体完整性 、域完整性、 参照(或:引用)完整性 和 用户自定义完整性约束等四种,其中主键可以实现实体完整性。9 .模糊查询符号代表 任意字符 ,查询条件 e%im代表意思是 查询以 e开头中间任意字符(串)且以 im结尾的字符串。10 使用索引可以减少检索时间,根据索引的存储结构不同将其分为两类:簇集索引 和 非簇集索引。Server中的变量分为两种,全局变量和局部变量。其中全局变量的名称以字符开始

3、,由系统定义和维护;局部变量以字符开始,由用户自己定义和赋值。10 .实现数据完整性的途径有默认值、约束、规则、存储过程、触发器等。11 .访问SQL Server数据库对象时,需要经过 身份验证 和 权限 验证两个阶段,其中身份验证分为 Windows验证模式和混合验证模式。Server使用 日志 文件记载用户对数据库进行的所有操作。系统存储过程的功能是显示数据对象的相关属性。语言中行注释的符号为二;块注释的符号为 /* */ 。15 .备份是为了在数据库遭到破坏时,能够修复,数据库备份的类型有四种分别为:数据库备份、日志备份、差异备份、文件和文件组备份 。16 .在SQL Server 2

4、005中,其权限分为三类,即 对象 权限、 语句 权限和 隐含 权限。17 .用户对数据进行添加、修改和删除时,自动执行的存储过程称为触发器。18 .对数据进行统计时,求最大值的函数是MAX() q19 .还原是指将数据库备份加载到服务器中的过程,在SQL Server中有三种数据库的还原模型,分别是简单还原、完全还原、批日志还原 。是指数据转换服务 。21 .在给数据库改名之前,必须设置数据库处于单用户 状态。22 .在一个表中主键的个数为:1。23 .在SQL Server 2005中,索引的顺序和数据表的物理顺序相同的索引是聚集索引。24 .角色是一组用户所构成的组,可以分为服务器角色

5、和 数据库 角色。25 .触发器有 3种类型,即INSERT类型、UPDATES型 和 DELETED 。26 .如果要计算表中的行数,可以使用聚合函数COUNT 0 。27 .在 SQL Server 2005中修改表的结构应使用关键字ALTER,修改表中的数据应使用关键字UPDATEoServer是作为 Windows系统的一个 服务运行的,用户可以启动、暂停或停止它。29 .在SQL Server 2005中,约束定义关于列中允许值的规则,是强制实施完整性的标准机制。使用约 束优先于 使用 DML触发器、规则。约束有 非空约束、缺省约束、主键约束、 外键约束、检查约束和唯一约束 等6种类

6、型。30 .对象权限是指用户基于数据库对象层次上的访问和操作权限,共有5种:SELECTINSERT DELETEUPDATE (或:事新)和 EXECUTE(或:执行)。31 . UNION可以把两个或多个 SELEC研句的查询结果组合成一个结果集,使用时要求所有 SELECT语句的列数应 相同,对应列的数据类型相容。32 .事务 是指一个操作序列,这些操作序列要么都被执行,要么都不被执行。33 .差异 备份只记录自上次完整数据库备份后发生更改的数据。34 .在SELECTi的FROM子句中最多可以指定256个表或视图,相互之间要用 逗号 分隔;当所查询的表不在当前数据库时,可用数据库.所有

7、者名称.对象名称 格式来指出表或视图对象。35 .删除表命令是:drop table 。36 .计算字段的累加和的函数是:Sum()。37 .在SQL Server 2005中,一个批处理语句是以GO结束的。38 .如果要计算表中数据的平均值,可以使用的聚合函数是AVG()。39 .在SQL Server 2005中,每个数据表最多有1024个列;最多有±个簇式索引。40 .在一个复合索引中最多可以有16个关键字。Server使用各数据库的 事务日志 来恢复事务。42 .在创建一个表的过程中,如果包含REFERENCES句,则表示在表中建立参照 性约束。43 .可以通过INSERT语

8、句,向表中添加新的纪录或在记录中插入部分字段的数据。44 .可以在INSERT子句中指定列名,Values字句中的数据项与指定的列名相对应,没有列出的字段必须具有 允许NULL、 Timestamp、 IDENTITY、 Default四种定义的条件之一。语言中薮据的检索是施壬SELECT语句及与其他一系列子句配合来完成的。46 .在SELEC喻令中, GROUP BY千句可依字段类别总计函数处理杳询结果:而将查询结果以某字段或运算值数据排序条件的子句是ORDER BY。47 .为了简便处理,我们可以为表名赋予别名,以减少代码量。使用别名时不能同时使用表名,字段名的格式。48 .在UNION操

9、作中,如果不指明ALL子句将删除重复行。子句可以出现在INSERT SELECTS句中。但是不能出现在CREATE VIEW语句内或子查询内。50 .当向数据表中插入数据时,如果没有明确的提供输入值时,SQL Server自动为该列输入指定值,则约束的类型为 DEFAULT51 .通过逻辑表达式判断限制插入到列中的值的强制约束类型为CHECK。52 .允许主键上有空值,但不允许主键上有重复值的强制类型约束为UNIQUE。约束,只在执行 INSERT语句时作用。54 .在创建DEFAULT勺束时,SQL Server将对表中现有的数据进行完整件验讦。约束在执行 INSERT语句或UPDATE语句

10、时起作用。56 .在向表中添加强制性约束时,应当在ALTER TABL瑜令中使用 ADD CONSTRAINT?句。57 .必须是表的所有者,才能执行CREATE INDE落句来创建索弓58 .视图可以在不同数据库中的不同表上建立,一个视图最多可以引用1024个字段。59 .视图隐蔽了数据库设计的复杂 性,这使得开发者可以在不影响用户使用数据库的情况下改变数据库内容。60 .建立视图之后,可以简化数据库管理,如可以通过GRANT命令为各种用户授予在视图上的操作权限。61 .用户可以通过执行系统存储过程sp_helptext杳看视图的定义信息。62 .视图的修改和数据库中表的修改一样,视图的修改

11、也是由AITER语句来完成的;视图的删除也与表的删除类似,可以通过DROP语句来实现。63 .存储过程在第一次执行时进行语法检查和编译。64 .不能将CREATE PROCEDURE句与其他SQL语句组合到单个批处理中,每一个批处理就是一个_GO 语句段。65 .存储过程只能在 当前 数据库中创建。66 .为了定义接受输入参数的存储过程,需要在CREATE PROCEDURE句中生命一个或多个变量 作为参数。67 .创建存储过程时,参数的默认值必须是常量或NULL 。68 .在存储过程中,为了输出参数,需要在CREATE PROCEDURE句中指定 OUTPUT关键字。69 .可以通过Crea

12、te Trigger语句来创建触发器。70 .在触发器被执行的同时,取消触发器的SQL语句的操作,需要使用INSTEAD OF关键字实现。约束只能根据逻辑表达式或同一表中的另外一列来验证列值。如果应用程序要求根据另一个表中的列验证列值,则必须使用触发器 。Server用DECLARE语句声明变量。73 .使用T-SQL语句创建 SQL Server账号,需要用到系统存储过程sp addlogin 。74 .与权限管理相关的 T-SQ血句有三个:GRANT、 REVOKE和 DENY。75 .使用BACKUP DATABASE命令可以对数据库进行完全拷贝的备份。76 .使用RESTORE DAT

13、ABAS,令可以对数据库进行还原。二、简答题1、简述视图的概念和优点(1)概念:视图是从一个或多个表(或视图)导出的虚表,是根据用户观点所定义的数据库结 构。视图与表不同,它所对应的数据不进行实际存储,在数据库中只存储视图的定义(一组符合用 户需求的SQL SELECTS句)。(2)优点:1)为用户集中数据,简化用户的数据查询和处理;2)屏蔽数据库的复杂性;3)简化用户权限的管理,增加了安全性;4)便于数据共享;5)为数据库重构提供一定的逻辑独立性。2、列出SQL Server 2005中常见的数据库对象。数据库对象主要包括表、视图、索引、存储过程、触发器和约束等。3、什么是索引索引分为哪两种

14、(1)索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标志这些值的数据页的逻辑指针清单。索引是依赖于表建立的,它提供了数据库中编排表中数据的内部方法。一个表的存储是由两部分组成的,一部分是用来存放表的数据页面,另一部分存放索引页面。从某种程度上,可以把数据库看作一本书,把索引看作书的目录,通过目录查找书中的信息,显然较 没有目录的书方便、快捷。(2)聚集索引和非聚集索引。4、创建索引有什么优点和缺点(1)优点:索引在数据库中的作用类似于目录在书籍中的作用,用来提高查找信息的速度。使 用索引查找数据,无需对整表进行扫描,可以快速找到所需数据。另一方面,通过

15、创建唯一性索引, 可以保证每一行数据的唯一性。(2)缺点:索引需要占用数据表以外的物理存储空间。创建索引和维护索引要花费一定的时间。当对表进行更新操作时,索引需要被重建,这样降低了数据的维护速度。5、修改视图中的数据会受到哪些限制(1)必须有权限;(2)单表视图可直接修改;(3)多表可在视图中定义instead of 触发器;(4)对由多表连接成的视图修改数据时,不能同时影响一个以上的基表,也不能删 除视图中的数据;(5)对视图上的某些列不能修改,这些列是:计算列、内置函数列和行集合函数列;(6)对具有 NOT NULL的列进行修改时可能会出错;通过视图修改或者插入数据时,必须保证未显示的具有

16、NOT NULL属性的列有值,可以是默认值、IDENTITY等,否则不能向视图中插入数据行;(7)如果某些列因为规则或者约束的限制不能接受从视图插入的数据时,则插入数据可能会失败;(8)删除基表并不删除视图,建议采用与表明显不同的名字命名规则。6、什么是数据完整性主要作用是什么数据完整性( Data Integrity )是指数据的精确性( Accuracy )和可靠性( Reliability )。 主要作用是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无 效操作或错误信息。7、数据完整性有哪几类数据完整性分为四类:实体完整性( Entity Integrity )、域

17、完整性( Domain Integrity )、 参照完整性( Referential Integrity )、用户定义的完整性( User-definedIntegrity )。8、什么是主键约束什么是惟一约束两者有什么区别(1)主键约束:有一列或列的组合,其值能唯一的标识表中的每一行。(2)唯一约束:不允许数据库表在指定列上具有相同的值,但允许有空值。(3)区别:一个表可以定义多个唯一约束,只能定义一个主键约束;允许空值的列上 可以定义唯一约束,不能定义主键约束。9、什么是存储过程存储过程(Stored Procedure )是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,它

18、是数据库中的一个重要对象。用户通过指定存储过程的名字并给出参数(如果 带有参数)来执行它。10、什么是触发器触发器有什么作用触发器是数据库服务器中发生事件时自动执行的特种存储过程。触发器经常用于加强数据的完整性约束和业务规则等,利用触发器可以方便地保持数据库中数据的完整性。11、简述INSERT触发器的工作原理当向表中插入数据时,INSERT虫发器触发执行。当INSERT触发器触发时,新的记录增加到触发器表中和inserted表中。该inserted表是逻辑表,保存了所插入记录的拷贝,允许用户参考INSERT语句中的数据。触发器可以检查inserted表,来确定该触发器的操作是否应该执行和如何

19、执行。在inserted表中的那些记录,总是触发表中一行或多行记录的冗余。12、用户权限的种类有哪些各自的作用 对象权限、作用:决定用户对数据库对象所执行的操作,包括用户对数据库中的表、视图、 列或存储过程等对象的操作权限语句权限、作用:决定用户能否操作数据库和创建数据库对象 隐含权限、作用:控制那些只能由预定义系统角色的成员或数据库对象所有者执行的活动。三、程序阅读题1、阅读下面的程序段,然后简述该程序段所完成的功能。BeginWaitfor time ' 15:43 'Create View my_viewAs Select order_date , book_number

20、 , book_id From orderformWhere book_number !< 25End该程序段的功能是:。答:系统在15: 43为orderform 表中订购数量 book_number大于25本的订购信息的 order_date、 book_number和book_id三个字段创建一个名为my_view的视图。2、下面程序段的功能是:在数据库中判断是否存在名为my_proc的存储过程,若存在,则删除之,然后创建同名的存储过程,该存储过程的功能是向book表而book_id、book_name、price和publisher字段插入数据。阅读并回答以下问题:Use boo

21、kdbGoIf Exists(Select name From Where name = ' my_procAnd Type =' )Drop Proc my_procGoCreate Proc my_proca int, b char(50),c float,d publisherInsert Into student(book_id,book_name,price,publisher)Values(a,b,c,d)Go问题:(1)填写该程序段中空白处的内容: _ Sysobjects_P _As(2)任写一条调用该存储过程的语句: 。答:(1) Sysobjects P A

22、s(2) Exec my_proc 7, 'SQL Server 2000教程',38,'北京科海集团公司'或Exec my_proc a=7, b= 'SQL Server 2000教程',c=38,d='北京科海集团公司'四、编程题(一)、有一个 学生课程”数据库,数据库中包括三个表:(1)学'生”表 Student 由学号(Sno)、姓名(Sname)、性别(SseX)、年龄(Sage)、所在系(Sdept) 五个属性组成,可记为:Student(Sno,Sname,Ssex,Sage,Sdept) Sno 为关键字

23、。(2)课'程"表Course由课程号(Cno)、课程名(Cname)、先修课号(Cpno)、学分(Ccredit)四 个属性组成,可记为:Course(Cno,Cname,Cpno,Ccredit) Cno为关键字。(3)学生选课”表SC由学号(Sno)、课程号(Cno)、成绩(Grade)三个属性组成,可记为: SC(Sno,Cno,Grade) (SNO, CNO)为关键字。完成下列操作:1、请把其中建立学生”表Student的语句写下来,其中学号属性不能为空,并且其值是唯一的。2、在student表中查询Sdept是计算机的学生的所有信息,并按Sno降序排列。3、在以

24、上三个表中查询 Ccredit为5并且Grade大于60的学生的学号、姓名和性别。4、为Course表创建一个名称为 my_trig的触发器,当用户成功删除该表中的一条或多条记录时, 触发器自动删除 SC表中与之有关的记录。(注:在创建触发器之前要判断是否有同名的触发器存在, 若存在则删除之。)1、CREATE TABLE Student(Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20), Ssex CHAR(1), Sage INT, Sdept CHAR(15);2、Select * From student Where Sdept ='计算机&

25、#39;Order By Sno Desc3、方法1:Select , Sname, SsexFrom student, course, scWhere = And =And = 5) And > 60)方法2:Select , Sname, SsexFrom student Inner Join sc Inner Join course On = On =Where = 5) And > 60)4、 If Exists(Select name From sysobjectsWhere name = ' my_trigAnd Type = ' tr 'Dro

26、p Trigger my_trigGoCreate Trigger my_trigOn CourseFor Delete AsDelete From scWhere Sno In (Select Sno From deleted)Go(二)数据库中包括三个表student表(学生表)学号姓名性别年龄系别1李明男20计算机系2张然女19经管系3许晴女18电子系course表(课程表)课程号课程名学分1SQL Server42VB33专业英语2sc表(选课表)学号课程号成绩11902185227633701、把course表中课程号为2的课程的学分修改为 4。2、在student表中查询年龄大于1

27、8的学生的所有信息,并按学号降序排列。3、在以上三个表中查询选的课程的学分”为4,并且成绩大于80的学生的学号、姓名和性别。4、创建一存储过程 GetDetai旧yName ,通过输入参数学生姓名(如 张然"),筛选出该学生的基 本信息,对不存在此学生姓名的输入值,必须作一检测,打印信息不存在此学生1、Update courseSet学分=4Where课程号=22、Select * From student Where 年龄 > 18 Order By 学号 Desc3、方法1:Select Distinct student.学号,姓名,性别From student, cour

28、se, scWhere (student.学号 =sc学号)And (course.课程号 =sc课程号)And (course.学分 =4) And (sc成绩 > 80)方法2:Select Distinct student.学号,姓名,性别From student Inner Join sc Inner Join courseOn course.课程号 =sc.课程号 On student.学号 =sc.学号Where (course.学分 =4) And (sc成绩 > 80)4、Create Procedure GetDetailByNameName nvarchar(1

29、0)ASIF (SELECT Count(*) FROM student WHERE生名 =Name) > 0Select *From studentWhere 姓名=NameELSEPrint '警示:不存在姓名为'+ Name + '的学生资料,(三卜查询设计某个学籍数据库有如下表结构:学生(学号,姓名,性别,出生日期,班级)课程(课程号,课程名称,课程类别,课时)选课(学号,课程号,成绩)请完成下列查询要求。1 .查询出 软彳041'班的所有男生的学号和姓名。2 .查询出课程名称中含有语言”一词的课程的所有信息。3 .查询出“C语言”课程成绩前5名的

30、学生的学号、姓名和班级。4 .查询出各班级学生人数。5 .查询出 计算机应用基础”课程成绩高于张三同学此门课程成绩的学生的学号和姓名。1. . SELECT学号,姓名FROM学生 WHERE班级=软彳041' AND别=男2. SELECT * FROM1 程 WHERE课程名称 LIKE %'3. SELECT TOP学生.学号,姓名,班级FROM学生JOIN选课 ON学生.学号=选课.学号JOIN课程 ON课程.课程号=选课.课程号WHERE课程名称=语言'ORDER BY成绩DESC4. SELECT®级,COUNT(*) AS 人数 FROM 学生 G

31、ROUP BY®级5. SELECTS生.学号,姓名FROM学生JOIN选课ON学生.学号=选课.学号JOIN课程 ON课程.课程号=选课.课程号 WHERE课程名称=计算机应用基础ANtMt>(SELEC械绩FROM学生JOIN选课 ON学生.学号=选课.学号JOIN课程 ON课程.课程号 = 选课.课程号WHERE课程名称=讦算机应用基础'AN姓名=张三)五、综合应用题(一)、学生选课系统,主要表有:学生表(学号、姓名、性别、专业、出生年月等),选课表(学号、课程号、分数),课程表(课程号、课程名、所属专业、学分)要求:6. 写出SQL语句。1)查询所有选“ SQL

32、课程”的学生学号,姓名和专业。2)删除所有选择“数学”的同学的选课记录。3)查询有哪些课程没有被任何同学报选。7. 创建存储过程。1)、能够查询出选修任何课程的学生信息及相应的分数。2)、以表格的形式返回本课程的平均分数。3、在课程表中增加 “No_i疗段,数据类型 char(12),不可空,并将其设定为 UNIQUE约束,写出 其命令语句。答:1、1) SELECT学号,姓名,专业 FROM学生表 A,选课表 B,课程表 CWHERE A学号=B.学号 AND B.课程号=C.课程号 AND C.课程名 ='SQL'或SELECT学号,姓名,专业FROM学生表WHERE 学号

33、 IN(SELECT学号 FROM选课表 WHERE课程号 =(SELECT课程号 FROM课程表 WHERE课程名='SQL课程)2) DELETE FROM 选课表WHERE课程号IN(SELECT课程号FROM课程表WHERE课程名='数学)3) SELECT * FROM 课程表WHERE 课程号 NOT IN(SELECT DISTINCT程号 FROM 选课表)2、(1) CREATE PROCEDURE xc_info kname char(16) ASSELECT a.*,用数FROM学生表a INNER JOIN选课表 bON a.学号=b.学号WHERE b

34、课程号=(SELECT课程号FROM课程表WHERE 课程名=kname)(2) CREATE PROCEDURE xca_info kname char(16) ASSELECT Av验数)FROM选课表WHERE课程号=(SELECT课程号 FROM课程表 WHERE课程名=kname)GROUP BYW 程号3、ALTER TABLE1程表ADD No_id CHAR(12) NOT NULL CONSTRAINT table_unique UNIQUE(二)、根据下面某教学管理数据库的表结构,完成下面的程序填空题。教师(职工号,姓名,学历,职称)课程(课程号,课程名称,课程类别)任课(职工号,课程号,周课时)1 .补填下面的存储过程的定义,使其被调用时,能根据调用程序提供的教师姓名使用输出参数返 回该教师任课的课程数。CREATE PROCEDUR胺教姓名查询任课课程数姓名 VARCHAR(10),碘程数 INTASSELECT FROM教师JOIN任课 ON教师.职工号=任课.职工号WHERE2 .完成下面的触发器的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论