Mysql之存储引擎及字符集
引擎,从字面上理解就是发动机,其实针对mysql也是一样,存储引擎就是mysql的发动机,发动机要安装在不同的机器上面,对mysql来说,不同的机器就是不同的数据表,每个表都有它的引擎,因为我们在执行sq语句的时候,最小的操作单位就是数据表了,所以把引擎放在表里面,然后发动机也有不同的规格,所以我们的引擎也有不同的库,由于mysql是开源的,所以mysql的引擎很多,最常用的就是MyISAM,InnoDB,在mysql5.6以上的版本,默认的引擎是innodb,引擎都有不同的作用,所以在建表的时候要选择合适的引擎;
myIsam:全文索引(full text) ,不支持事务,表级锁,崩溃恢复不好
innodb:不支持全文索引,支持事务,行级锁,崩溃恢复好,性能快,优先推荐使用innodb;
查看默认引擎:我们去配置文件my.ini可以找到默认引擎,在这里也可以修改默认引擎;
![](https://img.haomeiwen.com/i5895872/21fdd62a44409245.png)
查看各个表对应的引擎:
通过查看创建表语句可以看到数据表对应的引擎;
![](https://img.haomeiwen.com/i5895872/aff838e60a545a00.png)
查看所有表的引擎:show table status \G;
![](https://img.haomeiwen.com/i5895872/77ccb5142ad35b48.png)
查看数据库是否支持的引擎:
![](https://img.haomeiwen.com/i5895872/70f22cd08c8e4153.png)
指定表的引擎:在创建表的时候,后面跟一个参数engine就可以了;
![](https://img.haomeiwen.com/i5895872/8e5b51fe59fb1f47.png)
修改表引擎:alter table 表名 engine=引擎;
![](https://img.haomeiwen.com/i5895872/fc610221c27923bd.png)
字符集:不管是数据库还是数据表都有它的编码;
默认编码:我们可以在这里指定默认编码;也可以修改默认编码,修改之后一定要记得重启服务;
![](https://img.haomeiwen.com/i5895872/ca5efa45c0d2541e.png)
查看数据库编码:我们指定了默认编码所以默认是utf8;
![](https://img.haomeiwen.com/i5895872/72bcc9b8c5495b75.png)
指定数据库编码:
![](https://img.haomeiwen.com/i5895872/cfaebd4b2502308e.png)
修改数据库编码:
![](https://img.haomeiwen.com/i5895872/b0375186f112be85.png)
查看数据表编码:由于有默认指定,所以默认是utf8;
![](https://img.haomeiwen.com/i5895872/e54d684bf6fe955e.png)
指定表编码:
![](https://img.haomeiwen.com/i5895872/a9237f60776ff3dd.png)
修改表编码:
![](https://img.haomeiwen.com/i5895872/e9bf047e87bf44cf.png)
字符集校对:主要是解决排序和字符分组问题,每一种字符都有它的校对方式,我们选的是哪一种字符,就用哪一种字符的校对方式:
查看所有的字符集校对:show character set;
![](https://img.haomeiwen.com/i5895872/6a2303298564c8c6.png)
我们给表指定了编码,默认的校对就是该编码所对应的校对,各种校对和编码必须对应起来,不能混用,也可以指定校对方式,那么编码就是该校对方式对应的编码;
查看表所对应的字符集校对:show tables status ;我们可以看到collation对应的是utf8_general_ci,那么这张表的编码肯定是utf8;
![](https://img.haomeiwen.com/i5895872/4801a4def6752828.png)
指定表的字符集校对:collate=校对规则;
![](https://img.haomeiwen.com/i5895872/0fab17497b10ee4b.png)
![](https://img.haomeiwen.com/i5895872/3fdde84d64729ce7.png)