黑马程序员mysql高级_[杭州校区][技术笔记] MySql高级查询

本帖最后由 小江哥 于 2019-12-24 15:16 编辑

高级查询

高级查询的格式:

select ... 聚合函数 from 表名

where ...

group by ...

having ...

order by ...

limit ...order by 给查询结果排序

语法格式:

... order by 字段名 ASC/DESC;

ASC:默认,升序,DESC:降序

举个栗子:select name from stuinfo order by id desc;limit 显示查询记录的条数

limit放在查询语句的最后,后边不再放其他的语句。

用法:

limit n; —–> 显示 n 条记录limit m, n; —–> 从第(m+1)条记录开始,显示 n 条记录

limit 分页

要求每页显示 5 条记录,显示第 4 页的内容

第1页:limit (1-1)*5,5;    # 1,2,3,4,5

第2页:limit (2-1)*5,5;    # 6,7,8,9,10

第3页:limit (3-1)*5,5;    # 11,12,13,14,15

...

第m页:limit (m-1)*n,n;

由上可知:第 4 页是:limit 15,5;聚合函数avg(字段名):求该字段的平均值

sum(字段名):求和

max(字段名):求最大值

min(字段名):求最小值

count(字段名):统计该字段的记录的条数

举个栗子:统计id、name两个字段分别有多少条记录

select count(id),count(name) from stuinfo;group by 给查询的结果分组

注意:select之后的字段名如果没有在group by之后出现,则必须要对该字段进行聚合和处理(即聚合函数)

举个栗子:查询表中有哪些国家

select country from people

group by country;

having语句

作用:对查询的结果进一步筛选

使用注意:

having语句通常和group by语句联合使用,过滤由group by语句返回的记录集决定

where只能操作表中实际存在的字段,having语句可操作由聚合函数的显示列

举个栗子:找出平均攻击力 大于105的国家的前两名,显示国家名和平均攻击力。

select country,avg(gongjili) as average from sanguo

group by country

having average>105

order by average desc

limit 2;查询表记录时可以做数学运算

运算符:+、-、*、/、%

举个栗子:查询时显示所有英雄攻击力翻倍

select id, name, gongjili*2 as newgjl from sanguo;嵌套查询

嵌套查询也叫子查询,是把内层的查询结果作为外层的查询条件

语法格式

select 字段名列表 from 表名 where 字段名 运算符

(select 字段名 from 表名 where 条件)

注意:外层的where的条件必须和内层的select查询的字段名一样,个数也一样

如:把攻击值小于平均攻击值的名字和攻击值显示出来(sanguo表)

我们可以分开来查,然后合并成一条语句

分析:查名字和攻击值,条件是攻击值小于平均攻击值;

第一步:先求平均值

select avg(gongjizhi) from sanguo;

假设我们用avg记录查询出来的平均值

第二步:查找攻击值小于平均值的名字和攻击值

select name, gongjizhi from sanguo where gongjizhi

第三步:将上边两条合并

select name, gongjizhi from sanguo where gongjizhi<

(select avg(gongjizhi) from sanguo);多表查询

语法格式:

select 字段名列表 from 表1,表2 where 条件;

笛卡尔积的匹配规则(面试中常问)记录多的表的每一条记录,去匹配另一张表的所有记录;

两张表的记录条数相同时,则后表的每一条记录去匹配前表。连接查询内连接 inner join

外连接

左连接 left join

右连接 right join

内连接

语法格式:

select 字段名列表 from 表1 inner join 表2 on 表1.字段=表2.字段;

注意:inner 可以省略,on后边的条件在两个表中必须都存在,是连接两个表的标志。

外连接之左连接

left join

以左表为基准,匹配右表的所有内容,不够的用显示NULL

外连接之右连接

right join

以右表为基准,去匹配左表的内容,不够的也是显示NULL

---------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL高级 MySQL高级_思维导图.pdf 63.MySQL高级_主从复制.avi 62.MySQL高级_行锁总结.avi 61.MySQL高级_如何锁定一行.avi 60.MySQL高级_间隙锁危害.avi 59.MySQL高级_索引失效行锁变表锁.avi 58.MySQL高级_行锁演示答疑补充.avi 57.MySQL高级_行锁案例讲解.avi 56.MySQL高级_行锁理论.avi 55.MySQL高级_读锁案例讲解2.avi 54.MySQL高级_读锁案例讲解.avi 53.MySQL高级_数据库锁理论概述.avi 52.MySQL高级_全局查询日志.avi 51.MySQL高级_用Show Profile进行sql分析.avi 50.MySQL高级_批量插入数据脚本.avi 49.MySQL高级_慢查询日志.avi 48.MySQL高级_为排序使用索引OrderBy优化.avi 47.MySQL高级_in和exists.avi 46.MySQL高级_小表驱动大表.avi 45.MySQL高级_索引优化答疑补充和总结口诀.avi 44.MySQL高级_索引面试题分析.avi 43.MySQL高级_索引优化10.avi 42.MySQL高级_索引优化9.avi 41.MySQL高级_索引优化8.avi 40.MySQL高级_索引优化7.avi 39.MySQL高级_索引优化6.avi 38.MySQL高级_索引优化5.avi 37.MySQL高级_索引优化4.avi 36.MySQL高级_索引优化3.avi 35.MySQL高级_索引优化2.avi 34.MySQL高级_索引优化1.avi 33.MySQL高级_索引三表优化案例.avi 32.MySQL高级_索引两表优化案例.avi 31.MySQL高级_索引单表优化案例.avi 30.MySQL高级_explain之热身Case.avi 29.MySQL高级_explain之Extra介绍.avi 28.MySQL高级_explain之rows介绍.avi 27.MySQL高级_explain之ref介绍.avi 26.MySQL高级_explain之key_len介绍.avi 25.MySQL高级_explain之possible_keys和key介绍.avi 24.MySQL高级_explain之type介绍.avi 23.MySQL高级_explain之select_type和table介绍.avi 22.MySQL高级_explain之id介绍.avi 21.MySQL高级_explain使用简介.avi 20.MySQL高级_性能分析前提知识.avi 19.MySQL高级_哪些情况不适合建索引.avi 18.MySQL高级_哪些情况适合建索引.avi 17.MySQL高级_索引结构与检索原理.avi 16.MySQL高级_索引分类和建索引命令语句.avi 15.MySQL高级_索引优势劣势.avi 14.MySQL高级_索引是什么.avi 13.MySQL高级_七种JOIN的SQL编写.avi 12.MySQL高级_七种JOIN理论.avi 11.MySQL高级_SQL执行加载顺序.avi 10.MySQL高级_SQL性能下降原因.avi 09.MySQL高级_存储引擎简介.avi 08.MySQL高级_MySQL逻辑架构简介.avi 07.MySQL高级_MySQL配置文件.avi 06.MySQL高级_修改字符集.avi 05.MySQL高级_安装位置.avi 04.MySQL高级_ROOT密码设置和开机自启动.avi 03.MySQL高级__RPM安装.avi 02.MySQL高级_MySQL简介.avi 01.MySQL高级_课程简介.avi

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值