数据库知识点综合整理简答加名词解释超全版本
1.事务的特性:
是恢复和并发控制的基本单位,是用户定义的一个数据库操作序列。这些操作要么全做,要么全不做,是不可分割的工作单元。一个事务可以是一条SQL语句,一组SQL语句或整个程序
事务具有ACID的特性:
原子性-事务它不可分割,要么全做要么全不做
一致性-事务执行结果必须使数据库从一个一致性状态变到另一个一致性状态
隔离性-一个事务的执行不能被其他事务所干扰。并发执行的各个事物之间相互隔离
持续性-事务对于数据的影响是持久性的
当事务遭到破坏的原因有可能是因为:多个事物并行运行时,不同的事务操作交叉执行。
在运行事务时被强制停止如断电
2.并发操作带来的数据不一致:
- 丢失修改:T1和T2对同一数据进行修改,T2结果的提交破坏了T1提交的结果,导致T1的修改丢失
- 不可重复读:T1读取数据后,T2对数据进行更新,T1无法再现前一次的读取结果
- 读“脏”数据:T1修改数据后T2进行读取,但是T1又因为某种原因撤销修改,导致T2的数据域数据库中数据不一致
3.什么是封锁,有哪些封锁?
封锁就是在数据操作前对其加锁,只有释放锁后,其他事务才能对其操作
排它锁(X锁):只有有X锁的事务可以进行读写;(不能加任和锁)
共享锁(S锁):所有事务只能读,不能写(可以加S锁)
4.区别几种范式:
1NF:是对于表最基本的要求:一个表中每一个属性是不可再分的,具有原子性
也就是说不可以表中套表,表必须横平竖直
2NF:在1NF基础上,每一个非主属性都完全依赖于任何一个候选码
也就是非主属性对主属性没有部分依赖
3NF:非主属性对主属性没有传递函数依赖
BC范式:在第三范式的基础上,消除主属性间的传递函数依赖
5.数据、数据库、数据库管理系统、数据库系统
数据:是数据库存储的基本对象
数据库:长期存储在计算机中的有组织、可共享的数据集合
数据库管理系统:是用户与操作系统之间的一层数据管理软件在数据库建立、运行和维护时,对数据库进行统一控制,以保证数据的完整性和安全性,并且在多用户使用数据库时进行并发控制,在发生故障后对数据库后进行恢复
(功能:数据定义、数据组织、存储和管理、数据操纵、数据库事务的管理和运行、数据库的建立和维护)
数据库系统:由数据库、数据库管理系统、数据库管理员、应用程序组成;使得信息系统从以加工数据的程序为中心转向围绕共享的数据库为中心的新阶段
6.关系、关系模式和关系数据库的区别:
1.关系:一个关系对应着一个二维表,是关系模式在某一时刻的状态,关系是动态的
2.关系模式:二维表中的行定义,即对关系的描述,关系模式是静态的,稳定的
3.关系数据库是以关系模型为基础的数据库,是所有关系的集合。关系型数据库的最大特点就是事务的一致性
7.关系数据库的特点:
关系数据库是以关系模型为基础建立的数据库,是所有关系的集合。关系型数据库的最大特点就是事务的一致性
优点:1.容易理解:关系模型就是二维表格,二维表结构是非常贴近逻辑世界,关系模型相对等其他模型来说更容易理解;
2.使用方便:安全性和独立性好,通用的SQL语言使得操作关系型数据库非常方便
3.易于维护:具有完整性约束减低了数据冗余和数据不一致的概率;
缺点:1.存取路径对用户透明,查询效率不如非关系数据库
2.不擅长大量数据的读写功能(因为要维护数据的一致性)
3.二维表形式,灵活度不高
8.数据模型包括什么:
√概念:是对于现实世界数据的抽象,用来描述、组织、操作数据,计算机无法直接处理现实的具体事物,因此要先将具体事物转换成计算机可以处理的数据,即用数据模型来抽象。
√组成:数据的数据结构,数据操作,数据完整性约束.常用的数据模型--层次模型./关系模型/网状模型
9.逻辑独立性、物理独立性:
逻辑独立性:模式改变、应用程序和外模式不改变
物理独立性:数据存储结构改变,不会改变模式和应用程序
数据独立性:不会因为数据的物理结构和逻辑结构的改变影响应用程序
10.人工管理阶段和数据库系统和文件系统的区别:
人工管理阶段:数据不能保存,由应用程序管理数据
文件阶段:数据库长期保存,由文件系统管理数据,数据共享性差、冗余度大、数据独立性差
数据库阶段:由数据库管理系统管理数据,数据共享性好,冗余度底,独立性高
11.等值连接和自然连接的区别与联系:
等值连接是在关系运算连接中,连接运算符为 “ = ” 的一种连接,即S和R两个关系先做笛卡尔积,然后选A和B属性值相等的元组
自然连接:是一种特殊的等值连接,并且在结果中把重复的属性列去掉
12.视图优点:
- 简化用户操作
- 可以在多种角度看待同一数据
- 可以对机密数据提供安全保护
- 在视图中可以用较少的条件去查询内容
- 对于重构数据库提供了一定的逻辑独立性
13.哪些视图不能更新
一般行列自己视图是可以更新的,也有一些不能更新的情况如
- 视图字段有聚合函数
- 视图是由两个或以上基本表导出那不允许更新
- 视图定义中含义group by、distinct的语句
- 在不允许更新的视图上导出的视图也不允许更新
14.基本表和视图的区别和联系
15.SQL语句:
数据库查询:select
数据库定义:create、drop、alter
数据库操纵:insert、update、delete
数据库控制:grant、revoke
16.关系的基本操作:
选择、投影、并、差、笛卡尔积
17.什么是数据库的安全性:保护数据库防止不合法使用造成数据泄露、更改或破坏;
18.实现数据库安全性控制的方法和技术
19.数据库的完整性:数据库完整性是指数据库中数据的正确性和相容性,实现数据库完整性的一个重要方法是触发器。
正确性——数据符合现实世界语义,反映当前的实际状况。如性别只能男或者女
相容性——同一对象在不同关系表中的数据是符合逻辑。如成绩一般在0-100
20.触发器:实现数据库完整性的重要技术,又叫事件条件动作规则。是用户定义在关系表上的一类由事件驱动的过程
当特定事件发生时(对于表的增删改查操作),对规则的条件进行检查,如果条件成立则执行规则当中的动作,否则不执行。
插入的记录中成绩超过100,则提示用户,并回滚此操作。
21.封锁协议:
在运用S锁和X锁进行封锁时,具有的一些规则。称为封锁协议
(1)一级封锁协议:修改数据之前必须加X锁,事务结束才释放避免丢失修改
(2)二级封锁协议:在一级基础上增加读取数据之前必须加上S锁,读完即可释放
避免丢失修改和读脏数据
(3)三级封锁协议:在一级封锁基础上增加事务在读取数据之前必须加S锁,直到事务结束才释放避免丢失修改、读脏数据和不可重复读
22.数据库设计过程:
1.需求分析阶段:准确了解与分析用户需求,是设计过程的基础,作为地基
2概要设计:采用(E-R)图来表示。这个阶段主要是将现实世界的数据需求→概念模型,并对概念模型进行优化和调整。
3逻辑设计:概念模型转换为特定DBMS所支持的数据模型
4物理设计:根据逻辑设计的结果,进一步调整和优化数据库的物理结构
5数据库实施(进行试运行)
6数据库的运行和维护(正式投入运行)
23.数据库的几种故障:
- 事务故障:只影响事务,通过撤销或者重做恢复
- 系统故障:由于断电、非正常关机引起;通过设置检查点(最近一次日志记录的地址)和运行日志恢复
- 介质故障(硬故障):外存故障,如磁盘损坏。破坏性最大,可能性小,需要重装数据库重做已完成的事务
- 计算机病毒:人为的破坏,恶作剧者研发的一种计算机程序,可以像病毒一样繁殖和传播。对于计算机系统和数据库会造成很大的危害
24.数据库管理系统的功能
25.概念模型?
是数据模型的一种,是现实世界到机器世界的一个中间层次,用于信息世界的建模,通过认识和分析现实世界的实体属性与联系,画出E-R图来描述现实世界。在数据库设计过程当中,在概要设计阶段,就需要将现实世界的具体事务转化为概念模型
26.数据库三级模式两级映像
27.关系代数的基本运算
28.SQL的特点
29.实现数据库安全性控制的方法和技术
30.关系模型的完整性规则
1.实体完整性:主属性不能取空值。由于现实世界中的实体都是可区分的,因此关系数据库中每个元组应该是可区分的,是唯一的。例如对于学生关系,可能有相同名字的学生,但是学号这个主属性是唯一的。
2.参照完整性,定义了外码与主码之间的引用规则,外码联系了一个主码,相互之间形成参照;例如:学生表(学号,姓名,性别,专业,班长) 班长与学号相对应,班长是外码,学生关系既参照关系也是被参照
3.用户定义的完整性,实体完整性和参照完整性是关系模型必须要满足的,被称为关系的两个不变性。不同的关系数据库系统根据应用环境的不同,还需要一些特殊的约束条件。例如定义学生成绩在0-100
31.数据库完整性和安全性概念的区别和联系
数据的完整性和安全性是两个不同概念
联系:两者都是对数据库中的数据进行控制
区别
1、内容不同
数据库完整性是指数据的正确性和相容性。
数据库安全性是指保护数据库,以防止不合法的使用造成的数据泄密、更改或破坏。
2、对象不同
数据库安全性的防范对象是非法的操作和未授权的用户
数据库完整性的防范对象是不符合语义的数据
32.数据库查询优化的重要性和可能性
查询优化是数据库管理系统实现查询处理的关键技术
用户只需要提出“做什么”,不必指出“怎么干,也可以获得较高的查询效率
系统可以将优化做的很好
相比之下,非关系系统,用户必须了解存取路径,查询效率由用户的存取策略决定,且系统是无法优化的
33.DBMS查询优化的的一般准则
1.选择运算应尽可能先做:这是为了减少中间结果的规模
2.投影和选择运算同时进行:为了避免重复扫描。.如果有若干个投影和选择运算对同一个关系进行操作,可以再扫描关系的同时,完成所有所有运算、
3将投影运算与其前后的双目运算结合起来
4.尽量少做笛卡尔积,将选择运算和其前面的笛卡尔积结合起来成为一个连接运算
5.提取公共子表达式(公因子)
34.为什么要并发控制
在某时刻,多个事务同时进行。可能会出现多个用户同时存取同一数据,此时如果不加以控制,则可能会破坏事务的一致性和隔离性
35.什么是活锁,原因和解决办法
一个事务长时间等待操作数据,但系统始终未批准,事务有可能永远等待,产生饥饿现象;避免策略:先来先服务算法,按优先级策略
36.什么是死锁,预防死锁的方法
死锁:两个或多个事务均处于等待状态,每个事务都在等待另一个事务封锁的数据,导致在没有外力的作用下,任何事务都不能向前推进的一种死等待现象
预防:
1.一次封锁法:次性将所有需要数据加锁(难以确定所要封锁的对象)
2.顺序封锁法:预先对数据对象规定封锁顺序,所有事务按照此顺序来进行封锁(维护成本高,很难按规定顺序去封锁)
37.检测死锁和解除
检测:1.超时法:如果一个事务的等待时间超过了规定的时限,就认为发生了死锁2.等待图法:资源分配图反映了事务的等待情况,如果出现回路就说明出现死锁
解除:选择处理死锁代价最小的事务,将其撤销,释放该事务所有锁
38.什么样的调度是正确的
串行调度是正确的,执行结果等价于串行调度的调度也是正确的,这种调度叫做可串行化调度
当且仅当并行调度与某一次串行执行的结果相同。可串行性是并发事务正确调度的准则
39.关系数据库中查询处理的步骤
1.查询分析:对语句进行语法分析。判断查询语句是否符合SQL语法
2.查询检查:对语句进行语义检查,检查数据库对象(关系名,属性名)是否有效,是否符合完整性约束
3.查询优化:选择高效的查询策略
4.查询执行:根据优化得到的优化策略生成执行计划
40.E-R图包括哪几种冲突
1.属性冲突:不同的实体对同一属性的定义不同【零件号,有的部门定为整数,有的定为字符型】
2.命名冲突:同名异义、异名同义
【班长可以是学生班长也可以是车间班长】
3.结构冲突:同一实体在不同的应用中有不同的抽象【职工既可以作实体 也可以当做属性】
41.数据库常用哪些索引
顺序文件上的索引、B+树索引,哈希索引,位图索引
B+树索引将索引属性组织成B+树的形式,叶节点为属性值和元组指针
Hash索引:通过一定的算法计算出哈希值,然后映射出对应的数据存储位置。检索速度快,但是哈希值可能存在碰撞
42.什么是断言
断言是指更高级的约束
断言创建后,任何对于断言中所涉及的关系操作都会引发数据库对断言的检查,任何使断言为假的操作都会被拒绝执行。
43.登记日志文件为什么必须先写日志文件,后写数据库
把对数据的修改写到数据库中和把表示这个修改的日志记录写到日志文件中是两个不同的操作。有可能在这两个操作之间发生故障,即这两个写操作只完成了一个。
如果先写数据库,而在运行记录中没有登记下这个修改,则以后就无法恢复这个修改了。
如果先写日志,但没有修改数据库,按日志文件恢复时只不过是多执行一次不必要的UNDO操作,并不会影响数据库的正确性。所以为了安全,一定要先写日志文件,然后写数据库的修改。
44.什么是检查点记录,包括什么内容
1.利用日志技术进行数据库恢复时,要检查所有的日志记录,确定哪些事务需要重做或者撤销,耗费大量时间,为了解决这个问题,出出现了检查点记录
2.增了加重新开始文件,数据库发生故障关闭或者崩溃,那么在恢复的过程中,不需要恢复所有事务日志,而是从该检查点 开始进行恢复
3.改善恢复效率
45.两段锁协议
两段锁协议并发控制机制中应当来保证调度是可串行化的。也就是说,所有的事务必须分两个阶段对数据项进行加锁和解锁;阶段分别为获得封锁阶段,也叫拓展阶段,他要求在进行读写操作之前应当要申请加锁。第二个是释放封锁阶段,也叫收缩阶段,在释放一个封锁之后,事务不能再进行封锁
46.数据字典
数据字典是关于数据库中数据的描述及原数据,不是数据本身。他记录了数据库中所有定义的信息,包括关系模式,视图定义,索引等,在进行查询优化时候,数据字典中的信息是重要依据。、在数据库设计过程当中不断修改,充实与完善,在数据库设计中占有很重要的地位。
47.什么是游标
游标:是嵌入式SQL的一个技术,他是系统给用户开设的一个数据缓冲区。例如,SQL语句可以产生多条记录比如输出20条学生记录,但是C语言只能去处理一条的记录,然后就可以让数据存在缓冲区中,通过指针可以把记录一条一条的取出来,很好的协调了sql和C语言数据处理的方式
一些SQL语句
- 定义模式
Create schema<模式名>authorition<应户名>;
- 删除模式
Drop schema<模式名>cascade/restrict;(cascade 级联,删除模式时候把数据库全部对象删除;restrict限制,模式中有定义下属数据库对象(表或者视)拒绝删除)
- 定义基本表
Create table<表名>(<列名> <数据类型><完整性约束>);
- 修改基本表
Alter,drop,
Alter table <表名>add colume 新列名 数据类型 完整性约束]
学生表增加入学时间
Alter table student add entance Date;
课程表中课程名字唯一
Alter table Course add uniqe(Cname):
年龄字符型改为int
Alter table Student alter colume Sage int ;
- 删除基本表
Drop table<表名>【cascade/restrict】
级联:相关的所有对象都一起删除
限制:对表的删除是有限制的,不能有视图触发器之类的
- 建立索引
Create【unique】Index Stu on student(Sno);
Create【unique】Index Cou on Course(Cno);
Create【unique】Index SCn on SC(Sno ASC(升序),Cno DESC(降序)));
- 修改索引
将SC表A索引名字改为B
Alter Index A rename to B;
- 删除索引A
Drop Index A
- 数据查询
9.1查询学生学号,姓名
Select Sno,Sname
From Student;
9.2查询全体学生记录
Select* (相当于全部的属性)
From Student;
9.3 查询全体学生姓名,出生年月,和院系,取别名
Select Sname Name,‘Bir’ Bir,2024-Sage Birthday,Sdept Yuanxi
From Student;
9.4查询计算机系全体学生名单
Select Snme
From Student
Where Sdept=’CS’;
9.5查询年龄在20以下的学生,并且升序
Select Sname,Sage
From Student
WHere Sage<20;
Order by Sage ASC;
Order by 是按降序desc或者升序
9.6查询年龄在20-30的学生
Selcet Sname,Sage
From Student
Where Sage (Not)Between 20 And 30;
9.7查询计算机系,数学系,信息系学生姓名和性别
Select Sname,Sex
From Student
Where Sdept In (‘CS’,’MA’,’IS’);
9.8使用通配符+Like
- 查询索引姓刘的
Select Sname
From student
Where Sname like ‘刘%’;
(2)三个字的姓刘的
刘_ _
1.平均成绩大于等于90的学生学号和平均成绩
Select Sno,Avg(Grade)
From SC
Group by Sno
Having Avg(Grade)>=90
2.查询每个学生和选修课情况
Select Student.Sname,Sc.Cno
From Student,SC
Where Student.Sno=SC.Sno;
3.查询选修2号课程且成绩在90分以上的所有学生学号和姓名
Secle Student.Sno,Sname
From SC,Student
Where SC.Sno=Student.Sno and SC. Cno=‘2’And SC.Grade>90;