(1)笛卡尔积:两个集合的所有组合:select * from 表1,表2
(2)内连接查询:
隐式内连接:
select * from 表1,表2 where 表1.字段1 = 表2.id ;
select 表1.字段1,表1,.字段2,表2.字段1 from 表1,表2 where 表1.字段1 = 表2.id ;
select 表1.t1,t1,.字段2,t2.字段1 from 表1 t1,表2 t2 where t1.字段1 = t2.id ;
显示内连接:
语法:select 字段列表 from 表名1 [inner] join 表名2 on 条件
select * from 表1 inner join 表2 on 表1.字段 = 表2.字段
select * from 表1 join 表2 on 表1.字段 = 表2.字段
需要注意的事项:
* 从哪些表中查询数据
* 条件是什么
* 查询哪些字段
(3)外连接查询
左外链接:
语法:select 字段列表 from 表1 left [outer] join 表2 on 条件
select t1.*,t2.name from 表1 t1,表2 t2 where t1.字段 = t2.字段 (这种查询,如果有空字段,则查询不到信息)
select t1.*,t2.name from 表1 t1 left join 表2 t2 on t1.字段 = t2.字段
查询的是左表所有数据及其交集部分
右外链接:
语法:select 字段列表 from 表1 right [outer] join 表2 on 条件
查询的是右表所有数据及其交集部分
左右表:
from 表1 left [outer] join 表2 on 条件
左表:表1;右表:表2
(4)子查询
概念:查询中嵌套查询,称嵌套查询为子查询
情况1:子查询的结果是单行单列的
*子查询可以作为条件,使用运算符去判断:运算符:>,>=,<,<=,=
情况2:子查询的结果是多行单列的
*子查询可以作为条件,使用运算符in来进行判断(集合判断)
情况3:子查询的结果是多行多列的
*子查询可以作为一张虚拟表参与查询
MySQL可以使用不等运算符