1. 程式人生 > >MySQL 數據庫字段類型使用說明

MySQL 數據庫字段類型使用說明

sql 適用於 類型 mmd small tin tex set 十進制

簡介

MySQL支持大量的列類型,它可以被分為3類:數字類型、日期和時間類型以及字符串(字符)類型。

數值類型

下列用於描述的代碼字母中:

M表示最大的顯示尺寸。最大的合法的顯示尺寸是 255 。(註意是顯示尺寸是存儲數字的位數,不是存儲空間大小,數值列創建時,MySQL將為存儲數據分配合適大小的空間,從1個字節到8個字節不等)

D適用於浮點類型並且指出跟隨在十進制小數點後的數的位數。最大可能的值是30,但是應該不大於M-2。

方括號(“[”和“]”)指出可選的類型修飾符的部分。

註意,如果你指定一個ZEROFILL,MySQL將為該列自動地增加UNSIGNED屬性。UNSIGNED 表示向服務器指明該列存儲的數據>=0。

tinyint

格式:TINYINT[(M)] [UNSIGNED] [ZEROFILL]

占1字節,一個很小的整數。有符號的範圍是-128到127,無符號的範圍是0到255。

smallint

格式:SMALLINT[(M)] [UNSIGNED] [ZEROFILL]

占2字節,一個小整數。有符號的範圍是-32768到32767,無符號的範圍是0到65535。

mediumint

格式:MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL]

占3字節,一個中等大小整數。有符號的範圍是-8388608到8388607,無符號的範圍是0到16777215。

int

格式:INT[(M)] [UNSIGNED] [ZEROFILL]

占4字節,一個正常大小整數。有符號的範圍是-2147483648到2147483647,無符號的範圍是0到4294967295。

同義詞:integer

bigint

格式:BIGINT[(M)] [UNSIGNED] [ZEROFILL]

占8字節,一個大整數。有符號的範圍是-9223372036854775808到9223372036854775807,無符號的範圍是0到18446744073709551615。

float

格式:FLOAT[(M,D)] [ZEROFILL]

占4字節,一個小(單精密)浮點數字。不能無符號。允許的值是-3.402823466E+38到-1.175494351E-38,0 和1.175494351E-38到3.402823466E+38。

沒有參數的FLOAT或有一個參數的FLOAT(X)(X<=24)的表示一個單精密浮點數字。

double

格式:DOUBLE[(M,D)] [ZEROFILL]

占8字節,一個正常大小(雙精密)浮點數字。不能無符號。允許的值是-1.7976931348623157E+308到-2.2250738585072014E-308、 0和2.2250738585072014E-308到1.7976931348623157E+308。

沒有一個參數的DOUBLE或有一個參數的 DOUBLE(X)(25 < = X < = 53)代表一個雙精密浮點數字。

同義詞:double precision、real

decimal

格式:DECIMAL[(M[,D])] [ZEROFILL]

一個未壓縮(unpack)的浮點數字。不能無符號。行為如同一個CHAR列:“未壓縮”意味著數字作為一個字符串被存儲,值的每一位使用一個字符。小數點,並且對於負數,“-”符號不在M中計算。如果D是0,值將沒有小數點或小數部分。

DECIMAL值的最大範圍與DOUBLE相同,但是對一個給定的DECIMAL列,實際的範圍可以通過M和D的選擇被限制。如果D被省略,它被設置為0。如果M被省掉,它被設置為10。註意,在MySQL3.22 裏,M參數包括符號和小數點。

同義詞:numeric

註意:

(1)所有算術運算中用有符號的BIGINT或DOUBLE值完成,因此你不應該使用大於9223372036854775807(63位)的有符號大整數,除了位函數!

(2)當兩個參數是INTEGER值時,-、+ 和 * 將使用BIGINT運算!這意味著如果你乘2個大整數(或來自於返回整數的函數),如果結果大於9223372036854775807,你會得到一個錯誤的結果。

(3)一個浮點數字,不能是無符號的,對一個單精度浮點數,其精度可以是<=24,對一個雙精度浮點數,是在25和53之間。

日期時間類型

date

格式:YYYY-MM-DD

占3字節,表示一個日期。支持的範圍是‘1000-01-01‘到‘9999-12-31‘,MySQL以‘YYYY-MM-DD‘格式來顯示DATE值,但是允許使用字符串或數字把值賦給DATE列。

time

格式:HHH:MI:SS

占3字節,表示一個時間。範圍是‘-838:59:59‘到‘838:59:59‘。MySQL以‘HHH:MI:SS‘格式來顯示TIME值,但是允許你使用字符串或數字把值賦給TIME列。

year

格式:YYYY

YEAR[(2|4)]

占1個字節,一個2或4位數字格式的年(默認是4位)。允許的值是1901到2155,和0000(4位年格式),如果你使用2位,則允許的值是1970-2069( 70-69)。MySQL以YYYY格式來顯示YEAR值,但是允許你把使用字符串或數字值賦給YEAR列。

datetime

格式:YYYY-MM-DD HH:MI:SS

占8個字節,一個日期和時間組合。支持的範圍是‘1000-01-01 00:00:00‘到‘9999-12-31 23:59:59‘。MySQL以‘YYYY-MM-DD HH:MI:SS‘格式來顯示DATETIME值,但是允許你使用字符串或數字把值賦給DATETIME的列。

timestamp

格式:TIMESTAMP[(M)]

占4個字節,一個時間戳記。範圍是‘1970-01-01 00:00:00‘到2037年的某時。MySQL以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD 格式來顯示TIMESTAMP值,取決於是否M是14(默認值)、12、8或6,但是允許你使用字符串或數字把值賦給TIMESTAMP列。

一個TIMESTAMP列對於記錄一個INSERT或UPDATE操作的日期和時間是有用的,因為如果你不自己給它賦值,它自動地被設置為最近操作的日期和時間。你以可以通過賦給它一個NULL值設置它為當前的日期和時間。

字符串類型

char

格式:CHAR(M) [BINARY]

一個定長字符串,當值被存儲時,總是是用空格填滿右邊到指定的長度。M的範圍是1~255個字節。當值被檢索時,空格尾部被刪除。

CHAR值根據缺省字符集以不區分大小寫的方式排序和比較,除非給出BINARY關鍵詞。CHAR是CHARACTER的一個縮寫。

varchar

格式:VARCHAR(M) [BINARY]

一個可變長字符串。當值被存儲時,尾部的空格被刪除。M的範圍是1~65535個字節。

VARCHAR值根據缺省字符集以不區分大小寫的方式排序和比較,除非給出BINARY關鍵詞值。 VARCHAR是CHARACTER VARYING一個縮寫。

tinytext

0-255字節,短文本字符串。

text

0-65535字節,長文本數據。

mediumtext

0-16777215字節,中等長度文本數據。一般存儲文檔使用。

longtext

0-4294967295字節,極大文本數據。一般存儲文檔使用。

0-255字節,不超過 255 個字符的二進制字符串。

blob

0-65535字節,二進制形式的長文本數據。

mediumblob

0-16777215字節,二進制形式的中等長度文本數據。

longblob

0-4294967295字節,二進制形式的極大文本數據。

其他類型

字段的值只能在給定範圍中選擇,如單選框,多選框

enum 單選,只能在給定的範圍內選一個值,如性別 sex 男male/女female。

set 多選,在給定的範圍內可以選擇一個或一個以上的值(愛好1,愛好2,愛好3...)。

enum

ENUM(‘value1‘,‘value2‘,...)

枚舉。一個僅有一個值的字符串對象,這個值式選自與值列表‘value1‘、‘value2‘, ...,或NULL。一個ENUM最多能有65535不同的值。

CREATE TABLE shirts (
name VARCHAR(40),
size ENUM(x-small, small, medium, large, x-large)
);
  
INSERT INTO shirts (name, size) VALUES (dress shirt,large), (t-shirt,medium),(polo shirt,small);

set

SET(‘value1‘,‘value2‘,...)

一個集合。能有零個或多個值的一個字符串對象,其中每一個必須從值列表‘value1‘, ‘value2‘, ...選出。一個SET最多能有64個成員。

CREATE TABLE myset (col SET(a, b, c, d));

INSERT INTO myset (col) VALUES (a,d), (d,a), (a,d,a), (a,d,d), (d,a,d);

MySQL 數據庫字段類型使用說明