oracle中简单查询语句的格式及执行顺序分析

一条简单的查询sql格式如下:

  SELECT ...

  FROM ....

  [WHERE ...] --过滤单行

  [GROUP BY ...   [HAVING ...]]--GROUP BY对前面where条件过滤后的结果进行分组,HAVING过滤行组

  

  [ORDER BY ...]--对结果进行排序

eg: 现在有个exchangetime表,表结构如下

  名称                                            是否为空? 类型
 ----------------------------------------------- -------- --------------------------------
 ID                                              NOT NULL NUMBER(18)
 SYSTEM_TYPE                                     NOT NULL CHAR(1)
 TIME_KIND                                       NOT NULL NUMBER(10)
 TIME_NAME                                       NOT NULL VARCHAR2(16)
 BEGIN_TIME                                      NOT NULL NUMBER(10)
 END_TIME                                        NOT NULL NUMBER(10)

查询语句及结果如下:

SQL> list

   1     select t.system_type, avg(t.begin_time) from exchangetime t

     2     where t.id < 10

3     group by t.system_type

4     having avg(t.begin_time)>110000

5*    order by system_type

SQL> /

SYSTEM_TYPE  AVG(T.BEGIN_TIME)

------------ -----------------

0                       110750

1                       150000

SQL> spool off

在上面这个查询语句中where t.id < 10 先对exchagetime中的记录进行过滤,过滤后的行由group by 按照system_type进行分组,接着having子句对行组进行过滤,只保留avg(t.begin_time)>110000的行,最后order by语句按照system_type字段将结果进行升序排列,得到最终结果。

ps: 1、group by 后面可以不接having,但是如果有having子句的话必须与group by 语句结合使用

2、where子句只能对单行进行过滤而不能过滤行组,过滤行组必须使用having子句,如where avg(t.begin_time)就是错误的。必须像上面的语句一样用having对行组进行过滤。

  

时间: 2024-08-03 10:31:02

oracle中简单查询语句的格式及执行顺序分析的相关文章

Oracle中分页查询语句

Oracle分页查询语句使我们最常用的语句之一,下面就为您介绍的Oracle分页查询语句的用法,如果您对此方面感兴趣的话,不妨一看. Oracle分页查询语句基本上可以按照本文给出的格式来进行套用.Oracle分分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE

oracle中的查询语句(关于出库入库信息表,明细表,把捆包箱表,单位信息表的集中查询)

--查出所有现金中心的单位IDwith AllUnitas(select t.ORGANIZATIONID orgid,t.parentidfrom CDMS_ORGANIZATION t where T.CATEGORY = 4start with t.organizationid = '05e85693-14b0-4582-8063-8fbde85371f0' connect by t.parentid = PRIOR t.organizationid), N_instockas(-- in

如何在Oracle触发器中使用查询语句

通常情况下,Oracle数据库禁止在行级触发器或行级触发器所调用的子程序中使用查询语句.但是,面对复杂的业务逻辑,不可避免的要使用查询语句. 当在行级触发器中使用查询语句时,Oracle数据库会抛出ORA-04091异常. Oracle官方文档中对ORA-04091异常的说明如下: ORA-04091: table string.string is mutating, trigger/function may not see it Cause: A trigger (or a user defi

T-SQL简单查询语句(模糊查询)

1 T-SQL简单查询语句 2 3 简单查询: 4 5 1.最简单查询(查所有数据) 6 select * from 表名: 注:* 代表所有列 7 select * from info 8 9 2.查询指定列 10 select code,name from info 11 12 3.修改结果集的列名 13 select code as '代号',name as '姓名' from info 14 15 4.条件查询 16 select * from info where code='p003

简单查询语句(三)

前言 对于一些原理性文章园中已有大量的文章尤其是关于索引这一块,我也是花费大量时间去学习,对于了解索引原理对于后续理解查询计划和性能调优有很大的帮助,而我们只是一些内容进行概括和总结,这一节我们开始正式步入学习SQL中简单的查询语句,简短的内容,深入的理解. 简单查询语句 所有复杂的语句都是由简单的语句组成基本都是由SELECT.FROM.WHERE.GROUP BY.HAVING.ORDER BY等组成,当然还包括一些谓词等等.比如当我们要查询某表中所有数据时我们会像如下进行. SELECT

Oracle之简单查询

目标: 掌握SQL语句的基本语法; 可以使用SQL语句完成简单查询功能; 1.[范例]:查询emp表中的数据; select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ----- ---------- --------- ----- ----------- --------- --------- ------ 7369 SMITH CLERK 7902 1980/12/17 800.00 20 7499 ALLEN SALE

Java连接MySQL数据库实现用户名密码的验证方法 Java语句中sql查询语句&#39;&#39; &quot;&quot;作用

//方法一,可以验证登录,但方法不实用.package com.swift; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; public class Logi

MYSQL语句中SELECT语句及其子句的执行顺序

SELECT语句的执行的逻辑查询处理步骤:(8)SELECT (9)DISTINCT(11)<TOP_specification> <select_list>(1)FROM <left_table>(3) <join_type> JOIN <right_table>(2) ON <join_condition>(4)WHERE <where_condition>(5)GROUP BY <group_by_list&g

python中 try、except、finally 的执行顺序(转)

def test1(): try: print('to do stuff') raise Exception('hehe') print('to return in try') return 'try' except Exception: print('process except') print('to return in except') return 'except' finally: print('to return in finally') return 'finally' test1