上)

Posted m0_58827096

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上)相关的知识,希望对你有一定的参考价值。

上一节我们学习了聚合函数和分组查询,这一节我们讲连接查询。

连接查询

  • 连接是把不同表的记录连到一起的最普遍的方法,通过连接查询可将多个表作为一个表进行处理。
  • 连接查询分为内连接外连接

内连接查询

  1. 内连接基于连接谓词,它将两张表 ( 如A 和 B) 的列组合在一起,产生新的结果表。
  2. 内连接查询会将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接谓词的组合。当连接谓词被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。
  3. 内连接分 3 种:交叉连接相等连接自然连接

内链接语法


语法说明:

  1. fieldlist:table1 表和 table2 表中的字段列。如果 fieldlist 取两张表所有列,则可用“*”代替,此时会出现连接依据列重复,即 table1 表的 column1 与 table2 表的 column2 为重复列。
  2. table1 [INNER] JOIN table2:将 table1 表与 table2 表进行内连接,INNER 可省略。
  3. table1.column1=table2.column2:连接条件,其中 column1 和column2 为table1 表与table2 表的关联列,通常它们为外键列和主键列。
  4. “inner”可省略。
  5. “where condition”可省略,它为查询条件表达式。

交叉连接(笛卡尔积)

交叉连接(Cross Join),又称“笛卡尔连接(Cartesian Join)”或“叉乘(Product)”,它是所有类型的内连接的基础。

自然连接

  • 自然连接 (Natural Join) 是一种特殊的内连接,它要求相连接的两张表的连接依据列必须是相同的字段(字段名相同,字段属性相同)。
  • 在自然连接中两张表的所有名称相同的列都将被比较,并且在结果集中把重复的列去掉, 结果集中两张表中名称相同的列仅出现一次。而普通的内连接并不去掉重复的列。

语法如下:

多表连接查询

如果查询的信息来源于多张表,则可通过两两相连的方式建立多表连接查询。

三表连接查询的语法:

说明:
如果是三个表以上,使用的查询方法和三表连接查询的方法一样,均是通过两两相连的方式实现。

简单多表连接查询

如果在 FROM 子句中,直接列出所有要连接的表,然后在 WHERE 子句中指定连接条件,此为简单多表查询, 它与内连接功能相同。

使用两表连接查询语法:

使用三表连接查询语法:

总结

(1)内连接的定义是什么?有哪几种类型的内连接?

  1. 内连接基于连接谓词,它将两张表(如 A 和 B)的列组合在一起,产生新的结果表。具体过程是将 A 表的每一行和 B 表的每一行进行比较,并找出满足连接谓词的组合,当连接谓词被满足,A 和 B 中匹配的行会按列组合(并排组合)成结果集中的一行。
  2. 内连接分 3 种:交叉连接、相等连接和自然连接。

(2)多表连接查询和简单多表连接查询的语法是什么?
多表连接查询语法
SELECT fieldlist FROM table1 JOIN table2 ON table1.column1=table2.column2_1 JOIN table3 on table2.column2_2=table3.column3 [where condition]

简单多表连接查询语法
SELECT fieldlist FROM table1,table2,table3 where table1.column1=table2.column2_1 and table2.column2_2=table3.column3 [and 其他条件]

本节的内容就讲到这里,下一节我们继续讲外连接查询,我们下次再见。

以上是关于上)的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess:在所有页面上强制 www,在一个页面上强制 https,在所有其他页面上强制 http

为啥当我在 grails 上删除一对多关系上的父级时,会在子级上调用 beforeInsert 事件?

地理定位在笔记本电脑上工作,但不在智能手机上

键盘上的PERIOD键在啥地方?

工作上996,生活上669,并不是什么难事儿!

在 XCode 4 上创建的 Adhoc 在 iPad 上安装良好,但在 iPhone 上安装不正常。有啥问题?