数据库
1.数据库管理系统的主要功能是什么?
.数据定义、数据操纵、数据库运行管理、数据库建立与维护
2.概念?
1>数据: 描述事物的符号记录;
2>数据库:长期存储在计算机内,有组织,可共享的大量数据集合。;
3>数据库管理系统:用于管理数据库的软件。
4>数据库系统:由数据库,数据库管理系统,应用程序和数据库管理员组成的存储,管理,处理和维护数据的系统。
3.数据库的特点是?
1>数据结构化
2>数据共享性高,冗余度低且扩充
3>数据独立性高
4>数据由DBMS统一管理
4.DBA的职责是?
DBA的职责是全面管理和控制数据库系统,具体有:
1>决定数据库中要存放哪些信息
2>决定数据库的存储结构和存取策略
3>定义数据的安全性要求和完整性约束条件
5>监控数据库的使用和运行:转存数据、维护日志文件、故障恢复
6>数据库的改进和重组重构:对运行情况进行记录、统计分析,以此来不断改进数据库设计
5.文件系统和数据库管理系统的区别?
文件系统共享性差、冗余度高、独立性差
数据库管理系统共享性高,可以使多个用户同时访问数据库,减少了数据的冗余度,具有较高的物理独立性和逻辑独立性,整体结构化,用数据模型描述
6.三级模式结构是?二级映射有什么特点?
三级模式包括外模式、模式、内模式:
模式:描述了数据库中全体数据的逻辑结构和特征
外模式:描述了用户可见的局部数据的逻辑结构和特征
内模式:描述了数据库的物理结构和存储方式
二级映射:
外模式/模式映像保证了数据的逻辑独立性(应用程序和数据库的物理存储是相互独立的)
内模式/模式映像保证了数据的物理独立性(应用程序和数据库的逻辑结构是相互独立的)
7.关系模型中的完整性约束是哪几类?(定义)
1>实体完整性:关系模式中的主码不能为空值
2>参照完整性:关系模式中外码只能是空值或另一关系模式的主码
3>用户定义完整性:关系模式中针对某一属性的约束
8.SQL的特点?
1>综合统一。集DCL(数据控制语言)、DML(数据操纵语言)、DDL(数据定义语言)功能于一体
2>高度非过程化。使用SQL进行数据操作时,只需要提出“做什么”,而不需要指明怎么做
3>面向集合的操作方式。操作的对象、查找结果都可以是元组的集合
4>同一种语法结构提供多种使用方式。既可以作为独立的语言进行交互,又可以作为嵌入式语言嵌入到更高级的语言程序中进行操作
5>语言简洁,易学易用
9.什么是数据操纵语言、什么是数据库控制语言?
数据操纵语言是指通过对表中的数据进行插入、删除和修改等操作,实现对数据库的基本操作。如SELECT、UPDATE
数据控制语言是用来设置或者更改数据库用户或角色权限的语句,如GRANT、REVOKE
10.等值连接和自然连接的区别?
自然连接是等值连接的一种特殊情况
等值连接要求连接的值相等的分量,两个关系中可以没有相同的属性;而进行自然连接的两个关系中必须有相同的属性
等值连接不要求去掉重复属性列;自然连接时需要除掉重复的属性列。
11.外连接是?
外连接是指两个表在进行操作时,不仅返回符合连接和查询条件的元组,还返回一些不符合条件的元组。
左外连接是指返回左表中仅符合连接条件不符合查询条件的元组。
右外连接是指返回右表中仅符合连接条件不符合查询条件的元组。
全外连接是左外连接和右外连接去掉重复项的元组集并集。
12.索引的作用及优缺点?
当表的数据量比较大时,查询操作比较耗时,建立索引可以加快查询速度。
优点:加快查询速度
缺点:索引需要占一定的存储空间,且基本表更新时需要维护索引表。
13.索引和键的区别?
索引是存储在数据库中的一个物理结构,是实际存在的,相当于一本书的目录。
键是一个逻辑概念,不是数据库中的物理部份。键分为主键和外键,主键相当于一本书中每一页的页码
(聚簇索引:与基表的物理顺序相同,数据值的顺序总是按照顺序排列。)
14.数据库中常用的索引有哪些?
1>B+树索引:B+树是对B树优化处理了的多路搜索树,B树的每个结点都可以存储数据,而B+树只有叶子结点可以存储数据,且每个叶子结点都用链表链接。
在数据库的查询中一般都是批量查询数据,采用B+树一次查询多条时,确定首尾位置,便可以方便的确定多条数据位置,提高查询效率。
2>Hsah索引:通过一定算法计算出哈希值,然后映射出对应的数据存储位置。检索速度快,但是哈希值可能存在碰撞。
15.视图是什么?有何作用?
视图是从一个或几个基本表中导出的表,是一个虚表。数据库中只存放视图的定义,而不存放视图对应的数据。基本表中的数据发生变化时,从视图中查询出来的数据也就随之发生变化。
作用:
1>能够简化用户操作;
2>使用户能以多种角度看待同一数据;
3>在一定程度上提供了数据的逻辑独立性;
4>能够对秘密数据提供安全保护;
5> 利用可以更加清晰的表达查询。
16.数据库的安全性是指?有哪些安全性技术?
数据库的安全性是指保护数据库防止恶意破坏和非法存取。
安全技术:用户标识和鉴别、多层存取控制、审计、视图、数据加密。
17.存取控制是指?主要包括啊哪两部分?有哪两类方法?
存取控制是指确保只授权给有资格的用户访问数据库的权限,且令所有未授权的人员无法接近数据。
两个部分:定义用户权限和合法权限检查。
两种方法:
1>自主存取控制(DAC):用户对不同的数据库对象有不同的存取权限,不同用户对同一对象也有不同权限。
2>强制存取控制(MAC):每一个数据库对象被标以一定的密级,每一个用户也被授予一定级别的许可证,只有具有合法许可证的用户才可以进行存取。
18.视图机制是如何对数据库实现安全性控制的?
可以对不同的用户定义不同的视图,也就是说,通过视图机制把要保密的数据对无权存取的用户隐藏起来。
19.审计功能是如何对数据库实现安全性控制的?
审计功能是把用户对数据库的一系列操作自动记录到审计日志中,审计员可以利用审计日志监控数据库中的各种行为,找出导致数据库发生异常的事件。
20.数据库的完整性是指?
数据库的完整性是指防止数据库中存在不正确的数据。
21.什么是断言?
断言是指更具有一般性的约束,断言创建后,任何涉及到断言中的关系操作都会引发数据库对断言的检查,任何使断言为假的操作都会被拒绝执行。
22.什么是触发器?触发器的作用?
触发器是用户定义在关系表上的一类由数据驱动的特殊过程,类似于约束,但是比约束更灵活,是保证数据库完整性的一种方法。任何用户对表进行增删改操作都会有数据库服务器自动激活相应的触发器,对数据库进行相应的检查和操作。
23.规范化过程中,逐级依次消除了何种函数依赖?
1>1NF(第一范式)要求数据库每一列都是不可再分的原子值。
2>2NF(第二范式)消除了非主属性对主属性的部分函数依赖。所有非主键字段必须完全依赖于主键字段,不能只依赖主键的一部分。
3>3NF(第三范式)消除了非主属性对主属性的传递函数依赖。
4>BCNF范式消除了主属性对码的部分函数依赖和传递函数依赖。
24.数据库设计的基本步骤是什么?
需求分析。了解和分析用户需求;
概念结构设计。对用户需求进行抽象和归纳,形成一个独立于DBMS的概念模型(E-R图);
逻辑结构设计。将概念结构转换为数据模型,通常为关系模型;
物理结构设计。为逻辑数据模型选取一个最适合存储结构和存取方法;
数据库实施阶段。编写数据库,编写和调试应用程序;
数据库运行和维护。正式投入运行。
25.概念模型有什么作用?
概念模型用于信息世界的建模,是现实世界到信息世界的第一层抽象,是数据库设计人员进行数据库设计的有力工具,也是数据库设计人员和用户之间进行交流的语言。
26.合并E-R图时主要包括哪几种冲突?
1>属性冲突。不同的实体对同一属性的定义不同;
2>命名冲突。同名异义,异名同义;
3>结构冲突。同一实体在不同的局部E-R图中有不同的抽象。
27.一个实体性转换为一个关系模式有哪几种情况?
1>一个1对1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并;
2>一个1对n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并;
3>一个m对n联系可以转化为一个关系模式,与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性;
28.描述数据库对嵌入式SQL的处理过程?
DBMS的预处理程序对源程序进行扫描,识别出嵌入式SQL语句,把他们转化成主语言调用语句,使得主语言编译程序可以识别它们,然后将它们编译成目标代码。
29.什么是存储过程?用什么来调用?
存储过程是个预编译的SQL语句集合,优点是可以建立非常复杂的查询,只需创建一次,在程序中即可多次调用,且比执行单纯的SQL语句要快。
可以创建一个命令对象进行调用。
30.游标是什么?
系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果。
31.关系数据库中查询处理的步骤是什么?
1>查询分析:对查询语句进行词法分析、语法分析;(检查是否正确)
2>查询检查:对合法的查询语句进行语义检查(语义检查就是检查其是否有效);
3>查询优化:选择一个高效执行的查询处理策略;
4>查询执行:依据优化得到的执行策略生成查询执行计划,并生成相应的查询执行计划代码。
32.三条启发式优化规则包括哪几点?
1>选择运算尽可能先做;
2>投影操作尽可能先做;
3>把笛卡尔积和附近的一连串选择和投影操作合并起来做。
33.事务是什么?ACID特性包括?
事务是数据库进行操作的一个基本单位。
ACID特性:
1>隔离性:一个事务的执行不能被其他事务所干扰;
2>原子性:事务是不可分割的单位,要么全做,要么全部做;
3>一致性:事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态;
4>永久性:一旦事务被提交,它对数据库的改变是永久的。
34.为什么事务非正常结束时会影响数据库数据的正确性?
事务具有一致性,事务的执行结果必须是使数据库从一个一致性状态变到另一个一致性状态。如果数据库系统运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库处于一种不正确状态,或者说是不一致的状态。
35.数据库恢复的关键是什么?
关键是建立冗余数据
36.数据库恢复的基本技术有哪些?
数据转储和登录日志文件。
数据转储是指DBA定期将数据库复制到其他介质上保存,这些备份数据叫做后备副本;
登录日志文件,日志文件是用来记录事务对数据库进行更新操作的文件。
(当系统运行过程中发生故障,利用转储的数据库后备副本和日志文件就可以将数据库恢复到故障前的某个一致性状态。)
37.用于数据恢复的文件是什么?
日志文件、后备文件
38.数据库故障的种类有哪几种?相应的恢复策略是什么?
事务故障、系统故障、介质故障;
1>事务故障是指事务在运行至终点前被终止;
事务故障恢复是由系统自动完成,利用日志文件撤销此事务已对数据库进行的修改;
2>系统故障是指造成系统停止运转的任何事件,使得系统要重新启动;
系统故障的恢复是在重新启动后的系统自动完成,为了防止系统故障造成的数据不一致性,必须撤销故障时未完成的事务,重做已完成的事务;
3>介质故障是指磁盘上的物理数据和日志文件被破坏;
介质故障的恢复方法就是重装数据库,重做已经完成的事务。
39.在数据库中为什么要并发控制?
数据库是共享资源,通常有多个事务在同时执行,当多个事务并发的存取数据库时就会存在同时读或写同一数据的情况,如果对并发不加控制,就会存在数据读取或存取错误,破坏数据库的一致性。
40.并发造成的数据不一致性包括什么?
1>丢失修改。A、B两个事物同时对一个数据进行操作,A的修改破坏了B的修改,导致B的修改丢失;
2>不可重复读。A读取了数据后,B对数据进行了修改,导致A无法再现前一次的读取结果;
3>读脏数据。A对数据进行了修改之后,B读入该数据,然后A又因为某一原因撤销了该修改,导致数据恢复原值,此时B读取的数据就成了脏数据。
41.什么是锁?有哪两种锁?
锁是最常用的并发控制机构,是防止其他事务访问指定资源,实现并发控制的一种手段。
排他锁(X写锁):当数据被加上写锁,其他事务不能对该数据进行读和写;
共享锁(S读锁):当数据被加上读锁,允许其他事务对该数据进行读,不允许写。
42.简要概括一、二、三级封锁协议
一级封锁协议:事务在修改数据之前加写锁,直到事务结束才释放。该协议可以防止丢失修改;
二级封锁协议:在一级封锁协议的基础上,加上了事务在读取数据之前对其加读锁,读完后即可释放读锁。该协议避免了读脏数据;
三级封锁协议:在一级封锁协议的基础上,加上了事务在读取数据之前必须加上读锁,知道事务结束才释放。该协议解决了不可重复读的问题。
43.数据库保护(访问)的内容有哪些?
1>利用权限机制;
2>利用完整性约束防止非法数据进入数据库;
3>提供故障恢复能力;
4>提供并发访问控制。
44.概念模型的特点?
1>能真实、充分地反映现实世界,是现实世界的一个真实模型。
2>易于理解,从而可以用它和不熟悉计算机的用户交换意见。
3>易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充。
4>易于向关系、网状、层次等各种数据模型转换
45.数据字典的组成?
数据字典(Data dictionary)是一种用户可以访问的记录数据库和应用程序源数据的目录。主动数据字典是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。
数据字典由数据项、数据结构、数据流、数据存储和处理过程组成。
作用:
1>管理系统数据资源;
2>实现数据标准化;
3>使系统的描述文体化;
4>作为设计的工具。
46.两大数据模型:
概念模型;
逻辑模型和物理模型;
数据模型三要素: 1.数据结构2.数据操作3.完整性约束(实体,参照,自定义)
47.数据模型(层次,网状,关系)
1>层次模型:树形
2>网状模型:无向图
3>关系模型:二维表
48. WHERE和HAVING的区别
WHERE和H\AVING的区别在于作用域不同
WHERE是从全部中选择
H\AVING是从GROUP BY之后的分组中选择,HAVING必须和GROUP BY一起出现
49. .活锁&死锁:
活锁(饥饿):某个事务可能无限等待
死锁:两个或多个事务互相等待对方
50. GROUP BY:结果按<列名1>的值进行分组,该属性列值相等的元组为一个组;通常会在每组中作用聚集函数;如果该子句还携带HAVING短语,则只有满足指定条件的组才予以输出(GROUP BY子句将查询结果按某一列或多列的值分组,值相等的分为一组)
ORDER BY:结果表还要按<列名2>的值的升序或降序排序(ASC升序 默认;DESC降序)
51.insert into value
Update set where