在MySQL中,定義數(shù)據(jù)類型是創(chuàng)建表(table)時非常重要的一部分。MySQL支持多種數(shù)據(jù)類型,包括數(shù)字類型、字符串類型、日期和時間類型以及其他類型。以下是MySQL中常見的數(shù)據(jù)類型及其定義:
數(shù)值類型:
TINYINT
:1個字節(jié)有符號整數(shù),范圍從-128到127(有符號),或0到255(無符號)。SMALLINT
:2個字節(jié)有符號整數(shù),范圍從-32,768到32,767(有符號),或0到65,535(無符號)。MEDIUMINT
:3個字節(jié)有符號整數(shù),范圍從-8,388,608到8,388,607(有符號),或0到16,777,215(無符號)。INT
:4個字節(jié)有符號整數(shù),范圍從-2,147,483,648到2,147,483,647(有符號),或0到4,294,967,295(無符號)。BIGINT
:8個字節(jié)有符號整數(shù),范圍從-9,223,372,036,854,775,808到9,223,372,036,854,775,807(有符號),或0到18,446,744,073,709,551,615(無符號)。DECIMAL
/ NUMERIC
:任意精度的有符號十進制數(shù)。可以指定小數(shù)點后的位數(shù),以及總的數(shù)字位數(shù)。FLOAT
:單精度浮點數(shù)。DOUBLE
/ REAL
:雙精度浮點數(shù)。BIT
:用于存儲二進制位字段,每個BIT
字段可以存儲0或1。字符串類型:
CHAR
:固定長度的字符串。定義時指定長度,且長度固定的情況下,字符串會被用空格填充至指定長度。VARCHAR
:可變長度的字符串。定義時指定最大長度,實際存儲時根據(jù)內(nèi)容長度動態(tài)分配空間。TEXT
:用于存儲較長的文本數(shù)據(jù)。MEDIUMTEXT
:用于存儲中等長度的文本數(shù)據(jù)。LONGTEXT
:用于存儲非常長的文本數(shù)據(jù)。日期和時間類型:
DATE
:日期值,格式為YYYY-MM-DD
。TIME
:時間值,格式為HH:MM:SS
。DATETIME
:日期和時間值,格式為YYYY-MM-DD HH:MM:SS
。TIMESTAMP
:時間戳值,表示從’1970-01-01 00:00:01’ UTC到現(xiàn)在的秒數(shù),使用時通常與當前時間相關聯(lián)。YEAR
:僅年份值,范圍從1901到2155。其他類型:
ENUM
:枚舉類型,允許在預定義的字符串集中選擇一個值。SET
:集合類型,允許在預定義的字符串集中選擇多個值。BINARY
/ VARBINARY
:二進制數(shù)據(jù)類型,與CHAR
和VARCHAR
類似,但存儲的是二進制字符而不是文本字符。BLOB
:二進制大對象,用于存儲大量的二進制數(shù)據(jù)。VARBINARY
:可變長度的二進制數(shù)據(jù)類型。JSON
:用于存儲JSON格式的數(shù)據(jù)。在定義表結(jié)構(gòu)時,可以根據(jù)實際需求選擇合適的數(shù)據(jù)類型來存儲相應的數(shù)據(jù)。例如:
CREATE TABLE example_table (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT,
birthdate DATE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
在這個例子中,我們定義了一個包含ID、姓名、年齡、出生日期和創(chuàng)建時間的表,并為每個字段指定了相應的數(shù)據(jù)類型。