MySQL: 创建两个关联的表
建表思路
USERS表:包含用户的基本信息,像ID、NAME、EMAIL等。v_card表:存有虚拟卡的相关信息,如type和amount。- 关联字段:
USERS表的V_CARD字段和v_card表的v_card字段用于建立关联。
建表 SQL 语句
以下是创建这两个表的 SQL 语句,以 MySQL 为例:
sql
-- 创建 USERS 表
CREATE TABLE IF NOT EXISTS USERS (
ID INT AUTO_INCREMENT PRIMARY KEY,
NAME VARCHAR(255) NOT NULL,
EMAIL VARCHAR(255) UNIQUE NOT NULL,
ID_CARD VARCHAR(18) UNIQUE NOT NULL,
V_CARD VARCHAR(50),
ADDRESS VARCHAR(255)
);
-- 创建 v_card 表
CREATE TABLE IF NOT EXISTS v_card (
v_card VARCHAR(50) PRIMARY KEY,
type VARCHAR(50),
amount DECIMAL(10, 2)
);
代码解释
-
USERS表:ID:这是自增的主键,用于唯一标识每个用户。NAME:用户的姓名,为非空字段。EMAIL:用户的邮箱,要求唯一且非空。ID_CARD:用户的身份证号,同样要求唯一且非空。V_CARD:用于关联v_card表的字段。ADDRESS:用户的地址。
-
v_card表:v_card:作为主键,用于唯一标识每张虚拟卡。type:虚拟卡的类型。amount:虚拟卡的金额,使用DECIMAL(10, 2)类型,能够精确到小数点后两位。
MySQL联表创建一个新表
在 MySQL 中,你可以使用 CREATE TABLE ... AS 语句来根据查询结果创建新表,示例如下:
sql
CREATE TABLE new_table AS
SELECT USERS.ID,
USERS.NAME,
USERS.EMAIL,
USERS.ID_CARD,
USERS.V_CARD,
USERS.ADDRESS,
v_card.type,
v_card.amount
FROM USERS
JOIN v_card ON USERS.V_CARD = v_card.v_card;
上述代码中,new_table 是你要创建的新表的名称,CREATE TABLE ... AS 会将查询结果的列结构和数据复制到新表中。
执行结果:

















![LINUX基础 [三] - 进程创建](https://i-blog.csdnimg.cn/direct/1828572b07034173a0f756259b5067fb.gif)


