设置表的字符编码
有时候MySQL中的表需要存储中文,需要设置表的字符编码为utf8,否则默认的字符编码有可能不能正确处理中文,那么在MySQL中,如何设置表的字符编码呢?如下:
方法一:创建表的时候指定编码形式和
// 改变整张表的编码
mysql> CREATE TABLE stu_test
(
-> id
int(11) NOT NULL,
-> name
varchar(10) DEFAULT NULL,
-> sex enum(‘男’,‘女’),
-> PRIMARY KEY (id
)
-> ) CHARSET=utf8;
Query OK, 0 rows affected (0.04 sec)
方法二:
CREATE TABLE student_tb2
(
Sname
varchar(10) CHARACTER SET utf8
);
在数据类型之后 + CHARACTER SET 编码
方法三:
还有一种方式是通过改变mysql编码的形式,是通过改变Mysql的配置文件,改变下面红框圈出来的为utf-8,记得操作之后一定要重新启动Mysql服务,需要新建数据库老的数据库还是之前的编码。
方法四:
如果定义的字符串类型想使用utf8编码,在定义的时候不适用char或者varchar来定义而是使用nchar或者nvarchar
例:
create table user(id int ,name nvarchar(10)));
create table user(id int,sex nchar(2));
方法五:
create table sex_tb2(
Ssex enum(‘m’,‘w’)
);
alter table sex_tb2 modify Ssex enum(‘男’,‘女’) character set utf8;
Mysql存储引擎
Mysql的存储引擎表示的是Mysql中数据库表的存储类型,不同存储类型,表的存储方式都不相同。
以下四个问题这预习之后做出回答:
(1)什么是存储引擎
(2)存储引擎都有哪些
(3)不同的存储引擎有什么区别
(4)如何改变存储引擎
如何查看当前MySQL版本都支持哪些存储引擎呢?如下命令:
mysql> show engines\G
*************************** 1. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 2. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
…后面还有很多支持的存储引擎,这里限于篇幅,就不粘贴完整的内容了,Support后面是DEFAULT,表示当前使用的存储引擎,上面是InnoDB。
MySQL常用存储引擎的差异:
在回答“MySQL不同的存储引擎有哪些区别?”这样的问题的时候,主要从以下几点来回答就可以(问题的核心),这个问题我们主要研究的是:MyISAM、InnoDB、Memory这三个引擎的区别,那其实我们下面的表格就已经能说明问题了:
种类 锁机制 B-树索引 哈希索引 外键 事务 索引缓存 数据缓存
MyISAM 表锁 支持 不支持 不支持 不支持 支持 不支持
InnoDB 行锁 支持 不支持 支持 支持 支持 支持
Memory 表锁 支持 支持 不支持 不支持 支持 支持
可以在创建表的时候指定存储引擎,如下:
CREATE TABLE ai (
i BIGINT(20) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (i)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
也可以修改已存在表的存储引擎,如下:
ALTER TABLE user ENGINE = InnoDB;
还可以修改配置文件,MySQL Server启动的时候都会加载一个配置文件,windows下是my.ini文件,linux下是my.cnf文件,打开配置文件,在[mysqld]下面添加如下内容,保存,重启MySQL Server服务器,默认就采用配置项指定的存储引擎了。记得操作之后一定要保存再重新启动Mysql服务,需要新建数据库老的数据库用的还是老的存储引擎。