MySQL 數(shù)據(jù)類型

2021-04-07 16:09 更新

MySQL 數(shù)據(jù)類型

MySQL 的數(shù)據(jù)類型有大概可以分為 5 種,分別是:

  • 整數(shù)類型(含:整數(shù)類型和浮點(diǎn)數(shù)類型)
    • 整數(shù)類型包括 TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT
  • 浮點(diǎn)數(shù)類型和定點(diǎn)數(shù)類型
    • 浮點(diǎn)數(shù)類型包括 FLOAT 和 DOUBLE,定點(diǎn)數(shù)類型為 DECIMAL
  • 日期和時(shí)間類型
    • YEAR、TIME、DATE、DATETIME 和 TIMESTAMP
  • 字符串類型
    • CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET 等
  • 二進(jìn)制類型
    • BIT、BINARY、VARBINARY、TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB

整數(shù)類型

MySQL 主要提供的整數(shù)類型有 TINYINT、 SMALLINTMEDIUMINT、 INT、 BIGINT,其屬性字段可以添加 AUTO_INCREMENT 自增約束條件。

類型名稱 說(shuō)明 存儲(chǔ)需求
TINYINT 很小的整數(shù) 1個(gè)字節(jié)
SMALLINT 小的整數(shù) 2個(gè)宇節(jié)
MEDIUMINT 中等大小的整數(shù) 3個(gè)字節(jié)
INT (INTEGHR) 普通大小的整數(shù) 4個(gè)字節(jié)
BIGINT 大整數(shù) 8個(gè)字節(jié)

不同的整數(shù)類型有不同的取值范圍,并且需要不同的存儲(chǔ)空間,因此應(yīng)根據(jù)實(shí)際需要選擇最合適的類型,這樣有利于提高查詢的效率和節(jié)省存儲(chǔ)空間。

類型名稱 說(shuō)明 存儲(chǔ)需求
TINYINT -128?127 0 ?255
SMALLINT -32768?32767 0?65535
MEDIUMINT -8388608?8388607 0?16777215
INT (INTEGER) -2147483648?2147483647 0?4294967295
BIGINT -9223372036854775808?9223372036854775807 0?18446744073709551615

小數(shù)類型

MySQL 中使用浮點(diǎn)數(shù)和定點(diǎn)數(shù)來(lái)表示小數(shù)。浮點(diǎn)類型有兩種,分別是單精度浮點(diǎn)數(shù)( FLOAT)和雙精度浮點(diǎn)數(shù)( DOUBLE);定點(diǎn)類型只有一種 DECIMAL。

浮點(diǎn)類型和定點(diǎn)類型都可以用 (M, D)來(lái)表示,其中 M稱為精度,表示總共的位數(shù); D稱為標(biāo)度,表示小數(shù)的位數(shù)。

浮點(diǎn)數(shù)類型的取值范圍為 M(1~255)和 D(1~30,且不能大于 M-2),分別表示顯示寬度和小數(shù)位數(shù)。M 和 D 在 FLOAT 和DOUBLE 中是可選的,F(xiàn)LOAT 和 DOUBLE 類型將被保存為硬件所支持的最大精度。DECIMAL 的默認(rèn) D 值為 0、M 值為 10。

類型名稱 說(shuō)明 存儲(chǔ)需求
FLOAT 單精度浮點(diǎn)數(shù) 4 個(gè)字節(jié)
DOUBLE 雙精度浮點(diǎn)數(shù) 8 個(gè)字節(jié)
DECIMAL (M, D),DEC 壓縮的“嚴(yán)格”定點(diǎn)數(shù) M+2 個(gè)字節(jié)

  • DECIMAL 的存儲(chǔ)空間并不是固定的,而由精度值 M 決定,占用 M+2 個(gè)字節(jié)。
  • 不論是定點(diǎn)還是浮點(diǎn)類型,如果用戶指定的精度超出精度范圍,則會(huì)四舍五入進(jìn)行處理。
  • 定點(diǎn)數(shù)以字符串形式存儲(chǔ),在對(duì)精度要求比較高的時(shí)候(如貨幣、科學(xué)數(shù)據(jù)),使用 DECIMAL 的類型比較好,
  • 兩個(gè)浮點(diǎn)數(shù)進(jìn)行減法和比較運(yùn)算時(shí)容易出現(xiàn)精度計(jì)算問(wèn)題,盡量避免做浮點(diǎn)數(shù)比較。

日期和時(shí)間類型

MySQL 中表示日期的數(shù)據(jù)類型:YEAR、 TIME、 DATE、 DTAETIMETIMESTAMP

類型名稱 日期格式 日期范圍 存儲(chǔ)需求
YEAR YYYY 1901 ~ 2155 1 個(gè)字節(jié)
TIME HH:MM:SS -838:59:59 ~ 838:59:59 3 個(gè)字節(jié)
DATE YYYY-MM-DD 1000-01-01 ~ 9999-12-3 3 個(gè)字節(jié)
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8 個(gè)字節(jié)
TIMESTAMP YYYY-MM-DD HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4 個(gè)字節(jié)

字符串類型

MySQL 中的字符串類型有 CHAR、 VARCHAR、 TINYTEXTTEXT、 MEDIUMTEXT、 LONGTEXT、 ENUM、 SET 等。

類型名稱 說(shuō)明 存儲(chǔ)需求
CHAR(M) 固定長(zhǎng)度非二進(jìn)制字符串 M 字節(jié),1<=M<=255
VARCHAR(M) 變長(zhǎng)非二進(jìn)制字符串 L+1字節(jié),在此,L< = M和 1<=M<=255
TINYTEXT 非常小的非二進(jìn)制字符串 L+1字節(jié),在此,L<2^8
TEXT 小的非二進(jìn)制字符串 L+2字節(jié),在此,L<2^16
MEDIUMTEXT 中等大小的非二進(jìn)制字符串 L+3字節(jié),在此,L<2^24
LONGTEXT 大的非二進(jìn)制字符串 L+4字節(jié),在此,L<2^32
ENUM 枚舉類型,只能有一個(gè)枚舉字符串值 1或2個(gè)字節(jié),取決于枚舉值的數(shù)目 (最大值為65535)
SET 一個(gè)設(shè)置,字符串對(duì)象可以有零個(gè)或 多個(gè)SET成員 1、2、3、4或8個(gè)字節(jié),取決于集合 成員的數(shù)量(最多64個(gè)成員)

M表示可以為其指定長(zhǎng)度。

CHAR 和 VARCHAR 類型

  • CHAR(M) 為固定長(zhǎng)度字符串,定義時(shí)指定字符串列長(zhǎng)。M 范圍 0~255 個(gè)字符。存儲(chǔ)時(shí),尾部自動(dòng)填充空格;被檢索時(shí),尾部的空格將被刪除。
  • VARCHAR(M) 是長(zhǎng)度可變的字符串,M 表示最大列的長(zhǎng)度,M 范圍 0~65535。VARCHAR 的最大實(shí)際長(zhǎng)度由最長(zhǎng)的行的大小和使用的字符集確定,實(shí)際占用的空間為字符串的實(shí)際長(zhǎng)度加 1。

TEXT 類型

TEXT 類型分為 4 種:TINYTEXT、TEXT、MEDIUMTEXT 和 LONGTEXT。

  • TINYTEXT 表示長(zhǎng)度為 255(2^8-1)字符的 TEXT 列。
  • TEXT 表示長(zhǎng)度為 65535(2^16-1)字符的 TEXT 列。
  • MEDIUMTEXT 表示長(zhǎng)度為 16777215(2^24-1)字符的 TEXT 列。
  • LONGTEXT 表示長(zhǎng)度為 4294967295 或 4GB(2^32-1)字符的 TEXT 列。

ENUM 類型

ENUM 是一個(gè)字符串對(duì)象,值為表創(chuàng)建時(shí)列規(guī)定中枚舉的一列值。

索引
NULL NULL
zero 0
first 1
second 2
third 3

SET 類型

SET 是一個(gè)字符串的對(duì)象,可以有零或多個(gè)值,最多可以有 64 個(gè)成員,各成員之間用逗號(hào) ,隔開(kāi)。列值有重復(fù),自動(dòng)刪除。

二進(jìn)制類型

MySQL 中的二進(jìn)制字符串有 BIT、 BINARY、 VARBINARYTINYBLOB、 BLOBMEDIUMBLOBLONGBLOB。

類型名稱 說(shuō)明 存儲(chǔ)需求
BIT(M) 位字段類型 大約 (M+7)/8 字節(jié)
BINARY(M) 固定長(zhǎng)度二進(jìn)制字符串 M 字節(jié)
VARBINARY (M) 可變長(zhǎng)度二進(jìn)制字符串 M+1 字節(jié)
TINYBLOB (M) 非常小的BLOB L+1 字節(jié),在此,L<2^8
BLOB (M) 小 BLOB L+2 字節(jié),在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字節(jié),在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字節(jié),在此,L<2^32

M表示指定長(zhǎng)度。

BIT 類型

位字段類型。范圍為 1~64。

BINARY 和 VARBINARY 類型

BINARY 和 VARBINARY 類型類似于 CHAR 和 VARCHAR,不同的是它們包含二進(jìn)制字節(jié)字符串。

BLOB 類型

BLOB 是一個(gè)二進(jìn)制的對(duì)象,用來(lái)存儲(chǔ)可變數(shù)量的數(shù)據(jù)。BLOB 類型分為 4 種:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。

數(shù)據(jù)類型 存儲(chǔ)范圍
TINYBLOB 最大長(zhǎng)度為255 (28-1)字節(jié)
BLOB 最大長(zhǎng)度為65535 (216-1)字節(jié)
MEDIUMBLOB 最大長(zhǎng)度為16777215 (224-1)字節(jié)
LONGBLOB 最大長(zhǎng)度為4294967295或4GB (231-1)字節(jié)
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)