1. 程式人生 > >MySQL 修改表預設字符集行為

MySQL 修改表預設字符集行為

前言

針對以下修改表字符集的行為做個記錄

ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name;

實驗過程

The word DEFAULT is optional. The default character set is the character set that is used if you do not specify the character set for columns that you add to a table later (for example, with ALTER TABLE ... ADD column).

官方文件的意思是修改表的預設字符集行為,只會對後面新增的沒有指定字符集的欄位有效

我們驗證下:

CREATE TABLE `test_default_char` (
  `id` int(11) NOT NULL,
  `name` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

往裡面插兩條記錄,分別帶emoji和不帶emoji

 insert into test_default_char values  (1,'哈嘍');
 insert into test_default_char values  (2,'哈嘍');

修改表字符集,新增新的列

 alter table test_default_char  CHARACTER SET utf8mb4;
 alter table test_default_char add c1 varchar(10);

繼續往裡面插兩條記錄,分別帶emoji和不帶emoji

 insert into test_default_char values  (3,'哈嘍','哈嘍');
 insert into test_default_char values  (4,'哈嘍','哈嘍');

檢視結果

 mysql> select * from test_default_char;
+----+---------+------------+
| id | name    | c1         |
+----+---------+------------+
|  1 | 哈嘍    | NULL       |
|  2 | 哈嘍?   | NULL       |
|  3 | 哈嘍    | 哈嘍       |
|  4 | 哈嘍?   | 哈嘍       |
+----+---------+------------+
4 rows in set (0.00 sec)

我們發現就第四條記錄的c1 欄位是能看到emoji的

小結

修改表預設字符集的行為,只是針對新加的欄位的在沒有指定字符集的時候,給該欄位確定字符集。老的欄位還是原先的字符集,因此在使用中會出現表的字符集明明是utf8mb4的,但是確存不了emoji。因此,推薦不用要這種方式修改表的預設字符集

原文連結

相關推薦

MySQL 修改預設字符集行為

前言 針對以下修改表字符集的行為做個記錄 ALTER TABLE tbl_name DEFAULT CHARACTER SET charset_name; 實驗過程 The word DEFAULT is optional. The default charact

MySQL修改預設字符集修改表字段的預設字符集

修改表的預設字符集: ALTER TABLE table_name DEFAULT CHARACTER SET character_name; 修改表字段的預設字符集: ALTER TABLE table_name CHANGE field&n

修改mysql預設字符集

mysql 表預設字符集與其對應的資料庫的字符集一致,修改表的預設字符集就是修改資料庫的預設字符集。修改配置檔案my.ini[client]default-character-set=utf8[mysql]default-character-set=utf8[mysqld] 

mysql修改、字段、庫的字符集

database convert 默認 arch rac 修改表 var nbsp 編碼 修改數據庫字符集: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE …];

Linux系統下修改mysql資料庫的預設字符集

在建立mysql資料庫時,字符集編碼預設狀態下為latin1。如果要支援中文,需要在建立資料庫時設定字符集編碼為utf8: create database 庫名 character set utf8;

mysql修改、欄位、庫的字符集

修改資料庫字符集: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE …]; 把表預設的字符集和所有字元列(CHAR,VARCHAR,TEXT)改為新的字符集

mysql 修改、列的字符集和校對規則

將表的所有資料轉為另外一種字符集和校對規則 To change the table default character set and all character columns (CHAR, V

mysql修改中某個字段的默認值

div align default 分割 註釋 htm http roi ref Mysql中用SQL增加、刪除字段,修改字段名、字段類型、註釋,調整字段順序總結 在網站重構中,通常會進行數據結構的修改,所以添加,刪除,增加mysql表的字段是難免的,有時為了方

程序媛計劃——mysql修改結構

normal desc def 查看 score div alua int dup #查看表的結構 mysql> desc score; +------------+--------------+------+-----+---------+------------

MySQL修改結構

engine win into 不成功 被占用 ima roo 雲上 add 分區表? 環境說明:公司生產庫中,有一張大表,占用了很大一部分空間,大小約240G左右,現在的策略是,每隔一段時間刪除一些表中的數據,但是由於mysql innoDB引擎的優化機制,刪除數據後還

mysql修改結構語句

modify cat div name 註釋 comment script drop 語句 一: 修改表信息 1.修改表名 alter table test_a rename to sys_app; 2.修改表註釋 alter table sys_a

mysql修改引擎Engine

部分 detail alter csdn 紅色 blog def fault mysq 修改my.ini,在[mysqld]下加上default-storage-engine=INNODB 其中紅色字體部分是要指定的引擎名稱。用sql語句修改已經建成表的引擎:alter t

mysql 修改結構

use 默認值 new ear not varchar data 重命名 int 增加列: # 增加列:tag(筆記)、sort_num alter table e_user add tag varchar(50) not null default "筆記" com

9)-MySQL修改結構

屬性設置 多個 新的 不想 after 業務 我們 自動增加 完成 MySQL ALTER TABLE語句簡介 可以使用alter table語句來更改現有表的結構。 alter table語句可用來添加列,刪除列,更改列的數據類型,添加主鍵,重命名表等等。 以下說明了a

mysql修改名,列名,列型別,新增列,刪除

alter table test rename test1; --修改表名 alter table test add column name varchar(10); --新增表列 alter table test drop column name; --刪除表列

mysql 修改結構

批量修改表名的sql語句 alter table old_name rename new_name; --修改表名 alter table test add column add_name varc

MySQL修改結構操作命令總結

在我們使用mysql的時候,有時會遇到須要更改或者刪除mysql的主鍵,我們能夠簡單的使用alter table table_name drop primary key;來完成。以下我使用資料表table_test來作了樣例。1、首先建立一個數據表table_test:create table table

MySQL修改-防止SQL重複執行

--刪除列 drop PROCEDURE if EXISTS add_col_homework; create procedure add_col_homework() BEGIN IF EXISTS (SELECT * FROM information_schema.COLUMNS WHERE TABLE

mysql修改、列編碼

ALTERTABLE  `uc_users_bak` CHANGE  `nick_name`  `nick_name` VARCHAR( 100 ) CHARACTERSET utf8 COLLATEutf8_general_ciNULLDEFAULT NULL