在mysql中,漢字可以用CHAR和VARCHAR型別。 CHAR和VARCHAR類型聲明的長度表示使用者想要儲存的最大字元數。 「CHAR(M)」為固定長度字串,在定義時指定字串列長;M表示列的長度,範圍是「0~255」個字元。 「VARCHAR(M)」是長度可變的字串,M表示最大列的長度,範圍是「0~65535」。
本教學操作環境:windows7系統、mysql8版本、Dell G3電腦。
mysql定義漢字儲存類型
#mysql手冊上說:
#在MySQL 5. x版本中,CHAR和VARCHAR類型聲明的長度表示你想要儲存的最大字元數。例如,CHAR(30)可以佔用30個字元。 GBK內碼的情況下,一個漢字佔兩個字節,但是在UTF-8內碼的情況下,一個漢字需要佔用三個字節。
什麼是字元?
百度百科裡說:
字元是指電腦中使用的字母、數字、字和符號,包括:1、2、3、A、B、C、~ ! ·#¥%……—*()—— 等等。 1個漢字字元儲存需要2個位元組,1個英文字元儲存需要1個位元組,2個數字為一個位元組。例如在VB中求字串的長度時,len(str(1234))=4,len(1234)=2。
字元是可使用多種不同字元方案或程式碼頁來表示的抽象實體。例如,Unicode UTF-16 編碼將字元表示為 16 位元整數序列,而 Unicode UTF-8 編碼則將相同的字元表示為 8 位元位元組序列。公共語言運行庫使用 Unicode UTF-16(Unicode 轉換格式,16 位元編碼形式)表示字元。
針對公共語言運行庫的應用程式使用編碼將字元表式形式從本機字元方案對應至其他方案。應用程式使用解碼將字元從非本機方案對應至本機方案。
電腦和通訊設備會使用字元編碼的方式來表達字元。意思是指,會將一個字元指定給某個東西。傳統上,是代表整個數量的位元序列,如此,則可透過網路來傳輸,同時亦便於儲存。兩個常用的例子是ASCII和用於統一碼的UTF-8。根據Google的統計,UTF-8是目前最常用於網頁的編碼方式。 [1]相較於大部分的字元編碼把字元對應到數字或位元串,摩斯密碼則是使用不定長度的電子脈衝的序列來表現字元。
什麼是位元組?
位元組,英文名稱是Byte。 Byte是Binary Term的縮寫。一個位元組代表八個位元(bit)。它是通常被當作電腦資訊計量單位,不論被儲存資料的類型為何。它也是程式設計語言裡不可缺少的基本資料型別——整數。
Byte(位元組)可以縮寫成B,例如MB表示Megabyte;Bit(位元)可以縮寫成b,例如Mb表示Megabit。
那麼如果我們想定義最大能儲存10個漢字的字段,該怎麼定義呢?
有了上面的說明,應該很明確了char(10)或是varchar(10)。讓我們來驗證一下:
CREATE TABLE `t1` ( `str` varchar(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
在表格中插入下列資料:
insert into `t1`(`str`) values ('一二三四五六七八九十'); insert into `t1`(`str`) values ('一二三四五六七八九十十一'); insert into `t1`(`str`) values ('abcdefghijklmnopqrst'); insert into `t1`(`str`) values ('1234567890123456');
我們來查看下結果:
由此可以印證上面說的內容,而且如果超出了定義的範圍,mysql會自動截斷,我們在實際應用中應該注意。
CHAR 和 VARCHAR 類型
#CHAR(M) 為固定長度字串,在定義時指定字串列長。儲存時,在右側填充空格以達到指定的長度。 M 表示列的長度,範圍是 0~255 個字元。
例如,CHAR(4) 定義了一個固定長度的字串列,包含的字元數量最大為 4。當檢索到 CHAR 值時,尾部的空格將會被刪除。
VARCHAR(M) 是長度可變的字串,M 表示最大列的長度,M 的範圍是 0~65535。 VARCHAR 的最大實際長度由最長的行的大小和使用的字元集決定,而實際佔用的空間為字串的實際長度加 1。
例如,VARCHAR(50) 定義了一個最大長度為 50 的字串,如果插入的字串只有 10 個字符,則實際儲存的字串為 10 個字元和一個字串結束字元。 VARCHAR 在值儲存和擷取時尾部的空格仍保留。
【實例】下面將不同的字串儲存到 CHAR(4) 和 VARCHAR(4) 列,說明 CHAR 和 VARCHAR 之間的差別,如下表所示。
插入值 | CHAR(4) | #儲存需求 | VARCHAR(4) | 儲存需求 |
---|---|---|---|---|
' ' | ' ' | 4位元組 | ##''##1字節 | |
' | ab '4位元組 | ' | ab'3位元組 | |
'' | abc'4位元組 | ' | abc'4位元組 | |
'#' | abcd'4位元組 | #' | abcd##'5位元組 | ' |
'abcd | '4位元組 | 'abcd | '#5位元組 | ##【相關推薦: | mysql影片教學
以上是mysql 漢字用什麼類型的詳細內容。更多資訊請關注PHP中文網其他相關文章!