3.1 执行sql文件

  1. @文件地址名 --执行某个sql文件;

3.2 多表查询

  • 想要的数据不在同一张表,就需要多个表进行联查。

  • 多表查询也叫做表连接查询,其中的where条件就是连接条件。

  • 可以使用join来进行表连接,from 中的逗号换成join ,where换成on即可,join后面还可以另外跟where条件。

    1. select ...
    2. from 1,表2...
    3. where...
    4. ...

3.3 外连接

  • 保留没有通过连接条件筛选的数据的时候使用外连接。

  • oracle用法

    • 想保留哪一张表的数据,应该在连接条件等号的另一边使用(+);
    1. select d.deptno,d.dname,count(empno)
    2. from dept d, emp e
    3. where d.deptno = e.deptno(+)
    4. group by d.deptno,d.dname
  • sql用法

    1. select d.deptno,d.dname,count(empno)
    2. from dept d join emp e
    3. on d.deptno = e.deptno
    4. group by d.deptno,d.dname

3.4 自连接

  • 表自己跟自己做多表连接查询,要查询的数据在同一张表但是不在同一行,就要使用自连接

    1. select a.ename||'''s manager is '||nvl(b.ename,' his wife')
    2. from emp a, emp b
    3. where a.mgr = b.empno(+)

3.5 子查询

  • 个查询的select语句里边嵌套了另一个select语句;

    1. select * from emp
    2. where sal > (select sal from emp where ename = 'SCOTT')
  • 注意事项

    • 父查询和子查询可以是不同的表,子查询返回的结果父查询可以使用即可;

    • 父查询的select、from、where、having都可以嵌套子查询;

    • 单行子查询只能使用单行操作符,多行子查询只能使用多行操作符,单行操作符,就是对某个单一数据的比较操作 =|>|>=|<|<=等;

    • 多行操作符,就是对一个集合的比较操作(IN、ANY、ALL)

    1. select * from emp
    2. where deptno in (select deptno from dept
    3. where dname ='SALES' or dname = 'ACCOUNTING')
    • 子查询中返回的null值影响最终计算结果;
    1. select * from emp
    2. where empno not in (select mgr from emp where mgr is not null)

3.6 集合运算

并集 union

全并集 union all

交集 intersect

差集 minus

  1. select * from emp where deptno = 10
  2. union
  3. select * from emp where deptno = 20
  • 用命令break on deptno skip 2来去掉分组重复的deptno,使用break on null恢复;

  • 注意事项

    • 参与运算的各个集合必须列数相同,且类型一致;

    • 采用第一个集合的表头作为最终使用的表头,(别名也只能在第一个集合上起);

    • 可以使用括号修改各个sql执行的优先级;

3.7 新增数据

insert into 表名 values(val1,val2,.....) val1 val2 这些值要对应表的每列顺序

insert into 表名(列名,列名2.....) values(val1,val2,.....)

  • 字符串和日期加单引号;

  • "&"符号,可简化增删查改操作

    • 例:select * from &t; 再次输入/时,可快速查找;
  • 批处理

    1. --一次性将emp表中所有10号部门的员工,放到新表emp10中来。
    2. insert into emp10 select * from emp where deptno=10 ;
    3. --一次性将 emp表中的指定列插入到表emp10中。
    4. --注意:insert的列名,要和select的列名一致
    5. insert into emp10(empno, ename, sal, deptno)
    6. select empno, ename, sal, deptno from emp
    7. where deptno=10;
    8. --注意没有values关键字了。且列名必须一一对应

3.8 修改数据

  • update 表名 set 列名1=值1,列名2=值2..... [where cond]

    • 例:update dept set dname='SUPPORT1',loc=null where deptno=50;

3.9 删除数据

  • delete from 表名 [where cond]

    • 例:delete from dept where deptno=50

3.10 rownum

  • rownum 是行号,伪列,并不是真实存在于表中的列,最好在排序前生成;

  • rownum只能使用<, <=符号,不能使用>,>=符号,除了>=1

    • select rownum,emp.* from emp order by sal desc;

Oracle笔记_多表查询的更多相关文章

  1. SQL基本查询_单表查询(实验二)

    SQL基本查询_单表查询(实验二) 查询目标表结构及数据 emp empno ename job hiedate sal comn deptno 1007 马明 内勤 1992-6-12 4000 2 ...

  2. SQL基本查询_多表查询(实验三)

    SQL基本查询_多表查询(实验三) 题目要求(一) 针对emp.dept两表完成如下查询,并验证查询结果的正确性 使用显式内连接查询所有员工的信息,显示其编号.姓名.薪水.入职日期及部门名称: 使用隐 ...

  3. oracle系列笔记(2)---多表查询

    多表查询     这篇文章主要讲四点: (1)oracle多表查询    (2)SQL99标准的连接查询   (3)子查询     (4)分级查询 oracle多表查询有两种方式,一种是oracle所 ...

  4. Oracle学习笔记_04_多表查询

    一.概念: 1.多表连接有以下几种分法: (1)内连接           vs          外连接 (左.右.满) (2)等值连接        vs         不等值连接 (3)非自连 ...

  5. Oracle数据库之单表查询

    接着上一篇的分享,今天主要给大家分享的是关于数据中的单表查询,单表查询很基础,也很重要,但是任何一个初学者必须要掌握的姿势,单表查询就是对单个表进行操作,查询我们想要的数据.单表查询里面的内容也是比较 ...

  6. Oracle中的多表查询(笛卡尔积原理)

    本次预计讲解的知识点 1. 多表查询的操作.限制.笛卡尔积的问题: 2. 统计函数及分组统计的操作: 3. 子查询的操作,并且结合限定查询.数据排序.多表查询.统计查询一起完成各个复杂查询的操作: 一 ...

  7. Oracle(2)之多表查询&子查询&集合运算

    多表查询 笛卡尔积 同时查询多张表时,每张表的每条数据都要和其它表的每条数据做组合.如下栗子,我们发现产生的总记录数是 56 条,还发现 emp 表是 14 条,dept 表是 4 条,56 条正是 ...

  8. mysql_数据查询_单表查询

    1.单表查询: 1.1选中表中若干列: SELECT子句的<目标列表达式>可以是表中属性列,也可以是表达式,还可以是字符常量. SELECT Sname,'year of birth:', ...

  9. Oracle数据库之七 多表查询

    七.多表查询 ​ 对于查询在之前已经学过了简单查询.限定查询.查询排序,这些都属于 SQL 的标准语句,而上一章的单行函数,主要功能是为了弥补查询的不足. ​ 而从多表查询开始就正式进入到了复杂查询部 ...

随机推荐

  1. 庖丁解牛Linux内核分析 0x00:《庖丁解牛》

    庖丁解牛  吾生也有涯,而知也无涯 .以有涯随无涯,殆已!已而为知者,殆而已矣!为善无近名,为恶无近刑.缘督以为经,可以保身,可以全生,可以养亲,可以尽年. 庖丁为文惠君解牛,手之所触,肩之所倚,足之 ...

  2. [leetcode] #112 Path Sum (easy)

    原题链接 题意: 给定一个值,求出从树顶到某个叶(没有子节点)有没有一条路径等于该值. 思路: DFS Runtime: 4 ms, faster than 100.00% of C++ class ...

  3. lr参数化

    为什么做参数化? 数据库校验:注册用户时会看数据库有没有这个账号 应用程序校验:pc端qq登陆,一个账号只能登陆一台电脑 1.数据库或应用程序提交值的唯一性校验 数据库查询过程: 1.语法检查.语义检 ...

  4. DBeaver之连接hive初体验

    工作中第一次和搞大数据的同事配合,他让我用hue看hive数据,,由于本人英语菜逼,hue全英文的页面看不习惯,遂找了一个DBeaver工具,我也是第一次使用这个工具,好像挺可以的,可以连mysql, ...

  5. 内容汇总(c语言)

    一,内容 常量(整型,浮点型,字符型,字符串型,符号常量) 变量(基本类型:整形,浮点型,字符型,枚举型:构造类型:数组,结构体,共用体:另外还有指针类型和NULL) 顺序结构 分支结构 循环结构 当 ...

  6. 调试过程中发现按f5无法走进jdk源码

    debug 模式 ,在fis=new FileInputStream(file); 行打断点 调试过程中发现按f5无法走进jdk源码 package com.lzl.spring.test; impo ...

  7. umask 默认权限控制和特殊权限

    权限简单介绍: 在Linux中,创建目录或者文件之后总会有默认的权限.共9个,分为三组.分别代表u.g.o(属主.属组.其他用户).r.w.x 也代表各自的权限. r:读   在文件中的权限代表次文件 ...

  8. 【JDK】JDK源码分析-ReentrantLock

    概述 在 JDK 1.5 以前,锁的实现只能用 synchronized 关键字:1.5 开始提供了 ReentrantLock,它是 API 层面的锁.先看下 ReentrantLock 的类签名以 ...

  9. .net开源生态,WTM与NCC

    天下大势,分久必合,合久必分.改朝换代都如花开花谢,过眼云烟,更别提开发语言的更迭了. 我们所坚持的,只是那最初的感动,那“只是在人群中多看了你一眼”的惊艳.三十年河东,三十年河西,不忘初心,方得始终 ...

  10. MATLAB使用过程中遇到的问题(持续更新)

    note:如果对你有帮助,请点赞评论哟!!! 问题1:每次双击.m文件都会自动打开一个matlab程序 step1:下载这个文件 http://pan.baidu.com/s/1pL2ULOf ste ...