程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MYSQL列類型參考

MYSQL列類型參考

編輯:關於MYSQL數據庫

本附錄介紹MySQL提供的每種列類型。關於利用每種類型的詳細說明請參閱第2 章。除非另有說明,否則所列出的類型早在MySQL3.21.0 中就已經有了。
按下列約定給出類型名說明:
方括號( [ ]) 可選信息。
M 最大顯示寬度。除非另有說明,否則M 應該是一個1到255 之間的整數。
D 有小數部分的類型的小數位數。D 為一個0 到30 之間的整數。D 應該小於等於M - 2。否則,M 的值將調整為D + 2。
在ODBC 術語中,M 和D 稱為“精度”和“小數位數”。
為了描述每種類型,提供下列一個或多個信息:
說明 該類型的簡短說明。
允許的屬性 在CREATE TABLE 或ALTER TABLE 語句中與該類型相關的可選屬性關鍵字。屬性按字母順序列出,但這個順序並不一定與CREATE TABLE 或ALTE R TABLE 中使用的順序相對應。關於這些語句的語法請參閱附錄D。每種列類型在說明中列出的屬性為通用屬性之外的屬性。
允許的長度 串類型的列值所允許的最大長度。
取值范圍 對於數值或日期與時間類型,該類型可表示的值的范圍。對於整數數值類型,給出兩個取值范圍,因為整數列可以是有符號或無符號的,有符號或無符號的取值范圍是不同的。
零值 對於日期和時間類型,如果將非法值插入該列,則存入一個“零”值。
缺省值 類型說明中不明確給出D E FA U LT 屬性時的缺省值。
存儲需求 存儲該類型的值所需的字節數。對於有的類型,這個值是固字的。而這個值在有些類型中根據存放在列中的值的不同是可變的。
比較 對於串類型,比較是否是區分大小寫的。這對排序和索引有效,因為這些操作根據比較進行的。
同義詞 該類型名的同義詞。
注釋 關於該類型的一些雜項說明。
通用屬性 有的屬性對所有類型或對於幾乎所有類型都適用。它們列在這裡,而不是列在每種類型的說明中。可對任何類型指定NULL 或NOT NULL 屬性。還可對所有類型指定D E FA U LT default_value。

MySQL數值類型

MySQL提供了整數和浮點數的數值類型。可根據所要表示的值的范圍選擇相應的類型。
對於整數類型,如果指定了AUTO_INCREMENT 屬性,則列必須為PRIMARY KEY 或UNIQUE 索引。將NULL 插入AUTO_INCREMENT 列將會插入一個大於該列中當前最大值的值。如果指定了UNSIGNED 屬性,則相應的整數類型不允許取負值。
如果指定了ZEROFILL 屬性,則用前導零填充數值類型值以達到列的顯示寬度。
1. TINYINT[(M)]
說明:非常小的整數
允許的屬性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范圍:-128 到127(-27 到27-1),或者如果為U N S I G N E D,則0 到2 5 5(0 到2 8-1)
缺省值:如果列可為NULL;則為NULL;如果列為NOT NULL,則為0
存儲需求:1字節
2. SMALLINT[(M)]
說明:小整數
允許的屬性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范圍:-32768 到3 27 6 7(-215 到215-1),

或者如果為U N S I G N E D,則0 到6 5 5 3 5 (0 到216-1)
缺省值:如果列可為NULL;則為NULL;如果列為NOT NULL,則為0
存儲需求:2 字節
3. MEDIUMINT[(M)]
說明:中等大小的整數
允許的屬性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范圍:-8388608 到8 3 8 8 6 07(-22 3 到22 3-1),或者如果為U N S I G N E D,則0 到16 7 7 2 15(0 到22 4-1)
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為0
存儲需求:4 字節
4. INT[(M)]
說明:標准大小的整數
允許的屬性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范圍:-2147483648 到2 14 7 4 8 3 6 4 7(-231到2 3 1-1),或者如果為U N S I G N E D,則0 到4 2 9 4 9 6 7 2 9 5(0 到2 3 2-1)
缺省值:如果列為NULL,則為NULL;如果列為NOT FULL,則為0
存儲需求:4 字節
同義詞:I N T E G E R [(M)]
5. BIGINT[(M)]
說明:大整數
允許的屬性:AUTO _ I N C R E M E N T, UNSIGNED, ZEROFILL
取值范圍:-9223372036854775808 到9 2 2 3 3 7 2 0 3 6 8 5 4 7 7 5 8 07(-263 到2 6 3-1),或者如果為U N S I G N E D,則0 到18 4 4 6 7 4 4 07 3 7 0 9 5 5 16 15(0 到26 4 -1)
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為0
存儲需求:8 字節
6. FLOAT [(M, D)]
說明:小浮點數;單精度(精度小於D O U B L E)
允許的屬性:Z E R O F I L L
取值范圍:最小非零值為±1.75494351E -38; 最大非零值為±3 . 4 0 2 8 2 3 4 6 6 E + 3 8
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為0
存儲需求:4 字節
同義詞:MySQL3.23 版以前,FLOAT(4) 為具有缺省M 和D 值的FLOAT的同義詞。
注釋:在MySQL3.23 以後,FLOAT(4) 為真浮點類型(值存儲為硬件所允許的完整精度,而不四捨五入為缺省的小數位數)
7. DOUBLE[(M, D)]
說明:大浮點數;雙精度(比FLOAT更精確)
允許的屬性:Z E R O F I L L
取值范圍:最小非零值為±2 . 2 2 5 07 3 8 5 8 5 07 2 0 14 E -308; 最大非零值為±1。7 9 7 6 9 3 13 - 4 8 6 2 3 15 7 E + 3 0 8
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為0
存儲需求:8 字節
同義詞:DOUBLE PRECISION[(M, D)] 和R E A L [ (M, D)] 為D O U B L E [(M, D)] 的同義詞。MySQL3.23 版以前,FLOAT(8) 為具有缺省M 和D 值的FLOAT的同義詞。
注釋:在MySQL3.23 以後,FLOAT(8) 為真浮點類型(值存儲為硬件所允許的完整精度,而不四捨五入為缺省的小數位數)。


8. DECIMAL(M, D)
說明:存儲為串的浮點數(每位數字、小數點或“-”號都占1字節)。
允許的屬性:Z E R O F I L L
取值范圍:最大取值范圍與DOUBLE 相同;給定DECIMAL 類型的有效取值范圍由M和D 決定。如果D 為零,則列值無小數點或小數部分。
缺省值:如果列可為NULL,則為NULL,如果列為NOT NULL,則為0
存儲需求:對於MySQL3.23 前的版本,為M 字節,而MySQL3.23 以後的版本,為M + 2 字節。
同義詞:N U M E R I C (M, D)
注釋:在MySQL3.23 以後,M 的值為符合ANSI SQL 標准,不包括符號字符或小數點所占的字節數。

MySQL串類型

MySQL的串類型常用來存儲文本,它不但是通用的而且還能存儲任何數據。可用串類型來存儲最大長度可變的值,而且可以選擇在處理值時是否區分大小寫。
1. CHAR(M)
說明:0 到M 字節長的定長字符串。在MySQL3.23 版以前,M 應該為一個1到255 之間的整數。而MySQL3.23 版以後,M 應該為一個0 到255 之間的整數。短於M 個字符的串存儲進右邊補空格。長於M 個字符的串存儲時剪斷為長度是M 的串。在檢索值時,去掉後跟的空格。
允許的屬性:B I N A RY
允許的長度:0 到M 字節
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”
存儲需求:M 字節
比較:不區分大小寫(如果具有B I N A RY 屬性,則區分大小寫)
2. VARCHAR(M)
說明:0 到M 字節長的可變長字符串。M 應該為1到255 之間的一個整數,或者自MySQL3.23 後為0 到255 之間的一個整數。存儲時後跟的空格被去掉。存儲時,大於M 個字符的串剪斷為M 個字符。
允許的屬性:B I N A RY
允許的長度:0 到M 字節
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”
存儲需求:值的長度,加上1字節用來記錄長度
比較:不區分大小寫(如果具有B I N A RY 屬性,則區分大小寫)
3. TINYBLOB
說明:小BLOB 值
允許的屬性:除通用屬性外無其他屬性
允許的長度:0 到2 5 5(0 到28-1)字節
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”
存儲需求:值的長度加上用於記錄長度的1個字節
比較:區分大小寫
4. BLOB
說明:常規大小的BLOB 值
允許的屬性:除通用屬性外無其他屬性
允許的長度:0 到6 5 5 3 5(0 到216-1)字節
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”
存儲需求:值的長度加上用於記錄長度的2 個字節
比較:區分大小寫
5. MEDIUMBLOB
說明:中等大小的BLOB 值
允許的屬性:除通用屬性外無其他屬性
允許的長度:0 到16 7 7 7 2 15(0 到224 -1)字節
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”
存儲需求:值的長度加上用於記錄長度的3 個字節
比較:區分大小寫
6. LONGBLOB
說明:大BLOB 值
允許的屬性:除通用屬性外無其他屬性
允許的長度:0 到4 2 9 4 9 6 7 2 9 5(0 到23 2-1)字節
缺省值:如果列可為NULL,

則為NULL;如果列為NOT NULL,則為“”
存儲需求:值的長度加上用於記錄長度的4 個字節
比較:區分大小寫
7. TINYTEXT
說明:小TEXT 值
允許的屬性:除通用屬性外無其他屬性
允許的長度:0

到2 5 5(0 到2 8 -1)字節
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”
存儲需求:值的長度加上用於記錄長度的2 個字節
比較:不區分大小寫
8. TEXT
說明:常規大小的TEXT 值
允許的屬性:除通用屬性外無其他屬性
允許的長度:0 到6 5 5 3 5(0 到216-1)字節
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”
存儲需求:值的長度加上用於記錄長度的2 個字節
比較:不區分大小寫
9. MEDIUMTEXT
說明:中等大小的TEXT 值
允許的屬性:除通用屬性外無其他屬性
允許的長度:0 到16 7 7 7 2 15(0 到22 4-1)字節
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”
存儲需求:值的長度加上用於記錄長度的3 個字節
比較:不區分大小寫
10. LONGTEXT
說明:大TEXT 值
允許的屬性:除通用屬性外無其他屬性
允許的長度:0 到4 2 9 4 9 6 7 2 9 5(0 到23 2-1)字節
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”
存儲需求:值的長度加上用於記錄長度的4 個字節
比較:不區分大小寫
11. ENUM(“v a l ue 1”, “v a l ue 2”, ...)
說明:枚舉,列值可賦予值列表中的某個成員
允許的屬性:除通用屬性外無其他屬性
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為第一個枚舉值
存儲需求:對1到255 個成員的枚舉1個字節,對255 到65535 個成員的枚舉2 個字節
比較:不區分大小寫(MySQL3.22.1版以前區分大小寫)
12. SET(“v a l ue 1”,“v a l ue 2”, ...)
說明:集合,列值可賦予值列表中的零個或多個成員
允許的屬性:除通用屬性外無其他屬性
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“”(空集)
存儲需求:1字節(1到8個成員的集合),2字節(9 到16個成員的集合),3字節(17到2 4個成員的集合),4 字節(2 5到3 2個成員的集合)或8字節(3 3到6 4個成員的集合)
比較:不區分大小寫(MySQL3.22.1版以前區分大小寫)

MySQL日期和時間類型

MySQL提供以各種形式表示時間數據的類型。這些數據有日期和時間類型。有一種特殊的時間戳類型,它在記錄更改時自動更新。還有一種用於存儲年份的類型,在不需要完全的日期時使用。
1. DAT E
說明:“Y Y Y Y- M M - D D”格式的日期
允許的屬性:除通用屬性外無其他屬性
取值范圍:“10 0 0 - 0 1- 0 1”到“9 9 9 9 - 12 - 3 1”
零值:“0 0 0 0 - 0 0 - 0 0”
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,

則為“0 0 0 0 - 0 0 - 0 0”
存儲需求:3 字節(MySQL3.22 版以前為4 字節)
2. TIME
說明:“H H : M M : S S”格式的時間(負值為“ - HH:MM:SS”);表示占用的時間,但也可以作為日常時間
允許的屬性:除通用屬性外無其他屬性
取值范圍:“- 8 3 8 : 5 9 : 5 9”到“8 3 8 : 5 9 : 5 9”
零值:“0 0 : 0 0 : 0 0”
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“0 0 : 0 0 : 0 0”
存儲需求:3 字節
注釋:雖然在非法值插入TIME 列時,“0 0 : 0 0 : 0 0”用作零值,但它也作為一個合法的值出現在正常的取值范圍內
3. DAT E T I M E
說明:以“Y Y Y Y-MM-DD hh:mm:ss”格式表示的日期和時間(兩個部分都需要)
允許的屬性:除通用屬性外無其他屬性
取值范圍:“1000-01-0100:00:00”到“9999-12-3123:59:59”
零值:“0000-00-00 00:00:00”
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為“ 0 0 0 0 - 0 0 - 0 0 0 0 : 0 0 : 0 0”
存儲需求:8 字節
4. TIMESTA M P [ (M) ]
說明:以YYYYMMDDHHMMSS 格式表示的時間(日期和時間)
允許的屬性:除通用屬性外無其他屬性
取值范圍:19700101000000 到2037 年的某個時刻
缺省值:當前日期和時間。注意DESCRIBE 和SHOW COLLUMNS 報告缺省值為NULL
存儲需求:4 字節
注釋:插入NULL 到表的第一個T I M E S TAMP 列將會插入當前日期和時間。更改行中其他列的值使第一個T I M E S TAMP 列被更新為這個修改的日期和時間。在內部計算中存儲和使用的值全都為14 位字符精度,與顯示寬度無關。如果指定了NOT NULL屬性,則此屬性不起作用
5. YEAR
說明:YYYY 格式表示的年份
允許的屬性:除通用屬性外無其他屬性
取值范圍:1900 到2 15 5
零值:0 0 0 0
缺省值:如果列可為NULL,則為NULL;如果列為NOT NULL,則為0 0 0 0
存儲需求:1字節
注釋:YEAR 是在MySQL3.22 版中引入的

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved