日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 字符串类型

發布時間:2024/1/17 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 字符串类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

字符串類型

字符串類型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。該節描述了這些類型如何工作以及如何在查詢中使用這些類型。

類型大小用途
CHAR0-255字節定長字符串
VARCHAR0-65535 字節變長字符串
TINYBLOB0-255字節不超過 255 個字符的二進制字符串
TINYTEXT0-255字節短文本字符串
BLOB0-65 535字節二進制形式的長文本數據
TEXT0-65 535字節長文本數據
MEDIUMBLOB0-16 777 215字節二進制形式的中等長度文本數據
MEDIUMTEXT0-16 777 215字節中等長度文本數據
LONGBLOB0-4 294 967 295字節二進制形式的極大文本數據
LONGTEXT0-4 294 967 295字節極大文本數據

CHAR 和 VARCHAR 類型類似,但它們保存和檢索的方式不同。它們的最大長度和是否尾部空格被保留等方面也不同。在存儲或檢索過程中不進行大小寫轉換。

BINARY 和 VARBINARY 類似于 CHAR 和 VARCHAR,不同的是它們包含二進制字符串而不要非二進制字符串。也就是說,它們包含字節字符串而不是字符字符串。這說明它們沒有字符集,并且排序和比較基于列值字節的數值值。

BLOB 是一個二進制大對象,可以容納可變數量的數據。有 4 種 BLOB 類型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它們區別在于可容納存儲范圍不同。

有 4 種 TEXT 類型:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。對應的這 4 種 BLOB 類型,可存儲的最大長度不同,可根據實際情況選擇。


數據庫實例操作charvarvhar:

mysql>?create?table?t5?(->?n1?char(10),->?n2?varchar(10)->?); Query?OK,?0?rows?affected?(0.03?sec) mysql>?insert?into?t5?values?('?hello?','?hello?'); Query?OK,?1?row?affected?(0.01?sec) mysql>?select?concat('!',n1,'!'),concat('!',n2,'!')?from?t5; +--------------------+--------------------+ |?concat('!',n1,'!')?|?concat('!',n2,'!')?| +--------------------+--------------------+ |?!?hello!???????????|?!?hello?!??????????| +--------------------+--------------------+ 1?row?in?set?(0.00?sec)

CHAR(M), VARCHAR(M)不同之處

????CHAR(M)定義的列的長度為固定的,M取值可以為0~255之間,當保存CHAR值時,在它們的右邊填充空格以達到指定的長度。當檢 索到CHAR值時,尾部的空格被刪除掉。在存儲或檢索過程中不進行大小寫轉換。CHAR存儲定長數據很方便,CHAR字段上的索引效率級高,比如定義 char(10),那么不論你存儲的數據是否達到了10個字節,都要占去10個字節的空間,不足的自動用空格填充。

????VARCHAR(M)定義的列的長度為可變長字符串,M取值可以為0~65535之間,(VARCHAR的最大有效長度由最大行大小和使用 的字符集確定。整體最大長度是65,532字節)。VARCHAR值保存時只保存需要的字符數,另加一個字節來記錄長度(如果列聲明的長度超過255,則 使用兩個字節)。VARCHAR值保存時不進行填充。當值保存和檢索時尾部的空格仍保留,符合標準SQL。varchar存儲變長數據,但存儲效率沒有 CHAR高。如果一個字段可能的值是不固定長度的,我們只知道它不可能超過10個字符,把它定義為 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。為什么”+1″呢?這一個字節用于保存實際使用了多大的長度。 從空間上考慮,用varchar合適;從效率上考慮,用char合適,關鍵是根據實際情況找到權衡點。

????CHAR和VARCHAR最大的不同就是一個是固定長度,一個是可變長度。由于是可變長度,因此實際存儲的時候是實際字符串再加上一個記錄 字符串長度的字節(如果超過255則需要兩個字節)。如果分配給CHAR或VARCHAR列的值超過列的最大長度,則對值進行裁剪以使其適合。如果被裁掉 的字符不是空格,則會產生一條警告。如果裁剪非空格字符,則會造成錯誤(而不是警告)并通過使用嚴格SQL模式禁用值的插入.


字符串text實例:

mysql>?create?table?t6?(->?n1?text->?); Query?OK,?0?rows?affected?(0.02?sec) mysql>?insert?into?t6?values?("sdasadsadsaaaaadassd")->?; Query?OK,?1?row?affected?(0.01?sec) mysql>?select?*?from?t6; +----------------------+ |?n1???????????????????| +----------------------+ |?sdasadsadsaaaaadassd?| +----------------------+ 1?row?in?set?(0.00?sec)

注意:與char和varchar不同的是,text不可以有默認值,其最大長度是2的16次方-1。


ENUM 類型

ENUM 是一個字符串對象,其值通常選自一個允許值列表中,該列表在表創建時的列規格說明中被明確地列舉。

在下列某些情況下,值也可以是空串("") 或 NULL;

如果將一個無效值插入一個?ENUM?(即,一個不在允許值列表中的字符串),空字符串將作為一個特殊的錯誤值被插入。事實上,這個字符串有別于一個"普通的"空字符串,因為這個字符串有個數字索引值為 0。稍后有更詳細描述。

如果一個?ENUM?被聲明為?NULLNULL?也是該列的一個合法值,并且該列的缺省值也將為NULL?。如果一個?ENUM?被聲明為?NOT NULL,該列的缺省值將是該列表所允許值的第一個成員。

mysql>?create?table?t7?(->?gender?enum?('男','女')->?); Query?OK,?0?rows?affected?(0.01?sec) mysql>?insert?into?t7?values?('男'); Query?OK,?1?row?affected?(0.01?sec) mysql>?insert?into?t7?values?('女'); Query?OK,?1?row?affected?(0.00?sec) mysql>?insert?into?t7?values?('中'); ERROR?1265?(01000):?Data?truncated?for?column?'gender'?at?row?1 mysql>?select?*?from?t7; +--------+ |?gender?| +--------+ |?男?????| |?女?????| +--------+ 2?rows?in?set?(0.00?sec)



轉載于:https://blog.51cto.com/215687833/2349068

總結

以上是生活随笔為你收集整理的mysql 字符串类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。