当我编写像
这样的查询时会发生什么 Select * from table1,table2,table3
我执行自然连接,内连接还是外连接,是否需要在表之间建立主键 - 外键关系
答案 0 :(得分:3)
正如其他人在评论中提到的那样,结果输出是三个表的笛卡尔积。这意味着,您可以获得表中记录的所有可能组合。这也称为CROSS JOIN,因为您没有匹配任何表上的任何列。
例如,如果你的table1包含5条记录(“A”,“B”,“C”,“D”和“E”),你的table2包含3条记录(“1”,“2”,“ 3“)和你的table3包含3条记录(”x“,”y“,”z“),你的结果表将包含5 * 3 * 3 = 45条记录:
"A", "1", "x"
"A", "1", "y"
"A", "1", "z"
"A", "2", "x"
...
......等等。
答案 1 :(得分:1)
没有必要将主键和外键相互绑定。
但是您的查询从table1中选择 all 数据,然后选择多次来自table2 的数据,因为table1具有行,并且等等。
举个例子:
你做SELECT * FROM table1,table2
。结果将是(200 * 300 =) 60000 行。如果你偶然这样做,它可能会阻止你的软件几分钟,因为它正在忙着选择所有这些行。