美文网首页
10. 连接表

10. 连接表

作者: 柄志 | 来源:发表于2018-09-10 23:54 被阅读0次

连接表

连接

  • 连接用于检索存储在多个表中的数据
  • 连接是一种机制,用来在一条SELECT 语句中关联表,可连接多个表返回一组输出

内连接(等值连接)

  • 基于两个表之间的相等测试,称为内连接(inter join)或等值连接(equijoin)
-- ANSI规范首选 INTER JOIN 语法
SELECT column_name1,column_name2,column_name3
FROM table1 INTER JOIN table2 INTER JOIN table3
ON table1.column_name1 = table2.column_name1;

-- 简单的等值语法

SELECT column_name1,column_name2,column_name3
FROM table1,table2
WHERE table1.column_name1 = table2.column_name1;
  • 通过WHERE 子句实现表的连接
  • 在连接两个表时,实际是将第一个表中的每一行与第二个表中的每一行进行配对
  • 引用的列可能出现歧义时,必须使用完全限定列名
  • SQL 不限制一条SELECT 语句中可以连接表的数目,但连接的表越多,性能就下降得越厉害

笛卡尔积(cartesian product)

由没有连接条件的表关系返回的结果为笛卡尔积,检索出的行的数目将是第一个表中的行数乘以第二个表中的行数。返回笛卡尔积的连接,也称叉连接。

使用表别名

  • SQL 除了可对列名和计算字段使用别名,还允许给表名起别名
  • 表别名只在查询执行中使用,与列别名不同的是表别名不返回到客户端
  • 使用表别名可缩短SQL 语句,并允许在一条SELECT 语句中多次使用相同的表
SELECT column_name1,column_name2
FROM table1 AS T1, table2 AS T2
WHERE T1.column_name3 = T2.column_name3;

自连接(self-join)

  • 自连接通常作为外部语句,用来替代从相同表中检索数据的子查询语句
  • 大多DBMS处理连接的速度往往比处理子查询快
SELECT T1.column_name1,T1.column_name2
FROM table1 AS T1,table2 AS T2
WHERE T1.column_name1 = T2.column_name1
  AND T2.column_name = 'str';

自然连接(natural join)

  • 标准的连接(即内连接)返回所有的数据,相同的列甚至多次出现
  • 自然连接排除多次出现,使每一列值返回一次
  • 自然连接一般通过对一个表使用通配符(SELECT *),而对其他表的了使用明确的子集来完成

外连接(outer join)

  • 外连接包含了那些在相关表中没有关联的行
  • SELECT 语句使用OUTER JOIN 语句指定外连接类型
  • 使用OUTER JOIN 语法时,必须使用LEFT 或RIGHT 关键字指定包括其所有行的表
  • 左外连接(LEFT OUTER JOIN)指出OUTER JOIN 左边的表,右外连接反之
  • 调整FROM 或WHERE 子句中表的顺序,可“互换”左右外连接
SELECT table1.column_name1,table1.column_name2,table2.column_name3
FROM table1 LEFT OUTER JOIN table2
  ON table1.column_name1 = table2.column_name1;

使用带聚集函数的连接

SELECT table1.column_name1,
       COUNT(table2.column_name2) AS num
FROM table1 LEFT OUTER JOIN table2
  ON table1.column_name1 = table2.column_name1
-- 此处应使用GROUP BY,否则报错
GROUP BY table1.column_name1;

相关文章

  • 10. 连接表

    连接表 连接 连接用于检索存储在多个表中的数据 连接是一种机制,用来在一条SELECT 语句中关联表,可连接多个表...

  • 六、SQL–表连接⑤(自连接)

    自连接:参与连接的表为同一张表,即与自身连接。交叉连接、内连接、外连接等连接方式中只要参与连接的表是同一张表,那么...

  • 连接查询;外键

    连接查询 连接查询(join)分类:内连接、外连接、自然连接、交叉连接 使用方式:左表 join 右表 交叉连接(...

  • 连接查询;外键

    连接查询 连接查询(join)分类:内连接、外连接、自然连接、交叉连接 使用方式:左表 join 右表 交叉连接(...

  • Mysql中的连接

    知识点:交叉连接内连接外连接:左外连接、右外连接 以下实验涉及到两张表,表a和表b如下 交叉连接 对两张表进行笛卡...

  • 多表查询

    两张表: 左连接: 左表全部查询,以左表为基准 右连接: 右表全部查询,以右表为基准 内连接: 找交集

  • 数据库的表连接

    数据库中的表连接包括三种:内连接、外连接、交叉连接 t1(表): t2(表): 内连接(inner join) 查...

  • 数据库左连接、右连接、内连接+全连接

    声明:本文参考:数据库左连接、右连接、内连接、全连接笔记 1、新建表 表 table_a 表 table_b 2、...

  • MySQL 多表连接查询详解

    连接:就是将多个表连城一个表输出的过程叫连接(关联)。 连接类型:交叉连接、内连接、外连接(左外连接、右外连接)、...

  • mysql表连接.md

    1.链接的基本形式: 表1 【连接形式】 join 表2 【on 连接的条件】 或 表1 【连接形式】 join...

网友评论

      本文标题:10. 连接表

      本文链接:https://www.haomeiwen.com/subject/qyfygftx.html