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

一、數(shù)值類型

以下數(shù)據(jù)類型為 MySQL 5.0 后的版本所具有。

1.整數(shù)類型

整數(shù)類型 字節(jié)
TINYINT 1
SMALLINT 2
MEDIUMINT 3
INT、INTEGER 4
BIGINT 8
  • MySQL 支持在類型名稱后指定顯示寬度,如 INT(3) 表示當(dāng)寬度小于3位時(shí)在數(shù)字前填滿。屬性 ZEROFILL 表示用 0 填滿。

  • 當(dāng)插入寬度大于指定寬度,對(duì)插入數(shù)據(jù)沒有任何影響。

  • 屬性 UNSIGNED 表示無符號(hào)

  • 屬性 AUTO_INCREMENT 表示自增,只能用于整數(shù)類型。并且使用該屬性的列,必須定義為 NOT NULL,并且是 PRIMARY KEY 或者 UNIQUE。

CREATE TABLE tb_name (ID INT AUTO_INCREMENT NOT NULL PRIMARY KEY);

CREATE TABLE tb_name (ID INT AUTO_INCREMENT NOT NULL, PRIMARY KEY(ID));

CREATE TABLE tb_name (ID INT AUTO_INCREMENT NOT NULL UNIQUE);

CREATE TABLE tb_name (ID INT AUTO_INCREMENT NOT NULL,  UNIQUE(ID));

2.浮點(diǎn)數(shù)類型

浮點(diǎn)數(shù)類型 字節(jié)
FLOAT 4
DOUBLE 8
  • 浮點(diǎn)數(shù)后指定 (M,D) 不是標(biāo)準(zhǔn)用法。

  • 浮點(diǎn)數(shù)類型后可以指定 (M,D)。M 是精度,整數(shù)位+小數(shù)位。 D 是標(biāo)度,小數(shù)位。

  • 如果指定精度和標(biāo)度,會(huì)自動(dòng)四舍五入后的結(jié)果插入。

  • 如果不指定精度時(shí),會(huì)按照實(shí)際的精度顯示,由實(shí)際的硬件和操作系統(tǒng)決定。

3.定點(diǎn)數(shù)類型

定點(diǎn)數(shù)類型 字節(jié)
DEC(M,D)、DECIMAL(M,D) M+2
  • 如果指定精度和標(biāo)度,超出了精度和標(biāo)度值系統(tǒng)會(huì)報(bào)錯(cuò)。

  • 如果沒有指定精度和標(biāo)度,會(huì)按照默認(rèn) DECIMAL(10,0) 來操作。

4.位類型

位類型 字節(jié)
BIT(M) 1~8
  • 位類型直接用 SELECT 命令無法直接顯示,可以使用 bin() 或者 hex() 函數(shù)進(jìn)行讀取。

  • 超出位類型的位數(shù),將報(bào)錯(cuò)無法插入。

二、日期時(shí)間類型

日期和時(shí)間類型 字節(jié)
DATE 4
DATETIME 8
TIMESTAMP 4
TIME 3
YEAR 1

三、字符串類型

字符串類型 字節(jié)
CHAR(M) M
VARCHAR(M) M+1
TINYBLOB 長度+1
BLOB 長度+2
MEDIUMBLOL 長度+3
LONGBLOB 長度+4
TINYTEXT 長度+1
TEXT 長度+2
MEDIUMTEXT 長度+3
LONGTEXT 長度+4
VARBINARY(M) 長度+1
BINARY(M) M

1.CHAR 和 VARCHAR

CHAR 和 VARCHAR 都用于存儲(chǔ)比較短的字符串。

不同點(diǎn):

  • CHAR 長度固定, VARCHAR 為可變長度字符串。

  • CHAR 刪除插入字符串尾部的空格, VARCHAR 保留這些空格。

2.BINARY 和 VARBINARY

BINARY 和 VARBINARY 用于存儲(chǔ)二進(jìn)制字符串。

  • 當(dāng)插入字符串沒有達(dá)到定義長度 M 時(shí),會(huì)在值的最后填充“0x00”以達(dá)到指定字段的長度。

3.ENUM

ENUM 成為美劇類型。

  • 1~255個(gè)成員,占1個(gè)字節(jié)
  • 256~65535個(gè)成員,占2個(gè)字節(jié)

創(chuàng)建 gender 字段為枚舉類型,成員為 M 和 F:

CREATE TABLE tb_name (gender ENUM('M','F'));
  • 枚舉類型是忽略大小寫的

  • 如果插入的值不在枚舉范圍內(nèi),不會(huì)報(bào)錯(cuò),自動(dòng)插入枚舉的第一個(gè)值。

4.SET

SET 可以包含 0~64 個(gè)成員,成員個(gè)數(shù)不同,存儲(chǔ)空間不同。

  • 1~8個(gè)成員,占1個(gè)字節(jié)
  • 9~16個(gè)成員,占2個(gè)字節(jié)
  • 17~24個(gè)成員,占3個(gè)字節(jié)
  • 25~32個(gè)成員,占4個(gè)字節(jié)
  • 33~64個(gè)成員,占8個(gè)字節(jié)

創(chuàng)建 col 字段為集合類型,成員為 a b c d

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

插入元素

INSERT INTO tb_name VALUES('a,b'),('a,c');
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • sql 將數(shù)據(jù)類型分為三大類:數(shù)值類型,字符串,日期時(shí)間型 一、數(shù)值型: 數(shù)值大類:整數(shù)型和小數(shù)型 整數(shù)型 整數(shù)型...
    陳智濤閱讀 1,132評(píng)論 0 0
  • 本文基于MySQL5.6版本進(jìn)行描述從大的方面來講,MySQL的數(shù)據(jù)類型分為4種 數(shù)值類型 日期和時(shí)間 字符串類型...
    黑哥兒666閱讀 805評(píng)論 0 0
  • 日期和時(shí)間數(shù)據(jù)類型 MySQL數(shù)據(jù)類型 含義date 3字節(jié),日期,格式:2014-09-18time ...
    百度怎么用閱讀 285評(píng)論 0 3
  • 所謂的數(shù)據(jù)類型:對(duì)數(shù)據(jù)進(jìn)行統(tǒng)一的分類,從系統(tǒng)的 角度出發(fā)為了能夠使用統(tǒng)一的方式進(jìn)行管理,更好的利用有限的空間;SQ...
    coder_hong閱讀 676評(píng)論 0 0
  • MySQL學(xué)習(xí)筆記(2) mysql支持的數(shù)據(jù)類型 mysql數(shù)值類型 關(guān)于每個(gè)類型的詳細(xì)信息可以通過 ? int...
    BigfaceMonster閱讀 403評(píng)論 0 3

友情鏈接更多精彩內(nèi)容