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
会将查询结果的列结构和数据复制到新表中。
执行结果: