这是对SQL语句完整的执行顺序(01)的补充:

数据库是mysql,使用的数据库表名称是my_student.

表的完整数据信息是:

完整语法是:

Select [select选项] 字段列表[字段别名]/* from 数据源 [where 字句] [group by子句 ][having 子句][order by 子句][limit 子句];

①[select选项]:

Select 选项包含:ALL(所有,默认)、distinct(去重)。其中distinct针对的是查询结果的整条记录而言的。

select DISTINCT(sex) from my_student;

select DISTINCT(sex),name from my_student; 和 selectDISTINCT sex,name from my_student;结果是一样的。

②[where 字句]:where是唯一一个从磁盘开始拿数据的时候就开始进行判断的条件,从磁盘取出一条记录,开始进行where判断,判断结果如果成立,那么取出结果保存到内存,否则放弃。

select * from my_student where name = '哈哈1';

③[group by 子句 ]:分组子句,group by子句主要的作用是分组,从而进行统计操作,而不是为了展示(展示的时候,只会展示分组记录的第一条记录),分组时,一般会结合使用count()、max()、min()、avg()、sum()函数。

A、单子段分组:

selectc_id,count(*),max(height),min(height),avg(height),sum(age) from my_studentgroup by c_id ;

sql语句的意思是:my_student表以c_id进行分组,然后显示分组后的每组的c_id名称、每组的总数、每组的最高、最低、平均身高和每组的年龄总和。

B、多字段分组

select c_id,sex,count(*),max(height),min(height),avg(height),sum(age)from my_student group by c_id ,sex;

表示的含义是,对整个表先按照c_id进行分组,然后在此分组的基础之上,然后每组再按照sex,进行分组。

C、多字段分组(加上显示每组的某一字段的所有数据)

selectc_id,sex,count(*),max(height),min(height),avg(height),sum(age) ,GROUP_CONCAT(name)from my_student group by c_id ,sex;

④[having 子句]:having的作用类同where,而且having能做几乎所有where能做的事情,而where却不能做having能做的很多事情,主要是因为

where只能在磁盘提取数据的时候对数据进行操作;而在内存中对数据进行group by分组之后的结果进行处理,只能通过having。

selectc_id,count(*),max(height),min(height),avg(height),sum(age) from my_studentgroup by c_id having COUNT(*) >= 3;

⑤[order by 子句]:对数据进行排序操作,根据某个字段进行升序或者降序排序。(进行多字段排序的时候,先根据某一字段进行潘旭,然后在排序好的内部再按照某字段进行排序)

A、单个字段的排序:

select * from my_student order by c_id;

B、多字段排序

select * from my_student order by c_id,sex;

⑥[limit 子句]:限制结果的数量。Limit 偏移量  记录条数;

A、select * frommy_student limit 2;

B、select * frommy_student limit 0,3;

转自:https://blog.csdn.net/u011991249/article/details/64519945

SQL语句完整的执行顺序(02)的更多相关文章

  1. SQL语句完整的执行顺序(01)

    一.sql语句的执行步骤:  1)语法分析,分析语句的语法是否符合规范,衡量语句中各表达式的意义.  2) 语义分析,检查语句中涉及的所有数据库对象是否存在,且用户有相应的权限.  3)视图转换,将涉 ...

  2. SQL Select语句完整的执行顺序(转)

    SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...

  3. 【SQL】SQL 中Select语句完整的执行顺序

    SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...

  4. 170607、SQL Select语句完整的执行顺序

    SQL Select语句完整的执行顺序: 1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函 ...

  5. Oracle中Select语句完整的执行顺序

    oracle Select语句完整的执行顺序: .from 子句组装来自不同数据源的数据: .where 子句基于指定的条件对记录行进行筛选: .group by子句将数据划分为多个分组: .使用聚集 ...

  6. Select语句完整的执行顺序

    Select语句完整的执行顺序:1.from子句组装来自不同数据源的数据:2.where子句基于指定的条件对记录行进行筛选:3.group by子句将数据划分为多个分组:4.使用聚集函数进行计算:5. ...

  7. 单表:SQL语句关键字的执行顺序

    表和数据: -- 创建表 CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `age` ) ', ` ...

  8. SqlServer中Sql语句的逻辑执行顺序

    准备数据 Sql脚本如下,两张表,一张客户表Customers只包含customerid和city字段,一张订单表Orders包含orderid和customerid(关联Customers的cust ...

  9. sql 语句的先后执行顺序

    例:查询语句中select from where group by having order by的执行顺序 一般以为会按照逻辑思维执行,为: 查询中用到的关键词主要包含六个,并且他们的顺序依次为  ...

随机推荐

  1. Azure DevOps to Azure AppServices

    Azure DevOps is a complete solution for software development, from planning to building to deploymen ...

  2. eclipse mars2在高分辨率下(macpro)图标极小的问题

    Mac Pro装WIN10和Surface Pro同样有效 安装了Eclipse并且打开之后,发现图标显示极其细小,肉眼几乎无法看清了.这是由于Eclipse对高分屏没有作适配导致的. Windows ...

  3. poj 3694(割边+lca)

    题意:给你一个无向图,可能有重边,有q次询问,问你每次我添加一条边,添加后这个图还有多少个桥 解题思路:首先先把所有没有割边的点对缩成一个联通块,无向图一般并查集判环,然后就得到一个割边树,给你一条新 ...

  4. ILRuntime_NewbieGuide—进阶

    进阶篇其实要求你应该拥有一个云服务器才有意思,但你用本地电脑也是一样的道理,只是没有这么有趣了. 笔者大一的时候,腾讯云搞活动,学生认证可以抢到1元的云主机,配置很低,但是平时练练手还是可以的,现在没 ...

  5. django xadmin(1)

    filter_horizontal 从‘多选框’的形式改变为‘过滤器’的方式,水平排列过滤器,必须是一个 ManyToManyField类型,且不能用于 ForeignKey字段,默认地,管理工具使用 ...

  6. Shell中echo改变输出显示样式

    普通输出: echo '------------------------------------------------------' 输出的是系统默认的颜色和字体: 加上一些样式,看效果: echo ...

  7. Nginx-keepalived+Nginx实现高可用集群

    Keepalived+Nginx 高可用集群(主从模式) 集群架构图: 说明:Keepalived机器同样是nginx负载均衡器. 1)实验环境准备(此处都是使用的centos7系统) # cat / ...

  8. 利用反射将IDataReader读取到实体类中效率低下的解决办法

    最开始使用反射一个类型的各个属性,对气进行赋值的代码如下: public static List<T> ToList<T>(IDataReader reader) { //实例 ...

  9. 自搭的一个系统框架,使用Spring boot+Vue+Element

    基于:jdk1.8.spring boot2.1.3.vue-cli3.4.1 特性:    ~ 数据库访问使用spring data jpa+alibaba druid    ~ 前后端数据交互使用 ...

  10. setTimeout循环传参数几种方式

    for(var i=0;i<5;i++){ setTimeout(function(){ console.log(`错误 ${i}`); },0) } 这种错误的,参数不会变! 以下几种方式正确 ...