无名商城论坛

搜索
查看: 240|回复: 0

[其他技术] 【梅开二度】数据库关联查询

[复制链接]

1万

主题

1万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
32464
发表于 2022-5-8 17:20:47 | 显示全部楼层 |阅读模式
###关联查询
- 同时查询多张表的数据的查询方式称为关联查询

- 关联查询必须写关联关系,如果不写则会得到两种表数据的乘积, 这个乘积被称为笛卡尔积, 这是一个错误的查询结果,在工作中要避免出现.
- 关联查询的方式有三种
####等值连接
- 格式: select 字段信息 from A,B where 关联关系 and 其它条件

1. 查询每个员工的姓名和对应的部门名
        select e.ename,d.dname
        from emp e,dept d
        where e.deptno=d.deptno;
2. 查询1号部门的员工姓名,工资,部门名,部门地址
        select e.ename,e.sal,d.dname,d.loc
        from emp e,dept d
        where e.deptno=d.deptno and d.deptno=1;
####内连接(建议使用)
- 格式: select 字段信息 from A join B on 关联关系 where 条件
1. 查询每个员工的姓名和对应的部门名
        select e.ename,d.dname
        from emp e join dept d
        on e.deptno=d.deptno;
2. 查询1号部门的员工姓名,工资,部门名,部门地址
        select e.ename,e.sal,d.dname,d.loc
        from emp e join dept d
        on e.deptno=d.deptno where e.deptno=1;
###外连接
- 查询一张表的全部数据和另外一张表的交集数据
- 格式: select 字段信息 from A left/right join B on 关联关系 where 条件
1. 查询所有部门的名称和对应的员工名
        select d.dname,e.ename
        from emp e right join dept d
        on e.deptno=d.deptno;
2. 查询所有员工姓名和对应的部门信息
        insert into emp (empno,ename) values(100,'灭霸');
       
        select e.ename,d.*
        from emp e left join dept d
        on e.deptno=d.deptno;

####关联查询总结
- 三种查询方式: 等值连接,内连接,外连接
- 如果需要查询两张表的交集数据使用等值连接和内连接(推荐)
- 如果查询一张表的全部和另外一张表的交集则使用外连接
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表