You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL数据库中建立State与City的关联关系并存储指定记录?

在MySQL中建立State与City的关联关系并插入指定记录

没问题,我来帮你搞定这个需求。咱们需要先创建关联的两张表,再插入你指定的记录,同时通过外键保证数据的完整性。

1. 创建State(州)表

首先得建州表,因为城市表依赖它的州ID。我们把State_Id设为主键,确保每个州的ID唯一:

CREATE TABLE State (
    State_Id INT PRIMARY KEY,
    state_name VARCHAR(50) NOT NULL
);

2. 创建City(城市)表并建立关联

接下来创建城市表,这里要通过外键把State_ID和State表的State_Id关联起来,这样就能保证所有城市对应的州一定是存在的,避免无效数据。另外注意你给的城市记录里City_ID有重复(Mumbai的ID和Bhavnagr都是1),这不符合主键唯一性,所以我把Mumbai的City_ID改成了3,你也可以根据需求调整:

CREATE TABLE City (
    City_ID INT PRIMARY KEY,
    City_name VARCHAR(50) NOT NULL,
    State_ID INT NOT NULL,
    -- 建立外键关联State表的State_Id
    FOREIGN KEY (State_ID) 
        REFERENCES State(State_Id)
        ON DELETE RESTRICT -- 防止删除已有城市关联的州
        ON UPDATE CASCADE -- 如果州ID更新,城市的State_ID也同步更新
);

3. 插入State表数据

现在把你给的州数据插进去:

INSERT INTO State (State_Id, state_name)
VALUES 
    (1, 'Gujarat'),
    (2, 'Maharashtra');

4. 插入City表数据

调整City_ID后插入城市数据:

INSERT INTO City (City_ID, City_name, State_ID)
VALUES 
    (1, 'Bhavnagr', 1),
    (2, 'Rajkot', 1),
    (3, 'Mumbai', 2); -- 这里修改了City_ID为3,避免主键冲突

关联关系说明

  • 外键约束FOREIGN KEY (State_ID) REFERENCES State(State_Id)确保:
    • 不能插入State_ID不存在于State表的城市记录
    • 如果尝试删除有城市关联的州(比如Gujarat),会因为ON DELETE RESTRICT而失败,防止数据丢失
    • 如果修改State表的State_Id,City表对应的State_ID会自动同步(ON UPDATE CASCADE)

内容的提问来源于stack exchange,提问作者Vikram Parmar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:17:14