MySQL數(shù)據(jù)庫(十一)——數(shù)據(jù)類型(3)字符串

MySQL CHAR卵渴、VARCHAR鲤竹、TEXT、ENUM碘橘、SET(字符串類型)

字符串類型用來存儲(chǔ)字符串?dāng)?shù)據(jù),還可以存儲(chǔ)圖片和聲音的二進(jìn)制數(shù)據(jù)仰禽。字符串可以區(qū)分或者不區(qū)分大小寫的串比較纺蛆,還可以進(jìn)行正則表達(dá)式的匹配查找。

MySQL中的字符串類型有?CHAR温峭、VARCHAR字支、TINYTEXTTEXT揖庄、MEDIUMTEXT欠雌、LONGTEXTENUM检号、SET?等蛙酪。

下表中列出了 MySQL 中的字符串?dāng)?shù)據(jù)類型翘盖,括號(hào)中的M表示可以為其指定長度。

MySQL 中的字符串?dāng)?shù)據(jù)類型

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 和 VARCHAR 的差別

對(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è)值的索引如下表所示。

值與索引

ENUM 值依照列索引順序排列孤荣,并且空字符串排在非空字符串前甸陌,NULL 值排在其他所有枚舉值前垃环。

提示:ENUM 列總有一個(gè)默認(rèn)值邀层。如果將 ENUM 列聲明為 NULL,NULL 值則為該列的一個(gè)有效值遂庄,并且默認(rèn)值為 NULL寥院。如果 ENUM 列被聲明為 NOT NULL,其默認(rèn)值為允許的值列表的第 1 個(gè)元素涛目。

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)合。

提示:如果插入 SET 字段中的列值有重復(fù)磕谅,則 MySQL 自動(dòng)刪除重復(fù)的值私爷;插入 SET 字段的值的順序并不重要,MySQL 會(huì)在存入數(shù)據(jù)庫時(shí)膊夹,按照定義的順序顯示衬浑;如果插入了不正確的值,默認(rèn)情況下放刨,MySQL 將忽視這些值嚎卫,給出警告。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拓诸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌麻昼,老刑警劉巖奠支,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抚芦,居然都是意外死亡倍谜,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門叉抡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來尔崔,“玉大人,你說我怎么就攤上這事褥民〖敬海” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵消返,是天一觀的道長载弄。 經(jīng)常有香客問我,道長撵颊,這世上最難降的妖魔是什么宇攻? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮倡勇,結(jié)果婚禮上逞刷,老公的妹妹穿的比我還像新娘。我一直安慰自己妻熊,他們只是感情好夸浅,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著固耘,像睡著了一般题篷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厅目,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天番枚,我揣著相機(jī)與錄音,去河邊找鬼损敷。 笑死葫笼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拗馒。 我是一名探鬼主播路星,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了洋丐?” 一聲冷哼從身側(cè)響起呈昔,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎友绝,沒想到半個(gè)月后堤尾,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡迁客,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年郭宝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掷漱。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粘室,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出卜范,到底是詐尸還是另有隱情衔统,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布先朦,位于F島的核電站缰冤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏喳魏。R本人自食惡果不足惜棉浸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望刺彩。 院中可真熱鬧迷郑,春花似錦、人聲如沸创倔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畦攘。三九已至霸妹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間知押,已是汗流浹背叹螟。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留台盯,地道東北人罢绽。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像静盅,于是被迫代替她去往敵國和親良价。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1、MySQL 數(shù)據(jù)類型 MySQL中定義數(shù)據(jù)字段的類型對(duì)你數(shù)據(jù)庫的優(yōu)化是非常重要的明垢。 MySQL支持多種類型蚣常,大...
    garvin閱讀 538評(píng)論 0 1
  • 本文基于MySQL5.6版本進(jìn)行描述從大的方面來講,MySQL的數(shù)據(jù)類型分為4種 數(shù)值類型 日期和時(shí)間 字符串類型...
    黑哥兒666閱讀 744評(píng)論 0 0
  • 很多時(shí)候袖外,我們開發(fā)應(yīng)用系統(tǒng)史隆,底層的數(shù)據(jù)庫表結(jié)構(gòu)都需要開發(fā)人員親自設(shè)計(jì),設(shè)計(jì)的合理與否曼验,關(guān)乎著整個(gè)系統(tǒng)的穩(wěn)定性和運(yùn)行...
    程序猿蛋蛋哥閱讀 1,078評(píng)論 2 10
  • MySQL 字符串?dāng)?shù)據(jù)類型 CHAR & VARCHAR 區(qū)別: CHAR 是一種長度固定的類型;VARCHAR ...
    TinyDolphin閱讀 810評(píng)論 0 1
  • 字段類型數(shù)值MySQL 的數(shù)值數(shù)據(jù)類型可以大致劃分為兩個(gè)類別粘姜,一個(gè)是整數(shù)鬓照,另一個(gè)是浮點(diǎn)數(shù)或小數(shù)。許多不同的子類型對(duì)...
    小慕先森閱讀 935評(píng)論 0 1