栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用多个表插入数据

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用多个表插入数据

这就是你要做的。首先,发行人与电影之间的关系是一对多的-
发行人可以发行许多电影,但每部电影只有一个发行人。但是,电影类型是多对多的关系(您声明一部电影是多种类型,但也有一种类型是许多电影的情况),因此您应该为该关系准备一个额外的表。

本质上:

publisher:    publisher_id    publisher_name    <other publisher info>type:    type_id    type_name    <other type info>movie:    movie_id    movie_name    publisher_id references publisher(publisher_id)    <other movie info>movie_type:    movie_id references movie(movie_id)    type_id references type(type_id)

并为所有这些提供合适的主键。

然后,假设您已插入发布者和类型,则可以这样插入影片:

begin transaction;insert into movie (movie_name,publisher_id) values (    'Avatar',    (select publisher_id from publisher where publisher_name = 'Spielberg'));insert into movie_type (movie_id,type_id) values (    (select movie_id from movie where movie_name = 'Avatar'),    (select type_id from type where type_name = 'SciFi'));insert into movie_type (movie_id,type_id) values (    (select movie_id from movie where movie_name = 'Avatar'),    (select type_id from type where type_name = 'GrownUpSmurfs'));commit;

换句话说,您使用子选择基于一组 唯一 的属性从相关表中获取ID
(上面的示例假定电影名称是唯一的,实际上,您将需要更具体的查询,例如处理不同的电影同名:例如,“欧米茄(Omega)男人”。

如果您使用的DBMS不支持值部分中的selects,那么最好的选择可能就是记住或使用所使用的任何编程语言将相关值提取到变量中,或者构造一个查询来完成。用伪代码:

begin transaction;insert into movie (movie_name,publisher_id) values (    'Avatar',    (select publisher_id from publisher where publisher_name = 'Spielberg'));select movie_id into :m_id from movie where movie_name = 'Avatar';select type_id into :t_id1 from type where type_name = 'SciFi';select type_id into :t_id2 from type where type_name = 'GrownUpSmurfs';insert into movie_type (movie_id,type_id) values (:m_id, :t_id1);insert into movie_type (movie_id,type_id) values (:m_id, :t_id2);commit;

针对您的评论:

嘿,我没说类型和电影关系的意思..请您详细说明这一点..关于阿比德

Avatar和Solaris都可以视为SciFi类型。如此多的电影属于一种类型。Xmen:Wolverine既可以视为动作,也可以视为漫画翻拍。一部电影有这么多种类型。

多对多关系最好用一个单独的表来表示,该表包含两个相关表之间的交叉匹配。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404709.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号