【MySQL随手记】字符集编码的查看、指定与修改语句
目錄
1 字符集編碼的查看
1.1 數據庫的查看方法
1.2 數據表的查看方法
1.3 所有字段的查看方法
2 字符集編碼的指定
2.1 數據庫的指定方法
2.2 數據表的指定方法
2.3 字段的指定方法
3 字符集編碼的修改
3.1 數據庫的修改方法
3.2 數據表的修改方法
3.2.1 僅修改表
3.2.2 同時修改表和字段
3.3 字段的修改
1 字符集編碼的查看
MySQL中并沒有查看數據庫、數據表和字段的字符集編碼的專門方法,要想查看編碼信息需要采用show關鍵字得到完整的信息,其中包含了字符集信息。
1.1 數據庫的查看方法
# 查看 數據庫 的字符集 show create database 數據庫名# 例如: show create database company;1.2 數據表的查看方法
下列語句查看的是數據表的完整信息,不僅能夠看到表的默認字符集,也能看到各個字段的字符集信息。
# 查看 數據表 的字符集編碼 show create table 表名# 例如 show create table dept1;?1.3 所有字段的查看方法
?涉及字符集編碼的數據類型是char, varchar, text,主要查看這些數據類型的字段。
# 查看 所有字段 的字符集編碼 show full columns from 表名# 例如 show full columns from dept1;?
2 字符集編碼的指定
MySQL中字符型數據編碼的設置包括兩個部分:字符集(character)和校對集(collate),一個字符集有多種校對集,如果不指定會采用默認校對集。
2.1 數據庫的指定方法
在創建數據庫時記得指定默認編碼,后面的數據表如果不做特殊的指定,都按這個編碼保存數據。
# 創建 數據庫 并且指定 默認字符集編碼 create database 數據庫名 default character set 字符集名 [collate 校對集名]# 例如 create database school default character set utf8 collate utf8_bin;再創建一個數據表,并且顯示創建信息,觀察表及其字段的字符集編碼是否與數據庫一致。
# 創建一個數據表,有三個涉及字符編碼的字段 create table student (stu_id int, stu_name varchar(10), gender char(1), introduction text(50));# 查看表的創建信息 show create table student;2.2 數據表的指定方法
數據表的編碼不專門指定依照數據庫的編碼,也可以單獨指定該表自己的默認編碼,語句如下:
# 創建 數據表 并且指定 數據表的默認編碼 create table 表名(字段1 類型1, 字段2 類型2, ...) default character set = 字符集名 [collate 校對集名]# 例如 create table course (cou_id int, cou_name varchar(20)) default character set = gbk collate gbk_bin; show create table course;# 查看創建信息 show create table course;?可以看到新建表及其字段的編碼與數據庫是不同的,指定生效。
2.3 字段的指定方法
字段的編碼如不做特殊指定會與其所在數據表的默認編碼保持一致,也可以單獨指定某個字段自己的字符集編碼。
# 創建 數據表 并且指定 字段 的字符集編碼 create table 表名 (字段名 數據類型 character set 字符集名 [collate 校對集名]);# 例如,這里將 gender 的編碼指定為GBK,采用默認校對集 create table teacher (tea_id int, tea_name varchar(10), gender char(1) character set gbk, course varchar(20)); show create table teacher;這樣設置會導致gender(性別)字段只能傳入中文字符,不能傳入非中文字符。傳入如下兩行數據:
insert into teacher values(1,'張三','男','語文'); # 新增成功 insert into teacher values(2,'李四', M,'數學'); # 新增失敗第二行的新增語句的報錯信息為:Unknown column 'M' in 'field list' ,其原因就在于字符編碼錯誤。
?
3 字符集編碼的修改
3.1 數據庫的修改方法
需要注意的是,數據庫的默認字符集被修改之后,修改前已有的數據表及其字段的編碼維持原狀,新建表的字符集編碼如不做特殊指定將與數據庫的編碼保持一致。
# 修改 數據庫 的默認字符集 alter database 數據庫名 default character set 字符集名 [collate 校對集名]# 例如 alter database company default character set latin1;# 查看數據庫當前的字符集編碼 show create database company;?可以看到,數據庫默認字符集編碼的修改已經生效,下面再查看修改前就創建的表的編碼:
show create table dept1;?可以看到表及其各個字段的編碼都沒有變。然后我們再新建一個表,觀察新表的默認編碼:
create table emp1 (emp_id int, emp_name varchar(10));可以看到新建表的默認編碼已經與被修改的數據庫的默認編碼保持一致了。
3.2 數據表的修改方法
對于數據表的修改,有 default 和 covert to 兩種語句,前者僅僅是調整表的默認字符集,不涉及修改前已經添加的字段;后者會連同字段一起被改掉。
3.2.1 僅修改表
# 僅修改 表 的默認字符集 alter 表名 dept1 default character set 字符集名 [collate 校對集名]# 例如 alter table dept1 default character set gbk collate gbk_bin;# 再添加一個新字段 alter table dept1 add `level` varchar(5);# 查看表的創建信息 show table dept1;可以觀察到,新增字段的編碼為表的默認編碼,修改前就已被創建的字段的編碼不變。
3.2.2 同時修改表和字段
# 同時修改 表 和 字段 的默認編碼 alter table 表名 convert to character set 字符集名 [collate 校對集名] # 例如 alter table dept1 convert to character set utf8 collate utf8_bin;# 查看創建信息 show create table dept1;修改后,數據表和表中所有字段的字符集編碼是一致的,之前是GBK的level字段也變成了UTF8.
3.3 字段的修改
字段的修改語句比較長,修改字段時要重新指定數據類型(即使不變也要寫),然后設置字符集編碼,語句格式為:
# 修改 字段 的編碼 alter table 表名 change 字段名 字段名 數據類型 character set 字符集名 collate 校對集名# 例如 alter table dept1 change dname dname varchar(14) character set gbk;# 查看創建信息 show create table dept1;總結
以上是生活随笔為你收集整理的【MySQL随手记】字符集编码的查看、指定与修改语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ajax解析json中的对象数组对象,在
- 下一篇: 【MySQL随手记】一个踩坑记录:在安全