Order by子句
形式:
order by 排序字段1 [排序方式], 排序字段2 [排序方式], .....
说明:
对前面取得的数据(含from子句,where子句,group子句,having子句的所有结果)来指定按某个字段的大小进行排列(排序),排序只有2种方式:
正序: ASC(默认值),可以省略
倒序: DESC
如果指定多个字段排序(虽然不常见),则其含义是,在前一个字段排序中相同的那些数据里,再按后一字段的大小进行指定的排序。
limit子句
形式:
limit [起始行号start], 要取出的行数num
说明:
表示将前面取得的数据并前面排好之后(如果有),对之指定取得“局部连续的若干条”数据。
起始行号start:第一行的行号为0, 可以省略,则为默认行号(0)。
要取得的行数:如果结果集中从指定的行号开始到最后没有这么多行,则就只取到最后。
此子句非常有用——主要用于网页上最常见的一个需求(现象):分页。
分页原理:
分页的前提:人为指定每页显示的条数,$pageSize = 3;
显示(取得)第1页数据:select * from 表名 limit 0, $pageSize;
显示(取得)第2页数据:select * from 表名 limit 3, $pageSize;
显示(取得)第3页数据:select * from 表名 limit 6, $pageSize;
..................................................
$n:当前页码 $pageSize:每页显示多少条
显示(取得)第$n页数据:select * from 表名 limit ($n-1)*$pageSize, $pageSize;
group by 分组子句
形式:
group by 字段1 排序方式1,字段2 排序方式2, .....
通常都只进行一个字段的分组。
含义:
什么叫分组?就是将数据以某个字段的值为“依据”,分到不同的“组别”里。
分组的结果通常:
1,数据结果只能是“组”——没有数据本身的个体
2,数据结果就可能“丢失”很多特性,比如没有性别,身高,姓名,等等。
3,实际上,结果中通常只剩下“组”作为整体的信息:
首先是该组的本身依据值,
另外,这几个可能的值:组内成员的个数,组内某些字段的最大值,最小值,平均值,总和值。
其他字段,通常就不能用了。
4,如果是2个字段或以上分组,则其实是相当于对前一分组的组内,再进行后一依据的分组。
上述说明的结果,其实是反映在select语句中,就是select的“取出项”(输出项)就基本只剩下以上信息了
在分组查询中,基本都依赖于一下几个函数(聚合函数,统计函数):
count(*): 统计一组中的数量,通常用“*”做参数
max(字段名):获取该字段中在该组中的最大值。
min(字段名):获取该字段中在该组中的最小值。
sum(字段名):获取该字段中在该组中的总和。
avg(字段名):获取该字段中在该组中的平均值。
group_concat(字段名):获取该分组内的这个字段所有信息,每条逗号分隔
having子句
having子句其实概念跟where子句完全一样:
where是针对表的字段的值进行“条件判断”
having是只针对group by之后的“组”数据进行条件判断,即
其不能使用:字段名>10
但可以使用:count(字段名)>10, 或 max(price) > 2000, 但如果字段是分组依据,也可以。
当然,通常也可以使用select中的有效的字段别名,比如:
select count(*) as f1 , max(f1) as f2 from tab1 group by f3 having f1 > 5 and f2 < 1000;
连接查询:字段的扩展
两张表字段的集合
Exp:select * from teacher join course on teacher.tno=course.tno
联合查询:数据的扩展
Exp:Select sname,ssex from student
Union
Select tname,tsex from teacher
子查询:把一个查询的结果当做另一个查询的条件
exp:SELECT sno,cno FROM score WHERE degree=(SELECT degree FROM score ORDER BY degree DESC LIMIT 1);
视图
单词:view
什么是视图:
视图可以看作是一个“临时存储的数据所构成的表”(非真实表),其实本质上只是一个select语句。只是将该select语句(通常比较复杂)进行一个“包装”,并设定了一个名字,其后就可以通过该名字并把该名字当作一个表来使用。
如果一个select语句比较复杂,又在多个页面需要使用它,则可以将它做成一个视图,方便使用。
又如果,某个数据表中的某些字段不想给别人看(不同公司之间的数据业务交换的时候),但另一个又需要给人看,此时也可以使用视图。
视图创建形式:
create view 视图名 [(列名1,列名2,...)] as 一条复杂select语句;
可以将select语句所取得的列重新命名,但也可以不重新命名,则使用select语句中的给定列名。
视图的使用
其实就是当作一个查询表来用(通常只用于select)
select * from 视图名 where 条件 order by .....。
修改视图:
alter view 视图名 [(列名1,列名2,...)] as select语句;
删除视图:
drop view [if exists] 视图名;
来源:https://www.cnblogs.com/RighTgraM/p/10727450.html