1.使用连接
连接类型 定 义
内连接 只连接匹配的行
左外连接 包含左边的全部行(不管右边的表中是否存在与他们匹配的行),以及右边表中全部匹配的行
右外连接 包含右边的全部行(不管左边的表中是否存在与他们匹配的行),以及左边表中全部匹配的行
全外连接 包含左、右两个表的全部行,不管在另外一边的表中是否存在与它们匹配的行
θ(theta)连接 使用等值以外的条件来匹配左、右两个表中的行
交叉连接 生成笛卡尔积--它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配
1.1 内连接
语法:select * from Table1 join Table2 on Table1.column=Table2.column
1.2 外连接
左外连接:left outer join 右外连接: right outer join
语法:
select * from Table1 left/right outer join Table2 --//outer 关键字为可选项,可以不写
on Table1.字段=Table2.字段 --//条件
注意:
在代码中,左和右用于指定无论是否具有匹配的行都要保留全部行的那个表(外连接表),
在这里左和右指的是表在SQL代码中的顺序,而使用图形化查询工具的位置是没有关系的。
例: 查询所有的客户及他们的订单号:
select j_merchant.shutname as '加盟商',d_sell.sellid as '订单编号'
from j_merchant left join d_sell --//左连接
on j_merchant.merchantid=d_sell.get_mchid --//条件
order by d_sell.sellid --//按单号排序
加盟商 订单编号
-----------------------------------------------------------------------
葫芦岛 PF1001-2006-08-19-0001
佛山 PF1001-2006-09-10-0001
武汉 PF1001-2006-09-10-0002
福州 PF1001-2006-09-10-0003
福州 PF1001-2006-09-10-0004
珠海 PF1001-2006-11-04-0001
武汉 PF1001-2006-11-04-0002
鞍山 PF1001-2007-08-14-0001
福州 PF1001-2007-08-15-0001
……
全外连接:FULL OUTER JOIN
全外连接返回两个表中的所有行,无论它们在另一个表中是否有与之匹配的行
注意:
当在内连接查询中加入条件时,无论是将它加入到 join 子句,还是加入到 where 子句,
其效果是完全一样的,但对于外连接连接情况就不是这样报,当把条件加入到 join 子句时,
SQL 会返回外连接表的全部行,然后使用指定的条件返回第二个表的行;如果将条件放到
where 子句中,SQL 将会首先进行连接操作,然后 where 子句对连接后的行进行筛选。
自身连接: 同一个表自己与自己进行连接
例句:
select a.cr_name as '店铺',b.names as '店员',a.employeeid as '店员编号'
from j_employee a join j_employ