无名 发表于 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;

####关联查询总结
- 三种查询方式: 等值连接,内连接,外连接
- 如果需要查询两张表的交集数据使用等值连接和内连接(推荐)
- 如果查询一张表的全部和另外一张表的交集则使用外连接
http://cdn.u1.huluxia.com/g4/M02/FF/C7/rBAAdl80MSKAFWtLAAAti1SqyCo428.jpg
页: [1]
查看完整版本: 【梅开二度】数据库关联查询