郑州做旅游网站的公司,广州网站建设正,无人在线完整免费高清观看,网页设计基础教程第二版课后答案目录
服务器字符集和校对规则
数据库字符集和校对规则
表字符集和校对规则
列字符集和校对规则
例 1
连接字符集和校对规则 MySQL 服务器可以支持多种字符集#xff0c;在同一台服务器、同一个数据库甚至同一个表的不同字段中#xff0c;都可以使用不同的字符集。Oracl…目录
服务器字符集和校对规则
数据库字符集和校对规则
表字符集和校对规则
列字符集和校对规则
例 1
连接字符集和校对规则 MySQL 服务器可以支持多种字符集在同一台服务器、同一个数据库甚至同一个表的不同字段中都可以使用不同的字符集。Oracle 等其它数据库管理系统都只能使用相同的字符集相比之下MySQL 明显存在更大的灵活性。 MySQL 的字符集和校对规则有 4 个级别的默认设置即服务器级、数据库级、表级和字段级。它们分别在不同的地方设置作用也不相同。
服务器字符集和校对规则
修改服务器默认字符集和校对规则的方法如下。 1可以在 my.ini 配置文件中设置服务器字符集和校对规则添加内容如下
[mysqld] character-set-server字符集名称
2连接 MySQL 服务器时指定字符集
mysql --default-character-set字符集名称 -h 主机IP地址 -u 用户名 -p 密码 如果没有指定服务器字符集MySQL 会默认使用 latin1 作为服务器字符集。如果只指定了字符集没有指定校对规则MySQL 会使用该字符集对应的默认校对规则。如果要使用字符集的非默认校对规则需要在指定字符集的同时指定校对规则。 可以用 SHOW VARIABLES LIKE character_set_server 和 SHOW VARIABLES LIKE collation_server 命令查询当前服务器的字符集和校对规则。
mysql SHOW VARIABLES LIKE character_set_server;
------------------------------
| Variable_name | Value |
------------------------------
| character_set_server | gbk |
------------------------------
1 row in set, 1 warning (0.01 sec)mysql SHOW VARIABLES LIKE collation_server;
-------------------------------------
| Variable_name | Value |
-------------------------------------
| collation_server | gbk_chinese_ci |
-------------------------------------
1 row in set, 1 warning (0.01 sec)
数据库字符集和校对规则
数据库的字符集和校对规则在创建数据库时指定也可以在创建完数据库后通过 ALTER DATABASE 命令进行修改具体操作可阅读学习《MySQL修改数据库》一节。 需要注意的是如果数据库里已经存在数据修改字符集后已有的数据不会按照新的字符集重新存放所以不能通过修改数据库的字符集来修改数据的内容。在《MySQL修改字符集步骤详解》一节我们介绍了如何修改已存在数据字符集的方法。 设置数据库字符集的规则如下
如果指定了字符集和校对规则则使用指定的字符集和校对规则如果指定了字符集没有指定校对规则则使用指定字符集的默认校对规则如果指定了校对规则但未指定字符集则字符集使用与该校对规则关联的字符集如果没有指定字符集和校对规则则使用服务器字符集和校对规则作为数据库的字符集和校对规则。 为了避免受到默认值的影响推荐在创建数据库时指定字符集和校对规则。 可以使用 SHOW VARIABLES LIKE character_set_database 和 SHOW VARIABLES LIKE collation_database 命令查看当前数据库的字符集和校对规则。
mysql SHOW VARIABLES LIKE character_set_database;
--------------------------------
| Variable_name | Value |
--------------------------------
| character_set_database | latin1 |
--------------------------------
1 row in set, 1 warning (0.00 sec)mysql SHOW VARIABLES LIKE collation_database;
---------------------------------------
| Variable_name | Value |
---------------------------------------
| collation_database | latin1_swedish_ci |
---------------------------------------
1 row in set, 1 warning (0.00 sec)
表字符集和校对规则
表的字符集和校对规则在创建表的时候指定也可以在创建完表后通过 ALTER TABLE 命令进行修改具体操作可阅读学习《MySQL修改数据表》一节。 同样如果表中已有记录修改字符集后原有的记录不会按照新的字符集重新存放。表的字段仍然使用原来的字符集。 设置表的字符集规则和设置数据库字符集的规则基本类似
如果指定了字符集和校对规则使用指定的字符集和校对规则如果指定了字符集没有指定校对规则使用指定字符集的默认校对规则如果指定了校对规则但未指定字符集则字符集使用与该校对规则关联的字符集如果没有指定字符集和校对规则使用数据库字符集和校对规则作为表的字符集和校对规则。 为了避免受到默认值的影响推荐在创建表的时候指定字符集和校对规则。 可以使用 SHOW CREATE TABLE 命令查看当前表的字符集和校对规则SQL 语句和运行结果如下
mysql SHOW CREATE TABLE tb_students_info \G
*************************** 1. row ***************************Table: tb_students_info
Create Table: CREATE TABLE tb_students_info (id int(11) NOT NULL AUTO_INCREMENT,name varchar(10) DEFAULT NULL,age int(11) DEFAULT NULL,sex char(1) DEFAULT NULL,height float DEFAULT NULL,course_id int(11) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT12 DEFAULT CHARSETutf8
1 row in set (0.00 sec)
列字符集和校对规则
MySQL 可以定义列级别的字符集和校对规则主要是针对相同表的不同字段需要使用不同字符集的情况。一般遇到这种情况的几率比较小这只是 MySQL 提供给我们一个灵活设置的手段。 列字符集和校对规则的定义可以在创建表时指定或者在修改表时调整。语法格式如下
ALTER TABLE 表名 MODIFY 列名 数据类型 CHARACTER SET 字符集名;
例 1
修改 tb_students_info 表中 name 列的字符集并查看。SQL 语句和运行结果如下
mysql ALTER TABLE tb_students_info MODIFY name VARCHAR(10) CHARACTER SET gbk;
Query OK, 11 rows affected (0.11 sec)
Records: 11 Duplicates: 0 Warnings: 0mysql SHOW CREATE TABLE tb_students_info \G
*************************** 1. row ***************************Table: tb_students_info
Create Table: CREATE TABLE tb_students_info (id int(11) NOT NULL AUTO_INCREMENT,name varchar(10) CHARACTER SET gbk DEFAULT NULL,age int(11) DEFAULT NULL,sex char(1) DEFAULT NULL,height float DEFAULT NULL,course_id int(11) DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT12 DEFAULT CHARSETutf8
1 row in set (0.00 sec)
结果显示name 列字符集修改成功。 如果在创建列的时候没有特别指定字符集和校对规则默认使用表的字符集和校对规则。 连接字符集和校对规则
上面所讲的 4 种设置方式确定的都是数据保存的字符集和校对规则。实际应用中还需要设置客户端和服务器之间交互的字符集和校对规则。 对于客户端和服务器的交互操作MySQL 提供了 3 个不同的参数character_set_client、character_set_connection 和 character_set_results分别代表客户端、连接和返回结果的字符集。通常情况下这 3 个字符集是相同的这样可以确保正确读出用户写入的数据尤其是中文字符。字符集不同时容易导致写入的记录不能正确读出。 设置客户端和服务器连接的字符集和校对规则有以下几种方法 1在 my.ini 配置文件中设置以下语句
[mysql] default-character-setgbk
这样服务器启动后所有连接默认使用 GBK 字符集进行连接。 2可以通过以下命令来设置连接的字符集和校对规则这个命令可以同时修改以上 3 个参数character_set_client、character_set_connection 和 character_set_results的值。
SET NAMES gbk;
使用这个方法可以“临时一次性地”修改客户端和服务器连接时的字符集为 gbk。 3MySQL 还提供了下列 MySQL 命令“临时地”修改 MySQL“当前会话的”字符集和校对规则。
set character_set_client gbk; set character_set_connection gbk; set character_set_database gbk; set character_set_results gbk; set character_set_server gbk; set collation_connection gbk_chinese_ci; set collation_database gbk_chinese_ci; set collation_server gbk_chinese_ci;