【转】MYSQL入门学习之五:MYSQL的字符集

转载地址: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;

时间: 2024-07-31 18:25:10

【转】MYSQL入门学习之五:MYSQL的字符集的相关文章

【转】MYSQL入门学习之三:全文本搜索

转载地址:http://www.2cto.com/database/201212/173873.html 一.理解全文本搜索 www.2cto.com 1.MyISAM支持全文本搜索,而InnoDB不支持. 2.在使用全文本搜索时,MySQL不需要分别查看每个行,不需要分别分析和处理每个词.MySQL创建指定列中各词的一个索引,搜索可以针对这些词进行.这样MySQL可以快速有效地决定哪些词匹配,哪些词不匹配,它们匹配的频率,等等. 二.使用全文本搜索 1.为了进行全文本搜索,必须索引被搜索的列,

【转】MYSQL入门学习之十一:触发器的基本操作

转载地址:http://www.2cto.com/database/201212/176781.html 触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):  www.2cto.com DELETE: INSERT: UPDATE: 使用触发器,需要MySQL5或之后的版本支持. 一.触发器基本操作 1.创建触发器 创建触发器时,需要给出4条信息: 唯一的触发器名:(虽然MySQL5允许不同的表上的触发器名称相同,但一般最好不要这么做

【转】MYSQL入门学习之十三:自定义函数的基本操作

转载地址:http://www.2cto.com/database/201212/177382.html 一.自定义函数(UDF)的特性和功能  www.2cto.com 函数能分返回字符串,整数或实数; 可以定义一次作用于一行的简单函数,或作用于多行的组的集合函数; 二.基本操作 1.创建自定义函数 CREATE [AGGREGATE] FUNCTION function_name RETURNS {STRING|INTEGER|REAL} BEGIN //函数实现的语句 END; aggre

【数据库】9.0 MySQL入门学习(九)——获得数据库和表的信息、日期计算、查询

1.0 SELECT语句用来从数据表中检索信息. SELECT what_to_select FROM which_table WHERE conditions_to_satisfy; what_to_select指出你想要看到的内容,可以是列的一个表,或*表示"所有的列". which_table指出你想要从其检索数据的表. WHERE子句是可选项,如果选择该项,conditions_to_satisfy指定行必须满足的检索条件. 2.0 在我的博文"MySQL入门学习(八

MySQl Study学习之--MySQl二进制日志管理

MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log):   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库(DML)的语句的执行时间信息    不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能    主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新    用于在主复制服务器上记录所有将发送

【转】MYSQL入门学习之二:使用正则表达式搜索

转载地址:http://www.2cto.com/database/201212/173869.html 一.正则表达式介绍 www.2cto.com 正则表达式是用来匹配文本的特殊的串(字符集合). 二.使用MySQL正则表达式 1.MySQL仅仅支持多数正则表达式实现的一个很小的子集. 2.LIKE匹配整个列值:而REGEXP匹配列值的子串,如果被匹配的文本在列值中出现,REGEXP将会找到它,相应的行将被返回.看下面的例子: www.2cto.com [sql] mysql>select

MySQL入门学习笔记之存储引擎

1.什么是存储引擎? 存储引擎就是指表的类型,数据库的存储引擎决定了表在计算机中的存储方式.而存储引擎的概念是MySQL的特点,是一种插入式的存储引擎概念.MySQL数据库中的表可以使用不同的方式存储. 2.如何查看MySQL 中支持的存储引擎? 在命令行中输入: SHOW ENGINES; mysql>SHOW ENGINES; +--------------------+---------+---------------------------------------------------

mysql入门基础及mysql安装(01)

数据库是存储和管理数据的仓库,但是数据库本身不能直接存储数据,数据存储在表中.存储数据必然会用到数据库服务器,即就是一台计算机上安装了数据库管理程序,如:mysql. sql语言:用于管理数据库中的数据,如:存取数据,查询数据,更新数据.        数据定义语言(Data Definition Language,DDL):定义数据库,表等. CREATE,ALTER,DROP语句 数据操作语言(Data Manipulation Language,DML):对数据库进行添加,修改,删除操作.

Mysql入门基础(2)-->Mysql数据库安装

第二章      Mysql数据库安装 声明数据库和实例: 在数据库领域中有两个词很容易混淆,它们就是"实例"和数据库(database). 数据库:在物理操作系统上,以文件或者其它的形式文件类型的集合,在Mysql中,数据库文件可以,frm,myd,myi,等文件结尾, 数据库实例:是由数据库后台的进程/线程以及一共享内存区组成,这个区域可以被运行在后台线程和进程所共享,需要牢记的是,数据实例才是真正用来操作数据库文件的. 实例和数据库的通常关系是---1对1对应的,即是一个实例对用