大家會不會想,哎呀 ,數據庫怎麼這麼多類型呀,寶寶要哭了
其實不用想多了 數據庫得類型比上編程語言得類型種類還是小巫見大巫呢
作爲開發人員得話 能操作數據庫就可以了 (當然也可以學習一下底層得源碼),但就使用而言,數據庫是非常簡單。
一.TEXT類型
TEXT類型是一種特殊的字符串類型,包括TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,其長度和存儲空間的對比下表所示:
各種TEXT類型的區別在於允許的長度和存儲空間不同。因此,在這幾種TEXT類型中,根據需求選取既能滿足需要又節省空間的類型即可。
特別注意:
- 以上各類型無須指定長度!
- 允許的長度是指實際存儲的字節數,而不是實際的字符個數,比如假設一箇中文字符佔兩個字節, 那麼TEXT 類型可存儲 65535/2 = 32767 箇中文字符,而varchar(100)可存儲100箇中文字 符,實際佔200個字節,但varchar(65535) 並不能存儲65535箇中文字符,因爲已超出表達範圍.
mysql> use test; #選擇數據庫test mysql> create table text_example(e_text tinytext, v_char varchar(255)); #創建數據庫表,e_text 可存儲255個字節,v_char可存儲255個字符
mysql> insert into char_example values(90箇中文字符,90箇中文字符); #插入失敗,utfmb4 用3個字節表示一箇中文漢字,會超出tinytext 保存範圍
mysql> insert into char_example values(80箇中文字符,100箇中文字符); #插入成功
|
實戰建議
- 1、 char長度固定, 即每條數據佔用等長字節空間;適合用在身份證號碼、手機號碼等定。超過255字 節的只能用varchar或者text;
- 2、 varchar可變長度,可以設置最大長度;適合用在長度可變的屬性。
- 3、 text不設置長度, 當不知道屬性的最大長度時,適合用text, 能用varchar的地方不用text;
- 4、 如果都可以選擇,按照查詢速度: char最快, varchar次之,text最慢
二.ENUM 和SET類型
1.ENUM類型
ENUM類型又稱爲枚舉類型。在創建表時,ENUM類型的取值範圍以列表的形式指定,其基本形式如下:
屬性名 ENUM('值1', '值2', …, '值n')
其中,“屬性名”參數指字段的名稱,“值n”參數表示列表中的第n個值。ENUM類型的值只能取列表中的一個元素。其取值列表中最多能有65535個值。如果數據值列表在255個以內,那麼一個字節就夠,如果超過255但是小於65535,那麼系統採用兩個字節保存。列表中的每個值獨有一個順序排列的編號,MySQL中存入的是這個編號,而不是列表中的值。默認編號從1開始!
Enum(‘男’,’女’,‘選擇保密’) # ‘男’=>1 ‘女’=>2 ‘選擇保密’=> 3
mysql> use test; #選擇數據庫test mysql> create table enum_example (e_enum enum('男','女','選擇保密') ); #創建表 mysql> insert into enum_example values('男'); #插入記錄,必須是enum 選項中的值 mysql> insert into enum_example values(1); #插入記錄可以用數值表示 mysql>select e_enum + 0 from enum_example; #查詢enum 選項對應的整數值 |
如果ENUM類型加上了NOT NULL屬性,其默認值爲取值列表的第一個元素。如果不加NOT NULL屬性,ENUM類型將允許插入NULL,而且NULL爲默認值。
2.SET類型
在創建表時,SET類型的取值範圍就以列表的形式指定了,其基本形式如下:
屬性名 SET('值1', '值2', …, '值n')
其中,屬性名參數指字段的名稱,“值n”參數表示列表中的第n個值,這些值末尾的空格將會被系統直接刪除。其基本形式與ENUM類型一樣。SET類型的值可以取列表中的一個元素或者多個元素的組合。取多個元素時,不同元素之間用逗號隔開。SET類型的值最多隻能是由64個元素構成的組合。
mysql> use test; #選擇數據庫test mysql> create table set_example (interest set('足球','追劇','籃球','撩妹') ); #創建表 mysql> insert into set_example values( '足球,撩妹' ); #插入記錄,必須是enum 選項中的值 mysql> insert into enum_example values(9); #插入相應位效果等同,9 =>1001 選擇1,4 mysql>select interest+0 from set_example; #以整數的方式查詢 |
更多的關於數據庫我會在下面的文章中陸續的分享,也可以關注‘奇牛學院’
來一起討論