首页 > 数据库 >MySQL字符集与字符序实战

MySQL字符集与字符序实战

时间:2023-07-13 23:33:08浏览次数:42  
标签:字符 set Name show character 字符集 MySQL

一、字符序命名规则

字符序是以对应的字符集名称开头、以_ci(不区分大小写)、_cs(区分大小写)、_bin(按编码值比较,区分大小写)等结尾。字符序的作用就是每种不同的字符集在比较时采用的不同的方法,例如:当会话的collation_connction设置为utf8_general_ci字符序时,字符a和字符A是等价的,而当其设置为utf8_bin时,字符a和字符A是不等价的。

二、字符编码相关参数

1、查看数据库字符集

show variables like '%character%';

系统显示类似如下。

 

  • 以上参数必须保证除了character_set_filesystem以外的值相同,才不会出现乱码的情况。
  • character_set_client、character_set_connection以及character_set_results是客户端的设置。
  • character_set_system、character_set_server以及character_set_database是服务器端的设置。
  • 服务器端的参数优先级是character_set_database > character_set_server > character_set_system。
  • character_set_system参数由于其优先级最低,因此影响不大。修改了客户端字符集、character_set_database、character_set_server之后基本上可以保证不会出现乱码,在代码中设置客户端字符编码时建议通过set names [$Character_Set]来修改客户端的设置。[$Character_Set]为需要设置的字符集。

2、字符集相关SQL语句

show global variables like '%char%';                                  #查看RDS实例字符集相关参数设置
show global variables like 'coll%';                                   #查看当前会话字符序相关参数设置
show character set;                                                  #查看实例支持的字符集
show collation;                                                      #查看实例支持的字符序
show create table [$Table_Name];                                     #查看表字符集设置
show create database [$Database_Name];                               #查看数据库字符集设置
show procedure status;                                               #显示数据库中所有存储过程的基本信息
show create procedure [$Procedure_Name];                             #显示某一个存储过程的详细信息
alter database db_name default charset utf8;                         #修改数据库的字符集
create database db_name character set utf8;                          #创建数据库时指定字符集
alter table tab_name default charset utf8 collate utf8_general_ci;   #修改表字符集和字符序

说明:

  • [$Table_Name]为需要表名。
  • [$Database_Name]为库名。
  • [$Procedure_Name]为存储过程的名称,一般会配合show procedure status;使用。

 

三、修改字符集

1、修改库的字符集

ALTER DATABASE [$Database] CHARACTER SET [$Character_Set] COLLATE [$Collation_Name];

说明:
[$Database]为数据库的库名。

[$Character_Set]为字符集名称。

[$Collation_Name]为排序规则名称,即字符序。

例如:dbsdq库修改为utf8mb4字符集:

alter database dbsdq character set utf8mb4 collate utf8mb4_unicode_ci;

2、修改表的字符集

ALTER TABLE [$Table] CONVERT TO CHARACTER SET [$Character_Set] COLLATE [$Collation_Name];

说明:[$Table]为表名。

例如,dtt2表修改为utf8mb4字符集:

alter table tt2 convert to character set utf8mb4 collate utf8mb4_unicode_ci;

3、修改列字符集

ALTER TABLE [$Table] MODIFY [$Column_Name] [$Field_Type] CHARACTER SET [$Character_Set] COLLATE [$Collation_Name];

说明:
[$Column_Name]为字段名。

[$Field_Type]为字段类型。

例如,tt2表中的c2列修改为utf8mb4字符集

alter table tt2 modify c2  varchar(10) character set utf8mb4 collate utf8mb4_unicode_ci;

标签:字符,set,Name,show,character,字符集,MySQL
From: https://www.cnblogs.com/lkj371/p/17552488.html

相关文章

  • mysql的字符串函数
    对于针对字符串位置的操作,第一个位置被标记为1。ASCII(str)返回字符串str的最左面字符的ASCII代码值。如果str是空字符串,返回0。如果str是NULL,返回NULL。mysql>selectASCII('2');    ->50mysql>selectASCII(2);    ->50mysql>selectASCII('dx'); ......
  • linux环境用mysqldump定时备份Mysql数据
    每日备份mysql的数据,并保留一定数量的备份文件一、Mysql备份脚本backup.shvibackup.sh#!/bin/bash#保存备份个,备份31天的数据number=31#备份保存路径backup_dir=/home/mysql/data/mysqlbackup#日期dd=`data+%Y-%m-%d-%H-%M-%S`#备份工具tool=mysqldump#用户......
  • mysql数据库和数据表
    1、介绍在mysql中,使用数据库database对应一个项目,管理项目下的数据表。使用数据表table对应一个对象结构,管理属性和值。2、数据库命令(1)查看所有数据库showdatabses;(2)删除数据库dropdatabasedatabase_name;(3)创建数据库createdatabasedatabase_name;(4)选择数据库use......
  • mysql数据类型
    1、介绍mysql中实现了sql语法的数据类型,并有所增加。总的来说分为三类:数值、字符和时间日期。声明:字段名数据类型2、数值tinyint、smallint、mediumint、int和bigint分别表示1、2、3、4、8个字节的有符号整数。在数据类型后添加unsigned关键字,表示无符号是,比如intunsigne......
  • mysql where
    1、true/falsewheretrue#全部满足wherefalse#全部不满足大小写忽略,至少在windows下如此2、比较运算符>大于<小于>=大于等于<=小于等于=等于!=不等于<>不等于<=>等于3、逻辑运算符&&and逻辑与||or逻辑或!not逻辑否^xor逻辑异或4、判断NULLI......
  • 2023-07-13:如果你熟悉 Shell 编程,那么一定了解过花括号展开,它可以用来生成任意字符串
    2023-07-13:如果你熟悉Shell编程,那么一定了解过花括号展开,它可以用来生成任意字符串。花括号展开的表达式可以看作一个由花括号、逗号和小写英文字母组成的字符串定义下面几条语法规则:如果只给出单一的元素x,那么表达式表示的字符串就只有"x"。R(x)={x}例如,表达式"a"......
  • 如何在进入url后从json字符集合中选择某个键值对的值?
    进入URL返回的字符集合, 假如只获取result中的formatted_address的值?1、创建查询条件query?选择键 formatted_address? 2、设置响应在发出HTTP请求后接收响应并将其存储在名为xxx变量中,你可以使用XMLHttpRequest或fetchAPI来进行异步请求。......
  • Mysql8.0多源复制和复制过滤
    一、Mysql多源复制1、Mysql多源复制的作用和特点  1)Mysql多源复制作用  选择一台从Mysql从多个主节点将数据复制到本地汇总备份 2)特点  将多台主Mysql服务器数据汇总到一台从Mysql服务器 Mysql5.7以后新增加的功能 方便数据库数据集中化管理和集中化备份2、主Mysq......
  • 循环结构,相关操作字符的库函数,数组
    一,三大循环语句1.while循环当你不知道循环次数时,可以使用while循环#include<stdio.h>intmain(){ inti=123; intj=0; while(i!=j) { scanf("%d",&j); } printf("匹配成功\n"); return0;}以上代码的循环判断条件是i!=j当条件一直成立时,它就会一......
  • mysql-语法
    1、引号单引号、双引号,不加引号,反引号,以及任意的圆括号2、结尾(1);一般,在终端交互时,一条sql语句的末尾需要使用;结尾,才会执行,或者enter后跳行等待输入;基于;还可以在一行中写入多条sql语句,相互间隔,依次执行,即使其中一条出现问题,后续sql语句仍然执行对于非终端提交语句,比如代......