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