第一部分:

  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. 1-开发共享版APP(源码介绍)-BUG修复

    这一系列文章将介绍APP的源码,这一节作为所有BUG问题修复! https://www.cnblogs.com/yangfengwu/category/1512162.html    //开发共享版A ...

  2. Mysql 随机查询10条数据效率最快的查询方法

    1)使用join 和 rand() 耗时 0.009 SELECT * FROM `t_topic` AS t1 JOIN ( SELECT ROUND( RAND() * ( (SELECT MAX ...

  3. JMeter学习2

    JMeter学习(四)参数化 参数化:录制脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进行参数化 ...

  4. 二分法python实现

    聚会游戏,一个人想一个数,其他人来猜,然后告诉你猜大了还是小了,直到猜到这个数. 二分法和猜数游戏类似,只不过猜的时候一定猜最中间的那个数,折半查找所需内容,就数组来说,数组越长,梯度下降越快,二分查 ...

  5. mysql 引擎类型

    innodb: 可靠的事物处理引擎,不支持全文搜索 memeory: 数据存储在内存,速度很快 myisam: 性能极高的引擎,支持全文本搜索,但不支持事物

  6. nRF52832 串口仅支持偶检验

    通常在使用串口时,我们习惯是不进行奇偶检验(even/odd parity),让应用层的软件自己检验即可.如果非要硬件校验时,以下是关于NRF52832的奇偶检验配置: // 52832 仅支持 ev ...

  7. [后渗透]Metasploit使用基础

    0x00 简介 Metasploit是一个免费的.可下载的框架,通过它可以很容易地获取.开发并对计算机软件漏洞实施攻击.它本身附带数百个已知软件漏洞的专业级漏洞攻击工具.当H.D. Moore在200 ...

  8. 2015-2016-2《Java程序设计》团队博客3

    项目进展 这周就是对上周所列出的类进行具体实现.但是到目前为止还没有遇到一些实质性的问题.虽然感觉没有问题就是最大的问题,但是还是希望能够尽早发现bug并及时改掉. 目前已经完成前几个文件之间的架构, ...

  9. MySQL各种类型实验

    实验一:整数 -- 测试一 create database test;-- 新建数据库,如果已经有了就不需要再创建了 USE test;-- 打开数据库 drop table if exists te ...

  10. 安装mininet 一直显示 ‘Cloning into openflow'

    问题描述. 安装mininet卡在了下载openflow. git clone --branch 2.2.2 git@github.com:mininet/mininet.git ,然后输入命令./i ...