加入收藏 | 设为首页 | 会员中心 | 我要投稿 平凉站长网 (https://www.0933zz.com.cn/)- 图像处理、语音技术、媒体智能、运维、低代码!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

sql中内连接与外连接与交叉连接用法

发布时间:2022-07-02 11:17:43 所属栏目:MySql教程 来源:互联网
导读:文章介绍了在mysql中的内连接与外连接与交叉连接用法与举例说明了,有需要了解的朋友可以参考一下下. 一)内连接 SQL INNER JOIN 关键字,在表中存在至少一个匹配时,INNER JOIN 关键字返回行,内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被
  文章介绍了在mysql中的内连接与外连接与交叉连接用法与举例说明了,有需要了解的朋友可以参考一下下.
 
  一)内连接
 
  SQL INNER JOIN 关键字,在表中存在至少一个匹配时,INNER JOIN 关键字返回行,内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值,内连接分三种:
 
  1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列.
 
  语法,代码如下:
 
  SELECT column_name(s)
  FROM table_name1
  INNER JOIN table_name2  
  ON table_name1.column_name=table_name2.column_name
  --phpfensi.com
  注释:INNER JOIN 与 JOIN 是相同的.
 
  例,下面使用等值连接列出authors和publishers表中位于同一城市的作者和出版社,代码如下:
 
  SELECT *  
  FROM authors AS a INNER JOIN publishers AS p  
  ON a.city=p.city   
  2、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值,这些运算符包括>、>=、<=、<、!>、!<和<>.
 
  3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列.
 
  例,在选择列表中删除authors 和publishers 表中重复列(city和state),代码如下:
 
  SELECT a.*,p.pub_id,p.pub_name,p.country  
  FROM authors AS a INNER JOIN publishers AS p  
  ON a.city=p.city
  二)外连接
 
  LEFT JOIN 关键字会从左表(table_name1)那里返回所有的行,即使在右表 (table_name2)中没有匹配的行.
 
  外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)中的所有数据行.
 
  left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录;
 
  right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录;
 
  LEFT JOIN 关键字语法,代码如下:
 
  SELECT column_name(s)
  FROM table_name1
  LEFT JOIN table_name2  
  ON table_name1.column_name=table_name2.column_name
  注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN.
 
  例如1,代码如下:
 
  SELECT a.*,b.* FROM luntan LEFT JOIN usertable as b  
  ON a.username=b.username   
  例如2,代码如下:
 
  SELECT a.*,b.*  
  FROM city as a FULL OUTER JOIN user as b  
  ON a.username=b.username
  三),交叉连接
 
  交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数,例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48行.
 
  例如,代码如下:
 
  SELECT type,pub_name  
  FROM titles CROSS JOIN publishers  
  ORDER BY type
  SQL JOIN - 使用 Join
 
  除了上面的方法,我们也可以使用关键词 JOIN 来从两个表中获取数据,如果我们希望列出所有人的定购,可以使用下面的 SELECT 语句:
 
  SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
  FROM Persons  --phpfensi.com
  INNER JOIN Orders
  ON Persons.Id_P = Orders.Id_P
  ORDER BY Persons.LastName
 

(编辑:平凉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读