MySQL: 创建两个关联的表,用联表sql创建一个新表

发布于:2025-03-26 ⋅ 阅读:(27) ⋅ 点赞:(0)

MySQL: 创建两个关联的表

建表思路

  • USERS 表:包含用户的基本信息,像 IDNAMEEMAIL 等。
  • 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)
);

代码解释

  1. USERS 表

    • ID:这是自增的主键,用于唯一标识每个用户。
    • NAME:用户的姓名,为非空字段。
    • EMAIL:用户的邮箱,要求唯一且非空。
    • ID_CARD:用户的身份证号,同样要求唯一且非空。
    • V_CARD:用于关联 v_card 表的字段。
    • ADDRESS:用户的地址。
  2. 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 会将查询结果的列结构和数据复制到新表中。

执行结果: