首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 数据库系统概述
1.1.1 数据库技术的发展
1.1.2 数据库系统的组成
1.2 数据模型
1.2.1 数据模型的概念
1.2.2 常见的数据模型
1.2.3 关系数据库的规范化
1.2.4 关系数据库的设计原则
1.2.5 实体与关系
1.3 数据库的体系结构
1.3.1 数据库三级模式结构
1.3.2 三级模式之间的映射
2.1 了解MySQL
2.1.1 MySQL数据库的概念
2.1.2 MySQL的优势
2.1.3 MySQL的发展史
2.2 MySQL 8.0的新特性
2.3 MySQL的应用环境
2.4 MySQL服务器的安装和配置
2.4.1 MySQL服务器安装包的下载
2.4.2 MySQL服务器的安装
2.4.3 启动、连接、断开和停止MySQL服务器
2.4.4 打开MySQL 8.0 Command Line Client
2.5 如何学好MySQL
第3章 使用MySQL图形化管理工具
3.1 安装phpMyAdmin图形化管理工具
3.1.1 phpMyAdmin图形化管理工具简介
3.1.2 下载phpstudy集成开发环境
3.1.3 下载phpMyAdmin
3.1.4 打开phpMyAdmin
3.2 数据库操作管理
3.2.1 创建数据库
3.2.2 修改和删除数据库
3.3 管理数据表
3.3.1 创建数据表
3.3.2 修改数据表
3.3.3 删除数据表
3.4 管理数据记录
3.4.1 使用SQL语句插入数据
3.4.2 使用SQL语句修改数据
3.4.3 使用SQL语句查询数据
3.4.4 使用SQL语句删除数据
3.4.5 通过form表单插入数据
3.4.6 浏览数据
3.4.7 搜索数据
3.5 导入/导出数据
3.5.1 导出MySQL数据库脚本
3.5.2 导入MySQL数据库脚本
3.6 设置编码格式
3.7 添加服务器新用户
3.8 重置MySQL服务器登录密码
4.1 认识数据库
4.1.1 数据库基本概念
4.1.2 数据库常用对象
4.1.3 系统数据库
4.2 创建数据库
4.2.1 使用CREATE DATABASE语句创建数据库
4.2.2 使用CREATE SCHEMA语句创建数据库
4.2.3 创建指定字符集的数据库
4.2.4 创建数据库前判断是否存在同名数据库
4.3 查看数据库(SHOW命令)
4.4 选择数据库(USE命令)
4.5 修改数据库(ALTER命令)
4.6 删除数据库(DROP命令)
当前位置:
首页>>
技术小册>>
MySQL从入门到精通(一)
小册名称:MySQL从入门到精通(一)
### 3.6 设置编码格式 在MySQL数据库管理系统中,正确地设置编码格式(也称为字符集)对于确保数据的正确存储、检索以及跨平台、跨语言的兼容性至关重要。编码格式定义了字符如何在计算机中存储和表示,不同的编码格式支持不同的字符集,包括英文字符、中文字符、特殊符号等。在MySQL中,通过合理配置字符集和校对集(collation),可以有效避免乱码问题,提高数据的准确性和可读性。本章节将详细探讨如何在MySQL中设置编码格式,包括服务器级、数据库级、表级以及列级的设置方法。 #### 3.6.1 理解字符集与校对集 **字符集(Character Set)**:定义了可用于数据库中的字符,包括字母、数字、标点符号等。MySQL支持多种字符集,如`latin1`(西欧语言)、`utf8`(早期版本的UTF-8编码,支持基本多语言平面)、`utf8mb4`(支持完整的Unicode字符集,包括emoji表情等特殊字符)等。 **校对集(Collation)**:定义了字符的比较规则,即如何对字符集中的字符进行排序和比较。不同的校对集可能基于相同的字符集,但排序和比较的规则不同。例如,`utf8_general_ci`(不区分大小写的校对集)和`utf8_bin`(二进制比较,区分大小写)都是基于`utf8`字符集的,但排序和比较规则不同。 #### 3.6.2 服务器级编码设置 服务器级编码设置影响新创建的数据库和表的默认字符集和校对集。可以通过MySQL配置文件(通常是`my.cnf`或`my.ini`)或启动时通过命令行参数来设置。 - **配置文件方式**:编辑MySQL的配置文件,在`[mysqld]`部分添加或修改以下行: ```ini [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci ``` 然后重启MySQL服务使设置生效。 - **命令行参数方式**:在启动MySQL服务时,可以通过添加`--character-set-server=utf8mb4`和`--collation-server=utf8mb4_unicode_ci`参数来指定服务器级字符集和校对集。这种方式适用于临时测试或特定环境下的配置,不建议作为生产环境的长期解决方案。 #### 3.6.3 数据库级编码设置 创建数据库时,可以指定其使用的字符集和校对集。如果服务器级没有指定,或者需要为特定数据库设置不同的编码,可以在创建数据库时明确指定。 ```sql CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 上述命令创建了一个名为`mydatabase`的数据库,并指定其使用`utf8mb4`字符集和`utf8mb4_unicode_ci`校对集。 #### 3.6.4 表级编码设置 与数据库级设置类似,创建表时也可以指定表的字符集和校对集。如果数据库级未指定,或者需要为表设置不同的编码,可以在`CREATE TABLE`语句中明确指定。 ```sql CREATE TABLE mytable ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL ) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 此命令创建了一个名为`mytable`的表,并指定其使用`utf8mb4`字符集和`utf8mb4_unicode_ci`校对集。 #### 3.6.5 列级编码设置 虽然MySQL允许在列级别指定字符集和校对集,但这种做法并不常见,因为通常整个表或数据库会共享相同的编码设置。然而,在某些特殊情况下,如果表中的某些列需要存储特殊字符集的数据,可以单独为这些列指定字符集和校对集。 ```sql CREATE TABLE mytable ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, description TEXT CHARACTER SET latin1 COLLATE latin1_swedish_ci ); ``` 在这个例子中,`name`列使用`utf8mb4`字符集和`utf8mb4_unicode_ci`校对集,而`description`列则使用`latin1`字符集和`latin1_swedish_ci`校对集。 #### 3.6.6 修改现有数据库的编码格式 对于已经存在的数据库、表或列,如果需要修改其编码格式,可以通过`ALTER DATABASE`、`ALTER TABLE`或`ALTER COLUMN`(MySQL中实际使用`MODIFY COLUMN`或`CHANGE COLUMN`)命令来实现。 - **修改数据库编码**: ```sql ALTER DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 注意:直接修改数据库的字符集和校对集可能不会改变已存在表的字符集和校对集,需要单独对表进行修改。 - **修改表编码**: ```sql ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ``` 此命令会将表`mytable`的字符集和校对集修改为`utf8mb4`和`utf8mb4_unicode_ci`,并尝试将表中所有列的字符集也转换为`utf8mb4`。 - **修改列编码**(通常结合修改数据类型): ```sql ALTER TABLE mytable MODIFY COLUMN name VARCHAR(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL; ``` #### 3.6.7 注意事项 1. **数据兼容性**:在修改现有数据库、表或列的编码格式时,务必确保新编码格式能够兼容原有数据,否则可能导致数据丢失或损坏。 2. **性能影响**:使用更复杂的字符集(如`utf8mb4`)可能会稍微增加存储空间和查询处理的开销,但对于支持全球化和多语言内容的现代应用来说,这是值得的。 3. **应用层支持**:确保应用程序也支持新的字符集和校对集,否则即使在数据库层面设置了正确的编码,也可能在应用层出现乱码问题。 4. **备份**:在对数据库进行任何重大更改之前,都应进行备份,以防万一需要回滚更改。 5. **持续监控**:更改编码格式后,应持续监控数据库的性能和数据的正确性,确保更改没有引入新的问题。 通过本章的学习,你应该已经掌握了在MySQL中设置编码格式的基本方法和注意事项。无论是服务器级、数据库级、表级还是列级的编码设置,都需要根据实际需求和数据特点来合理选择和配置,以确保数据的正确性和应用的可靠性。
上一篇:
3.5.2 导入MySQL数据库脚本
下一篇:
3.7 添加服务器新用户
该分类下的相关小册推荐:
MySQL从入门到精通(四)
MySQL从入门到精通(三)
MySQL必知必会核心内容
MySQL 实战 45 讲
细说MySQL(零基础到高级应用)
MySQL从入门到精通(五)
MySQL从入门到精通(二)
SQL零基础到熟练应用(增删改查)
MySQL必会核心问题
MySQL8.0入门与实践