一、存储引擎
MyISAM:每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:.frm(存储表定义),MYD(MYData,存储数据),MYI(MYIndex,存储索引)。MyISAM的表还支持3种不同的存储格式:静态(固定长度)表、动态表、压缩表(myisamchk工具创建)。
InnoDB:具有提交、回滚和崩溃恢复能力的事物安全、行级锁定和外键约束存储引擎。InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。
MEMORY:采用的逻辑存储介质是系统内存
MERGE:MERGE存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,Merge表就是几个相同MyISAM表的聚合器,Merge表中并没有数据。
ARCHIVE:Archive拥有很好的压缩机制,它使用zlib压缩库,在记录被请求时会实时压缩,所以它经常被用来当做仓库使用。
1.如何查看服务器有哪些存储引擎可以使用?
为确定你的MySQL服务器可以用哪些存储引擎,执行命令:show engines;
2.如何选择合适的存储引擎?
(1)选择标准可以分为:
(2)是否需要支持事务;
(3)是否需要使用热备;
(4)崩溃恢复:能否接受崩溃;
(5)是否需要外键支持;
然后按照标准,选择对应的存储引擎即可。
不同的存储引擎都有各自的特点,以适应不同的需求,如下表所示:
功 能 | MYISAM | Memory | InnoDB | Archive |
存储限制 | 256TB | RAM | 64TB | None |
支持事物 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持数索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持数据缓存 | No | N/A | Yes | No |
支持外键 | No | No | Yes | No |
参考链接:https://www.cnblogs.com/wcwen1990/p/6655416.html
二、表数据类型
三、基础操作
四、锁机制
表锁、行锁、共享锁(读锁)、排它锁(写锁)
事务并发会产生什么问题
1)更新丢失:在没有事务隔离的情况下,两个事务都同时更新一行数据,但是第二个事务却中途失败退出, 导致对数据的两个修改都失效了
2)脏读
3)不可重复读
4)幻读
参考资料链接:
https://segmentfault.com/a/1190000009463422
https://www.cnblogs.com/fidelQuan/p/4549068.html
五、事务
参考资料链接:
https://blog.youkuaiyun.com/w_linux/article/details/79666086
六、存储过程
存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它,可以理解为类似于PHP编译好的opcache字节码。
七、触发器
触发器是与表有关的数据库对象,在满足定义条件时触发,并执行触发器中定义的语句集合。触发器只能创建在永久表上,不能对临时表创建触发器。
创建触发器:create trigger trigger_name trigger_event on tbl_name for fach row trigger_stmt;
参考链接:https://www.cnblogs.com/mark-chan/p/5384139.html
八、视图、游标
视图是一种虚拟存在的表,对于使用视图的用户来说基本上是透明的。视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。
创建视图:create or replace view view_name as 查询语句;
九、外键
如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键。
参考链接:
http://www.cnblogs.com/brucemengbm/p/6897410.html
http://www.cnblogs.com/pengyin/p/6375860.html
总结:
牢记以上基础知识内容,理解char和varchar的区别,MyISAM和InnoDB的区别