MySQL筆記——資料型別
MySQL支援的資料型別
MySQL提供了多種資料型別,主要包括數值型、字串型別、日期和時間型別。可以在MySQL的幫助文件中,查閱當前MySQL版本所支援的資料型別,以及資料型別的詳細使用說明。
開啟MySQL命令視窗,輸入命令:
? data types;
就可以看到MySQL所支援的全部資料型別,如圖所示。
如果想檢視某個資料型別的描述,例如檢視INT(整型)資料型別,可以輸入命令:
? data int;
就可以看到相關資料型別的詳細資訊了。
1.數值型別
- 整數型別
資料型別 |
位元組 |
取值範圍 |
說明 |
TINYINT |
1 |
有符號:-128~127 |
最小的整數 |
無符號:0~255 |
|||
SMALLINT |
2 |
有符號:-32768~32767 |
小整型數 |
無符號:0~65535 |
|||
MEDIUMINT |
3 |
有符號:-8388608~8388607 |
中整型數 |
無符號:0~16777215 |
|||
INT、INTEGER |
4 |
有符號:-(2^32)/2~ (2^32)/2-1 |
標準整型數 |
無符號:0~ (2^32-1) |
|||
BIGINT |
8 |
有符號:-(2^64)/2~ (2^64)/2-1 |
大整型數 |
無符號:0~ (2^64-1) |
|||
BIT |
1 |
有符號:-128~127 |
最小的整數 |
無符號:0~255 |
|||
BOOL |
1 |
有符號:-128~127 |
最小的整數 |
無符號:0~255 |
說明:
- 整數型別可以指定顯示寬度。例如,INT(5)表示寬度為5,數值寬度小於5位時在數字前面填滿寬度。一般配合zerofill使用,在數字位數不夠的空間可用字元’0’填滿。
- UNSIGNED屬性:設定當前的整數型別為無符號整型。
- AUTO_INCREMENT屬性:只適用於整型,AUTO_INCREMENT值一般從1開始,每行增加1。一個表中最多隻能由一個AUTO_INCREMENT列。對於任何想要使用AUTO_INCREMENT的列,應該定義為NOT NULL,並定義為PRIMARY KEY或UNIQUE KEY。示例:CREATE TABLE tb_bookinfo(id INT AUTO_INCREMENT NOT NULL,PRIMARY KEY(id));
- 浮點數型別
資料型別 |
位元組 |
取值範圍 |
說明 |
FLOAT |
4或8位元組 |
很大 |
單精度浮點數 |
DOUBLE |
8 |
非常大 |
雙精度浮點數 |
DEC |
自定義 |
可變 |
指定精度的小數 |
DECIMAL |
- 小數型別可以用資料型別後面加(M,D)方式表示。“(M,D)”表示一共顯示M位資料(整數位+小數位),D為小數點後面的位數。例如,float(7,3),decimal(5,2)。
- DECIMAL在不指定精度時,預設的整數位為10,小數位為0。
2.日期和時間型別
資料型別 |
位元組 |
取值範圍 |
說明 |
DATE |
4 |
1000-01-01~9999-12-31 |
日期 |
TIME |
3 |
-838:58:59~835:59:59 |
時間 |
DTATTIME |
8 |
1000-01-01 00:00:00 |
日期和時間 |
~9999-12-31 23:59:59 |
|||
TIMESTAMP |
4 |
1970-01-01 00:00 |
時間標籤 |
~2038年某個時間 |
|||
YEAR |
1 |
1901~2155 |
年份 |
3.字串型別
資料型別 |
取值範圍 |
說明 |
CHAR(M) |
M為0~255之間的整數 |
|
VARCHAR(M) |
M為0~65535之間的整數 |
長度可變 |
TINYBLOB |
0~255位元組 |
|
BLOB |
0~65535位元組 |
|
MEDIUMBLOB |
0~167772150位元組 |
|
LONGBLOB |
0~4294967295位元組 |
|
TINYTEXT |
0~255位元組 |
|
TEXT |
0~65535位元組 |
|
MEDIUMTEXT |
0~167772150位元組 |
|
LONGTEXT |
0~4294967295位元組 |
|
VARBINARY(M) |
0~M位元組的變長位元組字串 |
長度可變 |
BINARY(M) |
0~M位元組的定長位元組字串 |
- CHAR與VARCHAR型別
CHAR列的長度固定為建立表時宣告的長度,取值0~255;VARCHAR列的值為變長的字串,取值於CHAR相同。
- TEXT與BLOB型別
大小均可變。TEXT型別適合儲存長文字;BLOB型別適合儲存二進位制資料,支援任何資料,例如文字、聲音、影象 等。
- BINARY與VARBINARY型別
BINARY、VARBINARY類似於CHAR、VARCHAR,不同之處在於它們包含二進位制字串而不包含非二進位制字串。
- ENUM與SET型別
ENUM為列舉型別,最多允許有65535個成員。SET與ENUM類似,可以包含0~64個成員。二者的區別在於SET型別一次可以選取多個成員,而ENUM只能選取一個。