Oracle86和92语法的连接,子查询,集合的操作
1笛卡尔积
--oracle连接的基础 笛卡尔积
--92语法 更加清晰明了的区别了 每一种连接
--解决了多表关联时 条件不清晰的问题
select * from emp;
select * from dept;
--86语法
select * from emp e,dept d;
--92语法
select * from emp cross join dept
2内连接
select * from emp;
select * from dept;
--86语法
select * from emp e,dept d where e.deptno=d.deptno;
--92语法
select * from emp inner join dept on emp.deptno=dept.deptno
3左外连(左外连接和右外联的区别在于 谁为主 谁为从 意义相同)
--86语法
select * from emp e,dept d where e.deptno=d.deptno(+)
--92语法
select * from emp e left join dept d on e.deptno=d.deptno
-- oracle中子查询
表子查询 只要输出的结果是个表结构 就可以放在from后查询 也可以设置别名
select abc.ename,abc.loc from (
select * from emp e inner join dept d on e.deptno=d.deptno
) abc;
select * from emp;
select * from dept;
/**
列的子查询 子查询 永远只能返回一行一列数据
列子查询的原理
for(emp e: list<emp>){
syso(e.ename);
for(dept d: list<dept>){
if(e.deptno==d.deptno){
syso(d.dname)
break;
}
}
}
**/
select ename,(select dname from dept where deptno=e.deptno) from emp e;
--条件子查询
select * from tab;
select * from salgrade
--薪水等级是2的人
select losal,hisal from salgrade where grade=2
select * from emp where sal>=(select losal from salgrade where grade=2)
and sal<=(select hisal from salgrade where grade=2)
select * from emp e inner join salgrade s on e.sal>=s.losal and e.sal<=s.hisal
where s.grade=2
/**
/**
--多行子查询
for(emp e: list<emp>){
syso(e.ename);
for(dept d: list<dept>){
if(d.dname.indexOf('A')>=0){
if(e.deptno==d.deptno ){
syso(d.dname)
break;
}
}
}
}
**/
select * from emp where deptno =any(
select deptno from dept where dname like '%A%'
)
select * from emp where deptno in(
select deptno from dept where dname like '%A%'
)
--效率最高的子查询语句
select * from emp e where exists(
select deptno from dept d where d.deptno=e.deptno and dname like '%A%'
)
2 集合操作符
并集
union all 集合中的元素 全部叠加 不会去重复
union 集合中的元素 全部叠加 会去重复
intersect 交集
{1,2},{2,3} 结果为 {2}
minus 取差集
{1,2},{2,3} 结果为{1}
转载于:https://www.cnblogs.com/t0404/p/10291071.html
Oracle86和92语法的连接,子查询,集合的操作相关推荐
- mySQL学习记录(局域网连接/基础查询/条件查询/常见函数/窗口函数/表连接/子查询/插修删建表)
一些基础概念 DB 数据库 存储数据的容器 DBMS 数据库管理系统 又称数据库软件.产品如mysql/oracle/db2/sqlserver SQL 结构化查询语言 是所有的DBMS都使用的一种D ...
- Oracle入门--水表项目(单表查询,链接查询,左右外连接,子查询,分页查询)(3)
水表项目建表 1.1.1 分析 1.1.2 SQL实现 表结构 -- <自来水公司收费系统> -- 1 业主类型表 create table t_ownertype(id number p ...
- 4,表查询语法,表连接,子查询
数据库基础四: 今日内容: 一:单表查询语法 from 找表 where 第一次筛选 group by 分组 having 二次筛选 distinct 去重(数据一模一样时去重复的,在from之前使用 ...
- mysql数据库入门教程(5):多表操作(连接查询,子查询,分页查询,联合查询)
前文介绍了单表查询:mysql数据库入门教程(4):查询讲解大全 今天介绍下多表查询 一.连接查询 含义:又称多表查询,当查询的字段来自于多个表时,就会用到连接查询 先送上下面所讲用到的sql脚本 h ...
- case when嵌套子查询_Oracle基础连接查询!!!
1. 字符到日期的转换 (1) 在Oracle中将字符转换为日期的函数是什么? (2) To_date('字符','转换格式') To_date('2019-03-04','yyyy-MM-dd') ...
- MySql基础篇---002 SQL之SELECT使用篇: 基本的SELECT语句,运算符,排序与分页,多表查询,单行函数,聚合函数,子查询
第03章_基本的SELECT语句 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. SQL概述 1.1 SQL背景知识 1946 年,世界上第一台电脑 ...
- oracle多表关联查询报表,oracle多表关联查询和子查询
oracle多表关联查询和子查询 一.多表关联查询 例子: sql> create table student1 ( sid varchar(3), sname varchar(6), sage ...
- MySQL子查询原理分析
01 前言 子查询,通俗解释就是查询语句中嵌套着另一个查询语句.相信日常工作中接触到 MySQL 的同学都了解或使用过子查询,但是具体它是怎样实现的呢? 查询效率如何? 这些恐怕好多人就不太清楚了,下 ...
- SQL中的关联子查询
目录 关联查询 例子 分解相关的嵌套查询 与不同的表一起使用 关联子查询与内部联接 哪个更快? 哪个更容易阅读? 哪一个更好? HAVING子句中的关联子查询 在本文中,我们将查看几个示例并将关联子查 ...
最新文章
- 提效工具git的基本使用
- 牛客网 -- 计算机历年考研复试上机题 -- 手机键盘
- ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库
- python 读写 json文件
- 面向对象的分析与设计
- Java基础零碎知识点总结(持续补充)
- eclipse提交代码到github其他分支
- ubuntu中Ruby开发集成环境
- phpstudy开机自启
- Router-view
- mono java 性能_Mono对Java的支持
- Java中的实体类(VO、PO、DO、DTO、BO、QO、DAO、POJO)
- 计算机提示无法识别usb,电脑提示“无法识别的USB设备”如何解决?
- 商场会员营销小程序-连接会员,赋能商家
- Windows10安装Centos7双系统
- kali 主动信息收集之dmitry和amap
- 考研英语 - word-list-46
- 相关性质和条件变量-ReentrantLock详解(2)-AQS-并发编程(Java)
- PYTORCH 笔记 DILATE 代码解读
- 用浏览器打开.html文件的经过