加入收藏 | 设为首页 | 会员中心 | 我要投稿 西安站长网 (https://www.029zz.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

10个简单步骤,完全理解SQL

发布时间:2019-06-04 20:25:28 所属栏目:建站 来源:IT技术圈
导读:副标题#e# 多年前收藏在笔记中的一篇文章,今天偶然翻出,重读了一遍,依然大有收获。分享出来,大家一起探讨。 以本文是为了以下读者而特地编写的: 1、 在工作中会用到 SQL 但是对它并不完全了解的人。 2、 能够熟练使用 SQL 但是并不了解其语法逻辑的人

SQL 语句中,表连接的方式从根本上分为五种:

  1. EQUI JOIN 
  2. SEMI JOIN 
  3. ANTI JOIN 
  4. CROSS JOIN 
  5. DIVISION 

EQUI JOIN 是一种最普通的 JOIN 操作,它包含两种连接方式:

INNER JOIN(或者是 JOIN )

OUTER JOIN(包括: LEFT 、 RIGHT、 FULL OUTER JOIN)

用例子最容易说明其中区别:

  1. -- This table reference contains authors and their books. 
  2. -- There is one record for each book and its author. 
  3. -- authors without books are NOT included 
  4. author JOIN book ON author.id = book.author_id 
  5. -- This table reference contains authors and their books 
  6. -- There is one record for each book and its author. 
  7. -- ... OR there is an "empty" record for authors without books-- ("empty" meaning that all book columns are NULL) 
  8. author LEFTOUTER JOIN book ON author.id = book.author_id 

SEMI JOIN

这种连接关系在 SQL 中有两种表现方式:使用 IN,或者使用 EXISTS。“ SEMI ”在拉丁文中是“半”的意思。这种连接方式是只连接目标表的一部分。这是什么意思呢?

再想一下上面关于作者和书名的连接。我们想象一下这样的情况:我们不需要作者 / 书名这样的组合,只是需要那些在书名表中的书的作者信息。那我们就能这么写:

  1. -- Using IN 
  2. FROM author 
  3. WHERE author.id IN(SELECT book.author_id FROM book) 
  4.   
  5. -- Using EXISTS 
  6. FROM author 
  7. WHERE EXISTS (SELECT 1 FROM book WHERE book.author_id = author.id) 

(编辑:西安站长网)

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

热点阅读