(1)创建数据库时不指定字符集会继承服务器字符集 server characterset: utf8 db characterset: latin1 mysqlgt; show g
(1)创建数据库时不指定字符集会继承服务器字符集
server characterset: utf8
db characterset: latin1
mysql> show global variables like 'character_set_database';
+------------------------+--------+
| variable_name | value |
+------------------------+--------+
| character_set_database | latin1 |
+------------------------+--------+
1 row in set (0.00 sec)
mysql> create database mytest2;
query ok, 1 row affected (0.02 sec)
mysql> show create database mytest2;
+----------+------------------------------------------------------------------+
| database | create database |
+----------+------------------------------------------------------------------+
| mytest2 | create database `mytest2` /*!40100 default character set utf8 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)
可见,创建数据库时,若没有指定字符集,那么会继承服务器的字符集,不受character_set_database值的影响。
--------------------------------------分割线 --------------------------------------
ubuntu 14.04下安装mysql
《mysql权威指南(原书第2版)》清晰中文扫描版 pdf
ubuntu 14.04 lts 安装 lnmp nginx\php5 (php-fpm)\mysql
ubuntu 14.04下搭建mysql主从服务器
ubuntu 12.04 lts 构建高可用分布式 mysql 集群
ubuntu 12.04下源代码安装mysql5.6以及python-mysqldb
mysql-5.5.38通用二进制安装
--------------------------------------分割线 --------------------------------------
(2)表创建不指定字符集时会继承数据库字符集
mysql> create database mytest1 charset=latin1;
query ok, 1 row affected (0.04 sec)
mysql> show create database mytest1;
+----------+--------------------------------------------------------------------+
| database | create database |
+----------+--------------------------------------------------------------------+
| mytest1 | create database `mytest1` /*!40100 default character set latin1 */ | ## 这个可以看到,数据库的字符集为latin1
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> use mytest1
database changed
mysql> create table t(id int,name char(20)); ## 创建表t时没有指定字符集
query ok, 0 rows affected (0.13 sec)
mysql> show create table t\g
*************************** 1. row ***************************
table: t
create table: create table `t` (
`id` int(11) default null,
`name` char(20) default null
) engine=innodb default charset=latin1
1 row in set (0.00 sec)
可见,创建表时没有指定字符集,,那么会继承数据库的字符集。
(3)创建表时,字段不指定字符集,则默认继承表的字符集
mysql> show create database mytest1;
+----------+--------------------------------------------------------------------+
| database | create database |
+----------+--------------------------------------------------------------------+
| mytest1 | create database `mytest1` /*!40100 default character set latin1 */ |
+----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> create table t3(id int,name char(20) character set utf8,text char(30));
query ok, 0 rows affected (0.15 sec)
mysql> show create table t3\g
*************************** 1. row ***************************
table: t3
create table: create table `t3` (
`id` int(11) default null,
`name` char(20) character set utf8 default null,
`text` char(30) default null
) engine=innodb default charset=latin1
1 row in set (0.00 sec)
可见,如果表创建时,字段不指定字符集,字段的字符集就会继承表的字符集。
本文永久更新链接地址:
