温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

MySQL多表查询的代码怎么写

发布时间:2023-04-18 15:50:26 来源:亿速云 阅读:80 作者:iii 栏目:开发技术

这篇文章主要介绍“MySQL多表查询的代码怎么写”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL多表查询的代码怎么写”文章能帮助大家解决问题。

    多表查询

    内连接查询

    • 语法

    -- 隐式内连接
    SELECT 字段列表 FROM 表1,表2… WHERE 条件;
    
    -- 显示内连接
    SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 条件;

    内连接相当于查询 A B 交集数据

    MySQL多表查询的代码怎么写

    • 案例

      • 隐式内连接

    SELECT
    	*
    FROM
    	emp,
    	dept
    WHERE
    	emp.dep_id = dept.did;

    执行上述语句结果如下:

    MySQL多表查询的代码怎么写

    • 查询 emp的 name, gender,dept表的dname

    SELECT
    	emp. NAME,
    	emp.gender,
    	dept.dname
    FROM
    	emp,
    	dept
    WHERE
    	emp.dep_id = dept.did;

    执行语句结果如下:

    MySQL多表查询的代码怎么写

    上面语句中使用表名指定字段所属有点麻烦,sql也支持给表指别名,上述语句可以改进为

    SELECT
    	t1. NAME,
    	t1.gender,
    	t2.dname
    FROM
    	emp t1,
    	dept t2
    WHERE
    	t1.dep_id = t2.did;
    • 显式内连接

    select * from emp inner join dept on emp.dep_id = dept.did;
    -- 上面语句中的inner可以省略,可以书写为如下语句
    select * from emp  join dept on emp.dep_id = dept.did;

    执行结果如下:

    MySQL多表查询的代码怎么写

    外连接查询

    • 语法

    -- 左外连接
    SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件;
    
    -- 右外连接
    SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件;

    左外连接:相当于查询A表所有数据和交集部分数据

    右外连接:相当于查询B表所有数据和交集部分数据

    MySQL多表查询的代码怎么写

    • 案例

      • 查询emp表所有数据和对应的部门信息(左外连接)

    select * from emp left join dept on emp.dep_id = dept.did;

    执行语句结果如下:

    MySQL多表查询的代码怎么写

    结果显示查询到了左表(emp)中所有的数据及两张表能关联的数据。

    • 查询dept表所有数据和对应的员工信息(右外连接)

    select * from emp right join dept on emp.dep_id = dept.did;

    执行语句结果如下:

    MySQL多表查询的代码怎么写

    结果显示查询到了右表(dept)中所有的数据及两张表能关联的数据。

    要查询出部门表中所有的数据,也可以通过左外连接实现,只需要将两个表的位置进行互换:

    select * from dept left join emp on emp.dep_id = dept.did;

    子查询

    • 概念

      查询中嵌套查询,称嵌套查询为子查询。

      什么是查询中嵌套查询呢?我们通过一个例子来看:

      需求:查询工资高于猪八戒的员工信息。

      来实现这个需求,我们就可以通过二步实现,第一步:先查询出来 猪八戒的工资

    select salary from emp where name = '猪八戒'

    第一步:查询工资高于猪八戒的员工信息

    select * from emp where salary > 3600;

    第二步中的3600可以通过第一步的sql查询出来,所以将3600用第一步的sql语句进行替换

    select * from emp where salary > (select salary from emp where name = '猪八戒');

    这就是查询语句中嵌套查询语句。

    • 子查询根据查询结果不同,作用不同

      • 子查询语句结果是单行单列,子查询语句作为条件值,使用 = != > < 等进行条件判断

      • 子查询语句结果是多行单列,子查询语句作为条件值,使用 in 等关键字进行条件判断

      • 子查询语句结果是多行多列,子查询语句作为虚拟表

    • 案例

      • 查询 &lsquo;财务部&rsquo; 和 &lsquo;市场部&rsquo; 所有的员工信息

    -- 查询 '财务部' 或者 '市场部' 所有的员工的部门did
    select did from dept where dname = '财务部' or dname = '市场部';
    
    select * from emp where dep_id in (select did from dept where dname = '财务部' or dname = '市场部');
    • 查询入职日期是 &lsquo;2011-11-11&rsquo; 之后的员工信息和部门信息

    -- 查询入职日期是 '2011-11-11' 之后的员工信息
    select * from emp where join_date > '2011-11-11' ;
    -- 将上面语句的结果作为虚拟表和dept表进行内连接查询
    select * from (select * from emp where join_date > '2011-11-11' ) t1, dept where t1.dep_id = dept.did;

    关于“MySQL多表查询的代码怎么写”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI