目录
查看当前MySQL Server支持的 CHARACTER SET
查看特定字符集信息(主要包含默认的COLLATION 与 MAXLEN)
MySQL Server 默认的Charset和COLLATION
查看MySQL Server当前的Charset和COLLATION
修改MySQL Server默认的Charset和COLLATION
指定MySQL Server的Charset和Collation
字符集
MySQL字符集包括字符集(CHARACTER)和校对规则(COLLATION)
CHRARCTER SET 与COLLATION的关联
- MySQL服务器支持多种字符集(Character Set)
- 每个字符集至少有一个Collation
- 大部分字符集都有多个Collation
- 每个字符集都有一个默认的Collation
- 两个不同的字符集不会有相同的Collation
- MySQL可以在服务器、数据库、表或字段级别指定使用的字符集
CHRARCTER SET
定义
Chrarcter set --- 一套字符及其编码,即字符集(一般也是用Charrset这一词)
基础操作
查看当前MySQL Server支持的 CHARACTER SET
mysql> show character set;
mysql> show charset;
mysql> show char set;
mysql> select * from information_schema.character_sets;
四种方法任意一种即可
查看特定字符集信息(主要包含默认的COLLATION 与 MAXLEN)
此处查找所有关于utf的字符集
mysql> show character set like 'utf%';
mysql> show charset like 'utf%';
mysql> show char set like 'utf%';
mysql> select * from information_schema.character_sets where CHARACTER_SET_NAME like 'utf%';
四种方法任意一种即可
COLLATION
定义
Collation --- 在字符集内用于比较或排序字符的一套规则,即效验规则
COLLATION后缀
SUFFIX(后缀) | MEANING(意义) |
_ai | Accent-insensitive(不区分重音,相当于不知道关键字) |
_as | Accent-sensitive(区分重音) |
_ci | Case-insensitive(不区分大小写) |
_cs | Case-sensitive(区分大小写) |
_ks | Case-sensitive(区分假名) |
_bin | Binary(二进制) |
基础操作
查看MySQL Server支持的COLLATION
mysql> SHOW COLLATION WHERE Charset = 'utf8mb4';
MySQL Server 默认的Charset和COLLATION
- <=5.7 doc MySQL Server 5.7或之前版本默认的Charset和Collation是:
latin1
和latin1_swedish_ci
- 8.x doc MySQL Server 8.x(当前版本)默认的Charset和Collation是:
utf8mb4
和utf8mb4_0900_ai_ci
utf8和utf8mb4的区别
mb4 000 就是most bytes 4的意思,专门用来兼容四字节的unicode
utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了,所以缺少 Emoji 表情,很多不常用的汉字,以及任何新增的 Unicode 字符
也就相当于UTF8mb4是我们正常情况下所熟知的UTF-8
查看MySQL Server当前的Charset和COLLATION
mysql> show variables like 'character_set_server';
mysql> show variables like 'collation_server';
mysql> select @@character_set_server, @@collation_server;
修改MySQL Server默认的Charset和COLLATION
修改my.cnf配置文件,一般在/etc目录下的
[root@localhost ~]# vim /etc/my.cnf
注意:如果出现my.cnf文件无内容解决方法
打开/etc/mysql/my.cnf 发现里面没有[mysql]、[mysqld]等内容 ,但却指向了其他地方的配置文件
1.查找当前所指目录
[root@localhost /]# ls /etc/my.cnf.d/
2.查看[MySQLD]字节所属地,我的在mysql-default-authentication-plugin.cnf 中
[root@localhost /]# vim /etc/my.cnf.d/mysql-server.cnf
3.查看[client]字节所属地,我的在client.cnf文件中
[root@localhost /]# vim etc/my.cnf.d/client.cnf
修改或添加以下内容到 [mysql] 字节中
default_character_set=utf8
修改或添加以下内容到 [client] 字节中
default-character-set=utf8
重启MySQL服务
[root@localhost /]# systemctl restart mysqld.service
未出现报错,则表示重启成功
登陆MySQL
[root@localhost /]# mysql -uroot -p
查看当前的Charset和COLLATION
mysql> select @@character_set_server, @@collation_server;
指定MySQL Server的Charset和Collation
创建一个指定Charset和Collation的数据库
create database 数据库名 default character set 字符集 collate collation;
mysql> CREATE DATABASE SECOND_DB DEFAULT CHARACTER SET GBK COLLATE GBK_CHINESE_CI;
修改一个指定Charset和Collation的数据库
alter database 数据库名 character set 字符集 collate collation;
mysql> ALTER DATABASE FIRST_DB CHARACTER SET GBK COLLATE GBK_CHINESSE_CI;
MySQL数据库操作
查看
语法格式
SHOW DATABASES [LIKE wild];
功能
列出在MySql服务器主机上的数据库
解析自带数据库
Information_schema --- 主要存储了系统中的一些数据库对象信息:如用户表信息、列信息、权限信
performance_schema --- 主要存储数据库服务器的性能参数
mysql --- 存储了系统的用户权限信息及帮助信息
sys ---5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema 和performance_schema结合起来,查询出更加令人容易理解的数据
查看所创建的数据库
SHOW CREATE DATABASE <数据库名>;
解析:
CREATE DATABASE `FIRST_DB` --- 代表数据库名字为 FIRST_DB
/*!40100 DEFAULT CHARACTER SET gbk */ --- 代表其默认的字符集为GBK
/*!80016 DEFAULT ENCRYPTION='N' */ --- 默认加密为 N
/*! 数字 代码 */ --- 可以跨行注释,但是一定要闭合,不然出错
创建
语法格式
CREATE DATABASE [IF NOT EXISTS]数据库名;
功能
用给定的名字创建一个数据库
注意:
如果数据库已经存在,发生一个错误。
案例
创建数据库 test1
mysql> CREATE DATABASE test1;
删除
语法格式
DROP DATABASE [IF EXISTS]数据库名;
功能
删除数据库中得所有表和数据库
注意:
要小心使用这个命令(慎用)
案例
删除所创建的test1
mysql> DROP DATABASE test1;
切换
语法格式
USE 数据库名;
功能
把指定数据库作为默认(当前)数据库使用,用于后续语句
案例
将当前数据库切换到SECOND_DB
mysql> USE SECOND_DB;
查看当前连接的数据库
mysql> SELECT DATABASE();
查看数据库版本
mysql> SELECT VERSION();
查看当前用户
mysql> SELECT USER();
执行对应系统命令
语法格式
SYSTEM <命令>
作用
在mysql中执行一些Linux上的操作命令
案例
mysql> system ls
mysql> system date
mysql> system cls | clear
注意:
可以使用管道符“ | ”,在mysql也生效