SQL期末复习简答题.docx
《SQL期末复习简答题.docx》由会员分享,可在线阅读,更多相关《SQL期末复习简答题.docx(12页珍藏版)》请在冰豆网上搜索。
SQL期末复习简答题
第一章:
数据库概述
1.SQLServer的系统数据库有哪些?
其作用是什么?
答:
6个系统数据库
a)Master:
记录了SQLServer系统的所有系统信息。
这些系统信息包括所有的登录信息、系统配置信息、SQLServer的初始化信息和其他系统数据库及用户数据库的相关信息。
b)Model:
它是所有用户数据库和Tempdb数据库的模板数据库。
它包括Master数据库所有系统表的子集,这些系统数据库是每个用户定义数据库所需要的。
c)Msdb:
代理数据库,为其警报、任务调度和记录操作员的操作提供存储空间。
d)Tempdb:
是一个临时数据库。
它为所有的临时表、临时存储过程及其他临时操作提供存储空间。
e)Pubs和Northwind:
是两个实例数据库。
2.SQLServer最重要的系统表有哪些?
其作用是什么?
答:
a)Sysobjects:
出现在每个数据库中,它对每个数据库对象含有一行记录。
b)Syscolumns:
出现在Master数据库和每个用户自定义的数据库中,它对基表或者视图的每个列和存储过程中的每个参数都含有一行记录。
c)Sysindexes:
出现在Master数据库和每个用户自定义的数据库中,它对每个索引和没有聚集索引的每个表都有含有一行记录,它还对包括文本或图像数据的每个表都有一行记录。
d)Sysusers:
出现在Master数据库和每个用户自定义的数据库中,它对整个数据库中的每个WindowsNT用户、WindowsNT用户组、SQLServer用户或者SQLServer角色都含有一行记录。
e)Sysdatabases:
对SQLServer系统上的每个系统数据库和用户自定义的数据库都含有一行记录,它只出现在master数据库中。
f)Sysdepends:
对表、视图和存储过程之间的每个依赖关系含有一行记录,它出现在master数据库和每个用户自定义的数据库中。
g)Sysconstraints:
对使用CreateTable或者Altertable语句为数据库对象定义的每个完整性约束都含有一行记录。
第二章:
数据库
1.数据库管理系统的作用?
答:
提供数据库的定义、操纵、运行控制(包括数据安全性控制、数据完整性控制、并发控制、数据库恢复机制)、维护等功能
2.数据库中的文件有几种?
用来做什么?
答:
数据库中的文件有三种:
●主数据文件,扩展名是.mdf
●辅助数据文件,扩展名是.ndf
●事务日志文件,扩展名是.ldf
作用:
●主数据文件包含数据库对象。
它可用于存放系统表和对象。
●辅助数据文件可用于存放用户数据和对象。
如果数据库需要跨多个磁盘时,可以使用辅助数据文件。
●事务日志文件了记录了所有在数据库中发生的所有修改和导致这些修改的事务。
3.文件组的概念?
文件组的类型和含义?
答:
概念:
文件组是SQLServer中一个或多个文件的命名集合,它构成分配或用于数据库管理的单个单元。
文件组的类型:
●主文件组:
包含主文件的文件组为主文件组。
数据库创建时默认的是主文件组,未指定文件组的对象都将放到默认文件组中。
●用户定义的文件组:
指在首次创建或以后更改数据库时,用户明确创建的任何文件组。
4.如何创建数据库(以编程为主)
5.如何修改数据库(以编程为主)
6.如何查看数据库(以编程为主)
第三章:
表
1.表的结构如何?
答:
表是一个扁平的二维关系。
它是由行和列组成的。
行对应一行的记录(也称元组),列对应一组具有相同数据类型的值的集合。
2.系统的数据类型有哪些?
答:
●数据型数据:
整型数据(int、bigint、small、tinyint)、小数数据(decimal[(p[,s])]、numeric[(p[,s])])、近似数字数据(float[(n)]、real)、货币数据(money、smallmoney)
●日期和时间数据(datetime、smalldatetime)
●字符数据和Unicode字符数据(char(n)、varhcar(n)、char(n)、varhcar(n)、text、ntext)
●二进制数据(binary[(n)]、varbinary[(n)]、image)
●其他
3.对象命名时要注意什么?
答:
●第一个字符必须是字母,a~z或A~Z
●第一个字符后可以是数字、字母或各种符号
●当标识符的第一个字符是符号时,代表它有特殊用处
Ø以@开头的标识符代表局部变量或参数
Ø以#开头的标识符代表临时表或存储过程
Ø以##开头的标识符代表一个全局临时对象
●使用限定标识符
Ø当对象名称包含空格时或者当保留关键字被用作对象名或对象部分的名字时,使用中括号表示的括号标识符([])或者使用双引号表示的引用标识符(“”)
4.如何创建、修改、删除、查看表?
(以编程为主)
第四章:
数据完整性
1.什么是数据完整性?
有几种?
各自的含义是什么?
答:
a)数据完整性:
指能够保证数据库中存储数据的准确性和一致性。
有四种数据完整性:
Ø实体完整性:
保证表中的每一个记录(或者每一个元组)都能由称为某一属性来惟一标识。
Ø域完整性:
保证只在有效范围内的值才能存储列中。
Ø引用完整性:
保证一张表的值能与另一张表对应的值相匹配。
Ø用户完整性:
由用户指定指定的一给规则,它不属于实体、域或引用完整性。
2.约束有几种?
含义是什么?
它们与数据完整性对应关系是什么?
3.如何创建约束(建表时--以编程为主)?
表级的约束与列级的约束在命令上有什么不同?
4.如何修改约束?
(以编程为主)
5.主键约束与唯一约束的相同点与不同点?
答:
相同点:
主键约束与唯一约束都保证列中的值的唯一性。
不同点:
Ø主键约束只能有一个,唯一约束可以有多个。
Ø主键约束不允许有NULL值,唯一约束可以有一个NULL值。
Ø主键约束会自动创建聚集索引,唯一约束会自动创建一个非聚集索引。
第五~九章:
查询
1.以命令操作为主,注意容易语法出错的情况。
第十章:
系统函数
1.以命令操作为主,注意容易语法出错的情况。
2.记住常用的系统函数。
第十一章:
数据管理
1.以命令操作为主,注意容易语法出错的情况。
第十二章:
自定义数据类型、约束对象、默认对象
1.这三个数据库对象的命令。
(以编程为主)
2.为什么要使用自定义数据类型?
它与系统数据类型不同之处?
答:
●当多个表的列中要存储同样类型的数据,且想确保这些列具有完全相同的数据类型、长度和为空性时,可使用用户定义数据类型
●不同在于:
用户定义数据类型的名称,新数据是基于系统数据类型,可在定义类型时提供是否为空值。
3.约束对象(规则)与检查约束的异同点?
答:
●相同点:
规则要以实现与检查约束相同功能的完整性约束。
●不同点:
Ø规则是一个数据对象,它可以独立存在。
当表删除时,与之绑定的规则不会删除。
而表删除时,表中的检查约束也会删除。
Ø一个规则可以与表中的多个列进行多次绑定,而一个检查约束只能针对表一个列。
Ø规则不仅可以对列进行约束,还可以对用户自定义的数据类型进行约束。
而检查约束只能对列进行约束。
Ø规则不能应用于已经插入到表中的数据。
而约束可以对已插入到表中的数据进行检查。
4.默认对象与默认约束的异同点?
答:
●相同点:
默认对象可以实现与默认约束相同功能的完整性约束。
●不同点:
Ø默认对象是一个数据对象,它可以独立存在。
当表删除时,与之绑定的规则不会删除。
而表删除时,表中的默认约束也会删除。
Ø一个默认对象可以与表中的多个列进行多次绑定,而一个默认约束只能针对表一个列。
Ø默认对象不仅可以对列进行约束,还可以对用户自定义的数据类型进行约束。
而默认约束只能对列进行约束。
Ø不能为已有默认绑定的列或用户定义数据类型创建DEFAULT约束。
第十三章:
索引
1.索引的种类?
答:
聚集索引和非聚集索引
2.索引的优点与缺点?
答:
●优点:
Ø提高执行查询的速度。
Ø实施数据惟一性
Ø加速了表之间的连接
●缺点:
Ø创建索引要花费时间
Ø每个创建的索引连同原先的数据源(表)都需要磁盘空间来存储数据
Ø每次修改数据时索引都要更新
3.什么是簇集索引?
什么是非簇集索引?
它们之间的异同点在哪里?
答:
●簇集索引:
数据页中数据的物理顺序,按照索引值的顺序排序而创建的索引。
●非簇集索引:
数据页中数据的物理顺序,不受索引值顺序的影响而创建的索引。
●相同点:
Ø两者创建时,都会创建一个B+树的数据结构
Ø它们都可以提高查询的速度
●不同点:
Ø每个表只有一个聚集索引,而可以多个非聚集索引
Ø在聚集索引中,数据存储在B+树的叶子结点上。
而非聚集索引的叶子结点保存的是索引值而不是数据。
Ø聚集索引影响数据的物理顺序,而非聚集索引不影响
Ø在创建非聚集索引前要创建聚集索引
Ø在默认的情况下,创建非聚集索引
4.什么是唯一索引?
答:
用于保证索引的唯一性的索引。
5.簇集索引和非簇集索引分别是怎么工作的?
簇集索引的工作过程:
ØSQLServer从Sysindexes表中获得根结点的地址
Ø查找值与根结点中的关键值进行比较
Ø找出小于或等于查找值的最大关键值的结点
Ø结点指针进到索引的下一层
Ø重复前两个步骤,直到找到叶子结点
Ø在叶子结点上查找数据行,直到找到查找值为止,如果在叶子结点上找不到查找值,则此查询无行返回
非簇集索引的工作过程:
ØSQLServer从Sysindexes表中获得根结点的地址
Ø查找值与根结点中的关键值进行比较
Ø找出小于或等于查找值的最大关键值的结点
Ø结点指针进到索引的下一层
Ø重复前两个步骤,直到找到叶子结点
Ø在叶子结点上查找数据。
如果在叶子结点上找不到查找值,则此查询无行返回。
如果找到匹配数据,指针进到表中数据页和行-ID,再到数据页中检索所请求的行,返回结果。
6.创建、删除索引的命令。
(以编程为主)
第十四章:
视图与用户定义函数
1.什么是视图?
它与表之间的区别是什么?
答:
●视图:
将预定义的查询存储成数据库中的对象称为视图。
●区别:
Ø视图是一个虚表,它不存放数据,而是存放查询的定义。
而表存放实际的数据
Ø可以通过视图修改数据,但有限制条件。
而表可以直接修改。
Ø可以在视图上创建索引,但是有限制条件。
而表没有。
2.视图的优点?
答:
Ø对用户只显示特定数据:
不需要的、敏感的或不合适的数据不引入视图内
Ø屏蔽数据库复杂性
Ø简化用户权限管理:
权限统一分配给视图
Ø从异构源组织数据,改进性能:
视图允许存储复杂查询的结果,让其他查询直接使用。
视图亦允许分区数据,可将单独的分区放置于分散的计算机内
Ø组织数据以便导出到其他应用程序:
可基于联接两个或多个表的复杂查询创建视图,并将数据导出到其他应用程序以进行更深入的分析
Ø减少对象大小:
视图不包含数据。
3.创建视图的命令(以编程为主)
4.用户自定义函数的种类?
Ø标量函数:
返回一个标量(单值)结果的函数
Ø多语句表值函数:
返回一个由一条或多条Transact-SQL语句建立的表的函数。
Ø内嵌表值函数:
返回一个单条SELECT语句产生的结果的表的函数
5.它们的命令如何编写?
(以编程为主)
6.对创建视图有什么限制?
答:
ØCREATEVIEW语句不能包含ORDERBY、COMPUTE或COMPUTEBY和INTO子句。
Ø仅当使用TOP关键字的时候,CREATEVIEW语句才能包括ORDERBY子句
Ø创建视图不能引用临时表。
Ø创建视图不能引用超过1024列
ØCREATEVIEW语句不能与其他T-SQL语句组合使用。
7.通过视图修改数据时有什么限制?
答:
Ø要通过视图修改数据,则视图定义时,必须在SELECT语句中不能包括聚合函数或GROUPBY子句
Ø要通过视图修改数据,则视图定义时,必须是建立在单表上。
Ø不允许改变是某个计算的结果的列,例如包括计算值、内建函数或行聚合函数的列
Ø若视图定义中指定了WITHCHECKOPTION选项,则修改被校验,以符合SELECT语句中指明的标准
第十五章:
存储过程
1.什么是存储过程?
答:
存储过程:
Ø是存储在服务器上的Transact-SQL语句的命名集合
Ø是封装重复性任务的方法
Ø支持用户声明变量、条件执行以及其他强有力的编程特性
2.存储过程的好处?
答:
Ø提高性能,应用不必重复地编译此过程
Ø减轻网络堵塞,为进行处理,应用不需要向服务器提交多个T-SQL语句
Ø一致性好,由于过程作为单一控制点,在过程中定义的编码逻辑和T-SQL语句在所有应用中被一致地实现
Ø改善安全机制,用户可以被授予许可权来执行存储过程,尽管他们并不拥有这个过程。
3.存储过程的种类以及各种的含义?
答:
Ø用户定义的存储过程:
由用户创建,存储在当前数据库中
Ø系统存储过程:
数据库管理系统自身的存储过程,以SP_开头,主要支持帮助管理SQLServer的各项管理任务,存储在Master数据库和msdb数据库中。
Ø临时存储过程:
以#开头的存储过程,存储在tempdb数据库中。
当客户与服务器终端连接终结时,它被自动撤销
Ø远程存储过程:
在远程服务器的数据库中创建和存储的过程。
它们可以被各种服务器访问,向具有相应许可权限的用户提供服务
Ø扩展存储过程:
以XP_开头的存储过程,它是动态链接库在SQLServer环境中执行的存储过程。
4.如何编写存储过程?
(以编程为主)
5.如何调用存储过程?
(以编程为主)
第十六章:
触发器
1.什么是触发器?
答:
一类特殊的存储过程,被定义为在对特定表或视图发出UPDATE、INSERT或DELETE语句时自动执行
2.触发器的特征?
答:
●当任何数据修改语句被发出时,触发器就被SQLServer自动的激发
●在存储过程的情况下,它不能被显式地调用或执行
●它防止对数据的不正确、未授权的和不一致的改变
●和存储过程不同,不能为触发器指定参数、也不能返回数据给用户
3.触发器的种类以及含义?
答:
●INSTEADOF触发器:
在所定义的表上执行INSERT、UPDATE或DELETE语句之前执行。
用触发器的内容代替INSERT、UPDATE或DELETE语句。
●AFTER触发器:
在所定义的表上执行INSERT、UPDATE或DELETE语句之后执行
●上述两种触发器都包含三种相应动作触发器:
insert触发器、update触发器、delete触发器
4.insert/update/delete触发器(after类)的工作过程以及作用?
INSERT触发器工作过程:
●在定义了INSERT触发器的表上执行INSERT语句
●INSERT语句插入的行被记录下来
●触发器动作被执行
DELETE触发器的工作过程:
●在定义了DELETE触发器的表上执行DELETE语句
●DELETE语句删除的行被记录下来
●触发器动作被执行
UPDATE触发器工作过程:
●在定义了UPDATE触发器的表上执行UPDATE语句
●UPDATE语句被作为INSERT和DELETE语句记录
●触发器动作被执行
触发器的作用:
作用:
●在数据库中的相关表上实现级联更改
●强制比CHECK约束更复杂的数据完整性
●定义用户定制的错误信息
●比较数据修改前后的状态
●维护非标准数据
5.如何编写触发器(以编程为主)。
6.为什么要实现触发器,触发器有那些特征?
●触发器是在对数据库表进行INSERT、DELETE、UPDATE等操作时自动触发。
●触发器的特征:
Ø当任何数据修改语句被发出时,触发器就被SQLServer自动地激发。
Ø在存储过程的情况下,它不能被显式地调用或执行。
Ø它防止了对数据的不正确、未授权的和不一致的改变。
Ø和存储过程不同,不能为触发器指定参数、也不能返回数据给用户。
7.inserted表和deleted表的作用是什么?
●当触发器激发对INSERT、DELETE或UPDATE语句的响应时,两个特殊的表被创建。
这就是插入表
●inserted和删除表deleted,也称为幻表。
这些是概念表,且在结构上和定义触发器的表是相似的。
●inserted表包含插入在触发器表中的所有记录的拷贝。
●deleted表包含了已从触发器表中被删除的所有记录。
●当任何更新发生时,触发器就使用inserted表和deleted表。
8.若同时存在触发器和规则,先执行哪个?
●先执行规则后执行触发器
9.触发器和存储过程的区别是什么?
●触发器是一种特殊的存储过程,在对表中进行操作时自动触发(执行),以限制和检查某些数据的插入。
●触发器没有参数,而存储过程有
●触发器最好不要返回数据,而存储过程可以
●一个触发器是其相应操作(insert,update,delete)事务的一部分,而一个存储过程就是一个事务
10.修改触发器和撤销重建触发器有什么不同?
可通过下面两种方法修改的触发器的内容:
●使用DROPTRIGGER命令撤消触发器且重新创建它。
●使用ALTERTRIGGER命令修改触发器。
●如果它所引用的对象被重命名了,撤消触发器且重新创建它是明智的。
11.阐述约束、规则和触发器的区别?
相同点:
约束、规则和触发器都是用来维护数据库表的完整性和一致性。
不同点:
1.约束是在创建表时施加到列的,它在INSERT、UPDATE、DELETE操作之前进行数据检查。
2.创建规则后,使用sp_bindrule系统存储过程将规则绑定到列。
3.触发器是对表进行INSERT、UPDATE、DELETE操作时自动触发。