MySQL基础——[面试系列]

一、存储引擎
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.csdn.net/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的区别

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值