9_MySQL学习笔记(九)_sql99内连接

本文介绍了SQL99标准下的内连接使用方法及多种实战案例,包括等值连接与非等值连接,通过具体场景展示了如何进行数据筛选、分组与排序等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL99

分类:

  1. 内连接(*):inner
  2. 外连接
    1. 左外(*):left【outer】
    2. 右外(*):right【outer】
    3. 全外:full【outer】
  3. 交叉连接:cross

语法:

SELECT 查询列表
from1 别名 (连接类型)
join2 别名
on 连接条件
[where 筛选条件]
[group by 分组]
[having 筛选条件]
[order by 排序列表]

1.内连接

语法:

SELECT 查询列表
from1 别名
inner join2 别名
on 连接条件;
  1. 等值连接

    案例1:查询员工名、部门名

    SELECT last_name, department_name
    FROM employees e
    INNER JOIN departments d
    ON e.department_id = d.department_id;
    

    案例2:查询名字中包含e的员工名和工种名(添加筛选)

    SELECT last_name,job_title
    FROM employees e
    INNER JOIN jobs j
    ON e.job_id = j.job_id
    WHERE e.last_name LIKE '%e%';
    

    案例3:查询部门个数>3的城市名和部门个数,(添加分组+筛选)

    SELECT city,COUNT(*) 部门个数
    FROM departments d
    INNER JOIN locations l
    ON d.location_id = l.location_id
    GROUP BY city
    HAVING  COUNT(*) > 3;
    

    案例4:查询员工个数>3的部门名和员工个数,并按个数排序(添加排序)

    SELECT COUNT(*),d.department_name
    FROM employees e
    INNER JOIN departments d
    ON e.department_id = d.department_id
    GROUP BY department_name
    HAVING COUNT(*)>3
    ORDER BY COUNT(*) DESC;
    

    案例5:查询员工名,部门名,工种名,并按部门名降序排序

    SELECT last_name,department_name,job_title
    FROM employees e
    INNER JOIN departments d ON e.department_id = d.department_id
    INNER JOIN jobs j ON e.job_id = j.job_id
    ORDER BY department_name DESC;
    

    特点:

    1. 可以添加排序、分组、筛选
    2. inner可以省略
    3. 筛选条件放在where后面,连接条件放在on后面,提高分离性,便于阅读
    4. inner join连接和sql92语法中的等值连接效果是一样的,都是查询多表的交集
  2. 非等值连接

    案例1:查询员工的工资级别

    SELECT salary,grade_level
    FROM employees e
    INNER JOIN job_grades g
    ON e.salary BETWEEN g.lowest_sal AND g.highest_sal;
    

    案例2:查询工资级别的个数>20的个数,并且按工资级别排序

    SELECT COUNT(*),grade_level
    FROM employees e
    INNER JOIN job_grades g
    ON e.salary BETWEEN g.lowest_sal AND g.highest_sal
    GROUP BY grade_level
    HAVING COUNT(*)>20
    ORDER BY grade_level DESC;
    
  3. 自连接

    案例1:查询员工的名字、上级的名字

    SELECT e.last_name,m.last_name
    FROM employees e
    JOIN employees m
    ON e.manager_id = m.employee_id;
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值