join的用法(数据库多表查询语句join 的使用方法详解)
一、多表连接查询的时候是使用and 还是用 join on
多表连接查询按要查的结果而定
第一个,就是普通的连接查询,等同于
select C.字段一, count(A.主键)
from Table A
inner join Table B on A.B的主键= B.主键
inner join Table C on B.C的主键= C.主键
group C.字段一
或
select C.字段一, count(A.主键)
from Table A
join Table B on A.B的主键= B.主键
join Table C on B.C的主键= C.主键
group C.字段一
第二个采用了左连接
也就是以A为主表,要把条件中A的显示完全,即如果C.字段1对应的A主键为空,那么就显示0,可如果在第一中查询,如果为空,那就不显示了
正常来说,速度都差不多,因为执行方式基本一致
二、sql中left join from 多个表怎么写
应该这样写:
select a.id,其他字段
from a,b,c,d LEFT JOIN e
on e.id=a.id
left join f on f.id=c.id
如果只是为了学习,建议不要一下子高这么复杂,给你举个例子就明白了
两个表连接
select a.*,b.* from a left join b on a.id=b.id;
三个以上
select a.*,b.* from a left join b on a.id=b.id left join c on a.id=b.id where……
可以有多种变换,连接条件,显示字段跟具体结合具体场景灵活运用。
扩展资料:
结构化查询语言包含6个部分:
一:数据查询语言(DQL:Data Query Language):
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
二:数据操作语言(DML:Data Manipulation Language):
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
三:事务处理语言(TPL):
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
四:数据控制语言(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
五:数据定义语言(DDL):
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
六:指针控制语言(CCL):
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
参考资料:
爱学术-基于SQL Server的SQL优化
三、sql中inner join on 和一般的多表查询有什么区别
sql="select [个人信息$].*,[工作经历$].* from [个人信息$],[工作经历$] where [个人信息$].UID=[工作经历$].UID"
sql="select [个人信息$].*,[工作经历$].* from [个人信息$] inner Join [工作经历$] on [个人信息$].UID=[工作经历$].UID"
第一种是普通的多表查询,内部还是笛卡尔积的逐行的搜索机制,如果查询的几张表数据量大的话会降低性能;
第二种是内连接。两种方式得到的结果是一致的。
两者没什么区别,在执行方式和效率上都是一样的,只是书写的方式不同,基本上inner join是为了区别 left join,right join等的一个写法,而另外那种不是join的写法,只能等同于inner join。