您好,欢迎访问一九零五行业门户网

MySQL字符集继承关系验证

(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)
可见,如果表创建时,字段不指定字符集,字段的字符集就会继承表的字符集。
本文永久更新链接地址:
其它类似信息

推荐信息