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

4、mysql高阶语句

mysql高阶语句是对复杂的条件进行查询的操作。

排序—order by

  • 加了desc表示由大到小

1、查询name和score,地址都是云南西路的按id进行由小到大排序

2、查询name和score,先按hobbid进行排序,再把结果按id进行排序

  • 第一段字段必须要有相同的值,第二个字段才有意义。如果先按id排序,再按hobbid排序将毫无意义。

区间判断—and/or

根据where的条件,来对数据进行逻辑的区分,and  /  or

and表示逻辑且,and的所有条件都要为真

or表示逻辑或,只要有一个条件满足即可

1、查询info表所有信息,分数>80且分数<=90

     查询info表所有信息,分数=85或分数=90

区间嵌套

2、查询info表所有信息,分数>80且(分数>90且分数<95)

对结果进行分组查询—group  by

group  by都是和聚合函数一起使用的

  • count():统计函数
  • sum():求和
  • avg():求平均值
  • max():最大值
  • min():最小值

1、按hobbid进行分组,查询name(统计name)和hobbid

  • 不要使用聚合函数的字段来进行分组。
  • 要有多个字段,按照非统计的字段来进行分组。
  • 对聚合函数进行过滤,使用having语句

2、,按hobbid进行分组,查询 score(求平均值)和 hobbid

3、按hobbid进行分组,查询 score(求平均值)和 hobbid,然后挑出score平均值大于85的

  • 对聚合函数进行过滤,使用having语句

4、先根据where条件过滤出成绩大于等于80的,再查询姓名、性别,按照性别来进行分组,统计姓名

  • where只能用在分组之前,不能在分组之后

5、分别统计男生组和女生组的最大成绩和最小成绩

查看指定范围—limit

1、查看从第1行后1行开始,至后面4行,即2-5行

2、显示成绩最高的前三行

数据去重—distinct

1、查询表xy103按address去重的结果

  • 需要去重的类型越多,效果越差

设置别名

1、给列名设置别名

  • as:设置别名,当表名和列名过长的时候可以使用别名进行替代,尤其是在多表联查时,可以不用申明表名

2、给表名设置别名

表示先给表info设置别名a,表info1设置别名b,查询a的兴趣、地址、性别,当a的姓名=b的姓名的时候。

3、创建表时,根据另一张表的结果,直接创建,但是不能继承主键的约束

  • 这种方法只能继承字段、类型等,不能继承主键的约束

通配符—%_

%:表示0个,1个,多个字符,可有可无

_(下划线):表示单个字符

通配符一般是和like一起使用,并且是配和where条件进行过滤

1、%表匹配任意内容

2、匹配 徐x、徐xx和徐x(任意几个x)

  • 几个_代表后面几个字符数量
  • %_表示任意字符数量

子查询

内查询或者嵌套查询,就是在查询语句当中又嵌套着另一个select。

运行时,先查询子语句,然后把子语句的结果传给主语句进行查询。

子查询的表可以是同一张表,也可以是不同的表。

1、先查询name当分数的值大于85的,然后按查询结果查询name和score

  • 前后的条件要一致,多表联查不要超过三张

2、更新info表,设置成绩的值是65,根据子查询的语句,只修改地址有南京的记录的值。

  • 注意:子查询和修改不能对一张表,即不能对自己又查询又修改

exists语句

3、用来判断子查询的结果集是否为空

视图表—view

视图是一个虚拟表,数据基于检索的查询结果。

复杂的查询语句,简单化的呈现给用户。

查询视图就可以获取数据,避免找到真正的表,提高了数据安全。

创建试图表

删除试图表

  • 如果表info里面更新数据,也会同步更新视图表test1,test1相当于查询的一个快捷方式

view和table的区别

  1. 存储方式,表都是实际数据,保存在硬盘,视图存储的不是数据行,而是结果的集合。
  2. 数据更新,更新表可以更新视图,更新视图也可以更新表,一般情况下,视图仅仅用于展示数据。
  3. 占用空间,表示实际空间,视图不占用数据库的空间,就是一个结果。
  4. 视图表的主要作用就是把复杂的查询语句简化成一个查询的集合

连接查询

把两个或者三个表的记录行结合起来,基于这些表之间共同的字段,进行数据的拼接,首先确定一

个主表的结果集(主表的列),然后把其他表的进行选择性的连接到主表的结果上。

内连接—inner  join

结合两个表之间基于一个字段或者多个字段之间,将两个表中结果进行组合。即取交集。

1、查询表test1和test2中,name相等的交集

左连接—left  join

左外连接,在from之后使用left  join或者left  outer  join用关键字来匹配。

左连接以左侧表为基础,接受左表所有的行,并用这些行,与右侧表一起参与,显示左表以及右表

符合条件的行,不满足的显示为null。

2、查询交集,显示左连接左侧表的所有信息;右侧表只显示交集的部分,其余部分为null。

右连接—right  join

右外连接,在from之后使用right  join或者right  outer  join用关键字来匹配。

右连接以右侧表为基础,接受右表所有的行,并用这些行,与左侧表一起参与,显示右表以及左表

符合条件的行,不满足的显示为null。

3、查询交集,显示右连接右侧表的所有信息;左侧表只显示交集的部分,,其余部分为null。


http://www.kler.cn/a/449647.html

相关文章:

  • 自动驾驶控制算法-横向误差微分方程LQR前馈控制
  • java后端传时间戳给前端的三种方式
  • Bazel CI
  • MES系统工作流的单元测试方案
  • Oracle 数据库函数的用法(一)
  • HDR视频技术之十:MPEG 及 VCEG 的 HDR 编码优化
  • YOLOv11融合[ECCV2024]FADformer中的FFCM模块
  • ip地址和网络号关系是什么
  • linux ipmitool配置机器的BMC(服务器管理后台)
  • COMSOL with Matlab
  • 数据库知识全解析:从基础原理到应用实践
  • Android Jetpack DataBinding源码解析与实践
  • 梳理你的思路(从OOP到架构设计)_简介设计模式
  • 【首发1day详情】CVE-2024-51479 全网首发漏洞复现分析+POC (Next.js权限绕过)
  • uni-app开发完成app上传OPPO认定为马甲包如何处理?
  • 计算机网络压缩版
  • 【漏洞复现】CVE-2022-23544 SSRF
  • 机器学习实战32-利用机器学习对电商销售数据进行归因分析的方法,旨在找出销量下降的原因
  • macOS Sequoia 15.2 发布下载,带来 Apple 智能重大更新
  • MySQL实战之数据管理
  • pytorch中torch.nn.functional.normalize、nn.norm和LayerNorm计算中的区别
  • Java CPU飙升 排查
  • pytorch MoE(专家混合网络)的简单实现。
  • 【网络安全】网站常见安全漏洞—服务端漏洞介绍
  • Linux提示Could not resolve host
  • 30多种独特艺术抽象液态酸性金属镀铬封面背景视觉纹理MOV视频素材