从多个表中收集数据

时间:2011-07-14 17:09:43

标签: sql join view union

当我从mySQL数据库中的多个表中检索数据时,最好使用哪种方法,联接,联合或查看?每种方法的优点和缺点是什么,它们最适合什么情况?

2 个答案:

答案 0 :(得分:0)

这实际上取决于您希望如何显示此数据。

联接用于选择相关数据并在同一行显示所有数据时,其中联合用于从两个不同的选择语句中一起显示数据。

在您的情况下,当您具有非常复杂的查询时,应该使用视图,并且您希望简化选择数据所需的select语句。如果你要反复使用select语句,它会减少混乱。使用观点还有很多其他原因,但我认为他们并不认同这个问题。

答案 1 :(得分:0)

@jworrin说的话。

SQL就是设置操作。

  • A inner join B设置交集:A∩B

  • A union B是......好吧......设置联盟:A∪B

  • A left join B是一个复合词:(A∉(A∩B))∪(A∩B)

  • right join与左连接相同。只需要语法糖来交换所涉及的表/集的位置。 B right join AA left join B相同。

  • A full join B也是一个复合词:(A∉(A∩B))∪(A∩B)∪(B∉(A∩B))

您使用的完全取决于问题。

view本质上是一个不变的预制选择语句。它允许您呈现“虚拟表”,例如,规范化数据库的非规范化平面视图。视图对限制对列和/或表的访问也很有用。