MySQL数据类型和常用字段属性总结
MySQL是目前使用最广泛的关系型数据库之一,不同于其他类型数据库的是,MySQL具有非常丰富的数据类型和字段属性。
数据类型
整型
MySQL定义了5种不同长度的整型,分别为:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。这些整型可以用来存储整数值,具体范围和存储大小如下所示:
类型 | 存储范围 | 存储大小 |
---|---|---|
TINYINT | -128 ~ 127 | 1 byte |
SMALLINT | -32768 ~ 32767 | 2 bytes |
MEDIUMINT | -8388608 ~ 8388607 | 3 bytes |
INT | -2147483648 ~ 2147483647 | 4 bytes |
BIGINT | -9223372036854775808 ~ 9223372036854775807 | 8 bytes |
示例:
CREATE TABLE user (
id INT PRIMARY KEY,
age TINYINT UNSIGNED NOT NULL,
salary BIGINT DEFAULT 0
);
浮点型
MySQL定义了2种浮点型,分别为:FLOAT和DOUBLE,它们可以用来存储带有小数点的数值,具体范围和存储大小如下所示:
类型 | 存储范围 | 存储大小 |
---|---|---|
FLOAT | -3.40282347E+38 ~ -1.17549435E-38, 0 和 1.17549435E-38 ~ 3.40282347E+38 | 4 bytes |
DOUBLE | -1.7976931348623157E+308 ~ -2.2250738585072014E-308, 0 和 2.2250738585072014E-308 ~ 1.7976931348623157E+308 | 8 bytes |
示例:
CREATE TABLE product (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
price FLOAT(8, 2) NOT NULL,
discount DOUBLE(8, 4) DEFAULT 0.0
);
字符型
MySQL定义了4种字符型,分别为:CHAR、VARCHAR、TEXT、BLOB。这些字符型可以用来存储不同长度的字符串和文本,具体定义如下:
类型 | 定义 | 大小 |
---|---|---|
CHAR | 固定长度字符串 | 0 ~ 255 bytes |
VARCHAR | 可变长度字符串 | 0 ~ 65535 bytes |
TEXT | 长文本数据 | 0 ~ 65535 bytes |
BLOB | 长二进制数据 | 0 ~ 65535 bytes |
示例:
CREATE TABLE article (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content TEXT NOT NULL,
image BLOB
);
日期和时间型
MySQL定义了3种日期和时间型,分别为:DATE、TIME和DATETIME。这些日期和时间型可以用来存储日期和时间信息,具体定义如下:
类型 | 定义 | 大小 |
---|---|---|
DATE | 日期(年月日) | 3 bytes |
TIME | 时间(时分秒) | 3 bytes |
DATETIME | 日期时间(年月日时分秒) | 8 bytes |
示例:
CREATE TABLE order (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
create_date DATE NOT NULL,
create_time TIME NOT NULL,
update_time DATETIME NOT NULL DEFAULT NOW()
);
字段属性
NOT NULL
NOT NULL用来指定该字段的值不能为空,否则会报错。
示例:
CREATE TABLE person (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) NOT NULL
);
DEFAULT
DEFAULT用来指定该字段的默认值,在插入数据时可以不指定该字段的值,从而使用默认值。
示例:
CREATE TABLE student (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
age TINYINT UNSIGNED DEFAULT 20
);
UNSIGNED
UNSIGNED用来指定该字段的值必须为正整数。
示例:
CREATE TABLE product (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
price FLOAT UNSIGNED NOT NULL
);
AUTO_INCREMENT
AUTO_INCREMENT用来指定自增长,用于自动分配主键值。
示例:
CREATE TABLE user (
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL
);
PRIMARY KEY
PRIMARY KEY用来指定该字段为主键,用于唯一标识表中的每一行。
示例:
CREATE TABLE book (
id INT UNSIGNED PRIMARY KEY,
title VARCHAR(100) NOT NULL,
author VARCHAR(100) NOT NULL
);
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL数据类型和常用字段属性总结 - Python技术站