多表联合查询
sql99方式
语法:
		select 查询列表
        from 表1 别名 【连接类型】
        join 表2 别名
        on 连接条件
        【where筛选条件】
        【group by 分组】
        【having 筛选条件】
        【order by 排序】
分类:
内连接 inner
外连接
	左外 left 【outer】outer可以省略
    右外 right 【outer】
    全外 full 【outer】内连接
语法:
	select 查询列表
    from 表1 别名 inner
    join 表2 别名
    on 连接条件
        【where筛选条件】
        【group by 分组】
        【having 筛选条件】
        【order by 排序】
分类:等值连接
		非等值连接
        自连接
特点:
	inner可以省略*/
 #案例一:查询员工名和部门名
 select last_name,department_name
 from employees e inner
 join department d
 on e.department_id=d.department_id;
 #案例二:查询名字中包含e的员工名和工种名
 select last_name,job_title
 from employees e inner
 join job j
 on e.job_id=j.job_id
 where last_name like “%e%”;#外连接
 /*
 应用场景:用于查询一个表中有,一个表中没有的记录特点:
 1.外连接的查询结果为表中的所有记录
 如果从表中有和他匹配的值,则显示匹配的值
 如果从表中没有与他匹配的值,则显示null
 外连接查询寻结果= 内连接结果+主表中有而从表中没有的结果
 2.左外连接:left join左边是主表
 右外连接:right join 右边是主表
 3.左外和右外交换两个表的顺序,可以实现同样的效果查询的来自哪个表,哪个 就是主表
 主键绝对不为null
 语法:
 左外连接:
 select 查询列表
 from 表1
 left outer joinn 表2
 on【链接条件】
 where【限制条件】
 右外连接:
 select 查询列表
 from 表1
 right outer join 表2
 on【链接条件】
 where【限制条件】
 *//*
 全外连接
 全外连接=内连接的结果+表一中有但表二中没有的+表二中有表一中没有的
 语法:
 select 查询列表
 from 表1
 full join begin
 on a.key = b.key
 *//*
 子查询
 含义:
 出现在其他语句中的select语句,称为子查询或者内查询分类:
 按子查询出现的位:
 SELECT后面
 仅仅支持标量子查询
 from后面
 支持表子查询
 where或having后面★
 标量子查询√
 列子查询√行子查询(用的较少)
    exists后面(相关子查询)
		表子查询按照结果集的行列数不同:
 标量子查询(结果集只有一行一列)
 列子查询(结果集只有一列多行)
 行子查询(结果集只有一行多列)
 表子查询(结果集一般多行多列)
 */#where或having后面
 /*
 特点:
 子查询放在小括号内、
 子查询一般放在条件右侧
 标量子查询:一般搭配着多行操作符使用
 */
 #返回job_id与141号员工相同,salary比143号员工多的员工 姓名,job_id ,和工资
 select last_name,job_id,salary
 from employees
 where job_id=(
 select job_id
 from employees
 where employees_id = 141
 )
 and salary>(
 select salary
 from employees
 where job_id = 143
 )