MySQL数据库之单表查询中关键字的执行顺序
MySQL数据库之单表查询中关键字的执行顺序
1 语法顺序
select
distinct
from
where
group by
having
order by
limit
2 执行顺序
from #step1 确定在哪张表做查询
where #step2 设置过滤条件,过滤出符合条件的内容
group by #step3 对过滤后的数据按字段分组
having #step4 再进一步对分组后的数据过滤
select #step5 查找数据
distinct #step6 去重
order by #step7 对去重后的数据按要求排序
limit #step8 限制显示或打印数据的条数
1、正确且高效地查询数据的前提是:明确这些关键字的使用语法、语法顺序、执行顺序
2、语法顺序、执行顺序都是固定不能改变的,我们要按照MySQL的规则来使用
3、关键字的知识点较多且繁琐,需要我们灵活使用。
3 关键字使用语法
3.1 from
1、统计分析表中数据,第一步肯定是确定被统计的是那张表,使用关键字from,意为从该表中查数据
#示例
select * from student; #从student表中查所有字段的数据
3.2 where
1、where使用在分组前,目的是过滤出需要统计待分析的那些数据
2、where在分组前,不能使用聚合函数,可以使用任意字段过滤
3、where可以使用的过滤条件包括:
- 比较运算符,><>= <= <> !=
- between and in 等关键字
- 逻辑运算符,and or not
- 模糊查询,like "pattren" , pattern 中有%表示任意读个字符,_表示一个字符
- 正则表达式 regexp
#示例
from student where sname="jack"; #过滤出姓名为"jack"的学生
from student where sid>20; #过滤出学号大于20的学生们
from student where sid between 10 and 20; #过滤出学号在10-20之间的学生们
from student where sid in (2,5,8); #过滤出学号为2或者5或者8的学生
from student where sid >10 and sscore >90; #过滤出学号大于10且分数大于90分的学生
from student where sname like "刘%"; #过滤出姓刘的学生们
from student where sname regexp "^刘"; #"刘"开头的,即姓刘的学生
3.3 group by
1、分组再where之后,是对过滤出来的数据再按要求的字段分组
2、group by 分组的目的是为了统计分析每个组内的数据信息,如班级人数,每个班级的平均分、男女人数等
3、分组后,只能使用分组字段、如果需要查看组内信息需要使用聚合函数
4、group by 还可以和group_concat()一块使用,查看组内成员信息
5、如果不适用group by,默认这张表示一个组
#示例
select class_name, count(sid) from student group by class_name;
select class_name,group_concat(sname) from student group by class_name;
3.4 having
1、having也是过滤的作用,但having用在分组后,是过滤组级别的
2、having与where不同,having只能使用分组字段或者是聚合函数,不能使用其他字段
3、where使用的那些过滤方式,having 也适用
#示例
select class_id,count(sid) from student group by class_id having class_id >10;
select class_id,count(sid) from student group by class_id having avg(score)>60;
3.5 select
1、select是选择数据的意思,后面直接更想要显示的数据字段,可以用聚合函数,如果是* 代表所有字段
3.6 distinct
1、distinct 去重的功能
#示例
select distinct course_name from student group by course_name;
#目的是统计有个不同的班级,因为存在不同的学生在一个班级,不使用distinct显示不美观
3.7 order by
1、order by 是对上述确定的数据做排序,分升序和降序两种
2、默认升序排列
#示例
select * from student order by sid asc; #学号升序排列,此时可省略关键字 asc
select *from student order by score desc; #分数降序排列
3.8 limit
1、限制查询的记录数
2、limit后面直接跟一个数字n,表示显示n条记录
3、limit后面分别跟两个数字n1,n2,表示从n1位置开始,显示n1位置后面的n2条记录
#示例
select sid from student limit 5; #显示5条记录,sid分别为:1\2\3\4\5
select sid from student limit 0,5; #显示5条记录,sid分别为:1\2\3\4\5,默认从0开始
select sid from student limit 1,5; #显示5条记录,sid分别为:2\3\4\5\6
MySQL数据库之单表查询中关键字的执行顺序的更多相关文章
- MySQL数据库语法-单表查询练习
MySQL数据库语法-单表查询练习 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要是对聚合函数和分组的练习. 一.数据表和测试数据准备 /* @author :yinz ...
- mysql数据库之单表查询多表查询
单表查询 前期表准备 create table emp( id int not null unique auto_increment, name varchar(20) not null, sex e ...
- mysql数据库之单表查询
单标查询 单表查询语句 关键字执行的优先级 简单查询 where约束 group by 聚合函数 HAVING过滤 order by 查询排序 LIMIT限制查询的记录数 使用正则表达式查询 单表查询 ...
- SQL查询中关键字的执行顺序
SQL语句中的每个关键字都按照顺序往下执行,而每一步操作会生成一个临时表,最后的临时表就是最终结果: FROM <left_table>:from子句返回初始结果集 <join_ty ...
- mysql 基础入门 单表查询
单表查询 select 表头,表头 as 别名 ,表头(+-*/的运算) from table_a 1.条件查询 where + 条件 <> , != 不等于 = 等于,也可以表示字符串值 ...
- MySQL数据库语法-多表查询练习一
MySQL数据库语法-多表查询练习一 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客主要介绍的多表查询的外键约束,以及如何使用外链接和内连接查询数据信息. 一.数据表和测试 ...
- mysql 数据操作 单表查询 目录
mysql 数据操作 单表查询 mysql 数据操作 单表查询 简单查询 避免重复DISTINCT mysql 数据操作 单表查询 通过四则运算查询 mysql 数据操作 单表查询 concat()函 ...
- mysql 数据操作 单表查询 where 约束 目录
mysql 数据操作 单表查询 where约束 between and or mysql 数据操作 单表查询 where约束 is null in mysql 数据操作 单表查询 where约束 li ...
- mysql 数据操作 单表查询 group by 分组 目录
mysql 数据操作 单表查询 group by 介绍 mysql 数据操作 单表查询 group by 聚合函数 mysql 数据操作 单表查询 group by 聚合函数 没有group by情况 ...
随机推荐
- lambda匿名函数,sorted(),filter(),map(),递归函数
1.lambda匿名函数 为了解决一些简单的需求而设计的一句话函数 #计算n的n次方 def func(n): return n**n print(func(10)) f = lambda n: n* ...
- python的乘法口诀表
python的乘法口诀表 python的乘法口诀表 用python来写一个脚本,使得这个脚本在运行后自动输出乘法口诀表. pyton的脚本如下: #!/usr/bin/env python #codi ...
- python带有GIL解释器锁
1.GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定. 2.每个CPU在同一时间只能执行一个线程(在 ...
- mongodb数据库常用操作的整理
这是个人在项目中抽取的代码,自己写的utils的通用模块,使用的框架是tronado,包括了数据库的认证,以及增删改查排序,如有特别需要可以联系我或者自己扩展,刚学python不久,仅供参考,例子如下 ...
- Java中返回值定义为int类型的 方法return 1返回的是int还是Integer&&finally中return问题
在Java中返回值定义为int类型的 方法return 1:中返回的是Integer值,在返回的时候基本类型值1被封装为Integer类型. 定义一个Test类,在异常处理try中和finally中分 ...
- 算法与数据结构基础 - 广度优先搜索(BFS)
BFS基础 广度优先搜索(Breadth First Search)用于按离始节点距离.由近到远渐次访问图的节点,可视化BFS 通常使用队列(queue)结构模拟BFS过程,关于queue见:算法与数 ...
- Java后台处理框架之struts2学习总结
Java后台处理框架之struts2学习总结 最近我在网上了解到,在实际的开发项目中struts2的使用率在不断降低,取而代之的是springMVC.可能有很多的朋友看到这里就会说,那还不如不学str ...
- JUint4的下载、配置及对一个算法编写单元测试用例(测试多组数据每组多个参数)
一.JUnit4 jar包下载 链接:https://pan.baidu.com/s/1AdeVGGikcY5dfL151ZnWHA 提取码:h1am 下载完成后,解压一下即可. 二.导入JUnit4 ...
- [原创]一款基于Reactor线程模型的java网络爬虫框架
AJSprider 概述 AJSprider是笔者基于Reactor线程模式+Jsoup+HttpClient封装的一款轻量级java多线程网络爬虫框架,简单上手,小白也能玩爬虫, 使用本框架,只需要 ...
- 给最近正在找工作(iOS)的朋友一些建议/经验
众所周知, iOS开发找工作越来越难, 企业要求越来越高,一方面是资本寒冬期+七八月是企业招人淡季, 另外一方面也是iOS市场饱和.最近有出去看新机会, 所以下面记录一下面试XimalayaFM的大概 ...