SQL语法(五) 多表联合查询

版权声明:程序猴jwang版权所有 https://blog.csdn.net/qq_21046965/article/details/82555346

前言

           当需要获取的数据分布在多张中,考虑使用联合查询,本章将学习两种查询方式(sql92/sql99)

范例

1.笛卡儿积

将多个表的数据进行一一对应,所得到结果为多表的笛卡尔积。结果的数量为所有表的数量的乘积。

--SQL92方式
  --表名以逗号隔开实现多表查询
--SQL99方式
  --使用cross join 关键字

2.等值连接筛选&不等值连接筛选(内连接)

--概念:先做表的笛卡尔积,然后筛选,筛选条件为等值筛选。
--注意:条件为字段的值相同(字段值条件)来进行筛选,字段的名字可以不同

--SQL92方式
  --where 筛选条件...
--SQL99方式
  --使用natural join 表名(自然连接,根据名称相同字段进行等值连接)
  --使用(inner) join 表名 on 筛选条件...    (内连接,根据筛选条件进行等值/不等值连接,inner关键字可以省略不写)
  --使用(inner) join 表名 using(字段名,字段名,....)  (内连接,根据名称相同字段进行等值连接,可指定字段,inner关键字可以省略)

3.自连接

4.外连接

(1)左外连接

--SQL92方式
  --where子句中在右边连接字段后加 (+),显示左边对应字段没有值的数据
--SQL99方式
  --select 内容 from 表名 left (outer) join 表名 on 连接条件 (外连接,outer可以省略不写)

(2)右外连接

--SQL92方式
  --where子句中在左边连接字段后加 (+),显示右边对应字段没有值的数据
--SQL99方式
  --select 内容 from 表名 right (outer) join 表名 on 连接条件 (外连接,outer可以省略不写)

(3)满外连接

--SQL92方式
  无
--SQL99方式
  --select 内容 from 表名 full (outer) join 表名 on 连接条件 (外连接,outer可以省略不写)

猜你喜欢

转载自blog.csdn.net/qq_21046965/article/details/82555346