转载地址:http://www.2cto.com/database/201212/175541.html
MySQL的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。 www.2cto.com
对于字符集的支持细化到四个层次:服务器(server),
数据库(database),数据表(table)和连接(connection)。
一、MySQL默认字符集
MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。
但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢?
(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1;
(2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的;
(3)启动
mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集;
(4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server;
(5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集;
(6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集;
(7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集; www.2cto.com
简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用latin1存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。
二、查看字符集
1、查看MySQL数据库服务器和数据库字符集
mysql> show variables like '%char%';
+--------------------------+------------------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------------------+
| character_set_client | latin1 |-- 客户端字符集
| character_set_connection | latin1 |
| character_set_database | latin1 |-- 数据库字符集
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |-- 服务器字符集
| character_set_system | utf8 |
| character_sets_dir | D:\APMServ5.2.6\MySQL5.1\share\charsets\ |
+--------------------------+------------------------------------------+
2、查看MySQL数据表(table)的字符集
mysql> show table status from test like '%test%';
+---------------+--------+---------+------------+ +-------------------+
| Name | Engine | Version | Row_format | | Collation |
+---------------+--------+---------+------------+ +-------------------+
| test_char | MyISAM | 10 | Fixed | | hebrew_general_ci |
| test_inn | InnoDB | 10 | Compact | | latin1_swedish_ci |
| test_inn2 | InnoDB | 10 | Compact | | utf8_general_ci |
| test_priority | MyISAM | 10 | Dynamic | | latin1_swedish_ci |
| test_trans | InnoDB | 10 | Compact | | latin1_swedish_ci |
| test_view | NULL | NULL | NULL | | NULL |
+---------------+--------+---------+------------+ +-------------------+ www.2cto.com
3、查看MySQL数据列(column)的字符集
mysql> show full columns from v9_picture;
+-------------+-----------------------+----------------+
| Field | Type | Collation |
+-------------+-----------------------+----------------+
| id | mediumint(8) unsigned | NULL |
| catid | smallint(5) unsigned | NULL |
| typeid | smallint(5) unsigned | NULL |
| title | char(80) | gbk_chinese_ci |
| style | char(24) | gbk_chinese_ci |
| thumb | char(100) | gbk_chinese_ci |
| keywords | char(40) | gbk_chinese_ci |
| description | char(255) | gbk_chinese_ci |
| posids | tinyint(1) unsigned | NULL |
| url | char(100) | gbk_chinese_ci |
| listorder | tinyint(3) unsigned | NULL |
| status | tinyint(2) unsigned | NULL |
| sysadd | tinyint(1) unsigned | NULL |
| islink | tinyint(1) unsigned | NULL |
| username | char(20) | gbk_chinese_ci |
| inputtime | int(10) unsigned | NULL |
| updatetime | int(10) unsigned | NULL |
+-------------+-----------------------+----------------+
三、设置及修改字符集
1、创建数据库指定数据库的字符集
mysql> create database mydb character set gb2312;
mysql> use mydb
mysql> show variables like 'character_set_database';
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| character_set_database | gb2312 |
+------------------------+--------+
2、修改数据库的字符集
(1)、通过SQL修改
mysql> alter database mydb character set utf8;
mysql> show variables like 'character_set_database';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| character_set_database | utf8 |
+------------------------+-------+
(2)、通过配置文件修改
修改文件$MYSQL_HOME\data\mydb\db.opt的内容
default-character-set=utf8
default-collation=utf8_general_ci
为
default-character-set=latin1
default-collation=latin1_swedish_ci
重启MYSQL后生效
3、通过SQL修改字符集
mysql> set character_set_client=utf8;
mysql> set character_set_connection=utf8;
mysql> set character_set_database=utf8;
mysql> set character_set_results=utf8;
mysql> set character_set_server=utf8;
mysql> set character_set_system=utf8;
mysql> set collation_connection=utf8;
mysql> set collation_database=utf8;
mysql> set collation_server=utf8;
- 【数据库】4.0 MySQL入门学习(四)——linux系统环境下MySQL安装
1.0 我的操作系统是CentOS Linux release 7.6.1810 (Core) 系统详细信息如下: Linux version 3.10.0-957.1.3.el7.x86_64 ( ...
- 【数据库】3.0 MySQL入门学习(三)——Windows系统环境下MySQL安装
1.0 我的操作系统是window10 专业版 64位.,不过至少windows7以上系统都是一样的. 关于MySQL如何下载,请参考博文: [数据库]2.0 如何获得MySQL以及MySQL安装 h ...
- 【数据库】9.0 MySQL入门学习(九)——获得数据库和表的信息、日期计算、查询、选择特殊列
1.0 SELECT语句用来从数据表中检索信息. SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to ...
- 【数据库】7.0 MySQL入门学习(七)——MySQL基本指令:帮助、清除输入、查询等
1.0 help == ? 帮助指令,查询某个指令的解释.用法.说明等.详情参考博文: [数据库]6.0 MySQL入门学习(六)——MySQL启动与停止.官方手册.文档查询 https://www. ...
- MySQl Study学习之--MySQl二进制日志管理
MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log) a.它包括的内容及作用例如以下: 包括了全部更新了数据或者已经潜在更新了数据(比方没 ...
- 【转】MYSQL入门学习之二:使用正则表达式搜索
转载地址:http://www.2cto.com/database/201212/173869.html 一.正则表达式介绍 www.2cto.com 正则表达式是用来匹配文本的特殊的串(字符 ...
- 【数据库】1.0 MySQL入门学习(一)——常识性知识
1.0 什么是MySQL(官方发音 My Ess Que Ell)? 是一个快速.多线程.多用户和强壮的SQL数据库服务器,SQL是世界上最流行的标准化数据库语言. 名字来源:共同创办人Monty W ...
- 【转】MYSQL入门学习之七:MYSQL常用函数
转载地址:http://www.2cto.com/database/201212/175864.html 一.数学函数 www.2cto.com ABS(x) ...
- 【数据库】2.0 MySQL入门学习(二)——如何获得MySQL以及MySQL安装
1.0 如何获得MySQL: www.oracle.com https://dev.mysql.com/downloads/ 2.0 例如进入Oracle官网,找到MySQL: 进入页面后,切换到“资 ...
随机推荐
- 解决download.msdn.microsoft.com无法正确解析而无法下载的问题
不知何时,微软 MSDN 订阅软件下载服务IP解析有问题,总是在点击“下载”按钮之后无法打开. 想必又跟“国情”有关,我是使用联通宽带,没测试过电信的. 我是可以通过指定hosts entry来解决: ...
- java中的类和对象
Java中的类是一个模板,它用于描述一类对象的行为和状态. 对象则是类中的一个实例,对象有状态(属性)和行为(方法).例如一条狗就是一个对象,他的状态就是他的颜色,名字,品种:他的行为就是叫,摇尾巴, ...
- SQLSERVER:通过sys.tables实现批量删表、快速统计多表记录和
SQLSERVER:通过sys.tables实现批量删表,或者回滚表 begin try drop table #temp10 end try begin catch end catch select ...
- 错过C++
曾相识的C++--2008年那是还在学校,接触到了这门语言,可遗憾的是当时,自己没有能静下心好好学习这门语言.所以相识了了半年的c++就这样不见. 如今又相逢,但已经感觉到很陌生,陌生的我们互补相认.
- leetcode95 Unique Binary Search Trees II
题目: Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. F ...
- Java日志管理方法(转载)
原文地址:http://www.cnblogs.com/leocook/p/log_java.html java开发中常见的几种日志管理方案有以下4种: 1. Commons-logging + lo ...
- poj 题目分类(2)
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. (5)构造法.(poj329 ...
- [原创]java WEB学习笔记54:Struts2学习之路--- 编写Struts2 的第一个程序,HelloWord,简述 package ,action,result
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- [原创]java WEB学习笔记52:国际化 fmt 标签,国际化的总结
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- Python学习总结9:目录操作方法汇总
os.getcwd():得到当前工作目录,即当前Python脚本工作的目录路径os.listdir():返回指定目录下的所有文件和目录名os.remove():函数用来删除一个文件os.removed ...