mysql高级查询
一、order by子句
语法:order by 字段1【asc | desc】 ,字段2【asc | desc】...
说明:
order by 是对where子句、group by子句、having子句的结果进行一个显示顺序上的控制
asc (可以不写)升序
desc 降序排序
asc:如:(asc可以忽略不写)
260.png

261.png

desc如:
262.png

263.png
多字段排序:
按照品牌降序,每种品牌价格升序进行排列
264.png

265.png

二、除查找字段外,其余字段不匹配问题
问题:如图所示:除去品牌和价格字段正确外,其余字段匹配不正确问题。
266.png

267.png
解决方法:
因为mysql中,非查找字段,会默认把排在最上面的信息显示出来,所以,应该首先将原表数据排序,先把最大价格一列排在最前面,然后再进行查找最大价格查询。
1、第一步
268.png

269.png
2、第二步
运用子查询进行查找,而且,字查询必须要给他设置一个别名
270.png

271.png

三、limit子句
语法:
limit 【offset,】rows
说明:
limit是对where子句、group by子句 having子句 order by子句得到的结果,进行一个显示行数、或者显示条数的一个限制
offset 偏移量 第1条记录偏移量为0,第2条记录偏移量为1,第3...为2,如果省略表示0
rows 显示的行数

最简单举例:
select * from goods limit 5;

272.png

实例:现实百度一个网页时,会出现页标,同时,每页有限制的多少条才能显示

274.png

数据分页:
分页相关因素:
每一页显示的记录数: rowsPerPage 人为设定的
   curPage 1    2   3   4   5.......

273.png

分页公式:
select from goods limit (curPage-1)rowsPerPage,rowsPerPage;

四、联合查询
将一个表分为两个表或者多个,然后再在每个表中联合查询,会提高效率
语法:
select 语句A union select 语句B
【all | distinct】 union选项
all 表示所有
distinct 表示去重(默认是distinct)
联合查询的两个查询字段数必须一致
例子:
275.png

276.png

277.png
联合查询注意事项
联合查询还可以解决,对同一个表不同部分进行不同操作
如果联合查询中有order by子句,那么必须配合limit使用
例:
学生表如下:
278.png
-- 使s_sex=男的学生按年龄降序,-- 使s_sex=女的学生按年龄升序
279.png

使用联合查询:
错误例子:
280.png

281.png
要想正确使用联合查询,如果有order by必须配合limit使用
282.png

283.png
五、存储引擎
create table 表名(表的定义)【表选项】【表选项】charset 存储字符集 collate 校验集 engine 存储引擎
存储引擎:
汽车的引擎是汽车发动机,而mysql的引擎是用于驱动数据从硬盘进行读取或写的
查看引擎:
show engines;
284.png

常用引擎:
285.png
具体情况,参考百度或者以后会详细学到