单表查询:

  .or 和 and 混合使用

    需求:查询业主名称包含'刘'或门牌号包含'5'的,并且地址编号为3的记录

SELECT * FROM T_OWNERS WHERE ("NAME" LIKE '%刘%' or HOUSENUMBER LIKE '%5%') AND ADDRESSID = 3

  and 的权限优先于 or 所以需要在or的两边添加()

  2. 范围查询

     除了传统的 where usenum >=100 and usenum <=200,还可以用between and 查询

SELECT * from T_ACCOUNT WHERE USENUM BETWEEN 100 and 200   --只适合>= 或<=

  3.去空查询

SELECT * FROM T_PRICETABLE WHERE MAXNUM IS NULL;
SELECT * FROM T_PRICETABLE WHERE MAXNUM IS NOT null;

  4.去掉重复记录

SELECT ADDRESSID FROM T_OWNERS GROUP BY ADDRESSID;
SELECT DISTINCT ADDRESSID FROM T_OWNERS; --执行效率高

   5.基于伪列的查询

    rowid : 表中每一行在数据文件中都有一个物理地址,rowid返回就是该行的物理地址

SELECT ROWID , t.* FROM T_AREA t;

    rownum : 通过rownum伪列可以限制查询结果集中返回的行数,可用于分页

SELECT ROWNUM , t.* FROM T_OWNERS t;

  6.聚合函数

    sum(),avg(),max(),min(),count() 括号内传递条件,如:

SELECT "COUNT"(*) FROM T_OWNERS t WHERE OWNERTYPEID = 1;

    分组聚合group by 如果后面加 having条件,即在分组后过滤数据

SELECT AREAID , "SUM"(MONEY) FROM T_ACCOUNT GROUP BY AREAID HAVING "SUM"(MONEY) > 169000

多表查询:

连接规定 能用内连接 就不用外链接 能用左外 就 不用右外

  1.内连接

    需求:查询显示业主编号,业主名称,业主类型名称

SELECT
t1."ID",
T1."NAME",
T2."NAME"
FROM
T_OWNERS t1,
T_OWNERTYPE t2
WHERE
T1.OWNERTYPEID = T2."ID"

    需求:查询显示业主编号,业主名称,地址,业主类型名称

SELECT
T1."ID",
T1."NAME",
t2."NAME",
T3."NAME"
FROM
T_OWNERS t1,
T_OWNERTYPE t2,
T_ADDRESS t3
WHERE
T1.OWNERTYPEID = T2."ID"
AND t1.ADDRESSID = T3."ID";

  注意:多表的内连接,可以先写from xxx ,xxx ,xxx 以及where xx=yy,aa=bb,xx=zz,最后再写select * 需要显示的内容

  2.左外连接

    需求:查询业主的账务记录,显示业主的编号,名称,年,月,金额,没有账务信息也要列出

SELECT                   --这是SQL1999标准的语法
A1."ID",
A1."NAME",
B1."YEAR",
B1."MONTH",
B1.MONEY
FROM
T_OWNERS a1
LEFT JOIN T_ACCOUNT b1 ON A1."ID" = b1.OWNERUUID
SELECT            --这是ORACLE提供的语法
A1."ID",
A1."NAME",
B1."YEAR",
B1."MONTH",
B1.MONEY
FROM
T_OWNERS a1,
T_ACCOUNT b1
WHERE
A1."ID" = B1.OWNERUUID (+);

  注意:left join 左边的是主表,右边的是辅表,on后面是条件;ORACLE提供的,谁是辅表就在谁身上

    加 (+) .

  3.子查询

    单行子查询:

       需求:查询2012年01月用水量大于台账记录平均值的数据.分析:先查平均值,再传入

SELECT
*
FROM
T_ACCOUNT
WHERE
"YEAR" = ''
AND "MONTH" = ''
AND USENUM > (
SELECT            --查平均值
"AVG" (USENUM)
FROM
T_ACCOUNT
WHERE
"YEAR" = ''
AND "MONTH" = ''
)

    多行子查询:

      需求:查询地址编号为1,3,4的业主记录.分析:如果用or来编写太繁琐,所以用in

SELECT * FROM T_OWNERS WHERE ADDRESSID IN (1,3,4);

       需求:查询地址含有"花园"的业主信息.分析:先模糊查询,再传入

SELECT
*
FROM
T_OWNERS
WHERE
ADDRESSID IN (
SELECT
"ID"         --外查询需要addressID,所以内查询要查id
FROM
T_ADDRESS
WHERE
"NAME" LIKE '%花园%'
);

  注意:not in 不包含  is not null 代表不为空;子查询 查询的结果作为条件传入另一个SQL语句

分页查询:

  简单分页查询:

    需求:分页查询台账表,每页10条记录.分析:rownum不能使用>符号,只能<或<=或=1,怎么办?

SELECT ROWNUM,A1.* FROM T_ACCOUNT a1 WHERE ROWNUM <=10;

  使用子查询:

SELECT
*
FROM
(
SELECT
ROWNUM r,
A1.*
FROM
T_ACCOUNT a1
WHERE
ROWNUM <= 20     --如果要嵌套排序查,代码该如何写 ?
)
WHERE
r > 10;

  基于排序的分页:

SELECT
*
FROM
(
SELECT
A .*, ROWNUM RN
FROM
(
SELECT
*
FROM
T_ACCOUNT
WHERE
YEAR = ''
ORDER BY
USENUM DESC
) A            --A表代表排序,也是三层中的数据层,第一步
) B                 --B表代表基于伪列查询,也是三层中的伪列层,第二步
WHERE                   --最后就是分页查询了,也是三层中的分页层,第三步
B.RN BETWEEN (3 - 1) * 5 + 1    --ORACLE中索引是从1开始的
AND 3 * 5; --条件要知道怎么计算

      未完待续...

    

oracle查询相关注意点的更多相关文章

  1. oracle查询相关语句

    1,查询表空间使用情况select a.a1 表空间名称,c.c2 类型,c.c3 区管理,b.b2/1024/1024 表空间大小M,(b.b2-a.a2)/1024/1024 已使用M,subst ...

  2. Oracle权限相关查询

    Oracle权限相关查询着实视图有点多,记录下常用的语句,方便查询:1.查看所有用户:  select * from dba_users;  select * from all_users;  sel ...

  3. 45 个非常有用的 Oracle 查询语句

    ​ 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快 ...

  4. Oracle 性能相关常用脚本(SQL)

    在缺乏的可视化工具来监控数据库性能的情形下,常用的脚本就派上用场了,下面提供几个关于Oracle性能相关的脚本供大家参考.以下脚本均在Oracle 10g测试通过,Oracle 11g可能要做相应调整 ...

  5. 40多个非常有用的Oracle 查询语句

    给大家介绍是40多个非常有用的Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有Oracle 开发者都必备的技能,所以快快收藏吧! 日期 ...

  6. 从Select语句看Oracle查询原理(了解Oracle的查询机制)

    第一步:客户端把语句发给服务器端执行 当我们在客户端执行select语句时,客户端会把这条SQL语句发送给服务器端,让服务器端的进程来处理这语句.也就是说,Oracle客户端是不会做任何的操作,他的主 ...

  7. 45个非常有用的 Oracle 查询语句小结

    45个非常有用的 Oracle 查询语句小结 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 ...

  8. 45 个非常有用的 Oracle 查询语句(转)

    这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快快收 ...

  9. Oracle查询用户权限

    Oracle查询用户权限 -- 确定角色的权限select * from role_tab_privs ;              包含了授予角色的对象权限select * from role_ro ...

随机推荐

  1. JavaScript Set Homepage and Favorite

    // JavaScript Set Homepage and Favorite // <a href="javascript:AddFavorite(window.location,d ...

  2. Python-约束和异常处理

    今天我们来说一说类的规范以及程序出现错误后我们要怎么进行处理 一.类的约束 首先,你要清楚,约束是对类的约束,比如,现在你是一个项目经理,然后呢,你给手下的人分活,张三你处理一下普通用户登录,李四你处 ...

  3. 简单理解C#中的抽象工厂模式是什么概念!

    抽象工厂模式向客户端提供一个接口,使得客户端在不必指定具体类型的情况下,创建多个产品族中的对象.本文采取的仍然是接着以前的那个快餐店的例子.现在,快餐店经常良好,逐渐发展壮大,为了适合不同地方人的饮食 ...

  4. MySQL--主从数据库同步原理

    主从数据库的复制原理:摘自MySQL官网 1. 异步 * 主在执行sql之后,记录二进制bin-log文件.   * 同时从连接主服务器,并从主获取binlog,存于本地relay-log,并从上次记 ...

  5. Apache服务器运维笔记(2)----使用apxs来进行编译安装 mod_txt 模块

    mod_txt是一个非常有趣的模块,它实现了文本的输出过滤器,它可以在指定类型的网页上,将你指定的txt文件显示在网页的头部和尾部. 在它的主页 http://apache.webthing.com/ ...

  6. 初学js的穷举思想

    初学者,最关机键的,就是掌握for的穷举思想. 穷举:穷尽.完全.全部. 具体方法: 外层:用for循环一一列举所有可能性 内层:用if语句进行判断,如果满足条件就输出,不满足的跳出进行下次循环. & ...

  7. mongodb数据库集合操作

    1:更新update update() 方法用于更新已存在的文档.语法格式如下: db.collection.update( <query>, <update>, { upse ...

  8. js 更改对象中的属性名

    const json = JSON.parse(JSON.stringify(options).replace(/name/g,"label")); 注: 1.options是需要 ...

  9. OWASP出品:Xenotix XSS漏洞测试框架及简单使用

    OWASP Xenotix XSS Exploit Framework是一个高效的跨站脚本漏洞(XSS)检测和攻击测试框架.它通过特有的三大浏览器引擎(包括Trident, WebKit和Gecko) ...

  10. IOS UIWebView(浏览器控件)

    什么是UIWebViewUIWebView是iOS内置的浏览器控件系统自带的Safari浏览器就是通过UIWebView实现的 UIWebView不但能加载远程的网页资源,还能加载绝大部分的常见文件h ...