Mysql高级查询

本文详细介绍了MySQL的高级查询功能,包括ORDER BY用于结果排序,LIMIT用于限制返回记录数,聚合函数如AVG、SUM、MAX、MIN和COUNT,GROUP BY进行数据分组,HAVING对分组结果进行筛选,数学运算在查询中的应用,嵌套查询的使用,以及多表查询和各种连接查询(INNER JOIN, LEFT JOIN, RIGHT JOIN)的概念和用法。" 129947231,18197181,C#实现的高性能IOCP物联网服务器框架,"['服务器开发', '物联网技术', 'C#编程', '数据库集成', '高性能计算']
摘要由CSDN通过智能技术生成

高级查询

高级查询的格式:

select ... 聚合函数 from 表名
where ...
group by ...
having ...
order by ...
limit ...

order by 给查询结果排序

语法格式:

... order by 字段名 ASC/DESC;
  1. ASC:默认,升序
  2. 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;

聚合函数

  • 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 条件)

例子1: 

select name, gongjizhi from sanguo where gongjizhi<
(select avg(gongjizhi) from sanguo);

例子2:

select name, gongjizhi from sanguo 
where (country, gongjizhi) in 
(select country, max(gongjizhi) from sanguo
group by country);

多表查询

语法格式:

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

连接查询

  1. 内连接 inner join
  2. 外连接 
    1. 左连接 left join
    2. 右连接 right join

内连接 
语法格式:

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

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

内连接显示的内容要同时满足条件

这里写图片描述

外连接之左连接 
left join 
以左表为基准,匹配右表的所有内容,不够的用显示NULL 

这里写图片描述

外连接之右连接 
right join 
以右表为基准,去匹配左表的内容,不够的也是显示NULL 

这里写图片描述

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值