在一个SQL语句中嵌套另一个SQL语句称之为子查询:不要求两表有相关字段。
表结构: select * from emp;(员工表)
select * from dept;(部门表)
select * from grade;(薪资表)
(1)显示的内连接 :inner join 表 on 连接条件
题目:查询出员工信息:员工的编号、员工姓名、性别、薪资、入职日期和员工所在部门
select e.id,e.name,gender,salary,join_date,d.name from emp e inner join dept d on e.dept_id=d.id;
(2)隐式的内连接:等值连接
题目:查询出员工信息:员工的编号、员工姓名、性别、薪资、入职日期和员工所在部门
select emp.id,emp.name,gender,salary,join_date,dept_id,dept.name from emp,dept where dept_id=dept.id;
(3)隐式的内连接:非等值连接
题目:查询每个员工的工资等级
select g.gradeName,e.name from emp e,grade g where e.salary>=g.losal ane e.salary<=g.hisal
(4)左外连接(left join...on)
语法规则:left join 表 on 连接条件(即左表为基表,显示左边全部的和右边与左边相同的)
select e.id,e.name,gender,salary,join_date,d.name from emp as e left join dept d on e.dept_id=d.id;
(5)右外连接(right join...on)
语法规则:right join 表 on 连接条件(即右表为基表,显示右边全部的和左边与右边相同的)
select e.id,e.name,gender,salary,join_date,d.name from emp as e right join dept d on e.dept_id=d.id where e.name like '孙%';
(6)全外连接(full join...on)
语法规则:full join 表 on 左外连接和右外连接的集合(并集)