数据库基础知识点

1.主键 超键 候选键 外键

(1).主 键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。

(2).超 键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。

(3).候选键:是最小超键,即没有冗余元素的超键。

(4).外 键:在一个表中存在的另一个表的主键称此表的外键。

2.数据库事务的四个特性及含义

(1).原子性:整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

(2).一致性:在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。

(3).隔离性:隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行 相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请 求,使得在同一时间仅有一个请求用于同一数据。

(4).持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

3.视图

3.1 视图的引入

(1).视图是一种虚拟的表,是从数据库中一个或者多个表中导出来的表。

(2).数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。

(3).使用视图查询数据时,数据库系统会从原来的表中取出对应的数据。

(4).主要用于简化检索,保护数据,并不用于更新,而且大部分视图都不可以更新.

3.2 视图的作用

(1).使操作简便化,

(2).增加数据的安全性;

(3).提高表的逻辑独立性;

(4).隐藏具体的细节,保护数据;

4.数据库语言汇总

DML(data maintain Language,数据操纵语言) 包含:insert、update、delete和select,

DDL(data define language,数据定义语言)包含:create、drop、alter。

TCL (Transaction Control Language,事物控制语言) SAVEPOINT 设置保存点、ROLLBACK 回滚
、COMMIT 提交。

DCL (Data Control Language,数据控制语言)GRANT 授权,REVOKE 撤销授权、DENY 拒绝授权

5.drop,delete与truncate的区别

一般而言,drop > truncate > delete,在没有备份情况下,谨慎使用 drop 与 truncate,对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。

5.1 delete (只删数据,不删表结构,事务)

(1).delete执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行回滚操作。

(2).delete可以是table和view.

(3).delete只删除数据,不删除表的结构,不会减少表或索引所占用的空间(保留标识计数值).

(4).delete语句为DML,操作会被放到 rollback segment中,事务提交后才生效。如果有相应的 tigger,执行的时候将被触发。

(5).要删除部分数据行采用delete且注意结合where来约束影响范围,回滚段要足够大

(6).若想保留表而将表中数据删除,如果和事务有关,或总是想触发trigger,使用delete。

5.2 drop (删除数据和表结构,非事务)

(1).drop语句将表所占用的空间全释放掉。

(2).删除表用drop,它会删除整个表(结构和数据),

(3).drop语句将删除表的结构 和依赖的约束(constrain),触发器(trigger)索引(index);依赖于该表的存储过程/函数将被保留,但其状态会变为:invalid。

(4).drop是DDL,操作立即生效,原数据不放到 rollback segment中,不能回滚

5.3 truncate (只删数据,不删表结构,非事务)

(1).truncate table一次性从表中删除所有的数据并不把单独的删除操作记录记入日志保存,删除行是不能恢复的。

(2).删除的过程中不会激活与表有关的删除触发器,执行速度快。truncate table 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

(3).truncate删除表中数据,再插入数据时自增长id又从1开始.

(4).当表被truncate 后,表和索引所占用的空间会恢复到初始大小.新行标识所用的计数值重置为该列的种子.

(5).truncate 只针对TABLE,只删除数据 ,不删除表的结构.

(6).若想保留表而将表中数据删除,如果于事务无关,用truncate即可实现.

(7).truncate是DDL,操作立即生效,原数据不放到 rollback segment中,不能回滚

6.索引

索引是由数据库表中一列或者多列组合而成,

(1).索引作用

提高对表中数据的查询速度,建立索引查询速度有数量级提升 ;
类似于图书的目录,方便快速定位,寻找指定的内容;

(2).索引的优缺点

优点:提高查询数据的速度;

缺点:创建和维护索引的时间增加了;

(3).索引的分类

(1).普通索引 : 这类索引可以创建在任何数据类型中;

(2).唯一性索引 : 使用 UNIQUE 参数可以设置,在创建唯一性索引时,限制该索引的值必须是唯一的;

(3).单列索引 : 在表中可以给单个字段创建索引,单列索引可以是普通索引,也可以是唯一性索引,还可以是全文索引;

(4).多列索引 : 多列索引是在表的多个字段上创建一个索引;

7.执行顺序说明

mysql 中 where 、 group by 、having、order by 的执行顺序

(1).where将最原始记录中不满足条件的记录删除(尽量将不符合条件的记录筛选掉,可以减少分组的次数)。

(2).Group By关键字对视图进行分组 。

(3).Having关键字指定的筛选条件,将分组后不满足条件的记录筛选掉。

(4).按照Order By语句对视图进行排序。

(5).where子句在聚合前先筛选记录,也就是说作用在group by和having子句前。而having子句在聚合后对组记录进行筛选。

文章标题:数据库基础知识点

发布时间:2020-01-17, 14:11:51

最后更新:2020-01-17, 14:11:51