1、表连接

查询s_emp 表中的first_name 和 对应的部门编号
select first_name,dept_id from s_emp;
会发现 需要的部门名 在s_dept 表中 表结构 如下
会发现 需要的部门名 在 s_dept 表中

2、如何取得需要的数据 如果出现同名字段 则使用 表名区分

select first_name,dept_id,name
from s_emp,s_dept
where dept_id = s_dept.id;

3、表连接的语法

select 想要的字段数据
from 表1,表2
where 条件;

如果碰到同名字段,则使用表名区分

4、

s_dept表                            s_region表
id 部门编号 id 地区编号
name 部门名 name 地区名
region_id 地区编号
------------------------------------------------------------------------------------------

查询每个 部门的名字 和 对应的地区的名字
select s_dept.name,s_region.name
from s_dept,s_region
where region_id = s_region.id;

5、可以通过给表起别名的方法 来简化表连接的sql

    select d.name,r.name
from s_dept d,s_region r
where region_id=r.id;

6、【三表查询】显示每个员工的first_name 和 对应的部门的名字 已经 部门对应的地区的名字

 s_emp表                        s_dept表                         s_region表
id 员工编号 id 部门编号 id 地区编号
first_name 员工名 name 部门名 name 地区名
dept_id 部门编号 region_id 地区编号
------------------------------------------------------------------------------------------
select first_name, d.name dname,r.name rname
from s_emp e,s_dept d,s_region r
where e.dept_id=d.id and d.region_id=r.id;

7、非等值连接

4.7.1  等值连接 和 非等值连接
等值连接
使用等号作为表的连接条件 叫等值连接
非等值连接:
不使用等号作为表的连接条件 叫非等值连接

------------------------------------------------------------------------------------------

4.7.2 非等值连接举例
salgrade
grade 工资级别
losal 级别对应的低工资
hisal 级别对应的高工资
显示每个员工的 id salary 和 对应的工资级别

select id,salary,grade
from s_emp,salgrede
where salary between losal and hisal;

8、自连接

通常在一张物理表中 存在两层业务含义的数据 查询出其中的一层数据,就会使用到自连接。

如:找出所有的领导
如果有人的manager_id是你的id,则你就是领导

select distinct m.id,m.first_name
from s_emp e,s_emp m
where e.manager_id=m.id;