如何在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
相关产品推荐
相关产品推荐

