连接查询:多表查询
笛卡尔集现象:
select name,boynam from beauty,boys
笛卡尔乘积现象:表一 m行,表二 n 行 结果 m *n;
如何避免?添加有效的连接条件;
select name,boyname from beauty,boys where beauty.boyfriend_id=boys.id;
分类:按功能进行分类:
内连接:等值连接,非等值连接,自连接
外连接:左外连接,右外连接,全外连接
交叉连接
1,等值连接的介绍
案例一, 查询女神名和对应的男神名
select name,boyname from beauty,boys where beauty.boyfriend_id=boys.id;
案例二,查询员工名和对应的部门名
select empname,deptname from emp,dept where emp.deptno=dept.deptno;
给表起别名 在表后面加上别名。用AS 或者空格。
提高语句的简介度,区分多个重名的字段。如果为表起了别名,必须要用别名进行限定。
(2)两个表的顺序是否可以调换
可以加上筛选 and 后面加上筛选条件。
(3)可以加排序
(4)实现三表连接
2 非等值连接:(只是一个区间,无同样的列表)使用between and
案例一, 查询出员工的工资和工资级别
select grades,salary from emp e,job_grades g
where salary between g.lowest and g.hightes
and g.grade='A';
3,自连接
(1)查询员工名和上级名称
SELECT e.empno,e.ename,m.`EMPNO`,m.`ENAME` FROM emp e,emp m WHERE e.`MGR`=m.`EMPNO`