sql 执行顺序

一、group by 字句也和where条件语句结合在一起使用。当结合在一起时,where在前,group by 在后。即先对select xx from xx的记录集合用where进行筛选,然后再使用group by 对筛选后的结果进行分组 使用having字句对分组后的结果进行筛选。

二、需要注意having和where的用法区别:

1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。

   2.where肯定在group by 之前。

   3.where后的条件表达式里不允许使用聚合函数,而having可以。

三、当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:

from–where–group by–having–select–order by,

from:需要从哪个数据表检索数据

where:过滤表中数据的条件

group by:如何将上面过滤出的数据分组

having:对上面已经分组的数据进行过滤的条件

select:查看结果集中的哪个列,或列的计算结果

order by :按照什么样的顺序来查看返回的数据

四、from 子句–执行顺序为从后往前、从右到左

表名(最后面的那个表名为驱动表,执行顺序为从后往前, 所以数据量较少的表尽量放后)

oracle 的解析器按照从右到左的顺序处理,FROM 子句中的表名,FROM 子句中写在最后的表(基础表 driving table)将被最先处理,即最后的表为驱动表,在FROM 子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3 个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指被其他表所引用的表。

sql 的四种语言

1、DDL(data definition language)

DDL 或数据定义语言实际上由可用于定义数据库架构的 SQL 命令组成。 它只是处理数据库模式的描述,用于创建和修改数据库中数据库对象的结构。DDL 是一组 SQL 命令,用于创建、修改和删除数据库结构而不是数据。 一般用户通常不使用这些命令,他们应该通过应用程序访问数据库。

DDL 命令列表:

  • CREATE :此命令用于创建数据库或其对象(如表、索引、函数、视图、存储过程和触发器)。
  • DROP :此命令用于从数据库中删除对象。
  • ALTER : 这用于更改数据库的结构。
  • TRUNCATE : 这用于从表中删除所有记录,包括删除为记录分配的所有空间。
  • COMMENT :这用于向数据字典添加注释。
  • RENAME : 这用于重命名数据库中存在的对象。

2、DQL(data query language)

DQL 语句用于对模式对象内的数据执行查询。 DQL 命令的目的是根据传递给它的查询获取一些模式关系。 我们可以将 DQL 定义如下,它是 SQL 语句的一个组件,它允许从数据库中获取数据并对其施加顺序。 它包括 SELECT 语句。 此命令允许从数据库中获取数据以对其执行操作。 当对一个或多个表触发 SELECT 时,结果被编译到另一个临时表中,该表显示或可能由程序即前端接收。

DQL 列表:

  • SELECT : 用于从数据库中检索数据。

3、DML(data manipulate language)

处理数据库中数据操作的 SQL 命令属于 DML 或数据操作语言,这包括大多数 SQL 语句。 它是控制对数据和数据库的访问的 SQL 语句的组件。 基本上,DCL 语句与 DML 语句组合在一起。

DML 命令列表:

  • INSERT :用于向表中插入数据。
  • UPDATE : 它用于更新表中的现有数据。
  • DELETE :用于从数据库表中删除记录。
  • LOCK: 表控制并发。
  • CALL: 调用 PL/SQL 或 JAVA 子程序。
  • EXPLAIN PLAN: 它描述了数据的访问路径。

4、DCL(data Control language)

DCL 包括 GRANT 和 REVOKE 等命令,主要处理数据库系统的权限、权限和其他控制。

DCL 命令列表:

  • GRANT: 此命令 授予用户对数据库的访问权限。
  • REVOKE: 该命令撤销使用 GRANT 命令赋予的用户访问权限。

尽管许多资源声称存在另一类 SQL 子句 TCL – 事务控制语言。 所以我们也会详细了解TCL。 TCL 命令处理 数据库内的事务 。

5、TCL 命令列表

  • COMMIT : 提交事务。
  • ROLLBACK : 在发生任何错误时回滚事务。
  • SAVEPOINT : 在事务中设置保存点。
  • SET TRANSACTION: 指定交易的特征。