sq92标准
交叉连接A*B
FROM A,B =>完全连接笛卡尔积
总表条数 =>A*B
- 等值连接(A*B=>筛选符合条件的)
SELECT * FROM A,B WHERE A.id = B.id
- 非等值连接 (A*B=>筛选符合条件的)
SELECT * FROM A,B WHERE A.salary > B.min AND A.salary < B.max
- 自连接 (A*A=>筛选符合条件的)
# id 员工名(name) 领导(leaderId)
# 1 张三 2
# 2 王五 6
SELECT 员工表.name,领导表.name FROM A 员工表,B 领导表 WHERE 员工表.leaderId = 领导表.id
sq99语法
SELECT 查询列表
FROM 表1 别名 【连接类型(left 【outer】)】
JOIN 表2 别名
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 连接条件 | 就无连接条件连接 |