MySQL知识点整理
2018-03-06 16:07
190 查看
知识点
1. 关系数据库的规范化(面试重点):范式
(1) 第一范式:每一个属性不可以再分,不满足第一范式的数据库就不适关系型数据库。例如班级这个属性,其中包含了“系别”和“班级”两个属性信息,因此就不符合第一范式。
(2) 第二范式:表中的其他属性对于主关键字完全依赖,而不能只依赖于主关键字的一部分,如主关键字可能是由两部分组成的,其他的属性不能只依赖于其中的一个。
(3) 第三范式:不存在传递依赖。
2. 数据模型:由数据结构、数据操作和完整性约束三部分组成。
3. 常用的数据库模型主要有:层次模型、网状模型、关系模型。
4. MySQL存储引擎,MySQL中的数据用各种不同的拘束存储在文件或内存中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平来提供广泛地、不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。Mysql中提供了多种存储引擎。
(1) InnoDB存储引擎:支持自动增长。优势在于提供了良好的事务管理、崩溃修复能力和并发控制。缺点是其读写效率稍差,占用的数据空间相对比较大。
(2) MyISAM存储引擎:优势在于占用空间小,处理速度快;缺点是不支持事务的完整性和并发性。
(3) MEMORY存储引擎:它的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存,但安全性不高。此存储引擎对标的大小有要求,不能建太大的表。
5. 操作数据表:
(1) 创建
USE dbmin;
CREATE TABLE tb_admin(
id int auto_increment primary key,
user varchar(30) not null,
passward varchar(30)not null,
createtime datatime);
(2) 查看表结构 DESC tb_admin;/DESC tb_admin user;
(3) 修改表结构 ALTER TABLE tb_admin ADD email varchar(50) not null; 也可以是DROP或者是 CHANGE COLUMN修改表项
(4) 复制表 CREATE TABLE tb_new LIKE tb_admin;
6. mysql基础
(1) 算术运算符
(2) 比较运算符 <>即!= ;BETWEEN m AND n;IN(n1,n2,n3...);like用来匹配字符串
7. 增删改查
(1) INSERT dt_admin VALUES(1,’jack’);或者是添加select的结果,也可以添加表中的一部分字段。
(2) UPDATE dt_admin SET username=’pp’ where id=5
(3) DELETE FROM dt_admin WHERE user=’pp’
(4) TRUNCATE db_min 会抹掉表中的所有数据
8. 数据查询
(1) DISTINCT 去除重复
(2) ORDER BY按*字段递增(ASC)递减(DESC)排序
(3) GROUP BY分组查询
(4) 聚合函数查询 COUNT()、SUM()。
(5) 连接查询
① 内连接:连接后的表中的某个字段与每个表中的都相同 where ..=..
② 外连接:LEFT JOIN、RIGHT JOIN不相等的部分用NULL值代替。
9. 索引是为了加快数据检索的速度而产生的,但是建立索引的过程也需要一定的时间。
10. 视图:一个优点是安全,用户不必看到整个数据库的结构,而隐藏部分数据;另一个是符合用户日常业务逻辑,使他们更容易理解数据。在很大的数据库中筛选出我们需要的字段。视图的作用类似于筛选
(1) 作用体现在简单性、安全性、逻辑数据独立性三个方面。
(2) create view scoreinfo as select sno,sname,yw,wy,sx from tb_admin where tb_student.id=tb_score.id;然后在数据库中可以将其检索出来 select * from scoreinfo
11. 数据完整性约束
(1) 实体完整性:关系的主属性不能为空,在MySQL中,实体完整性是通过主键约束和候选键约束来实现的。
(2) 参照完整性:定义外码和主码之间的引用规则,是对关系间引用数据的一种限制。
(3) 用户定义完整性:针对某一应用环境的完整性约束条件
前三个是定义完整性,其他还有命名完整性约束,就是在定义外键等的时候加上CONSTRAINT关键字。
12. 存储过程与存储函数
(1) 是为了保存数据的完整性、一致性以及提高应用性能而采用的一种技术
(2) 创建存储过程 create procedure,创建存储函数 create function
(3) 使用光标cursor 可以达到逐条读取结果集中的记录
(4) 调用存储过程用call,调用存储函数用select function_name(参数)
13. 触发器:由事件来触发某个操作,如INSERT语句、UPDATE语句和DELETE语句,当数据库系统执行这些事件时,就会激活触发器执行相应的操作。
14. 事务:将一系列数据操作捆绑成为一个整体进行统一管理。
(1) 概念:在MySQL中,事务由单独单元的一条或多条SQL语句组成,在这个单元中,每条MySQL语句是相互依赖的。整个单独单元作为一个不可分割的整体,如果单元中一旦某条SQL语句执行失败或者发生错误,整个单元就会回滚,所有受到影响的数据将返回到事务开始以前的状态;如果单元中的所有SQL语句均执行成功,则事务被顺利执行。
(2) ACID:原子性(不可分割)、一致性(所有执行保持同步)、隔离性(并发执行的事务彼此无法看到对方的中间状态)、持久性(事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。)
(3) 语法:begin;/start transaction
15. 多个事务访问同一数据时,可能会存在5类问题,其中3类是数据读取问题(脏读、不可重复读和幻读),以及2类数据更新问题。(面试重点)
(1) 脏读:事务A、B对同一账户进行操作,事务A读取了事务B尚未提交的数据并在此基础上进行操作,而事务B在这之后发生了回滚,这样事务A读取到的数据就是脏数据。
(2) 不可重复读:事务A、B对同一账户进行操作,事务A读取了事务B尚未提交的数据,待事务B进行操作再提交之后,事务A再次读取这个数据,发现该数据已经被事务B修改了。
(3) 幻读:事务A、B对同一账户进行操作,事务A重新执行一个查询,返回一系列符合条件的行,发现其中插入了被事务B提交的行。
(4) 第1类丢失更新:事务A撤销时,发现把已经提交的事务B的更新数据的操作覆盖了。
(5) 第2类丢失更新:事务A覆盖事务B已经提交的数据,造成事务B所做的操作丢失。
ANSI/ISO SQL 92标准定义了4个等级的事务隔离级别,如下表所示:
需要说明的是,事务隔离级别和数据访问的并发性是对立的,事务隔离级别越高并发性就越差。所以要根据具体的应用来确定合适的事务隔离级别,这个地方没有万能的原则。
16. 可采用以下方式优化MySQL性能:
使用索引、将字段很多的表分解成多个表、增加中间表、使用高速缓存等。
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
1. 数据查询语言DQL
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
2 .数据操纵语言DML
数据操纵语言DML主要有三种形式:
1) 插入:INSERT
2) 更新:UPDATE
3) 删除:DELETE
3. 数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、
索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
表 视图 索引 同义词 簇
(1) DDL操作是隐性提交的!不能rollback
4. 数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制
数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚---ROLLBACK
回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK;
3) COMMIT [WORK]:提交。
1. 关系数据库的规范化(面试重点):范式
(1) 第一范式:每一个属性不可以再分,不满足第一范式的数据库就不适关系型数据库。例如班级这个属性,其中包含了“系别”和“班级”两个属性信息,因此就不符合第一范式。
(2) 第二范式:表中的其他属性对于主关键字完全依赖,而不能只依赖于主关键字的一部分,如主关键字可能是由两部分组成的,其他的属性不能只依赖于其中的一个。
(3) 第三范式:不存在传递依赖。
2. 数据模型:由数据结构、数据操作和完整性约束三部分组成。
3. 常用的数据库模型主要有:层次模型、网状模型、关系模型。
4. MySQL存储引擎,MySQL中的数据用各种不同的拘束存储在文件或内存中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平来提供广泛地、不同的功能和能力。通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。Mysql中提供了多种存储引擎。
(1) InnoDB存储引擎:支持自动增长。优势在于提供了良好的事务管理、崩溃修复能力和并发控制。缺点是其读写效率稍差,占用的数据空间相对比较大。
(2) MyISAM存储引擎:优势在于占用空间小,处理速度快;缺点是不支持事务的完整性和并发性。
(3) MEMORY存储引擎:它的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存,但安全性不高。此存储引擎对标的大小有要求,不能建太大的表。
5. 操作数据表:
(1) 创建
USE dbmin;
CREATE TABLE tb_admin(
id int auto_increment primary key,
user varchar(30) not null,
passward varchar(30)not null,
createtime datatime);
(2) 查看表结构 DESC tb_admin;/DESC tb_admin user;
(3) 修改表结构 ALTER TABLE tb_admin ADD email varchar(50) not null; 也可以是DROP或者是 CHANGE COLUMN修改表项
(4) 复制表 CREATE TABLE tb_new LIKE tb_admin;
6. mysql基础
(1) 算术运算符
(2) 比较运算符 <>即!= ;BETWEEN m AND n;IN(n1,n2,n3...);like用来匹配字符串
7. 增删改查
(1) INSERT dt_admin VALUES(1,’jack’);或者是添加select的结果,也可以添加表中的一部分字段。
(2) UPDATE dt_admin SET username=’pp’ where id=5
(3) DELETE FROM dt_admin WHERE user=’pp’
(4) TRUNCATE db_min 会抹掉表中的所有数据
8. 数据查询
(1) DISTINCT 去除重复
(2) ORDER BY按*字段递增(ASC)递减(DESC)排序
(3) GROUP BY分组查询
(4) 聚合函数查询 COUNT()、SUM()。
(5) 连接查询
① 内连接:连接后的表中的某个字段与每个表中的都相同 where ..=..
② 外连接:LEFT JOIN、RIGHT JOIN不相等的部分用NULL值代替。
9. 索引是为了加快数据检索的速度而产生的,但是建立索引的过程也需要一定的时间。
10. 视图:一个优点是安全,用户不必看到整个数据库的结构,而隐藏部分数据;另一个是符合用户日常业务逻辑,使他们更容易理解数据。在很大的数据库中筛选出我们需要的字段。视图的作用类似于筛选
(1) 作用体现在简单性、安全性、逻辑数据独立性三个方面。
(2) create view scoreinfo as select sno,sname,yw,wy,sx from tb_admin where tb_student.id=tb_score.id;然后在数据库中可以将其检索出来 select * from scoreinfo
11. 数据完整性约束
(1) 实体完整性:关系的主属性不能为空,在MySQL中,实体完整性是通过主键约束和候选键约束来实现的。
(2) 参照完整性:定义外码和主码之间的引用规则,是对关系间引用数据的一种限制。
(3) 用户定义完整性:针对某一应用环境的完整性约束条件
前三个是定义完整性,其他还有命名完整性约束,就是在定义外键等的时候加上CONSTRAINT关键字。
12. 存储过程与存储函数
(1) 是为了保存数据的完整性、一致性以及提高应用性能而采用的一种技术
(2) 创建存储过程 create procedure,创建存储函数 create function
(3) 使用光标cursor 可以达到逐条读取结果集中的记录
(4) 调用存储过程用call,调用存储函数用select function_name(参数)
13. 触发器:由事件来触发某个操作,如INSERT语句、UPDATE语句和DELETE语句,当数据库系统执行这些事件时,就会激活触发器执行相应的操作。
14. 事务:将一系列数据操作捆绑成为一个整体进行统一管理。
(1) 概念:在MySQL中,事务由单独单元的一条或多条SQL语句组成,在这个单元中,每条MySQL语句是相互依赖的。整个单独单元作为一个不可分割的整体,如果单元中一旦某条SQL语句执行失败或者发生错误,整个单元就会回滚,所有受到影响的数据将返回到事务开始以前的状态;如果单元中的所有SQL语句均执行成功,则事务被顺利执行。
(2) ACID:原子性(不可分割)、一致性(所有执行保持同步)、隔离性(并发执行的事务彼此无法看到对方的中间状态)、持久性(事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。)
(3) 语法:begin;/start transaction
15. 多个事务访问同一数据时,可能会存在5类问题,其中3类是数据读取问题(脏读、不可重复读和幻读),以及2类数据更新问题。(面试重点)
(1) 脏读:事务A、B对同一账户进行操作,事务A读取了事务B尚未提交的数据并在此基础上进行操作,而事务B在这之后发生了回滚,这样事务A读取到的数据就是脏数据。
(2) 不可重复读:事务A、B对同一账户进行操作,事务A读取了事务B尚未提交的数据,待事务B进行操作再提交之后,事务A再次读取这个数据,发现该数据已经被事务B修改了。
(3) 幻读:事务A、B对同一账户进行操作,事务A重新执行一个查询,返回一系列符合条件的行,发现其中插入了被事务B提交的行。
(4) 第1类丢失更新:事务A撤销时,发现把已经提交的事务B的更新数据的操作覆盖了。
(5) 第2类丢失更新:事务A覆盖事务B已经提交的数据,造成事务B所做的操作丢失。
ANSI/ISO SQL 92标准定义了4个等级的事务隔离级别,如下表所示:
隔离级别 | 脏读 | 不可重复读 | 幻读 | 第一类丢失更新 | 第二类丢失更新 |
READ UNCOMMITED | 允许 | 允许 | 允许 | 不允许 | 允许 |
READ COMMITTED | 不允许 | 允许 | 允许 | 不允许 | 允许 |
REPEATABLE READ | 不允许 | 不允许 | 允许 | 不允许 | 不允许 |
SERIALIZABLE | 不允许 | 不允许 | 不允许 | 不允许 | 不允许 |
16. 可采用以下方式优化MySQL性能:
使用索引、将字段很多的表分解成多个表、增加中间表、使用高速缓存等。
SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
1. 数据查询语言DQL
数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>
2 .数据操纵语言DML
数据操纵语言DML主要有三种形式:
1) 插入:INSERT
2) 更新:UPDATE
3) 删除:DELETE
3. 数据定义语言DDL
数据定义语言DDL用来创建数据库中的各种对象-----表、视图、
索引、同义词、聚簇等如:
CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
表 视图 索引 同义词 簇
(1) DDL操作是隐性提交的!不能rollback
4. 数据控制语言DCL
数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制
数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
1) GRANT:授权。
2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。回滚---ROLLBACK
回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK;
3) COMMIT [WORK]:提交。
相关文章推荐
- 最近用到mysql和mybatis结合常用的知识点坐下整理
- mysql整理的一些重点知识点
- php中关于mysqli和mysql区别的一些知识点整理
- mysql运维必会的一些知识点整理(转自民工哥)
- MYSQL知识点整理
- MySQL知识点整理
- MySQL知识点整理(学习资料)
- MySQL知识点整理
- MySQL高级查询,事务,视图,知识点整理
- 开发使用mysql的一些必备知识点整理(一)初阶
- mysql 知识点整理
- MySQL知识点整理
- 开发使用mysql的一些必备知识点整理(二)查询
- 开发使用mysql的一些必备知识点整理(三)高级
- MySQL数据表的数据类型、如何实现数据完整性以及日期函数等的基本知识点整理
- mySql知识点整理
- 开发使用mysql的一些必备知识点整理(四)与python交互
- php中关于mysqli和mysql区别的一些知识点整理
- mysql的知识点整理
- mysql 索引,死锁 配置 等 基础理论知识整理