当前位置: 首页 > news >正文

查询表中数据(全列/特定列/表达式,where子句(比较/逻辑运算符),order by子句,limit筛选分页),mysql执行顺序

目录

select

全列查询

特定列查询

用表达式查询 

(as) + 名字 

distinct 去重 

where子句 

比较运算符

列数据之间的比较

​编辑 

别名不能参与比较

null查询

between and

in ( ... , ...) 

模糊匹配 

逻辑运算符

order by子句

可以使用别名 

总结mysql执行顺序

筛选分页 

示例


select

全列查询

select * from +表名

  • 相当于遍历了一遍表数据
  • 如果数据量大,最好不要这样做

特定列查询

select + 列名(,列名1,列名2...) + from 表名

  • 可以查某列/多列数据,按照指定的列顺序显示数据
  • ''

用表达式查询 

select + 常数/表达式 + from 表名

  • 会将常数/表达式的结果与每行拼接在一起

可以用于计算表中数据,然后将结果显示出来:

(as) + 名字 

select 列1+列2... as + 名字 + from 表名

  • 可以为查询结果重命名
  • as可加可不加
  • 属于显示范畴

 

distinct 去重 

select distinct+列名/表达式

为某列去重:

为表达式的运算结果去重:

where子句 

比较运算符

列数据之间的比较
 
别名不能参与比较

这是mysql的执行顺序导致的

  • 首先确定数据从哪来 -- 某张表
  • 然后带着筛选条件去所选数据中寻找 -- where子句,而不是先拿到所有数据,再去筛选
  • 最后将找到的数据按照给定的显示方式,显示出来

所以,where子句在先,他就无法识别sum是什么

null查询

不安全指的是,null无法参与比较

  • 所以返回的是null,而不是1/0

!=和<>也是null不安全的:

所以,一般如果需要和null进行比较,会使用is (not) null

between and

in ( ... , ...) 

可以将列数据与()内所给数据匹配的行显示出来:

模糊匹配 

分为两种匹配方式:匹配任意字符%,匹配一个字符_

其实,mysql是不区分' '和" "的,习惯哪种就用哪种:

 

逻辑运算符

相当于我们代码中的&&,||,!

非常好理解的

比如:找到数学成绩>60,英语成绩大于90的学生:

order by子句

order by + 列名 asc(升序)/desc(降序)

可以将某列数据按升序或降序排列显示

  • 默认是升序

也可以将多列进行排序,当第一列是相同数据时,按照第二个给出的顺序排列

null会被看作是最小值

可以使用别名 

order by子句中可以使用查询列时使用的别名

  • 因为如果想要排序,就得先拿到所有找到的数据,也就是说,它的顺序在显示范畴之后
总结mysql执行顺序

所以,再次总结一下mysql执行的顺序:

  • 首先确定是操作哪张表
  • 如果有where子句,说明我们只需要表中的一部分数据,如果不先筛选掉,在之后的处理中,就会处理无效数据(没必要)
  • 所以,我们先执行where子句,拿到有效数据(筛选行)
  • 然后根据需要显示的列,拿到相应的列数据(筛选列)
  • 最后,将我们拿到的完全有效的数据,进行排序,显示给我们

 

筛选分页 

limit + m,n / limit n offset m

  • 用于在数据量大的时候使用,防止进程卡死
  • m:从哪个位置开始显示(默认开始位置为0,可以看作是下标)
  • n:显示行数

它比order的执行顺序还要更后

  • 因为它是在数据已经准备好了的情况下,决定显示哪几条的

示例

这样就可以显示出从第二个位置(下标为1)的一条数据:

(注意,这里两次打印中,sum相同时,名字顺序不同,是因为:我们不能相信不经过排序的列数据顺序,他很可能是随机的)

如果要分页显示:

只需要要每次变化m的值即可(m+=n)

http://www.lryc.cn/news/322665.html

相关文章:

  • 【Linux】多线程概念 | POSIX线程库
  • Java Spring AOP代码3分钟快速入手
  • .NET开源快速、强大、免费的电子表格组件
  • docker一键部署若依前后端分离版本
  • Java项目开发之fastjson详解
  • 面试算法-62-盛最多水的容器
  • 【智能算法】海洋捕食者算法(MPA)原理及实现
  • 刷题DAY24 | LeetCode 77-组合
  • Spring Boot为什么默认使用CGLIB动态代理
  • 算法详解——Dijkstra算法
  • 利用GANs进行图像生成
  • Flutter-底部弹出框(Widget层级)
  • 聚焦两会:数字化再加速,VR全景助力制造业转型
  • 数据挖掘之关联规则
  • java:java.util.BitSet对象的Jackson序列化和反序列化实现
  • Go语言学习01-基本程序结构
  • rundeck k8s部署踩坑
  • 每天学习几道面试题|Kafka(二)架构设计类
  • Spring 实现 OAuth2 授权之解决方案
  • el-select使用filterable下拉无法关闭得问题
  • 基于javaweb(springboot)城市地名地址信息管理系统设计和实现
  • vue iframe实现父页面实时调用子页面方法和内容
  • HarmonyOS ArkTS 开发基础/语言
  • AI大模型学习
  • 2024年【T电梯修理】考试内容及T电梯修理作业考试题库
  • 2.vscode 配置python开发环境
  • [蓝桥杯 2015 省 B] 生命之树
  • 为什么Hashtable不允许插入nuIl键和null值?
  • 【WPF应用4】WPF界面对象编辑
  • js数组去重常见方法