《mysql建表完整语句》
在数据库开发中,创建结构合理、符合需求的表是至关重要的。本篇将提供构建MySQL表的解决方案,通过完整的建表语句实现这一目标。
一、使用基本数据类型和约束创建简单表
当我们要创建一个存储用户基本信息(如用户名、密码、年龄等)的表时,可以采用如下方式:
sql
CREATE TABLE user_info (
user_id INT PRIMARY KEY AUTO_INCREMENT, -- 用户id,主键且自动递增
username VARCHAR(50) NOT NULL UNIQUE, -- 用户名,非空且
password CHAR(32) NOT NULL, -- 密码,这里假设密码为32位加密后的字符串,非空
age TINYINT UNSIGNED CHECK (age >= 0 AND age <= 150), -- 年龄,无符号 tinyint 类型,并且限制年龄范围
gender ENUM('male', 'female') DEFAULT 'male' -- 性别,默认值为'male'
);
在这个例子中,我们定义了不同类型的字段,包括整数类型(INT
)、字符类型(VARCHAR
、CHAR
)、枚举类型(ENUM
)等,并添加了相应的约束条件,如主键(PRIMARY KEY
)、非空(NOT NULL
)、(UNIQUE
)、检查(CHECK
)以及默认值(DEFAULT
)。
二、创建包含外键关联的表
如果我们有订单表(order_info
)和用户表(上述的user_info
),订单表中需要与用户表建立关联关系。
sql
CREATE TABLE order_info (
order_id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT,
order_amount DECIMAL(10, 2) NOT NULL, -- 订单金额,总长度10位,保留两位小数
order_time DATETIME DEFAULT CURRENT_TIMESTAMP, -- 订单时间,默认为当前时间
FOREIGN KEY (user_id) REFERENCES user_info(user_id)
ON DELETE CASCADE -- 如果删除用户,则对应的订单也被删除
ON UPDATE CASCADE -- 如果更新用户id,则对应的订单中的user_id也更新
);
这里通过外键(FOREIGN KEY
)建立了order_info
表中的user_id
与user_info
表中user_id
的关联,并设置了级联操作(ON DELETE CASCADE
和 ON UPDATE CASCADE
)。
三、创建带有索引的表
对于查询量较大的表,可以考虑创建索引来提高查询效率。例如创建一个商品表(product_info
),其中商品名称经常用于查询。
sql
CREATE TABLE product_info (
product_id INT PRIMARY KEY AUTO_INCREMENT,
product_name VARCHAR(100),
price DECIMAL(8, 2) NOT NULL,
stock INT NOT NULL,
INDEX idx_product_name (product_name) -- 创建名为idx_product_name的普通索引
);
除了普通索引,还可以根据实际需求创建索引、全文索引等不同类型索引来优化查询性能。
以上就是关于MySQL建表完整语句的介绍,不同的业务场景可以根据自身需求选择合适的建表方式。