Java数据库篇6——多表查询
1、笛卡尔积
交叉连接查询
设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}
2、 内连接查询
2.1、隐式内连接
SELECT 字段名 FROM 左表, 右表 WHERE 连接条件;
多表查询可以起别名,方便查询
2.2、显示内连接
SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 条件
3、外连接查询
3.1、左连接
以左表为基准, 匹配右边表中的数据,如果匹配的上,就展示匹配到的数据 如果匹配不到, 左表中的数据正常展示, 右边的展示为null
SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 条件
3.2、右连接
以右表为基准,匹配左边表中的数据,如果能匹配到,展示匹配到的数据 如果匹配不到,右表中的数据正常展示, 左边展示为null
SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 条件
4、子查询
一条select 查询语句的结果, 作为另一条 select 语句的一部分
- 子查询必须放在小括号中
- 子查询一般作为父查询的查询条件使用
4.1、where型子查询
将子查询的结果, 作为父查询的比较条件
SELECT 查询字段 FROM 表 WHERE 字段=(子查询);
SELECT * FROM products WHERE price = (SELECT MAX(price) FROM products);
4.2、from型子查询
将子查询的结果, 作为 一张表,提供给父层查询使用
SELECT 查询字段 FROM (子查询)表别名 WHERE 条件;
4.3、exists型 子查询
子查询的结果是单列多行, 类似一个数组, 父层查询使用 IN 函数 ,包含子查 询的结果
SELECT 查询字段 FROM 表 WHERE 字段 IN (子查询);
版权声明:本文为gyfghh原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。