之前啊,我们提及到,对于update和delete,若不带where条件,则对所有记录都有效。

一、WHERE条件表达式

  (1)对记录进行过滤,如果没有指定WHERE子句,则显示所有记录。

  (2)在WHERE表达式中,可以使用MYSQL支持的函数或运算符。

  比如update语句和delete语句都可以带有where条件,如果没有指定where子句,将对所有记录有效,比如update语句,如果省略掉了where语句,将更新所有的记录。在where表达式中,还可以使用mysql支持的函数或运算符。比如刚才我们更新id号为偶数的记录时,我们使用了%,他就是典型的取模运算符,函数和运算符我们后面还会给大家做更详细的介绍。

二、GROUP BY

  查询结果分组

[GROUP BY {col_name | position} [ASC | DESC],… ]

  除了可以带where条件对记录进行过滤外,还可以对查询的结果进行分组,也就是用group by关键字,在分组的时候既可以指定列的列名,也可以指定列的位置,在语法结构中我们还可以看到两个关键字,一个是ASC,一个是DESC,ASC表示的是升序,而且是默认的,DESC表示的是降序,如果存在多个分组条件的话,那么多个分组条件之间用逗号分割,下面我们来看一下到底什么是分组?

select   *   from   user;

  我们还以user数据表为例,假设我们按照性别来分组。操作命令及结果如下:

select   sex    from   user  group   by  sex;

  除了可以写字段名字之外,还可以写位置,例如:

select   sex   from   user   group  by  1;

  命令中的1表示的就是select语句当中第一个出现的字段。然后依次来类推,但是建议大家尽量去指定列的名称,

而不要指定字段的位置,因为还需要我们人为的去数一数某个字段对应的位置,相对来说会更麻烦。所以建议大家指定字段的名称。

三、HAVING

  分组条件

[HAVING where_condition]

  在groupby分组的时候,其实还可以带有分组的条件,也就是说我既可以对所有的记录进行分组,也可以对某一部分记录进行分组,下面我们来演示一下,操作命令及结果如下:

select  sex  from  user  group  by  1  having  age>30; 

  我们发现系统提示我们有一个错误,为什么会有这个错误呢,原因在于如果使用having进行分组条件的指定时,一定要保证分组的条件要么为聚合函数,要么条件字段出现在select语句当中,否则系统就会报错。

  下面我们再来做一下修改。操作命令及结果如下:

select   sex,age   from   user  group  by  1  having   age>30;

现在虽然说没有查找到结果,但是至少说我们的语法结构是书写正确的。

  下面我们来使用一个聚合函数。操作命令及结果如下:

select  sex,age   from   user  group  by  1   having    count(id)<=2; 

  当然聚合函数有很多,比如max求最大值,min求最小值,avg求平均值,sum求和等等,因为他们永远只有一个返回结果。

四、ORDER BY

  对查询结果进行排序

[ORDER BY {col_name | expr | position} [ASC | DESC],…]

  除了可以对分组指定条件以外,还可以对分组的结果进行排序,从语法结构莪们可以看出,我们可以对字段,表达式或位置进行排序,和刚才的group by 是一样,ASC是升序,而且是默认的,DESC表示降序,下面我们来做个演示,我们让id字段降序排列。操作命令及结果如下:

select   *  from   user  order   by   id   desc;

  那么可不可以对两个字段同时做排序呢,当然可以,当然他会先看第一个字段能不能排成你想要的结果,如果第一个字段能排成你想要的结果,那么他就会直接忽略掉第二个字段,如果第一个字段不能排成你想要的结果,那么他就会考虑第二个字段,甚至第三、第四个。

  下面我们做一个演示,假设我们先让age字段按升序排列,为了保证有相同的年龄的记录,我们提前再插入一条年龄相同的记录,操作命令及结果如下:

insert    user    values(null,'','','',1);

select   *  from   user  order   by  age;

  假设我们让age相同的字段的id字段按照降序排列,我们就可以这样写,操作命令及结果如下:

select  *   from   user    order   by  age,id    desc;

  我们发现已经变成了我们想要的结果。

WHERE、ORDER BY、GROUP BY、HAVING语句解析(二十八)的更多相关文章

  1. jQuery 源码解析(二十八) 样式操作模块 scrollLeft和scrollTop详解

    scrollLeft和scrollTop用于获取/设置滚动条的,如下: scrollLeft(val) ;读取或设置整个页面的水平滚动条距离 scrollTop(val) ;读取或设置整个页面的垂直滚 ...

  2. 会员卡管理系统技术解析(十八)Timer定时监听

    会员卡管理系统技术解析(十八)Timer定时监听 在web应用中,有时候客户须要一些定时程序.不须要客户自己去操作.而是由应用程序自行触发(代理)运行某些操作. 这个时候监听与定时器的配合使用就基本能 ...

  3. Kafka设计解析(十八)Kafka与Flink集成

    转载自 huxihx,原文链接 Kafka与Flink集成 Apache Flink是新一代的分布式流式数据处理框架,它统一的处理引擎既可以处理批数据(batch data)也可以处理流式数据(str ...

  4. jQuery 源码解析(二十五) DOM操作模块 html和text方法的区别

    html和text都可以获取和修改DOM节点里的内容,方法如下: html(value)     ;获取匹配元素集合中的一个元素的innerHTML内容,或者设置每个元素的innerHTML内容,   ...

  5. jQuery 源码解析(二十二) DOM操作模块 复制元素 详解

    本节说一下DOM操作模块里的复制元素子模块,该模块可以复制一个DOM节点,并且可选择的设置是否复制其数据缓存对象(包含事件信息)和是否深度复制(子孙节点等),API如下: $.clone(elem, ...

  6. Java开发学习(二十八)----拦截器(Interceptor)详细解析

    一.拦截器概念 讲解拦截器的概念之前,我们先看一张图: (1)浏览器发送一个请求会先到Tomcat的web服务器 (2)Tomcat服务器接收到请求以后,会去判断请求的是静态资源还是动态资源 (3)如 ...

  7. SQL语句(二十)—— 数据库安全性

    数据库安全性 1. SQL Server 配置管理器  => 网络配置 MSSQLSERVER 协议,如果应用程序和SQL Server 在同一机器上,仅使用 Shared Memory (共享 ...

  8. SQL语句(二十二)—— 权限授予和回收(作业练习)

    CREATE TABLE course ( Cno ) NOT NULL, Cname ) DEFAULT NULL, Cpno ) DEFAULT NULL, Ccredit smallint DE ...

  9. HAWQ技术解析(十八) —— 问题排查

    (原文地址:http://hawq.incubator.apache.org/docs/userguide/2.1.0.0-incubating/troubleshooting/Troubleshoo ...

随机推荐

  1. Yocto tips (19): Yocto SDK Toolchian的使用

    在使用之前须要先source env,导入各种环境变量(注意将路径变更成你自己的): source ../qt5_sdk/environment-setup-cortexa9hf-vfp-neon-p ...

  2. ECMAScript 6新特性之Proxy

    ECMAScript 6中新增了一个全局构造函数:Proxy.该构造函数能够接收两个參数:一个目标对象.一个处理对象. 代码演示样例: var target = {}; var handler = { ...

  3. dexposed框架Android在线热修复

    移动client应用相对于Webapp的最大一个问题每次出现bug,不能像web一样在server就完毕修复,不须要发版本号.紧急或者有安全漏洞的问题, 假设是Webapp你可能最多花个1,2个小时紧 ...

  4. RSA in .net and dotnet core

    dotnet RSAParameters Struct https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography ...

  5. JAVA设计模式之【桥接模式】

    桥接模式 蜡笔中颜色和型号之间存在耦合 毛笔中,颜色和型号解耦了 如果软件系统中某个类存在两个独立变化的维度,桥接模式可以将两个维度分离出来 角色 抽象类 扩充抽象类 实现类接口 提供基本操作 抽象类 ...

  6. nyoj--514--1的个数(贪心)

     1的个数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 给你两个数a和b,你的任务是计算出1在a和b之间出现的次数,比如说,如果a=1024,b=1032,那么a ...

  7. Sobel算子及C++实现

    Sobel 算子是一个离散的一阶微分算子,用来计算图像灰度函数的近似梯度. 在空间域上Sobel算子很容易实现,执行速度快,对部分噪声具有平滑作用,还能够提供较为精确的边缘方向信息,缺点是边缘定位精度 ...

  8. Git 连接细节

    Git 连接细节 首先创建Git 账号 https://github.com/ 下载Git https://git-scm.com/downloads 新建远程仓库 SSH keys : 打开 Git ...

  9. C#.Net版本自动更新程序及3种策略实现

    C#.Net版本自动更新程序及3种策略实现 C/S程序是基于客户端和服务器的,在客户机编译新版本后将文件发布在更新服务器上,然后建立一个XML文件,该文件列举最新程序文件的版本号及最后修改日期.如程序 ...

  10. 用js将CheckBox的值存入数据库和将数据库字符串的值转为数组选中CheckBox

    Index @{ ViewBag.Title = "测试"; } <script src="~/Scripts/jquery-1.10.2.js"> ...