SQL数据处理之多表查询

多表查询 :当我们查询的多个字段不在同一张表中时就需要用到多表查询

    连接条件:
        自连接 vs 非自连接
        等值连接 vs 非等值连接
        内连接 vs 外连接
    语法:sql92语法和sql99语法(主要使用sql99语法)
        sql92语法
            非自连接:连接的表不是同一张表
            等值连接: 连接条件使用的是等号
            内连接: 只查询两张表中匹配的内容
            需求:查询员工的姓名和员工所在部门的名称
            SELECT first_name,department_name
            FROM employees JOIN departments
            ON employees.department_id=departments.department_id;


            非等值连接
            需求:查询员工的姓名,薪水及薪水的等级
            SELECT e.`first_name`,e.`salary`,j.`GRADE`
            FROM employees e JOIN job_grades j
            on e.`salary` >= j.`LOWEST_SAL` and e.`salary` <= j.`HIGHEST_SAL`;
            ON e.`salary` BETWEEN j.`LOWEST_SAL` AND j.`HIGHEST_SAL`;


            自连接:
            需求:查询员的姓名及管理者的姓名
            SELECT e1.`first_name` 员工的姓名,e2.`first_name` 管理者的姓名
            FROM employees e1 JOIN employees e2 e1:员工表  e2:管理者表
            ON e1.`manager_id`=e2.`employee_id`;


            左外连接:查找所有的员工及员工所在的部门名称
            SELECT e.`first_name`,d.`department_name`
            FROM employees e LEFT JOIN departments d
            ON e.`department_id`=d.`department_id`;

            右外连接: 查找所有的部门及部门中所有的员工
            SELECT e.`first_name`,d.`department_name`
            FROM employees e RIGHT JOIN  departments d
            ON e.`department_id` = d.`department_id`;

            满外连接:查找所有的员工及所有的部门
        
        mysql不支持。
        SELECT 字段名1,字段名2,...
        FROM 表名1 full JOIN  表名2
        ON 连接条件;


        untion:将两张表的结果进行合并(去重)
        untion all : 将两张表的结果进行合并(不去重)
        左外连接
        union
        右外连接
        
            SELECT e.`first_name`,d.`department_name`
            FROM employees e LEFT JOIN departments d
            ON e.`department_id`=d.`department_id`
            UNION
            SELECT e.`first_name`,d.`department_name`
            FROM employees e RIGHT JOIN  departments d
            ON e.`department_id` = d.`department_id`;

    补充
        飘号 : ``
        作用 :用来区分关键字和字段名

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小吴学数据

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值