MySQL中的多表连接
当查询的数据并不是来源一个表时,需要使用多表链接操作完成查询。根据不同表中的数据之间的关系查询相关联的数据。
一、语法结构
使用一个表在多个表中查询数据;
Where子句中写连接条件;
二、等值连接
等值连接也被称为简单连接 (simple joins) 或内连接 (inner joins)。是通过等号来判 断连接条件中的数据值是否相匹配。
例
查询雇员 King 所在的部门名称;
Select d.department_name from employees e , departments d where e.dept_id = d.department_id and e.last_name = ‘King’;
三、非等值连接
一个非等值连接是一种不使用相等(=)作为连接条件的查询。如!=、>、<、>=、<=、
BETWEEN AND 等都是非等值链接的条件判断;
例
一、创建 sal_level 表,包含 lowest_sal,highest_sal,level。
Create table sal_level(lowest_sal int , highest_sal int , level varchar(10));
二、插入数据
Insert into sal_level values(1000,2999,”A”);
Insert into sal_level values(2000,4999,”B”);
Insert into sal_level values(5000,7999,”C”);
Insert into sal_level values(8000,12000,”D”);
三、查询所有雇员的薪水级别。
Select e.last_name , s.level from employees e , sal_level s where e.salary between s.lowest_sal and highest_sal ;
四、自连接
使用一个表连接它自身的操作。
例
一、修改 employees 表,添加 manager_id 列;
Alter table employees add manager_id int;
二、修改数据 Oldlu 是 kevin 与 King 的经理;Taylor 是 Fox 的经理;
1.Update employees set manager_id = 1 where last_name = “King” or last_name = “Kevin”;
2.Update employees set manager_id = 3 where last_name = “Fox”;
三、查询每个雇员的经理的名字以及雇员的名字。
Select em.last_name , ew.last_name from employees ew , employees em where ew.manager_id = em.employees_id ;