- 笛卡尔积
- 内连接查询
- 隐式内连接
- 显式内连接
- 外连接查询
- 左外连接
- 右外连接
- 子查询
- 子查询不同情况
- 子查询的结果是单行单列的
- 子查询的结果是多行单列的
- 子查询的结果是多行多列的
有两个集合A,B。取这两个集合的所有组成情况
内连接查询- 从哪些表中查询数据
- 条件是什么
- 查询哪些字段
使用where条件消除无用数据
例如:
-- 查询路线和对应类别的所有信息 SELECt * FROM tab_route, tab_category WHERe tab_category.cid = tab_route.cid; -- 查询路线表的名字,价格 SELECt r1.rname, r1.price FROM tab_category c1,-- c1:表的别名 tab_route r1 WHERe c1.cid = r1.cid;显式内连接
语法:select 字段列表 from 表名1 [inner] join 表名2 on 条件
例如:
SELECt * FROM tab_route INNER JOIN tab_category ON tab_category.cid = tab_route.cid;外连接查询 左外连接
语法:select 字段列表 from 表1 left [outer] join 表2 on 条件;
查询的是左表所有数据及其交集部分(交集部分通过条件进行判断)
语法:select 字段列表 from 表1 right [outer] join 表2 on 条件;
查询的是右表所有数据及其交集部分
概念:查询中嵌套查询,称嵌套查询为子查询
-- 查询最高的价格 SELECt MAX(price) from tab_route; -- 查询路线信息,并且价格为30 SELECt * from tab_route WHERe price = 30; -- 运行子查询 查询价格最高的路线信息 select * from tab_route WHERe price =(SELECt MAX(price) from tab_route);子查询不同情况 子查询的结果是单行单列的
子查询可以作为条件:使用运算符去判断。运算符: > >= < <= =
-- 查询路线价格小于平均价格的路线 SELECt * from tab_route WHERe tab_route.price<(SELECt AVG(price) FROM tab_route);子查询的结果是多行单列的
子查询可以作为条件:使用运算符in来判断
-- 查询交通和美食分类的所有路线信息 SELECt * FROM tab_route WHERe cid in(SELECt cid from tab_category WHERe cname ='交通' OR cname='美食');子查询的结果是多行多列的
子查询可以作为一张虚拟表参与查询
-- 查询日期在2021-09-01之后的路线信息和分类信息 -- 子查询 SELECt * FROM tab_category c1, ( SELECt * FROM tab_route WHERe tab_route.rdate > '2021-09-01' ) r1 WHERe c1.cid = r1.cid; -- 普通内连接查询 SELECt * FROM tab_category c1, tab_route r1 WHERe c1.cid = r1.cid AND r1.rdate > '2021-09-01';



