第一部分:

  1. 字段名的别名用“”括起来,如:last_name as “姓名”。
  2. 去除重复:在投影的字段名前加上 distinct 就可以了。
  3. 比如:select distinct em.last_name "姓名" from employees em;
  4. 日期格式的查询语句:‘00-0月-00’  分别对应的是日、月、年 。例如select * from employees em where em.hire_date = '24-1月-98';
  5. 不等号的三种表达方式:<>、!=、^=
  6. between… and… (包含两个值)
  7. 空值判断:is null;   非空判断:is not null;
  8. escape:可以用 escape标识符搜索实际的 % 和 _ 符号。使用 ESCAPE 选项, 该选项指定换码符是什么。如果你想要搜索包含‘SA_’的字符串可以使用 escape 对\表 示该符号为转义符号。like '%SA\_%'  escape '\';  例如:select * from jobs where job_id like 'S_\_%' escape '\';
  9. 排序对于空值:升序排序时显示在最后,降序排序时显示在最前面
  10. 升序降序:升序是asc, 降序是desc

第二部分:

  1. 查看表的结构:desc 表名;
  2. dual 表:dual 是一张只有一个字段,一行记录的表。dual 表也称之为'伪表',因为它不存储主题数据。如果我们不需要从具体的表来取得表中数据,而是单纯地为了得到一些我们 想得到的信息,并要通过 select 完成时,就要借助 dual 表来满足结构化查询语言的格式。
  3. 单行函数与多行函数由于太多太杂,就不再这里说明了。
  4. sysdate 是一个日期函数,它返回当前数据库服务器的日期和时间。例如:select to_char(sysdate,'YYYY-MM-DD  HH:MI:SS AM') from dual;
  5. 通用函数:nvl、nvl2、nullif、coalesce
  6. if-then-end 结构的判断:case 或 decode例如:case:select last_name,job_id,salary,CASE job_id WHEN 'IT_PROG' THEN salary * 1.1 WHEN 'ST_CLERK' THEN salary * 1.15 WHEN 'SA_REP' THEN salary * 1.2 END from employees;
  7. decode:select last_name,job_id,salary, decode(job_id,'IT_PROG',salary*1.1,'ST_CLER K',salary*1.15,'SA_REP',salary * 1.2) from employees;

  8. 多表查询中:为了连接 n 个表在一起,你最少需要 n-1 个连接条件。例如,为了连接 4 个表, 最少需要 3 个连接条件。
  9. 多表连接:自连接(与自己连接where条件中用等值连接,或用 natural join)、外连接(外连接是指查询出符合连接条件的数据同时还包含孤儿数据。左外链接包含左表的孤儿 数据,右外连接包含右表的孤儿数据,全外连接包含两个表中的孤儿数据。孤儿数据是指被连接的列的值为空的数据。)、内连接 inner join(内连接(INNERJOIN): 内连接通过 INNERJOIN 来建立两个表的连接。在内连接中使 用 INNER JOIN 作为表的连接,用 ON 子句给定连接条件。INNERJOIN 语句在性能上其他 语句没有性能优势。)
  10. 扩展的外连接:在 Oracle 数据库中对外连接中的左外与右外连接做了扩展,可以简化外连接的语法。 通过在连接条件的后侧使用(+)来表示是否显示孤儿数据,有(+)表示不显示孤儿数据而另一 侧则显示孤儿数据。但是该种写法仅能在 Oracle 数据库中使用。
  11. 举例:
    • 自连接等值连接(select worker.last_name,manager.last_name from employees worker,employees manager where worker.manager_id = manager.employee_id;)
    • 自连接 natural join(select d.department_id,d.department_name,l.city from departments d natural join locations l;)
    • 左外链接(selecte.last_name,d.department_namefrom employees e left outer join departments d on e.department_id = d.department_id;
    • 右外链接:right outer join;全外链接:full outer join)
    • 扩展的外连接(selecte.last_name,d.department_namefrom employees e ,departments d where e.department_id(+) = d.department_id; )
    • 内连接 三个表(select e.last_name,d.department_name,l.city from employees e inner join departments d using(department_id) inner join locations l using(location_id) where e.employee_id = 202; )

11.常用命令:

  • 建表:create table 表名 (列名 数据类型 约束 [,列名n 数据类型 约束]);
  • 建视图:create view 视图名 as select 投影列 from 表 where 条件 order by 按某个列进行排序;
  • 插入数据:insert into 表名 (列名  [,列名n]) values(值1 [,值n])       【插入指定日期的值:to_date('2019-03-01','yyyy-MM-dd')。默认格式日期:'01/3 月 /2019'】

12.注意:

  • 当有多个列匹配时,用 USING 子句匹配唯一的列。 如果某列在 USING 中使用,那么在引用该列时不要使用表名或者别名。 NATURALJOIN 和 USING 子句是相互排斥的(select d.department_name,l.city from departments d join locations l using(location_id) where location_id = 1800; )

第三部分:

  1. 组函数|聚合函数(对数据进行分组,一组返回一个数据):avg()、count()、max()、min()、sum()
  2. 所有组函数忽略空值。为了用一个值代替空值,用 NVL、NVL2 或 COALESCE 函数。
  3. count 函数有三种格式: count(*) 、count(expr) 、count(distinct expr) 【count(*)计算的次数是满足where的所有情况,包括重复行;count(字段名):字段不为空的计数】
  4. 如果在 SELECT 子句中包含了组函数,就不能选择单独的结果,除非单独的列出现 在 GROUP BY 子句中。如果未能在 GROUP BY 子句中包含一个字段列表,你会收到一个 错误信息。 (mysql不会报错,但返回的数据也不是正确的)
  5. 分组原则:使用 where 子句,你可以在划分行成组以前过滤行。在 GROUP BY 子句中必须包含列。在 GROUP BY 子句中你不能用列别名。默认情况下,行以包含在 GROUP BY 列表中的字段的升序排序。可以用 ORDER BY 子句覆盖这个默认值。
  6. 进行多个列分组:也就是对第一个字段名分组之后,再对每个组进行第二个字段名进行分组。
  7. 先进行数据查询,在对数据进行分组,然后执行组函数。(where ---> group by ---> 组函数)
  8. having 语句通常与 GROUP BY 语句联合使用,用来过滤由 GROUPBY 语句返回的记录集。 having 语句的存在弥补了  where 关键字不能与聚合函数联合使用的不足。having 只能组函数的判断。
  9. 执行顺序:from ---> where ---> group by ---> having ---> select ---> order by
  10. 子查询原则:子查询放在圆括号中。将子查询放在比较条件的右边。在单行子查询中用单行运算符,在多行子查询中用多行运算符。【可以放在 from、where、having字句中。】

第四部分:

  1. 多行子查询:【其中:<ANY 意思是小于最大值。 >ANY 意思是大于最小值。<ALL 意思是小于最小值。>ALL 意思是大于最大值。】                                    举例(any):select e.employee_id,e.last_name,e.job_id,e.salary from employees e where e.job_id <> 'IT_PROG' and e.salary < any (select em.salary from employees em where em.job_id = 'IT_PROG')
  2. 常见子查询错误:使用子查询的一个常见的错误是单行子查询返回了多行



Oracle 11g 总结篇2的更多相关文章

  1. 【Oracle 集群】Oracle 11G RAC教程之集群安装(七)

    Oracle 11G RAC集群安装(七) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总. ...

  2. Oracle 11g EM安全证书问题无法访问的解决办法

    OS: Windows Server 2012 Oracle: 11g R2 上一篇 Oracle 11g EM删除重建的方法 通过命令的方式重建了EM,启动也成功 emctl status dbco ...

  3. 解决Oracle 11g在用EXP导出时,空表不能导出

    实践结论可行,看"2.解决办法" 一.问题原因:     11G中有个新特性,当表无数据时,不分配segment,以节省空间     1.insert一行,再rollback就产生 ...

  4. 聊聊Oracle 11g的Snapshot Standby Database(上)

    Oracle 11g是Data Guard的重要里程碑版本.在11g中,Active DataGuard.Advanced Compression等特性大大丰富了Data Guard的功能和在实践领域 ...

  5. Oracle 11g AMM与ASMM切换

    现在的Oracle正在往智能化方向发展.如果我们现在找一些8i/9i时代的Oracle书籍,怎么样配置合适的数据库各内存池大小是非常重要的话题.但是进入10g之后,自动内存池调节成为一个重要Oracl ...

  6. 使用instantclient_11_2 和PL/SQL Developer工具包连接oracle 11g远程数据库

    本文转自CSDN博客,http://blog.csdn.net/helifengwell/archive/2010/08/18/5820434.aspx 1,先到Oracle站点下载Instant C ...

  7. 深入剖析哪些服务是Oracle 11g必须开启的

    这篇文章主要介绍了哪些服务是Oracle 11g必须开启的以及这些服务的详细介绍,需要的朋友可以参考下   成功安装Oracle 11g数据库后,你会发现自己电脑运行速度会变慢,配置较低的电脑甚至出现 ...

  8. oracle 11g 完全卸载方法

    网上好多卸载教程都前篇一律,但很多卸完重装都有问题,卸了几次装了几次,就特地总结整理一下 另外说一句:在完全删除(或者叫卸载)oracle时,没有必要特别意oracle提示问题,只要把oracle痕迹 ...

  9. CentOS Linux 系统 安装oracle 11g

    CentOS Linux 系统 安装oracle 11g 在Linux系统上安装oracle是比较麻烦,需要配置各种变量啥的,o(︶︿︶)o ,但是没办法,有些东西你总的去接触,而且接触理解的越早越深 ...

随机推荐

  1. RookeyFrame bin 目录

    如果把bin目录删掉,重新生成的话,还需要加载很多东西哦,具体可以对比一下下载下来的文件

  2. 【NOIP2014】真题回顾

    题目链接 生活大爆炸版石头剪刀布 就是个模拟,不说了 联合权值 枚举每个点,统计它任意两个儿子的联合权值,统计的时候维护sum和max就行了 飞扬的小鸟 比较好的DP题,不难想到用dp[i][j]表示 ...

  3. 转载:基于 Hive 的文件格式:RCFile 简介及其应用---推酷

    Hadoop 作为MR 的开源实现,一直以动态运行解析文件格式并获得比MPP数据库快上几倍的装载速度为优势.不过,MPP数据库社区也一直批评Hadoop由于文件格式并非为特定目的而建,因此序列化和反序 ...

  4. GoCN每日新闻(2019-10-23)

    GoCN每日新闻(2019-10-23) GoCN每日新闻(2019-10-23) 1. 从0开始,用Go实现Lexer和Parser https://mp.weixin.qq.com/s/cFGJX ...

  5. 深搜的剪枝技巧(三)——Sticks(可行性剪枝、上下界剪枝、最优性剪枝)

    小木棍(最优性剪枝.可行性剪枝) 一.问题描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,已知每段的长都不超过 50 .现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍 ...

  6. Linux 权限规划ACL

    什么是ACL ACL是Access Control List的缩写,主要目的是提供传统的owner.group.others的read.write.execute权限之外的具体权限设置 ACL可以针对 ...

  7. Unity3d客户端与Photon服务器数据通信

    今天先介绍一下Photon服务器是什么,可以做什么,为什么要使用它? Photon:开发多人联网游戏最轻松的方案!可以迅速简单实现多人实时在线网络游戏(pvp). Photon:透过位于各地的Phot ...

  8. Linux Shell:Map的用法

    Map定义: 在使用map时,需要先声明,否则结果可能与预期不同,array可以不声明 方式1: declare -A myMap myMap[" 方式2: declare -A myMap ...

  9. 使用PLSQL导入excel数据至oracle数据库

    https://blog.csdn.net/qq_42909551/article/details/82108754 https://jingyan.baidu.com/album/14bd256e2 ...

  10. GIS地理工具案例教程——批量合并影像-批量镶嵌栅格

    GIS地理工具案例教程--批量合并影像-批量镶嵌栅格 商务合作,科技咨询,版权转让:向日葵,135-4855__4328,xiexiaokui#qq.com 关键词:批量.迭代.循环.自动.智能.地理 ...