新聞中心

創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營銷,專業(yè)領(lǐng)域包括成都網(wǎng)站制作、成都做網(wǎng)站、電商網(wǎng)站制作開發(fā)、微信小程序開發(fā)、微信營銷、系統(tǒng)平臺(tái)開發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營銷的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶提供全方位的互聯(lián)網(wǎng)品牌整合方案!
mysql 中的字符串類型有
CHAR、
VARCHAR、
TINYTEXT、
TEXT、
MEDIUMTEXT、
LONGTEXT、
ENUM、
SET 等。
下表中列出了 MySQL 中的字符串?dāng)?shù)據(jù)類型,括號(hào)中的
M表示可以為其指定長度。
| 類型名稱 | 說明 | 存儲(chǔ)需求 |
|---|---|---|
| CHAR(M) | 固定長度非二進(jìn)制字符串 | M 字節(jié),1<=M<=255 |
| VARCHAR(M) | 變長非二進(jìn)制字符串 | L+1字節(jié),在此,L< = M和 1<=M<=255 |
| TINYTEXT | 非常小的非二進(jìn)制字符串 | L+1字節(jié),在此,L<2^8 |
| TEXT | 小的非二進(jìn)制字符串 | L+2字節(jié),在此,L<2^16 |
| MEDIUMTEXT | 中等大小的非二進(jìn)制字符串 | L+3字節(jié),在此,L<2^24 |
| LONGTEXT | 大的非二進(jìn)制字符串 | L+4字節(jié),在此,L<2^32 |
| ENUM | 枚舉類型,只能有一個(gè)枚舉字符串值 | 1或2個(gè)字節(jié),取決于枚舉值的數(shù)目 (最大值為65535) |
| SET | 一個(gè)設(shè)置,字符串對(duì)象可以有零個(gè)或 多個(gè)SET成員 | 1、2、3、4或8個(gè)字節(jié),取決于集合 成員的數(shù)量(最多64個(gè)成員) |
VARCHAR 和 TEXT 類型是變長類型,其存儲(chǔ)需求取決于列值的實(shí)際長度(在前面的表格中用 L 表示),而不是取決于類型的最大可能尺寸。
例如,一個(gè) VARCHAR(10) 列能保存一個(gè)最大長度為 10 個(gè)字符的字符串,實(shí)際的存儲(chǔ)需要字符串的長度 L 加上一個(gè)字節(jié)以記錄字符串的長度。對(duì)于字符 “abcd”,L 是 4,而存儲(chǔ)要求 5 個(gè)字節(jié)。
CHAR 和 VARCHAR 類型
CHAR(M) 為固定長度字符串,在定義時(shí)指定字符串列長。當(dāng)保存時(shí),在右側(cè)填充空格以達(dá)到指定的長度。M 表示列的長度,范圍是 0~255 個(gè)字符。
例如,CHAR(4) 定義了一個(gè)固定長度的字符串列,包含的字符個(gè)數(shù)最大為 4。當(dāng)檢索到 CHAR 值時(shí),尾部的空格將被刪除。
VARCHAR(M) 是長度可變的字符串,M 表示最大列的長度,M 的范圍是 0~65535。VARCHAR 的最大實(shí)際長度由最長的行的大小和使用的字符集確定,而實(shí)際占用的空間為字符串的實(shí)際長度加 1。
例如,VARCHAR(50) 定義了一個(gè)最大長度為 50 的字符串,如果插入的字符串只有 10 個(gè)字符,則實(shí)際存儲(chǔ)的字符串為 10 個(gè)字符和一個(gè)字符串結(jié)束字符。VARCHAR 在值保存和檢索時(shí)尾部的空格仍保留。
【實(shí)例】下面將不同的字符串保存到 CHAR(4) 和 VARCHAR(4) 列,說明 CHAR 和 VARCHAR 之間的差別,如下表所示。
| 插入值 | CHAR(4) | 存儲(chǔ)需求 | VARCHAR(4) | 存儲(chǔ)需求 |
|---|---|---|---|---|
| ' ' | ' ' | 4字節(jié) | '' | 1字節(jié) |
| 'ab' | 'ab ' | 4字節(jié) | 'ab' | 3字節(jié) |
| 'abc' | 'abc ' | 4字節(jié) | 'abc' | 4字節(jié) |
| 'abcd' | 'abcd' | 4字節(jié) | 'abcd' | 5字節(jié) |
| 'abcdef' | 'abcd' | 4字節(jié) | 'abcd' | 5字節(jié) |
對(duì)比結(jié)果可以看到,CHAR(4) 定義了固定長度為 4 的列,無論存入的數(shù)據(jù)長度為多少,所占用的空間均為 4 個(gè)字節(jié)。VARCHAR(4) 定義的列所占的字節(jié)數(shù)為實(shí)際長度加 1。
TEXT 類型
TEXT 列保存非二進(jìn)制字符串,如文章內(nèi)容、評(píng)論等。當(dāng)保存或查詢 TEXT 列的值時(shí),不刪除尾部空格。
TEXT 類型分為 4 種:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。不同的 TEXT 類型的存儲(chǔ)空間和數(shù)據(jù)長度不同。
- TINYTEXT 表示長度為 255(28-1)字符的 TEXT 列。
- TEXT 表示長度為 65535(216-1)字符的 TEXT 列。
- MEDIUMTEXT 表示長度為 16777215(224-1)字符的 TEXT 列。
- LONGTEXT 表示長度為 4294967295 或 4GB(232-1)字符的 TEXT 列。
ENUM 類型
ENUM 是一個(gè)字符串對(duì)象,值為表創(chuàng)建時(shí)列規(guī)定中枚舉的一列值。其語法格式如下:
<字段名> ENUM( '值1', '值1', …, '值n' )
字段名指將要定義的字段,值 n 指枚舉列表中第 n 個(gè)值。
ENUM 類型的字段在取值時(shí),能在指定的枚舉列表中獲取,而且一次只能取一個(gè)。如果創(chuàng)建的成員中有空格,尾部的空格將自動(dòng)被刪除。
ENUM 值在內(nèi)部用整數(shù)表示,每個(gè)枚舉值均有一個(gè)索引值;列表值所允許的成員值從 1 開始編號(hào),MySQL 存儲(chǔ)的就是這個(gè)索引編號(hào),枚舉最多可以有 65535 個(gè)元素。
例如,定義 ENUM 類型的列('first','second','third'),該列可以取的值和每個(gè)值的索引如下表所示。
| 值 | 索引 |
|---|---|
| NULL | NULL |
| '' | 0 |
| ’first | 1 |
| second | 2 |
| third | 3 |
ENUM 值依照列索引順序排列,并且空字符串排在非空字符串前,NULL 值排在其他所有枚舉值前。
SET 類型
SET 是一個(gè)字符串的對(duì)象,可以有零或多個(gè)值,SET 列最多可以有 64 個(gè)成員,值為表創(chuàng)建時(shí)規(guī)定的一列值。指定包括多個(gè) SET 成員的 SET 列值時(shí),各成員之間用逗號(hào)
,隔開,語法格式如下:
SET( '值1', '值2', …, '值n' )
與 ENUM 類型相同,SET 值在內(nèi)部用整數(shù)表示,列表中每個(gè)值都有一個(gè)索引編號(hào)。當(dāng)創(chuàng)建表時(shí),SET 成員值的尾部空格將自動(dòng)刪除。
但與 ENUM 類型不同的是,ENUM 類型的字段只能從定義的列值中選擇一個(gè)值插入,而 SET 類型的列可從定義的列值中選擇多個(gè)字符的聯(lián)合。
文章標(biāo)題:MySQLCHAR、VARCHAR、TEXT、ENUM、SET(字符串類型)
轉(zhuǎn)載注明:http://m.fisionsoft.com.cn/article/djjeiho.html


咨詢
建站咨詢
