赞
踩
连接查询是SQL中常见的一种查询语句,它可以将两个或多个表中的数据关联在一起并返回一个结果集。连接查询分为内连接、外连接和交叉连接。
内连接:内连接指的是连接两个表中共有的数据,即在两个表中都存在的数据才能被查询出来。
外连接:外连接指的是连接两个表中不完全重叠的数据,即在一个表中存在的数据在另一个表中不存在,或者在两个表中都存在但是某些字段的值不一样的数据。
交叉连接:交叉连接又称笛卡尔积,它返回两个表的所有可能组合。这种连接方式使用较少,因为它通常会返回过多的结果,占用过多的计算资源。
下面是一些连接查询的示例:
连接查询:连接查询主要应用于多表进行查询,通过各个表中相同属性列的相关性进行数据查询。 谓词连接:在SELECT语句的WHERE子句中使用比较运算符给出连接条件对多张表进行连接,这种表示形式称为连接谓词表示形式。
- SELECT <输出列表>
- FROM <表1>,<表2>
- [WHERE <表1>.<列名> <连接操作符> <表2>.<列名>]
- --其中:连接操作符主要为:=、>、<、>=、<=、!=、<>、!>、!<
JOIN连接:JOIN连接又分为内连接、外连接和交叉连接,其中外连接又分为左外连接、右外连接和完全外连接。
内连接。内连接按照ON所指定的连接条件合并两个表,返回满足条件的行。
外连接。外连接的结果集不但包含满足连接条件的行,还包括相应表中的所有行。
左外连接。结果集中除了包括满足连接条件的行外,还包括左表的所有行。
右外连接。结果集中除了包括满足连接条件的行外,还包括右表的所有行。
完全外连接。结果集中除了包括满足连接条件的行外,还包括两个表的所有行。
- SELECT <输出列表>
- FROM table_source join_type table_source ON search_condition
1.查询编号为“SM001”的业务员发展客户的情况,显示业务员编号、业务员姓名、客户编号、客户姓名、客户联系方式。
- USE DB_CRM
- SELECT TB_Salesman.SID,SName,CID,CContact,CPhone
- FROM TB_Salesman,TB_Customer
- WHERE TB_Salesman.SID=TB_Customer.SID
2. 查询每个业务员的任务计划,显示业务员编号、姓名、任务的编号以及实施情况。
- USE DB_CRM
- SELECT TB_Salesman.SID,SName,TID,TPerform
- FROM TB_Salesman INNER JOIN TB_Task
- ON TB_Salesman.SID=TB_Task.SID
3.查询部门不同但岗位级别一样的业务员信息,显示业务员编号、姓名、所在部门和岗位级别。
- USE DB_CRM
- SELECT S1.SID,S1.SName,S1.SDID,S1.SPostID
- FROM TB_Salesman AS S1 JOIN TB_Salesman AS S2
- ON S1.SDID!=S2.SDID AND S1.SPostID=S2.SPostID
4.查询每个客户对商品的反馈情况,包括没反馈信息的客户情况,显示客户编号、客户联系人、商品编号、反馈时间、反馈内容和解决情况。
- USE DB_CRM
- SELECT TB_Customer.CID,CContact,PID,FTime,FContent,FResolve
- FROM TB_Customer LEFT JOIN TB_Feedback
- ON TB_Customer.CID=TB_Feedback.CID
注意:连接查询操作可能会耗费非常大的系统资源,因此在使用时应尽可能优化查询语句和表结构,避免出现过多的重复数据和无效数据查询。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。