oracle中的多表查询和子查询以及一些注意事项
多表查询就是使用两张表及其以上的查询。首先需要知道几个名词,笛卡尔积,内连接,外连接,子查询。
1)笛卡尔积
所谓笛卡尔积其实就是两张表数据的条数相乘得到的最后结果,例如表1有10条数据,表2有4条数据,那么经过笛卡尔积之后最后的结果为40条数据,使用笛卡尔积缺点比较多,会产生很多没有用的数据。
2)内连接
内连接分为隐式和显示两种,显示就是使用inner join关键字,而隐式就是使用where关键字,根据关联字段建立的条件,例如where t1.id=t2.id 这就是隐式。
3)外连接
外连接也分两种,左外连接,右外连接。
左外连接:使用left join 关键字,它返回的是左表的所有记录,如果右表中没有满足条件的记录,则返回空值。
右外连接:使用right join 关键字,意思和左外连接相反。
在oracle中有一个特殊的符号(+),用它也可以达到左右外连接的效果,用法例如:e2.empno(+) =e3.empno,表示如果e3表在e2表中没有满足关系的记录,就返回空值。
4)子查询
子查询就是嵌套查询,例如 select .. from (selec....) where(select....),写法不一样,但就是这样的。
5)exists 关键字
exists(查询语句):数据量大时非常高效,当查询语句有结果的时候返回true否则返回false
例如查询有员工的部门信息
select *
from dept d
where exists
(select * from emp e where e.deptno=d.deptno);
6)集合运算
集合运算:(将查询结果合并,应用场景:应用在来自不同数据的表时)
交集:intersect
并集:union(去除重复的,并且排序)/union all(不去除重复的)
差集:minus关键字
集合运算的注意事项:
1.列的类型要一致
2.按照顺序书写
3.列的数量要一致,如果不足用null空值补全。
oracle中的多表查询和子查询以及一些注意事项的更多相关文章
- ORACLE 多表连接与子查询
Oracle表连接 SQL/Oracle使用表连接从多个表中查询数据 语法格式: select 字段列表from table1,table2where table1.column1=table2.co ...
- oracle多表关联查询和子查询
oracle多表关联查询和子查询 一.多表关联查询 例子: SQL> create table student1 ( sid ), sname ), sage )); Table created ...
- MySQL中的联表查询与子查询
0.准备数据 1.内连接:INNER JOIN 2.左连接:LEFT JOIN 3.右连接:RIGHT JOIN 4.USING子句 扩展知识点: 0.表别名的使用: 1.group by的用法 2. ...
- Mysql基础语法-建库-建表(增、删、改、查、表关联及子查询)
前言:MySQL是一个数据库管理系统,也是一个关系数据库.它是由Oracle支持的开源软件,MySQL可以在各种平台上运行UNIX,Linux,Windows等.可以将其安装在服务器甚至桌面系统上. ...
- MS sql server 基础知识回顾(二)-表连接和子查询
五.表连接 当数据表中存在许多重复的冗余信息时,就要考虑将这些信息建在另一张新表中,在新表中为原表设置好外键,在进行数据查询的时候,就要使用到连接了,表连接就好像两根线,线的两端分别连接两张表的不同字 ...
- oracle中的dual表详解
oracle中的dual表详解 1.DUAL表的用途 Dual 是 Oracle中的一个实际存在的表,任何用户均可读取,常用在没有目标表的Select语句块中 --查看当前连接用户 SQL> s ...
- MySQL多表查询之外键、表连接、子查询、索引
MySQL多表查询之外键.表连接.子查询.索引 一.外键: 1.什么是外键 2.外键语法 3.外键的条件 4.添加外键 5.删除外键 1.什么是外键: 主键:是唯一标识一条记录,不能有重复的,不允许为 ...
- MySQL开发——【联合查询、多表连接、子查询】
联合查询 所谓的联合查询就是将满足条件的结果进行拼接在同一张表中. 基本语法: select */字段 from 数据表1 union [all | distinct] select */字段 fro ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- mysql查询语句 和 多表关联查询 以及 子查询
原文地址: http://blog.csdn.net/github_37767025/article/details/67636061 1.查询一张表: select * from 表名: 2.查询指 ...
随机推荐
- [BZOJ2286][Sdoi2011]消耗战(虚树上DP)
2286: [Sdoi2011]消耗战 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 6457 Solved: 2533[Submit][Statu ...
- BeanCopier对象复制学习
BeanCopier是Cglib包中的一个类,用于对象的复制. 注意:目标对象必须先实例化 而且对象必须要有setter方法 初始化例子: BeanCopier copier = BeanCop ...
- crm 项目的部署
发布CRM你将使用以下软件 nginx uWSGI CentOS7 CRM项目文件 virtualenv supervisor WSGI.uWSGI python web服务器开发使用WSGI协议(W ...
- 第七周课程总结&实验报告五
实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法. 实验要求 掌握使用抽象类的方法. 掌握使用系统接口的技术和创建自定义接口的方法. 了解 Java 系统包的结构. ...
- Vue可自定义tab组件
在工作中我们常常要用到tab组件,如果有用第三方组件库的话一般都会有这个组件,但如果没有使用第三方组件库,或者想要自定义tab,那么或许这个无依赖的tab组件将会极大地节约你的开发时间. 如何 ...
- NOIP考前知识点整理
前言:距离NOIP还有不到一百天(虽然NOIP没了),为了整理一下所学的内容,才有了这篇博文.本文内容无特殊说明全部来自于博主的博客,代码也都是新敲的,努力在个人的码风基础上做到尽量简洁,求资瓷. 一 ...
- day2_Python基础二
一.格式化输出 1.%s or %d %:表示占位符,注意,需要在内容中显示%时,在他之前增加一个%来转义,如显示5%,则:5%% s:表示字符串 d:表示数值digital 例子: name = i ...
- 七、创建UcRESTTemplate请求管理器
一.创建UcRESTTemplate管理器封装 import com.alibaba.fastjson.JSON; import org.apache.http.client.config.Reque ...
- golang 使用reflect反射结构体
"反射结构体"是指在程序执行时,遍历结构体中的字段以及方法. 1.反射结构体 下面使用一个简单的例子说明如何反射结构体. 定义一个结构体,包括3个字段,以及一个方法. 通过refl ...
- leetcode 509斐波那契数列
递归方法: 时间O(2^n),空间O(logn) class Solution { public: int fib(int N) { ?N:fib(N-)+fib(N-); } }; 递归+记忆化搜索 ...