在MySQL中,定义数据类型是创建表(table)时非常重要的一部分。MySQL支持多种数据类型,包括数字类型、字符串类型、日期和时间类型以及其他类型。以下是MySQL中常见的数据类型及其定义:
-
数值类型:
TINYINT
:1个字节有符号整数,范围从-128到127(有符号),或0到255(无符号)。SMALLINT
:2个字节有符号整数,范围从-32,768到32,767(有符号),或0到65,535(无符号)。MEDIUMINT
:3个字节有符号整数,范围从-8,388,608到8,388,607(有符号),或0到16,777,215(无符号)。INT
:4个字节有符号整数,范围从-2,147,483,648到2,147,483,647(有符号),或0到4,294,967,295(无符号)。BIGINT
:8个字节有符号整数,范围从-9,223,372,036,854,775,808到9,223,372,036,854,775,807(有符号),或0到18,446,744,073,709,551,615(无符号)。DECIMAL
/NUMERIC
:任意精度的有符号十进制数。可以指定小数点后的位数,以及总的数字位数。FLOAT
:单精度浮点数。DOUBLE
/REAL
:双精度浮点数。BIT
:用于存储二进制位字段,每个BIT
字段可以存储0或1。
-
字符串类型:
CHAR
:固定长度的字符串。定义时指定长度,且长度固定的情况下,字符串会被用空格填充至指定长度。VARCHAR
:可变长度的字符串。定义时指定最大长度,实际存储时根据内容长度动态分配空间。TEXT
:用于存储较长的文本数据。MEDIUMTEXT
:用于存储中等长度的文本数据。LONGTEXT
:用于存储非常长的文本数据。
-
日期和时间类型:
DATE
:日期值,格式为YYYY-MM-DD
。TIME
:时间值,格式为HH:MM:SS
。DATETIME
:日期和时间值,格式为YYYY-MM-DD HH:MM:SS
。TIMESTAMP
:时间戳值,表示从’1970-01-01 00:00:01’ UTC到现在的秒数,使用时通常与当前时间相关联。YEAR
:仅年份值,范围从1901到2155。
-
其他类型:
ENUM
:枚举类型,允许在预定义的字符串集中选择一个值。SET
:集合类型,允许在预定义的字符串集中选择多个值。BINARY
/VARBINARY
:二进制数据类型,与CHAR
和VARCHAR
类似,但存储的是二进制字符而不是文本字符。BLOB
:二进制大对象,用于存储大量的二进制数据。VARBINARY
:可变长度的二进制数据类型。JSON
:用于存储JSON格式的数据。
在定义表结构时,可以根据实际需求选择合适的数据类型来存储相应的数据。例如:
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、姓名、年龄、出生日期和创建时间的表,并为每个字段指定了相应的数据类型。