sql:连接查询跟多表查询的区别
比如:select*fromtable1,table2wheretable1.id=table2.id;select*fromtable1innerjointable2o...
比如:select * from table1,table2 where table1.id = table2.id;
select * from table1 inner join table2 on table1.id = table2.id;
这两个sql语句的区别 展开
select * from table1 inner join table2 on table1.id = table2.id;
这两个sql语句的区别 展开
5个回答
展开全部
这俩没区别
就是写法不同
这个就如同表1里有a,b俩字段一样
select a,b from 表1
select * from 表1
是一样的
顺便给你扩展下吧
在数据库里还有left join,right join,full join等
当这样的时候用
select * from table1,table2 where table1.id = table2.id;
这样类似的查询就不行了。得用
select * from table1 left join table2 on table1.id = table2.id;
这种了
就是写法不同
这个就如同表1里有a,b俩字段一样
select a,b from 表1
select * from 表1
是一样的
顺便给你扩展下吧
在数据库里还有left join,right join,full join等
当这样的时候用
select * from table1,table2 where table1.id = table2.id;
这样类似的查询就不行了。得用
select * from table1 left join table2 on table1.id = table2.id;
这种了
追问
select * from table1 left join table2 on table1.id = table2.id;
select * from table1 left outer join table2 on table1.id = table2.id;
这两条sql有什么区别。感觉它们也是一样的结果
追答
LEFT JOIN 的功能就是将LEFT左边的表名1中的所有记录全部保留,而将右边的表名2中的字段B与表名1.字段A相对应的记录显示出来(当使用SELECT * 时)。而RIGHT JOIN 和LEFT JOIN 相反。
外连接的功能是,把LEFT左边的表中的所有记录保留,而右边表只保留相关联的记录,也就是先执行一次INNER JOIN,然后把LEFT左边的表中的与右边表没有任何关联的记录也保留,而右边表的字段为null.
展开全部
这两条语句结果是等效的,查询计划也是等效的
其中第一条语句叫做笛卡尔积,省却了关键字cross join
select * from table1 cross join table2 where table1.id = table2.id;
就这点区别了
其中第一条语句叫做笛卡尔积,省却了关键字cross join
select * from table1 cross join table2 where table1.id = table2.id;
就这点区别了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-06-27
展开全部
第一种写法是sql92标准写法
第二种写法是sql99标准写法 (推荐) 效果是等效的
第二种写法是sql99标准写法 (推荐) 效果是等效的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
连接查询包括合并、内连接、外连接和交叉连接,如果涉及多表查询,了解这些连接的特点很重要。
只有真正了解它们之间的区别,才能正确使用。
1、Union
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。
当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
注意:使用UNION时,两张表查询的结果有相同数量的列、列类型相似。
2、INNER JOIN(内连接)
INNER JOIN(内连接),也成为自然连接
作用:根据两个或多个表中的列之间的关系,从这些表中查询数据。
注意: 内连接是从结果中删除其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
重点:内连接,只查匹配行。
3、外连接
与内连接相比,即使没有匹配行,也会返回一个表的全集。
外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。
重点:至少有一方保留全集,没有匹配行用NULL代替。
1)LEFT OUTER JOIN,简称LEFT JOIN,左外连接(左连接)
结果集保留左表的所有行,但只包含第二个表与第一表匹配的行。第二个表相应的空行被放入NULL值。
4、CROSS JOIN(交叉连接)
交叉连接。交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉连接也称作笛卡尔积。
简单查询两张表组合,这是求笛卡儿积,效率最低。
只有真正了解它们之间的区别,才能正确使用。
1、Union
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。
当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
注意:使用UNION时,两张表查询的结果有相同数量的列、列类型相似。
2、INNER JOIN(内连接)
INNER JOIN(内连接),也成为自然连接
作用:根据两个或多个表中的列之间的关系,从这些表中查询数据。
注意: 内连接是从结果中删除其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。
重点:内连接,只查匹配行。
3、外连接
与内连接相比,即使没有匹配行,也会返回一个表的全集。
外连接分为三种:左外连接,右外连接,全外连接。对应SQL:LEFT/RIGHT/FULL OUTER JOIN。通常我们省略outer 这个关键字。写成:LEFT/RIGHT/FULL JOIN。
重点:至少有一方保留全集,没有匹配行用NULL代替。
1)LEFT OUTER JOIN,简称LEFT JOIN,左外连接(左连接)
结果集保留左表的所有行,但只包含第二个表与第一表匹配的行。第二个表相应的空行被放入NULL值。
4、CROSS JOIN(交叉连接)
交叉连接。交叉连接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉连接也称作笛卡尔积。
简单查询两张表组合,这是求笛卡儿积,效率最低。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是没有什么区别就是写法的不同
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |