网站首页 > 技术文章 正文
1.等值连接
SQL> ---查询出员工和员工的部门的名称是什么(涉及两个表emp,dept的联合查询,找等值条件 emp.deptno = dept.deptno)
SQL> ---1.等值查询
SQL> select e.*,d.dname from emp e,dept d where e.deptno = d.deptno;
笛卡尔积,笛卡尔积(没有等值条件) emp 14条 dept 4条 结果 14*4 = 56条记录
SQL> select e.empno,e.ename,d.dname from emp e,dept d;
内连接(和等值查询的结果一样) inner join
SQL> select e.empno,e.ename,d.dname from emp e inner join dept d on e.deptno = d.deptno;
外连接 left [outer] join 左外联,right [outer] join 右外联,full join完全连接
left [outer] join 左外联:
rows selected
SQL> ----3.left [outer] join 左外联,以左表为准 emp e left join dept d,left join左边的emp为左表,left join右边 dept为右表
SQL> 左外联,以左表emp为准,不管关联的字段deptno是否在右表dept中是否有对应的数据,左表emp的数据全部要显示(注意:查询结果合理,实战中推荐使用左外联)
左外联,以左表emp为准,不管关联的字段deptno是否在右表dept中是否有对应的数据,左表emp的数据全部要显示
SQL> select e.empno,e.ename,d.dname from emp e left join dept d on e.deptno = d.deptno;
right [outer] join 右外联,右外联,以右表dept为准,不管关联的字段deptno是否在左表emp中是否有对应的数据,右表dept的数据全部要显示,坐标emp中关联的deptno为null的记录不显示
full [outer] join 完全连接 都要显示左表和右表的数据,不管左表emp的关联字段deptno为null,还是右表dept的数据deptno=40被左表emp引用(注意:mysql不支持)
联合查询中的三表联合查询
SQL> select e.empno,e.ename,e.job,e.sal,d.dname,g.grade
2 from emp e
3 left join dept d on e.deptno = d.deptno
4 left join salgrade g on e.sal between g.losal and g.hisal
5 order by e.empno
6 ;
如何使用(+)进行多表查询(注意:该语法在别的数据库不支持,所以不通用,不推荐使用)
SQL> select e.empno, e.ename, d.deptno, d.dname
2 from emp e, dept d
3 where e.deptno(+) = d.deptno;
EMPNO ENAME DEPTNO DNAME
----- ---------- ------ --------------
7499 ALLEN 30 SALES
7521 WARD 30 SALES
7566 JONES 20 RESEARCH
7654 MARTIN 30 SALES
7698 BLAKE 30 SALES
7782 CLARK 10 ACCOUNTING
7788 SCOTT 20 RESEARCH
7844 TURNER 30 SALES
7876 ADAMS 20 RESEARCH
7900 JAMES 30 SALES
7902 FORD 20 RESEARCH
7934 MILLER 10 ACCOUNTING
7839 KING 10 ACCOUNTING
40 OPERATIONS
14 rows selected
使用using来实现联合查询
SQL> select e.empno,e.ename,d.deptno,d.dname from emp e inner join dept d using(deptno);
select e.empno,e.ename,d.deptno,d.dname from emp e inner join dept d using(deptno)
ORA-25154: USING 子句的列部分不能有限定词
SQL> select e.empno,e.ename,deptno,d.dname from emp e inner join dept d using(deptno);
EMPNO ENAME DEPTNO DNAME
----- ---------- ------ --------------
7499 ALLEN 30 SALES
7521 WARD 30 SALES
7566 JONES 20 RESEARCH
7654 MARTIN 30 SALES
7698 BLAKE 30 SALES
7782 CLARK 10 ACCOUNTING
7788 SCOTT 20 RESEARCH
7844 TURNER 30 SALES
7876 ADAMS 20 RESEARCH
7900 JAMES 30 SALES
7902 FORD 20 RESEARCH
7934 MILLER 10 ACCOUNTING
7839 KING 10 ACCOUNTING
13 rows selected
SQL>
猜你喜欢
- 2024-11-02 「Java基础知识」sql常用语句有哪些
- 2024-11-02 两行Python代码就可以操作Oracle数据库
- 2024-11-02 详解oracle数据库优化参数--cursor_sharing
- 2024-11-02 Oracle 利用索引的SQL语句优化 oracle索引语句sql语句
- 2024-11-02 SQL 数据库语句大全 sql数据库基本语句大全
- 2024-11-02 Oracle优化:sql语句的执行顺序 oracle中sql优化
- 2024-11-02 Oracle 日常管理语句 oracle管理系统
你 发表评论:
欢迎- 627℃几个Oracle空值处理函数 oracle处理null值的函数
- 621℃Oracle分析函数之Lag和Lead()使用
- 610℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 604℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 601℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 593℃【数据统计分析】详解Oracle分组函数之CUBE
- 584℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 567℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- oracle 19cOCM认证有哪些内容(oracle认证ocm月薪)
- Oracle新出AI课程认证,转型要持续学习
- oracle 表的查询join顺序,可能会影响查询效率
- Oracle DatabaseAmazon Web Services正式可用,Oracle数据库上云更容易了
- Oracle 19.28 RU 升级最佳实践指南
- 汉得信息:发布EBS系统安装启用JWS的高效解决方案
- 如何主导设计一个亿级高并发系统架构-数据存储架构(三)
- Java 后端开发必看!工厂设计模式轻松拿捏
- ORA-00600 「25027」 「x」报错(抱错孩子电视剧 爸爸是武术 另一个爸爸是画家)
- 新项目终于用上了jdk24(jdk新建项目)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)