建表语句
CREATE TABLE example_table (
ID bigint NOT NULL AUTO_INCREMENT,
VARCHAR_COLUMN VARCHAR(255) NOT NULL,
VARCHAR_CLM2 VARCHAR(25) DEFAULT NULL,
INT_COLUMN INT NOT NULL,
DECIMAL_COLUMN DECIMAL(10, 2),
DATE_COLUMN DATE,
DATETIME_COLUMN DATETIME,
TIMESTAMP_COLUMN TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
BOOLEAN_COLUMN BOOLEAN,
Text_Column TEXT,
Enum_Column ENUM('value1', 'value2', 'value3'),
Blob_Column BLOB,
UNIQUE_COLUMN INT UNIQUE,
PRIMARY KEY (ID),
INDEX idx_int_column (INT_COLUMN),
INDEX idx_date_column (DATE_COLUMN),
INDEX idx_int_dt_unq (INT_COLUMN, DATE_COLUMN, UNIQUE_COLUMN)
) ENGINE = InnoDB DEFAULT CHARACTER SET utf8mb4;
解释
- ID:整数类型,不可空,自动递增。
- VARCHAR_COLUMN:VARCHAR 字符串列,长度255(最大长度为255),不可空。
- VARCHAR_CLM2:字符串列,长度25,默认为空。
- INT_COLUMN:整数列,不可空。
- DECIMAL_COLUMN:带小数的 DECIMAL 列,总长度10位,包括小数点后两位。
- DATE_COLUMN:日期列。
- DATETIME_COLUMN:日期时间列。
- TIMESTAMP_COLUMN:TIMESTAMP类型的时间戳列,默认使用当前时间戳作为默认值。每次插入新行时自动为该列生成当前的时间戳,用于记录数据行的创建时间。
- BOOLEAN_COLUMN:布尔值列。
- Text_Column:文本列。
- Enum_Column:ENUM 枚举列,只能取预定义的值之一。
- Blob_Column:BLOB 二进制大对象列。
- UNIQUE_COLUMN:带有唯一约束的整数列。
- PRIMARY KEY (ID):定义ID为主键。
- INDEX idx_int_column (INT_COLUMN):创建一个名为 idx_int_column 的普通索引,用于加速根据 INT_COLUMN 列进行查询。
- INDEX idx_date_column (DATE_COLUMN):创建一个名为 idx_date_column 的普通索引,用于加速根据 DATE_COLUMN 列进行查询。
- INDEX idx_int_dt_unq (INT_COLUMN, DATE_COLUMN, UNIQUE_COLUMN):创建一个名为 idx_int_dt_unq 的联合索引,用于加速根据 INT_COLUMN、DATE_COLUMN 和 UNIQUE_COLUMN 列进行查询。联合索引可以用于多个列的组合查询。
- ENGINE = InnoDB:指定了表的存储引擎。InnoDB是一种流行的事务型存储引擎,提供了ACID事务支持和行级锁定等功能。使用InnoDB可以确保数据的一致性和可靠性。
- DEFAULT CHARACTER SET utf8mb4:指定了表的默认字符集。utf8mb4是一种字符集,支持存储各种字符,包括Unicode字符集中的4字节字符(如一些表情符号)。
扩展
在MySQL中,int和bigint都是用于存储整数类型的数据,但它们的存储范围和占用空间大小有所不同。以下是它们之间的区别:
int:
int是一种整数数据类型,用于存储正负整数。
存储范围:-2,147,483,648 到 2,147,483,647(约20亿),包括0。占用空间:4字节(32位)。
bigint:
bigint也是一种整数数据类型,用于存储更大范围的正负整数。
存储范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(约90亿亿),包括0。占用空间:8字节(64位)。
总的来说,如果您需要存储较小范围的整数,可以使用int,它的存储空间较小。如果您需要存储更大范围的整数,可以使用bigint,但请注意,使用更大的存储空间可能会在一些情况下占用更多的磁盘空间和内存。