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

10个简朴步调,完全领略SQL

发布时间:2019-06-04 00:50:34 所属栏目:编程 来源:IT技术圈
导读:多年前保藏在条记中的一篇文章,本日偶尔翻出,重读了一遍,依然大有收成。分享出来,各人一路切磋。 以本文是为了以下读者而专程编写的: 1、 在事变中会用到 SQL 可是对它并不完全相识的人。 2、 可以或许纯熟行使 SQL 可是并不相识其语法逻辑的人。 3、 想

SQL 说话尺度中表的毗连界说如下:

  1. <table reference> ::= 
  2. <table name> 
  3. | <derived table> 
  4. | <joined table> 

就拿之前的例子来说:

  1. FROM a, b 

a 也许输如下表的毗连:

  1. a1 JOIN a2 ON a1.id = a2.id 

将它放到之前的例子中就酿成了:

  1. FROM a1 JOIN a2 ON a1.id = a2.id, b 

尽量将一个毗连表用逗号跟另一张表连系在一路并不是常用作法,可是你简直可以这么做。功效就是,最终输出的表就有了 a1+a2+b 个字段了。

在 SQL 语句中派生表的应用乃至比表毗连越发强盛,下面我们就要讲到表毗连。

我们学到了什么?

思索题目时,要从表引用的角度出发,这样就很轻易领略数据是奈何被 SQL 语句处理赏罚的,而且可以或许辅佐你领略那些伟大的表引用是做什么的。

更重要的是,要领略 JOIN 是构建毗连表的要害词,并不是 SELECT 语句的一部门。有一些数据库应承在 INSERT 、 UPDATE 、 DELETE 中行使 JOIN 。

5、 SQL 语句中保举行使表毗连

我们先看看方才这句话:

  1. FROM a, b 

高级 SQL 措施员大概给你忠告:只管不要行使逗号来取代 JOIN 举办表的毗连,这样会进步你的 SQL 语句的可读性,而且可以停止一些错误。 操作逗号来简化 SQL 语句偶然辰会造成思想上的紊乱,想一下下面的语句:

  1. FROM a, b, c, d, e, f, g, h 
  2. WHERE a.a1 = b.bx 
  3. AND a.a2 = c.c1 
  4. AND d.d1 = b.bc 
  5. -- etc... 

我们不丢脸出行使 JOIN 语句的甜头在于: 安详。 JOIN 和要毗连的表离得很是近,这样就能停止错误。

更多毗连的方法,JOIN 语句能去区分出来外毗连和内毗连等。

我们学到了什么?

记取要只管行使 JOIN 举办表的毗连,永久不要在 FROM 后头行使逗号毗连表。

6、 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) 

(编辑:湖南网)

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

热点阅读