上一篇Mysql学习第四天,我们已经完成基本查询和条件查询这两个部分。今天我们就来讲一讲排序查询和统计查询。
首先来讲讲排序查询,学完之后好几天再来写这篇文章,好多内容都忘记了,要回头再看一看。
排序查询有两种排序的方式,分别是降序排序和升序排序。对于排序来说,最重要的关键字是order by,降序要附加的关键字是desc,升序要附加的关键字是asc。
我们首先来讲讲如何实现升序排序,以及如何使用。
升序排序的语句是:
select *(或任意字段) from 表名 条件 order by 字段 asc;
举例:
select * from students where age between 18 and 34 oder by age asc;
tips:升序时的asc是可以省略的,但是不建议省略,因为不省略更有助于语句的理解。升序的语序是从小到大排列。
说完升序说降序。
降序排序的语句是:
select * from 表名 条件 order by 字段 desc ;
举例:
select * from students where age between 18 and 34 and gender = 2 order by height desc;
那么,如果需要对一个表中的多个字段进行排序应该怎么办呢?
首先,我们要确定进行排序的主字段,然后再以此进行次字段,次次字段等的确认,这样,就不会产生排序时的混乱,然后确认各个字段分别是按什么顺序排序(升序还是降序),最后,把他们按照顺序依次写入order by后的语句中。
多字段进行排序的语句:
select *(或任意字段) from 表名 条件 order by 主字段 主字段顺序,次字段 次字段顺序,.......;
举例:
select * from students where age between 18 and 35 order by height desc,age asc,id desc;
排序查询了解之后,我们来看看统计查询。
统计查询主要查询什么呢?统计查询主要查询总数,最大值,最小值,求和值,平均值等内容,其主要的关键字有count,max,min,sum,average等。
1.统计数量
统计数量我们主要使用关键字count来进行。
其中count(*) 是 以行为单位来进行个数统计的,什么意思呢?按我目前的理解就是它会遍历这个表的每一行,如果行内有内容,就计数。如果行内没有内容,就不计数。
关于count(*) 的查询语句如下:
select count(*) from 表名;
举例:
select count(*) from students;
而count(字段名)则是先找到字段名对应的行,然后再对该行的此字段是否为空来进行统计,相对count(※)来说,效率要略低一些。(count(*)不需进行空判断)
关于count(字段)的查询语句如下:
select count(字段) from 表名;
举例:
select count(height)from students;
查询最大值的关键字是max,主要用于查询表格中的最大值。
最大值的查询语句是:
select max(字段名) from 表名;
举例:
select max(height) from students;
最小值的查询语句是:
select min(字段名)from 表名;
举例:
select min(age) from students;
额外插入知识点:子查询
子查询即是嵌套查询。什么是嵌套查询呢?嵌套查询就是在一个查询语句里再嵌套其他的查询语句。为什么要嵌套呢?因为希望在一个语句里就实现多个查询的功能。
嵌套查询举例:
select name from students where height = (select max(height) from students);
讲完了插入的知识点后,我们来看看求和查询。求和查询的关键字是sum,主要用于对某一字段进行求和。
求和查询查询语句:
select sum(字段名)from 表名;
举例:
select sum(height)from students;
查完求和我们来查查求平均值。怎么查呢?查平均值最重要的关键字是avg,主要作用是对某一字段进行取平均值。
平均值查询语句:
select avg(字段名) from 表名;
举例:
select avg(age)from students;
今天查询语句的内容就给大家先说到这,下面再给大家介绍一个非常有用的小知识,如何查询函数的作用。
怎么查询呢?且听我慢慢道来。
首先,第一步,查询一级所有函数的一级目录。所用语句:
? functions
在一级目录下会有以下语句:
You asked for help about help category: "Functions" For more information, type 'help <item>', where <item> is one of the following categories: Bit Functions Comparison operators Control flow functions Date and Time Functions Encryption Functions Information Functions Logical operators Miscellaneous Functions Numeric Functions String Functions
这其中最常用的是numeric functions 和 string functions 也就是数字和字符的函数。
在找到一级目录之后,再如何查询呢?答案是? 后跟想要查询的一级目录里的函数文件包名,如? numeric functions;
当输入想要查询的一级目录里的函数文件包名,如? numeric functions;后,会出现具体的函数如:
You asked for help about help category: "Numeric Functions" For more information, type 'help <item>', where <item> is one of the following topics: % * +
BINARY
UNARY / ABS ACOS ASIN ATAN ATAN2 CEIL CEILING CONV COS COT CRC32 DEGREES DIV EXP FLOOR LN LOG LOG10 LOG2 MOD PI POW POWER RADIANS RAND ROUND SIGN SIN SQRT TAN TRUNCATE
这里出现的就是具体的函数名称了。再用? 后跟此处的具体名称后,就会得到这个函数的具体用法了。
如输入:? floor;
将得到:
Name: 'FLOOR' Description: Syntax: FLOOR(X)
Returns the largest integer value not greater than X.
URL: http://dev.mysql.com/doc/refman/5.7/en/mathematical-functions.html
Examples: mysql> SELECT FLOOR(1.23), FLOOR(-1.23); -> 1, -2
当然,这个是在了解了分类的情况下不记得具体的函数名字,想要了解它的功能的情况下所用的方法,如果知道名字,忘记了用法,可以直接就用? 后接名字。
今天就到这里吧,后天见,应该是后天吧,希望明天能学完视频。