1.查询中用到的关键词主要包含六个,并且他们的顺序依次为

select--from--where--group by--having--order by

其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序

与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行:

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

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

where:过滤表中数据的条件

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

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

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

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

2.from后面的表关联,是自右向左解析的

而where条件的解析顺序是自下而上的。

where子句--执行顺序为自下而上、从右到左

ORACLE 采用自下而上从右到左的顺序解析Where 子句,根据这个原理,表之间的连接必须写在其他Where 条件之前, 可以过滤掉最大数量记录的条件必须写在Where 子句的末尾。

也就是说,在写SQL文的时候,尽量把数据量大的表放在最右边来进行关联,

而把能筛选出大量数据的条件放在where语句的最下面。

SQL Select语句完整的执行顺序【从DBMS(数据库管理系统)使用者角度】:

1、from子句组装来自不同数据源的数据;

2、where子句基于指定的条件对记录行进行筛选;

3、group by子句将数据划分为多个分组;

4、使用聚集函数进行计算;

5、使用having子句筛选分组;

6、计算所有的表达式;

7、使用order by对结果集进行排序。

3.select子句--少用*号,尽量取字段名称。

ORACLE 在解析的过程中, 会将依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 使用列名意味着将减少消耗时间。

sql 语句用大写的;因为 oracle 总是先解析 sql 语句,把小写的字母转换成大写的再执行

4.group by--执行顺序从左往右分组

提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉。即在GROUP BY前使用WHERE来过虑,而尽量避免GROUP BY后再HAVING过滤。

having 子句----很耗资源,尽量少用

避免使用HAVING 子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作。

5.where 也应该比having 快点的,因为它过滤数据后才进行sum,在两个表联接时才用on 的,所以在一个表的时候,就剩下where 跟having比较了。

在这单表查询统计的情况下,如果要过滤的条件没有涉及到要计算字段,那它们的结果是一样的,只是where 可以使用rushmore 技术,而having 就不能,在速度上后者要慢。

如果要涉及到计算的字段,就表示在没计算之前,这个字段的值是不确定的,where 的作用时间是在计算之前就完成的,而having 就是在计算后才起作用的,所以在这种情况下,两者的结果会不同。

在多表联接查询时,on 比where 更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where 进行过滤,然后再计算,计算完后再由having 进行过滤。

由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里。

mysql查询关键字_MySQL查询关键词相关推荐

  1. mysql复杂连接查询语句_MySQL查询语句之复杂查询

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  2. mysql查询过程从客户端发送查询请求_MySQL查询过程和高级查询

    最近有个需求,要修改现有存储结构,涉及查询条件和查询效率的考量,看了几篇索引和HBase相关的文章,回忆了相关知识,结合项目需求,说说自己的理解和总结. 总体目录如下,上篇介绍了前3小节,分析了索引为 ...

  3. mysql 查询语句_MySQL查询语句之复杂查询

    MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.在MySQL中经常会有很多复杂的查询,为了节约大家的时间,小编总 ...

  4. mysql 主键查询性能_MySQL查询性能优化(精)

    MySQL查询性能优化 MySQL查询性能的优化涉及多个方面,其中包括库表结构.建立合理的索引.设计合理的查询.库表结构包括如何设计表之间的关联.表字段的数据类型等.这需要依据具体的场景进行设计.如下 ...

  5. mysql 严格区分大小写_Mysql查询英文如何严格区分大小写?

    1. 前提: 在Mysql数据库中进行查询时,希望英文严格区分大小写.默认情况下是不区分大小写的. 2. 演示如下: 在数据库表emp中,job字段中存储的值有'Engineer',现在的情况是,下面 ...

  6. mysql语句去重查询总数_mysql查询语句

    2.查询指定列 select 列名,列名 from 表名 例:select code,name from test 3.修改结果集的列名 as select 列名 as '显示的字' from 表名 ...

  7. mysql数据库查询缓存_MySQL查询缓存与数据库管理

    MySQL查询缓存与数据库管理 上一篇 / 下一篇  2010-01-25 21:51:07 / 个人分类:MYSQL/Cache MySQL查询缓存 注意:查询缓存绝不返回过期数据. 如果一个表发生 ...

  8. mysql 性能查看_MySQL查询性能问题排查

    Mysql数据库的性能问题排查是十分复杂的,具体方法视场景而定,这里只做大致思路分析. 1. 整体考虑导致查询性能低下的各种因素 导致SQL查询变慢的原因是多元化的,在遇到问题时首先要有一个全方位的思 ...

  9. mysql 子表 关联查询语句_mysql查询语句 和 多表关联查询 以及 子查询

    1.查询一张表: select * from 表名: 2.查询指定字段:select 字段1,字段2,字段3-.from 表名: 3.where条件查询:select 字段1,字段2,字段3 from ...

最新文章

  1. 长假后第一天不想工作,这病咋治?
  2. Python3字符串split和join代码示例
  3. 【Linux】一步一步学Linux——apt-get命令(278)
  4. ant centos环境下 编译没有将配置文件加载_你可能忽略的macOS下brew安装nginx细节解读,干货
  5. jsr133-第一二章
  6. python求导函数的值_python怎么实现函数求导
  7. React Native项目自动化打包发布
  8. 机器学习之Stacking原理与实战
  9. Xendesktop 5.0与view 4.5对比的看法
  10. 三星linux打印机驱动官网下载,三星SL-C515驱动
  11. 取色器实战(Qt含源码)
  12. 树莓派用root登陆_树莓派开启root用户权限
  13. 单元测试 0%-40%+经验
  14. yum一次性下载安装包及其依赖包
  15. json 的几种格式
  16. 新型压网技术—金刚网
  17. cmd 查询bios序列号_取计算机特征码(网卡MAC、硬盘序列号、CPU ID、BIOS编号)
  18. 矿产资源利用现状调查成果与矿产资源储量库衔接软件
  19. 机器学习01:入门案例-文本特征抽取
  20. iOS项目中一定会用到的两种常用的弹框 从底部弹出 、中间弹出 Swift代码

热门文章

  1. NPL处理之Word2Vec-task01
  2. 华为WATCH GT 3和其他品牌手表比怎么样
  3. python 读取gmail 邮箱消息
  4. nodemcu wifi连接电脑,读取红外感应数据
  5. 【英雄哪里出来】一文带你吃透算法
  6. JAVA基础九 数字与字符串
  7. 三星、华为、索尼、联发科等公司已参与 谷歌的 Fuchsia 项目
  8. 网上零售年会召开 微商未来引发热议
  9. Android 实现防抖动(防快速点击)的最优雅做法
  10. c语言中的牛顿割线法