SELECT语句的执行过程(单表查询)

过程如下 :

1、先执行FROM,先找表,先确定对应数据库中的表

2、执行WHERE,表确定了以后,把这些表中复符合WHERE条件的行先过滤出来

3、如果有分组GROUP BY,那么我们就先对分组进行统计

4、如果分组完成后,我们就要使用HAVING,对分组后的内容再进行条件过滤

5、如果还有ORDER BY,进行排序

6、排序完成后,特定的行就可以显示了,我们可以选择要显示的字段

7、最后我们如果使用了LIMIT,我们还可以挑选特定的行进行过滤,最后显示出来

SELECT

SELECT

[ALL | DISTINCT | DISTINCTROW ]

[SQL_CACHE | SQL_NO_CACHE]

select_expr [, select_expr ...]

[FROM table_references

[WHERE where_condition]

[GROUP BY {col_name | expr | position}

[ASC | DESC], ... [WITH ROLLUP]]

[HAVING where_condition]

[ORDER BY {col_name | expr | position}

[ASC | DESC], ...]

[LIMIT {[offset,] row_count | row_count OFFSET offset}]

[FOR UPDATE | LOCK IN SHARE MODE]

总结:

1、字段显示可以显示别名

2、LIMIT [[offset,]rowcount]:对查询的结果进行输出行数数量限制

3、like:单个任意字符

%: 任意长度字符

4、rlike

支持正则表达式

5、 IN (element1, element2, ...)

in 等于

not in 不等于

6、 ORDER BY: 根据指定的字段对查询结果进行排序

升序:ASC

降序:DESC

7、DISTINCT 去除重复列

8、逻辑操作符:

NOT

AND

OR

XOR

9、BETWEEN min_num AND max_num

10、

IS NULL

IS NOT NULL

示例:

查找指定表中的所有字段

seletc * from students

查找students表中的所有数据,显示指定的行

select * from students limit 6;

查找指定字段行

select name,age from students;

查找tb1表中age 不等于24 的数据

select * from stdents where age != 24;

查找指定表中age大于等于24并且小于等于20的数据

selsct * from students where age>=24 and age <=20;

select * fromstudents where age between 20 and 24;

查找指定表中age等于20或者等于24的数据

select * from students where age=20 or age=24;

查找指定表中的查询出age 不在20到24的区间中的数据

select * from students where age <25 or age >24;

select * from students where not between 20 and 24;

通过like 结合通配符进行模糊搜索

查找所有字段开头是s的任意长度数据

select * frim students where name like 's%';

查找所有字段开始是s,但是只有三个字符的数据

select * from students where name like 's__'

通过rlike结合正则表达式

查找所有字段开头是s的任意长度数据

select * from students where name rlike '^s.*'

查找指定字段匹配对应的条件,使用in关键字指定

查找指定表中age 等于21 20 23 的数据

select * from students where age in (20,21,23);

查找指定表中age不等于21 20 23 的数据

select * from students where age not in (20,21,23);

对指定字段进行排序

查找所有表数据,并且指定字段进行排序

查询studentsd 的所有数据,并指定age字段的值从大到小进行降序排序,如果多行之间的age字段相同时,在将name字段进行升序排序

select * from students order by age desc, name asc;

注意:

order by 后面跟的要排序的字段,顺序不一样,结果也不一样

比如:

1、select * from students order by age,classid;

2、select * from students order by classid,age;

第一条是先对age进行排序后,再对classid进行排序

第二条是先对classid进行排序,然后再对age进行排序

去重

使用DISTINCT关键字进行去重

select distinct age from students;

别名

查询时给字段添加别名,显示的时候显示别名

select name as Name,age from students;

分组

分组

GROUP:根据指定的条件把查询结果进行“分组”以用于做“聚合”运算

avg(), 统计最小值

max(), 统计最大值

min(), 统计最小值

count(), 统计每个分组的数量

sum() 统计每个分组的总和

HAVING: 对分组聚合运算后的结果指定过滤条件

示例:

对sudents表的gender字段进行分组

select * from students group by gender;

需要注意的是,显示的是第一次查找到男生和女生数据

聚合操作

select count(*),gender from students group by gender;

先对性别进行分组,然后统计每组中的人数。

count()就是一种聚合函数,这个函数能统计数量

先对性别进行分组,然后将每个分组中的age字段进行平均计算,得到每个组的平均年龄

select avg(age),gender from students group by gender;

group_concat()用法

select gender,group_concat(name) from students group by gender;

先将性别分组后,然后显示男生和女生组中的名字

HAVING用法

select gender,avg(age) from students group by gender having avg(age) > 20;

将分组过后的信息在进行条件过滤,

mysql查找所有男生_MYSQL-SELECT查相关推荐

  1. mysql 查找相似数据_MySQL性能优化做得好的人,都懂的索引绝技

    一步一步推导出 MySQL索引的底层数据结构. MySQL作为互联网中非常热门的数据库,其底层的存储引擎和数据检索引擎的设计非常重要,尤其是 MySQL数据的存储形式以及索引的设计,决定了 MySQL ...

  2. mysql根据字长查询_MYSQL常用查命令

    MYSQL常用查命令: mysql> select version();        查看MySQL的版本号 mysql> select current_date();        查 ...

  3. mysql 查找数据过程_mysql数据库查询过程探究和优化建议

    查询过程探究 我们先看一下向mysql发送一个查询请求时,mysql做了什么? 如上图所示,查询执行的过程大概可分为6个步骤: 客户端向MySQL服务器发送一条查询请求 服务器首先检查查询缓存,如果命 ...

  4. mysql 查找相似数据_MySQL学习笔记之索引

    索引是存储引擎用于快速找到记录的一种数据结构. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 ...

  5. 查看mysql主机名命令_MYSQL常用查命令

    MYSQL常用查命令 mysql> select version();        查看MySQL的版本号 mysql> select current_date();        查看 ...

  6. mysql 查找字符位置_MySQL数据库中如何查看一个字符串在另一个字符串中第一次出现的位置呢?...

    摘要: 下文讲述MySQL数据库中查看一个字符串第一次出现的位置的方法分享,如下所示: 实现思路: 方式1: 使用系统函数LOCATE(substr,str)即可获取 substr字符串在str中第一 ...

  7. mysql 查找课程最高分_mysql 查询 学生id最高分的科目和日期

    mysql>select*fromstudent;+------+---------+------+---------+|id|subject|mark|date|+------+------- ...

  8. mysql 查找小写字母_MYSQL数据库MySQL中查询的有关英文字母大小写问题的分析

    <MYSQL数据库MySQL中查询的有关英文字母大小写问题的分析>要点: 本文介绍了MYSQL数据库MySQL中查询的有关英文字母大小写问题的分析,希望对您有用.如果有疑问,可以联系我们. ...

  9. mysql 查找 法语字母_Mysql使用可选的法语字符搜索LIKE

    这对我有用. 我使用utf8 charset和utf8_general_ci collat​​ion在MySQL 5.5.8上测试了这个. 我尝试搜索where title like '%tèst%' ...

最新文章

  1. List接口实现类-ArrayList、Vector、LinkedList集合深入学习以及源代码解析
  2. 实现threadlocal_ThreadLocal如何实现?
  3. buck电路 dac stm32_STM32定时器学习---基本定时器
  4. openwrt添加模块时编译报No rule to make target `install'
  5. 20162314 Experiment 3 - Sorting and Searching
  6. 电脑上怎么做pdf文件_PDF文件怎么拆分?一看就会!
  7. 朋友,谁会Symbian S40 Symbian S60 v3/v5 Android?
  8. .net 和 j2ee的区别
  9. 韩立刚《计算机网络》| 第6章 应用层
  10. 利用阿里云oss实现上传视频和图片功能
  11. supp(f)支撑集
  12. 不用CorelDraw怎么编辑CDR文件
  13. spring mvc 双亲上下文问题
  14. 马斯克告诉推特员工:要么继续高强度工作,要么拿遣散费走人;微信新增删除声音锁功能;Deno 1.28 发布|极客头条
  15. 40vf什么意思_什么是VF技术?
  16. 连续信号、离散信号、模拟信号与数字信号区别
  17. Python爬取百度翻译及有道翻译
  18. 计算机曝光模式有哪些,曝光模式_拍摄技巧_太平洋电脑网PConline
  19. LWN: kernel warning 的时候应该怎么处理?
  20. jade支持html,Jade !HTML框架

热门文章

  1. CSDN创作三周年纪念
  2. Java使用网易云信短信验证 demo(完整教程)
  3. python subprocess使用_python利用subprocess执行交互命令
  4. 关于城管委的回应书写
  5. ID CS6怎么加框_英雄联盟手游怎么修改游戏id-lol手游改中文名方法分享
  6. 让chatGPT回答一些有趣?无聊的问题
  7. 复制模型到骨骼-脚本教程
  8. 第一章 略说中医的学习与研究(5)
  9. 分享:Xen Server虚拟机数据误删除的恢复过程
  10. 什么软件修复视频画质比较好,视频画质修复工具