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

MySQL的SELECT

简单SELECT语句

我们从最简单的SELECT语句开始起

简单的SELECT语句:
SELECT {*, column [alias], . }
FROM table;
说明:
–SELECT列名列表。*表示所有列。
–FROM 提供数据源(表名/视图名)
–默认选择所有行例子
查询数据:select * from student;
查询部分字段:select id,address from student;

这也是用的最多的方式之一

SELECT中的算数表达式

对于数值型的数据列,变量,常量可以使用 加减乘除(+ - * /)

对于日期型的数据列,变量,常量只可以使用 加减 (+ -)

运算符不仅可以在列和常量之间进行运算,也可以在多列之间进行运算

select id,age*10 from student;

运算符的优先级

  1. 乘除>加减

  1. 运算顺序从左往右

  1. 括号可以改变运算顺序

SELECT查询时对重复数据的处理

使用 DISTINCT 可以去除重复记录

SELECT DISTINCT name from student /*这时候发现数据中有重复数据*/
SELECT DISTINCT(distinct) name from student; /*使用 DISTINCT 可以去除重复记录*/DISTINCT的作用范围是后面所有字段的组合
SELECT DISTINCT id,name from student;

限制所选择的记录

使用WHERE子句限定返回的记录

where使用注意事项

  • WHERE中的字符串和日期值

  • 字符串和日期要用单引号扩起来

  • SQl语句对于大小写不是特别敏感但是字符串是大小写敏感的,日期值是格式敏感的

语法:
WHERE子句在FROM 子句后
SELECT[DISTINCT] {*, column [alias], . } FROM table–[WHEREcondition(s)];简单例子:
select id,name from student where name="琦琦";

在where中也可以使用各种运算符 比如 > = < and in like 等 别的篇章会再讲到

也可以使用正则表达式

数据分组——分组查询

GROUP BY子句的真正作用在于与各种聚合函数配合使用。它用来对查询出来的数据进行分组

  • 分组的含义是:把该列具有相同值的多条记录当成一组记录处理,最后只输出一条记录。

  • 分组函数忽略空值,。

  • 结果集隐式按升序排列,如果需要改变排序方式可以使用Order by 子句

语法:
SELECT column, group_function
FROM table
[WHERE condition]
[GROUP BY group_by_expression]
[ORDER BY column];例子:select max(age) from student [where] group by id;
注意:select只能选中聚合函数字段 或者group by 分组的字段

分组函数规则

  • 如果使用了分组函数,或者使用GROUP BY 的查询:出现在SELECT列表中的字段,要么

出现在组合函数里,要么出现在GROUP BY 子句中。

  • GROUP BY 子句的字段可以不出现在SELECT列表当中。

  • 使用集合函数可以不使用GROUP BY子句,此时所有的查询结果作为一组

数据分组后限制所选择的记录

HAVING

在group by分组之后的记录里用HAVING代替limit 来限制记录

HAVING子句用来对分组后的结果再进行条件过滤

select MAX(age) from student group by age having age>20;

HAVING与WHERE的区别

  • WHERE是在分组前进行条件过滤,HAVING子句是在分组后进行条件过滤

  • WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数。

对查询结果排序

查询语句执行的查询结果,数据是按插入顺序排列

实际上需要按某列的值大小排序排列

按某列排序采用order by 列名[desc],列名…

设定排序列的时候可采用列名、列序号和列别名

如果按多列排序,每列的asc,desc必须单独设定

asc 升序 desc降序 就那么简单

分组排序select id,group_concat(name),group_concat(age) from student group by id desc;
多分组排序select id,group_concat(name),group_concat(age) from student group by id asc,age asc;先根据id升序排,一样的时候再根据age升序排

这边顺便提一下列别名 在select的过程中可以给列取别的名字来使用

在查询中使用别名 select MAX(age) rage from student group by rage having rage>20;

和之前讲过的语句是一个意思

写上头了,再将一个联合查询

联合查询

说明:一般情况下,我们会将 IN 或者 OR 语句 改写成 UNION ALL,来提高性能

UNION 去重复

UNION ALL 不去重复

select id,name,age from student where age>20
union
select id,name,age from student where age<15

MySQL的通配符

MySQL中的常用统配符有三个:

%:用来表示任意多个字符,包含0个字符

_ : 用来表示任意单个字符

escape:用来转义特定字符

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

相关文章:

  • conda 搭建tensorflow-GPU和pycharm以及VS2022 软件环境配置
  • HACKTHEBOX——Teacher
  • 干货| Vue小程序开发技术原理
  • unity-web端h5记录
  • 基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计
  • Grafana邮件及告警配置
  • Springboot Java多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入
  • WebRTC拥塞控制算法——GCC介绍
  • 大数据技术之Maxwell基础知识
  • 元数据管理实践数据血缘
  • SQL的优化【面试工作】
  • Kotlin 40. Dependency Injection 依赖注入以及Hilt在Kotlin中的使用,系列3:Hilt 注释介绍及使用案例
  • 1000亿数据、30W级qps如何架构?来一个天花板案例
  • 人工智能及其应用(蔡自兴)期末复习
  • openpnp - configure - 矫正里程碑
  • JavaScript高级程序设计读书分享之8章——8.2创建对象
  • 关于Could not build wheels for opencv-python-headless, which is...报错的解决方案
  • 【K3s】第1篇 K3s入门级介绍及架构详解
  • Java学习--反射
  • 应用和迭代(名词解释)
  • HTMLCollection 和 NodeList 区别
  • fork()出来一个进程,这个进程的父进程是从哪来的?
  • 结构体内存对齐
  • 【C语言进阶】指针进阶
  • java:Class的isPrimitive方法使用
  • TCP 握手过程 三次 四次
  • windows 下 安裝mysql 5.7.41 (64位) 超简单方式
  • 二叉树——二叉树的最近公共祖先
  • 数据结构与算法基础-学习-14-线性表之串
  • Mac 快捷键