登录
首页 >  数据库 >  MySQL

MySQL中的连接查询实例分析

来源:亿速云

时间:2023-05-01 17:41:44 244浏览 收藏

在数据库实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《MySQL中的连接查询实例分析》,聊聊,希望可以帮助到正在努力赚钱的你。

    1. 笛卡尔乘积

    表1有m行数据,表2有n行数据,查询结果有m*n行数据。

    2. 分类

    (1)按年代分类

    sql92标准:仅支持内连接

    sql99标准(推荐):支持内连接、外连接(左外连接和右外连接)、交叉连接

    (2)按功能分类

    内连接:等值连接、非等值连接、自连接

    外连接:左外连接、右外连接、全外连接

    交叉连接

    3. 等值连接

    (1)查询女生名及其对应的男朋友名

    SELECT 
        girlname,
        boyname
    FROM
        boys,
        girls
    WHERE
        girls.boyfriend_id=boys.girlfriend_id;

    (2)查询员工名(last_name)和对应的部门名(department_name)-------------(根据关联的id查询)

    SELECT 
        last_name,
        department_name
    FROM
        JDSC,
        SNSC
    WHERE
        JDSC.`id`=SNSC.`id`;

    (3)查询员工名(last_name)、工种号(job_id)、工种名(job_title) (员工表:JDSC  工作表:JOBSC)------为表起别名,提升简洁度,避免歧义

    #"e.job_id"是为了避免歧义
    SELECT
        last_name,
        e.job_id,
        job_title
    FROM
        ESC e,
        JOBSC j
    WHERE
        e.`job_id`=j.`job_id`;

    注意:

    如果为表起了别名,则查询的字段不能使用原来的表名去限定。

    上述两个表的顺序可互换

    (4)查询有奖金的员工名、部门名

    #员工名:last_name
    #部门名:department_name
    #奖金率:commissiom_pct
    SELECT
        last_name,
        department_name,
        commissiom_pct
    FROM
        employees e,
        department d
    WHERE
        e.`department_id`=d.`department_id`
    AND
        e.`commissiom_pct` IS NOT NULL;

    (5)分组查询——查询每个城市的部门个数

    #城市分组表名:city
    #部门分组表名:departments 
    SELECT
        COUNT(*) 个数,
        city
    FROM
        departments d,
        locations l
    WHERE
        d.`location_id`=l.`location_id`
    GROUP BY
        city;

    (6)排序——查询每个工种的工种名和员工个数,并按员工个数降序

    SELECT 
        job_title,
        COUNT(*)
    FROM
        emloyees e,
        jobs j
    WHERE
        e.`job_id`=j.`job_id`
    GROUP BY
        job_title
    ORDER BY
        COUNT(*) DESC;

    (7)三表连接——查询员工名、部门名和所在的城市

    SELECT
        last_name,
        department_name,
        city
    FROM
        employees e,
        departments d,
        locations l
    WHERE
        e.`department_id`=d.`department_id`
    AND
        d.`location_id`=l.`location_id`
    AND 
        city LIKE 's%';

    理论要掌握,实操不能落!以上关于《MySQL中的连接查询实例分析》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

    声明:本文转载于:亿速云 如有侵犯,请联系study_golang@163.com删除
    相关阅读
    更多>
    最新阅读
    更多>
    课程推荐
    更多>