sql查询 (连表查询)

sq92标准

交叉连接A*B

FROM A,B =>完全连接笛卡尔积
总表条数 =>A*B

  1. 等值连接(A*B=>筛选符合条件的)
SELECT * FROM A,B WHERE A.id = B.id
  1. 非等值连接 (A*B=>筛选符合条件的)
SELECT * FROM A,B WHERE A.salary > B.min AND A.salary < B.max
  1. 自连接 (A*A=>筛选符合条件的)
# id 员工名(name) 领导(leaderId)
#  1 张三   2
#  2 王五   6
SELECT 员工表.name,领导表.name FROM A 员工表,B 领导表 WHERE 员工表.leaderId = 领导表.id

sq99语法

SELECT 查询列表
FROM1 别名 【连接类型(leftouter)JOIN2 别名
ON 连接条件按
WHERE 筛选条件

分类

内连接:inner
外连接:
左外:left 【outer】
右外:right【outer】
全外:full【outer】
交叉连接:cross

数量实现语法备注
交叉连接NEW = A*B笛卡尔积SELECT * from 表1 JOIN 表2
等值连接NEW=A=B单行连接SELECT * from A , B where A.id = B.id不去除同属性列
自然连接NEW=A=B特殊等值连接必须属性名相同去除同属性列
自连接NEW= A将表自己连接SELECT 自己.姓名,领导.姓名 FROM A 自己 ,A 领导 where 自己.leaderId = 领导.id对于有嵌套的作用
内连接NEW<=MIN(A,B)关联字段相符结果FROM A INNER JOIN B ON 连接条件按照ON所指定的筛选条件连接
左外连接NEW>=A=左表全部记录+关联字段相符结果FROM A RIGHT [OUTER] JOIN B ON 连接条件/以B表为主,用B表去匹配A表每一行,B表除交集(未匹配到的都为NULL)+A,B表交集
右外连接NEW>=B=右表全部记录+相连接关联字段相符结果FROM A RIGHT [OUTER] JOIN B ON 连接条件以B表为主,用B表去匹配A表每一行,B表除交集(未匹配到的都为NULL)+A,B表交集
全外连接NEW>=A+B左右表全部记录+相连接关联字段相符结果FROM A RIGHT [OUTER] JOIN B ON 连接条件以B表为主,用B表去匹配A表每一行,B表除交集(未匹配到的都为NULL)+A,B表交集
交叉连接NEW=A*B笛卡尔积FROM A CROSS JOIN B ON 连接条件就无连接条件连接
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值