Mysql常用資料類型

來源:互聯網
上載者:User

表1:數值列類型

    每種數實值型別的名稱和取值範圍如表2所示。

類型說明

取值範圍

TINYINT[(M)]

有符號值:-128 到127(- 27 到27 - 1) 
無符號值:0到255(0 到28 - 1) 

SMALLINT[(M)]

有符號值:-32768 到32767(- 215 到215 - 1) 
無符號值:0到65535(0 到21 6 - 1) 

MEDIUMINT[(M)]

有符號值:-8388608 到8388607(- 22 3 到22 3 - 1 ) 
無符號值:0到16777215(0 到22 4 - 1) 

INT[(M)]

有符號值:-2147683648 到2147683647(- 231 到231- 1) 
無符號值:0到42Array4Array672Array5(0 到232 - 1) 

BIGINT[(M)]

有符號值:-Array223372036854775808到Array223373036854775807(- 263到263-1) 

無符號值:0到1844674407370Array551615(0到264 ? 1) 

FLOAT[(M, D)]

最小非零值:±1.1754Array4351E - 38

DOUBLE[(M,D)]

最小非零值:±2.2250738585072014E - 308

DECIMAL (M, D)

可變;其值的範圍依賴於M 和D

表2:數值列類型的取值範圍

    各種類型值所需的儲存量如表3所示。

類型說明

儲存需求

TINYINT[(M)]

1位元組

SMALLINT[(M)]

2位元組

MEDIUMINT[(M)]

3位元組

INT[(M)]

4位元組

BIGINT[(M)]

8位元組

FLOAT[(M, D)]

4位元組

DOUBLE[(M, D)]

8位元組

DECIMAL (M, D)

M位元組(MySQL < 3.23),M+2位元組(MySQL > 3.23 )

表3:數值列類型的儲存需求

MySQL提供了五種整型: TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT。INT為INTEGER的縮寫。這些類型在可表示的取值範圍上是不同的。整數列可定義為UNSIGNED從而禁用負值;這使列的取值範圍為0以上。各種類型的儲存量需求也是不同的。取值範圍較大的類型所需的儲存量較大。 

    MySQL 提供三種浮點類型: FLOAT、DOUBLE和DECIMAL。與整型不同,浮點類型不能是UNSIGNED的,其取值範圍也與整型不同,這種不同不僅在於這些類型有最大值,而且還有最小非零值。最小值提供了相應類型精度的一種度量,這對於記錄科學資料來說是非常重要的(當然,也有負的最大和最小值)。 

    在選擇了某種數實值型別時,應該考慮所要表示的值的範圍,只需選擇能覆蓋要取值的範圍的最小類型即可。選擇較大類型會對空間造成浪費,使表不必要地增大,處理起來沒有選擇較小類型那樣有效。對於整型值,如果資料取值範圍較小,如人員年齡或兄弟姐妹數,則TINYINT最合適。MEDIUMINT能夠表示數百萬的值並且可用於更多類型的值,但儲存代價較大。BIGINT在全部整型中取值範圍最大,而且需要的儲存空間是表示範圍次大的整型INT類型的兩倍,因此只在確實需要時才用。對於浮點值,DOUBLE佔用FLOAT的兩倍空間。除非特別需要高精度或範圍極大的值,一般應使用只用一半儲存代價的FLOAT型來表示資料。 

    在定義整型列時,可以指定可選的顯示尺寸M。如果這樣,M應該是一個1 到255的整數。它表示用來顯示列中值的字元數。例如,MEDIUMINT(4)指定了一個具有4個字元顯示寬度的MEDIUMINT列。如果定義了一個沒有明確寬度的整數列,將會自動分配給它一個預設的寬度。預設值為每種類型的“最長”值的長度。如果某個特定值的可列印表示需要不止M個字元,則顯示完全的值;不會將值截斷以適合M個字元。 

    對每種浮點類型,可指定一個最大的顯示尺寸M 和小數位元D。M 的值應該取1 到255。D的值可為0 到3 0,但是不應大於M - 2(如果熟悉ODBC 術語,就會知道M 和D 對應於ODBC 概念的“精度”和“小數點位元”)。M和D對FLOAT和DOUBLE 都是可選的,但對於DECIMAL是必須的。在選項M 和D時,如果省略了它們,則使用預設值。

    2.2字串列類型 

    MySQL提供了幾種存放字元資料的串類型,其類型如下:

類型名

說明

CHAR

定長字串

VARCHAR

可變長字串

TINYBLOB

非常小的BLOB(二進位大對象)

BLOB

小BLOB

MEDIUMBLOB

中等的BLOB

LONGBLOB

大BLOB

TINYTEXT

非常小的文本串

TEXT

小文本串

MEDIUMTEXT

中等文本串

LONGTEXT

大文本串

ENUM

枚舉;列可賦予某個枚舉成員

SET

集合;列可賦予多個集合成員

表4:字串列類型

    下表給出了MySQL 定義串值列的類型,以及每種類型的最大尺寸和儲存需求。對於可變長的列類型,各行的值所佔的儲存量是不同的,這取決於實際存放在列中的值的長度。這個長度在表中用L 表示。

類型說明

最大尺寸

儲存需求

CHAR( M)

M 位元組

M 位元組

VARCHAR(M)

M 位元組

L + 1位元組

TINYBLOB, TINYTEXT

28- 1位元組

L + 1位元組

BLOB, TEXT

216 - 1 位元組

L + 2位元組

MEDIUMBLOB, MEDIUMTEXT

224- 1位元組

L + 3位元組

LONGBLOB, LONGTEXT

232- 1位元組

L + 4位元組

ENUM(“value1”, “value2”, ...)

65535 個成員

1 或2位元組

SET (“value1”, “value2”, ...)

64個成員

1、2、3、4 或8位元組

表5:串列類型最大尺寸及儲存需求

    L 以外所需的額外位元組為存放該值的長度所需的位元組數。MySQL 通過儲存值的內容及其長度來處理可變長度的值。這些額外的位元組是不帶正負號的整數。請注意,可變長類型的最大長度、此類型所需的額外位元組數以及佔用相同位元組數的不帶正負號的整數之間的對應關係。例如,MEDIUMBLOB 值可能最多224 - 1位元組長並需要3 個位元組記錄其結果。3 個位元組的整數類型MEDIUMINT 的最大無符號值為224 - 1。這並非偶然。

    2.3日期時間列類型 

    MySQL 提供了幾種時間值的列類型,它們分別是: DATE、DATETIME、TIME、TIMESTAMP和YEAR。下表給出了MySQL 為定義儲存日期和時間值所提供的這些類型,並給出了每種類型的合法取值範圍。

類型名

說明

DATE

“YYYY-MM-DD”格式表示的日期值

TIME

“hh:mm:ss”格式表示的時間值

DATETIME

“YYYY-MM-DD hh:mm:ss”格式

TIMESTAMP

“YYYYMMDDhhmmss”格式表示的時間戳記值

YEAR

“YYYY”格式的年份值

表6:日期時間列類型

類型名

取值範圍

儲存需求

DATE

“1000-01-01”到“ArrayArrayArrayArray-12-31”

3位元組

TIME

“-838:5Array:5Array”到“838:5Array:5Array”

3位元組

DATETIME

“1000-01-01 00:00:00”到“ArrayArrayArrayArray-12-31 23:5Array:5Array”

8位元組

TIMESTAMP

1Array700101000000 到2037 年的某個時刻

4位元組

YEAR

1Array01 到2155

1位元組

表7: 日前時間列類型的取值範圍和儲存需求

    下面舉個例子:

CREATE TABLE student

(

Name varchar(20) NOT NULL,

Chinese TINYINT(3),

Maths TINYINT(3),

English TINYINT(3),

Birthday DATE

)

    這個例子建立一個student表,這個表中有name欄位,字元類型列,不允許NULL(空值)。有Chinese、Maths和English三個整數類型列。還有個Birthday日期類型列。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.