文字字串型別
鏈結
整數型別,浮點數型別和定點型別
二進位制字串型別
字串型別用來儲存字串資料,除了可以在儲存字串資料之外,還可以儲存其他資料,比如和聲音的二進位制資料。(mysql還支援兩類字元型資料:文字字串型別。文字字串二進位制字串)
表一型別名稱
說明儲存需求
char(m)
固定長度非二進位制字串
m位元組,1<=m<=255
varchar(m)
變長非二進位制字串
l+1位元組,在此l<=m和1<=m<=255
tinytext
非常小的非進製字串
l+1位元組,在此l<28
text
小的非二進位制字串
l+2位元組,在此l<216
mediumtext
中等大小的非二進位制字串
l+3位元組,在此l<232
enum
列舉型別,只能乙個列舉字串值
1或2位元組,取值於列舉值的數目(最大值為65535)
set乙個設定,字串物件可以有零個或多個set成員
1,2,3,4或8位元組,取值於集合成員的數量(最多為64個成員)
上面的l是實際長度varchar和text型別都是邊長型別,其儲存需求取決於列值的實際長度(前面的**中用l表示),而不是取決於型別的最大可能尺寸。例如,乙個varchar(10)列能儲存最大長度為10個字元的字串,實際的儲存需要是字串的長度l加上1位元組(記錄字串的長度)。對於字元"abcd",l是4而儲存要求是5位元組。
char和varchar型別
char(m)為固定長度字串,在定義時指定字串列長。當儲存時在右側填充空格,以達到指定的長度。m表示列長度,m的範圍時0~255個字元。例如
,char(4)定義了乙個固定長度的字串列,其包含的字元個數最大為4。當檢索到char值時,尾部的空格將被刪除。
varchar(m)是長度可變的字串,m表示最大列長度。m的範圍是0-65535。varchar的最大實際長度由最長的行的大小和使用的字符集確定,而實際占用的空間為字串的實際長度加1。例如,varchar(m)是長度可變的字串,m表示最大列長度。m的範圍是0-65535。varchar的最大實際長度由最長的行的大小和使用的字符集確定,而實際占用的空間為字串的實際長度加1。例如,varchar(50)定義了乙個最大長度為50的字串,如果插入的字串只有10個字元,則實際儲存的字串為10個字元和乙個字串結束字元。varchar在值儲存和檢索時尾部的空格仍保留。
下面用不同字串儲存到char(4)與varchar(4)儲存區別
表二插入值
char(4)
儲存需求
varchar(4)
儲存需要
『』『\s\s\s\s』
4位元組『』
1位元組『ab』
『ab\s\s』
4位元組『ab』
3位元組『abc』
『abc\s』
4位元組『abc』
4位元組『abcd』
『abcd』
4位元組『abcd』
4位元組『abcdf』
『abcd』
4位元組abcd
4位元組從上表可以看出,不管插入的長度為多少,占用的空間均為4個位元組;varchar定義的列所佔位元組數均為實際長度+1。
char和varchar取出時的區別
表二中最後一行的值只有在使用"不嚴格"模式時,字串才會被截斷插入;如果mysql執行在』嚴格』,超過列長度的值不會被儲存,並且會出現錯誤資訊 「error 1406(22001)」:data too long for column",text型別enum型別enum是乙個字串物件,其值為表建立時在列規定中列舉的一列值。語法格式如下:設定嚴格模式 set session 只在當前操作介面有效 set global 全域性有效,全域性設定。 set session sql_mode =『strict_trans_tables』 修改完之後退出當前客戶端重新登陸即可。
欄位名 enum
('值1','值2',.
....
.'值n'
)
先建立一張測試表
再插入資料
然後取出資料
定義改enum型別的列(『zhangsan』,『lisi』,『wangwu』),改列可以取的值和每個值的索引如表三所示表三值
索引null
null『』0
zhangsan
1lisi
2wangwu
3enum值依照索引順序排列,並且空字串排在非空字串前,null值排在其他所有的列舉值前。
enum型別的字段在取值時,只能在指定的列舉列表中取,而且一次只能取乙個。建立的成員中有空格時,其尾部的空格將自動被刪除。enum值在內部用整數表示,並且每個列舉值均有乙個索引值:列表值所允許的成員值從1開始編號,mysql儲存的就是這個索引編號。列舉最多可以有65535個元素。setset是乙個字串物件,可以有零或多個值。set列最多可以有64個成員,其值為表建立時規定的一列值。指定包括多個set成員的set列值時,各成員之間用逗號(,)間隔開。語法格式如下:enum列總有乙個預設值:如果將enum列宣告為null,null值則為該列的乙個有效值,並且預設為null;如果enum列被宣告為notnull,其預設值為允許的值列表的第乙個元素。
set
('值1','值2'..
....
'值n'
)
與enum型別相同,set值在內部用整數表示,列表中每乙個值都有乙個索引編號。當建立表時,set成員值的尾部空格將自動被刪除。與enum型別不同的是,enum型別的字段只能從定義的列值中選擇乙個值插入,而set型別的列可從定義的列值中選擇多個字元的聯合。
如果插入set欄位列值有重複,則mysql自動刪除重複的值;插入set欄位的值的順序不重要,mysql會存入資料庫時按照定義的順序顯示;如果插入了不正確的值,預設情況下,mysql將忽視這些值,並給出警告。
MYSQL資料庫表字段型別(一)
整數型別 浮點數型別和定點數型別 日期與時間型別 鏈結 字串型別 二進位制字串型別 數值型別主要用來儲存數字,mysql提供了多種數值資料型別,不同的資料型別提供了不同的取值範圍,可以儲存的值範圍越大,其所需要的儲存空間也會越大。型別名稱 說明儲存需求 tinyint 很小的整數 1位元組small...
MYSQL資料庫表字段型別(三)
二進位制字串型別 鏈結整數型別,浮點數型別和定點型別 文字字串型別 mysql的二進位制資料型別有bit,binary,mediumblob和longblob。本節將講解各類二進位制字串型別的特點和使用方法。表一列出了mysql中的二進位制資料型別。表一型別名稱 說明儲存需求 bit m 位欄位型別...
修改Oracle資料庫表字段型別
修改user表的name欄位型別從varchar2改為clob 1.新增乙個備份字段 alert table user add name back clob 2.複製name的值到備份欄位name back update user set name back name 3.刪除原來的字段user a...