mysql limit 运算符_9.mysql高级查询 select where 运算符 group having orderby limit

  • Post author:
  • Post category:mysql

一个查询语句的完整形式如下所示:

可见,select语句还是比较复杂的——其实是mysql中最复杂的语句。

1,以上中括号中的任一项都可以省略,但如果不省略,就应该按该顺序出现。

2,通常,from后的子句都需要有from子句, having子句需要有group by子句。

3,这些子句的“执行顺序”,也是按此顺序进行的。

format,png

9.2.查询结果数据及select选项

9.2.1.查询“固定数据”

9.2.2.select中可以进行计算

9.2.3.查询出的数据字段可以使用别名

9.2.4.使用distinct消除查询结果重复行

重复行的含义:

两行(或两行以上)的数据完全一样。

9.3.where子句

1,查询条件,类似php语言中的判断条件,也就是说,where相当于if。

2,查询条件的作用是:针对from子句的表“进行一行一行筛选”,以筛选出符合条件的行。

查询条件中,可以使用很多的运算符,包括:算术运算符,比较运算符,逻辑运算符,等等。

9.4.mysql运算符

9.4.1.算术运算符

9.4.2.比较运算符:

9.4.3.逻辑运算符:

9.4.4.其他特殊运算符

like模糊查找运算符:

用于判断某个字符型字段的值是否包含给定的字符。

其中:%表示“任意个数的任意字符”。

还可以使用“_”(下杠),表示“任意一个字符”。

where name like ‘罗%’ //找出name的第一个字为“罗”的所有

//可以找出:”罗成”,“罗永浩”,“罗纳尔多”,“罗”

//但找不出“c罗纳尔多”这个

where name like ‘罗_’ //可以找出:”罗成”, “罗兰”,

//但找不出“c罗”,“罗永浩”

极端情况:

where name like “罗” //其实它只是相当于: name = ‘罗’

如果不使用“%”或“_”,则 like 相当于等于(=)。比如:

xxx字段 like ‘关键字’

相当于:

xxx字段 = ‘关键字’

between范围限定运算符:

用于判断某个字段的值是否在给定的两个数据范围之间。

其含义相当于: xxx字段 >= 值1 and xxx字段 <= 值2

in运算符:

用于判断某个字段的值是否在给出的若干个“可选值”范围。

其含义是:该字段的值等于所列出的任意一个值,就算满足条件,比如:

籍贯 in (‘北京’,‘山东’,‘河北’, ‘江西’); //则某人籍贯为上述4个之一就ok。

is运算符:

用于判断一个字段中的是“是否存在”(即有没有),只有两个写法,如下所示:

9.5.group by子句

表示对所取得的数据,以所给定的字段来进行分组。

最后的结果就是将数据分成了若干组,每组作为一个“整体”成为一行数据。

特别注意:

分组之后,只有“组信息”——一行就是一组,不能出现描述单独产品的描述

format,png

对其按“品牌”进行分组:

format,png

结果为

format,png

特别注意:

分组查询的结果,要理解为,将“若干行原始数据”,分成了若干组,结果是每组为一行数据。

即:一行数据就代表“一组”这个集合概念,而不再是单个概念。

因此:一行中出现的信息,应该是“组的信息”,而不是“个体信息”。

于是,对于分组查询(group by),select中出现的信息,通常就只有两种情况的信息了:

1,分组本身的字段信息,用什么字段分组,可以出现这个字段;

2,一组的综合统计信息(主要是数字信息),主要包括:

(1)计数值: count(字段), 表示求出一组中原始数据的行数;

(2)较大值: max(字段),表示求出一组中该字段的较大值;

(3)最小值: min(字段),表示求出一组中该字段的最小值;

(4)平均值: avg(字段),表示求出一组中该字段的平均值;

(5)总和值: sum(字段),表示求出一组中该字段的累加和;

以上5个函数,也称为“聚合函数”!

多条件分组:

将product表中的所有商品以品牌和产地进行分组,并求出每一组的数量

9.6.having子句

having的含义跟where的含义一样,但having是只用于对group by分组的结果进行的条件筛选。

即:having其实是相当于分组之后“有若干行数据”,然后对这些行再筛选。

有group by才能用having

format,png

format,png

9.7.order by子句

对前面所取得的数据按给定的字段进行排序。

排序方式有: 正序asc, 倒序desc,如果省略不写,就是asc

format,png

format,png

9.8.limit 子句

1,limit表示对前面所取得的数据再进行数量上的筛选:取得从某行开始的多少行。

2,行号就是前面所取得数据的“自然顺序号”,从0开始算起——注意不是id,或任何其他实际数据。

3,起始行号可以省略,此时limit后只用一个数字,表示从第0行开始取出多少行。

limit子句通常用在“翻页”功能上,用于找出“第n页”的数据,其公式为:

limit (n – 1) * pageSize, pageSize; 其中pageSize表示每页显示的条数。


版权声明:本文为weixin_34966374原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。