内连接
sql
mysql> select t1.name,t1.age,t2.name from emp t1,department t2 where t1.depid=t2.id;--隐式
mysql> select * from emp inner join department on emp.depid=department.id;--显式
外连接
sql
mysql> select * from emp left join department on emp.depid=department.id;--左外连接
mysql> select * from emp right join department on emp.depid=department.id;--右外连接
子查询
1、子查询返回结果为单行单列
sql
mysql> select * from emp where age=(select max(age) from emp);--查询年龄最大的员工信息,子查询结果为单行单列的,可以作为条件判断
mysql> select * from emp where age <(select avg(age) from emp);--查询年龄小于平均年龄的员工信息
2、子查询结果为多行单列
sql
mysql> select * from emp where depid in (select id from department where name in ('研发部','销售部'));
3、子查询返回结果为多行多列,结果可以作为一个虚拟表,作为一个表查询
sql
mysql> select * from department t1,(select * from emp where age > 30) t2 where t1.id=t2.depid;