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

簡介

MySQL支持大量的列類型,它能夠被分爲3類:數字類型、日期和時間類型以及字符串(字符)類型。服務器

數值類型

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

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

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

方括號(「[」和「]」)指出可選的類型修飾符的部分。對象

注意,若是你指定一個ZEROFILL,MySQL將爲該列自動地增長UNSIGNED屬性。UNSIGNED 表示向服務器指明該列存儲的數據>=0。blog

tinyint

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

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

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-30八、 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(默認值)、十二、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字節,極大文本數據。通常存儲文檔使用。

tinyblob

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');
相關文章
相關標籤/搜索