Mysql003:基础查询

news2024/11/24 17:56:01

目录:

1. 基本查询

2. 条件查询(where)

3. 聚合函数(count、max、min、avg、sum)

4. 分组查询(group by)

5. 分组后查询(having)

6. 排序查询(order by)

7. 分页查询(limit)

1. 基本语法

SELECT
    字段
FROM
    表名
WHERE
    条件
GROUP BY
    分组
HAVING
    分组后条件
ORDER BY
    排序
LIMIT

    分页参数

1.1. 查询多个字段

select 字段1,字段2,...from 表名;

1.2. 查询所有字段

select * from 表名;

1.3. 给字段设置别名

select 字段1 别名1, 字段2 别名2,... from 表名;

1.4. 去除重复记录

select distinct 字段 from 表名;

2. 条件查询(where)

SELECT * FROM 表名 WHERE 条件

比较运算符功能逻辑运算符功能
>大于AND或&&并且(多个条件需同时成立)
>=大于等于OR或 ||或者(某个条件成立即可)
<小于NOT 或 !非,取反
<=小于等于
=等于
<>或!=不等于
BETWEEN...AND...在某个范围之内(最小值、最大值)
IN(...)包含
LIKE 占位符模糊查询(_匹配单个字符,%匹配多个字符)
is NULL是NULL
=""等于空

2.1 下面这几个简单的就不演示了

select * from 表名 where 字段 > 值; -- 大于

select * from 表名 where 字段 >= 值; -- 大于等于

select * from 表名 where 字段 < 值; -- 小于

select * from 表名 where 字段 <= 值; -- 小于等于

select * from 表名 where 字段 = 值; -- 等于

select * from 表名 where 字段 <> 值  或  select * from 表名 where 字段 != 值; -- 不等于

2.2 在某个范围之内:BETWEEN...AND...

如上学生表,假如让你查询成绩在80以上,90以下,你可以这样

select * from students where 成绩 >= 80 and 成绩 <= 90;

但是这样查有时候过于繁琐,如果查询的是一个范围, 且有最小值和最大值,你可用BETWEEN...AND...,如下

select * from students where 成绩 between 80 and 90;

2.3 IN(...) 包含

查询包含(张三)和(李四)的记录

select * from students where 姓名 in ('张三','李四');

2.4 LIKE 模糊查询

查询性张的学生记录。_一个下划线的意思就是"张"后面只允许出现一个字,两个下划线允许出现两个字,而%号允许出现任何数字

select * from students where 姓名 like ('张_');

select * from students where 姓名 like ('张%');

2.5 is NULL 和 = "" (是NULL,等于空)

要注意这两个不是同一个东西,一般来说is null 是用于数字查询上, = "" 是用于字符串查询上,NULL和空的区别是,null是未知值;而空是已知值,值就是空

select * from students where 成绩 is null; -- 查询成绩为null的记录

select * from students where 姓名 = ''; -- 查询姓名为空的记录

2.6 AND或&& (并且)

查询姓名为(张三)并且年龄等于(20)的记录

select * from students where 姓名 = '张三' and 年龄 = 20;

select * from students where 姓名 = '张三' && 年龄 = 20;

2.7 OR或 || (或者)

查询姓名为(张三)或者年龄等于(21)的记录

select * from students where 姓名 = '张三' or 年龄 = 20;

2.8 NOT 或 !(非、取反)

首先说一下<> != 和 not ! 的区别, <> != 用于比较两个值不相等的情况, 而not !是对于结果取反,其实他们的用意都是一样的, 只是写法不一样。

查询姓名等于(张三)的反记录

select * from students s where not 姓名 = '张三';

3. 聚合函数

聚合函数是将一列作为一个查询整体进行纵向计算的。通俗来说就是聚合函数通常是用来计算列的

函数功能
count统计列行数
max求列中最大值
min求列中最小值
avg求列中平均值
sum对整列求和

语法:

select 聚合函数(字段) from 表名;

3.1 count

求表中的行数。注意:列中的null值是不纳入计算的

select count(*) from 表名;

select count(id) from 表名;

select count(1) from 表名;

3.2 max

求某列中的最大值

select max(成绩) from 表名;

3.3 min

求某列中的最小值

select min(成绩) from 表名;

3.4 avg

求某列中的平均值

select avg(成绩) from 表名;

3.5 sum

对某列求和

select sum(成绩) from 表名;

4. 分组查询(group by)

分组的意思就是想某列相同的数据分为一组,查询出来的结果和去重功能有点相似,但是分组不是去重,去重是将有重叠的部分删除掉,重叠的那部分数据我们无法再进行操作;而通过分组出来的数据,重叠的那部分数据并消失,只是隐藏起来了,我们还是可以对重叠部分的数据进行计算的,例如进行求和运算、取最大值运算等等。

语法:where 条件可以不写

select 字段 from 表名 where 条件 group by 分组字段名 having 条件;

还是上面这个表, 查询男生和女生的总成绩是多少

select sum(成绩) from students s group by 性别;

5. 分组后查询条件(having)

having和where是区别的, where是在分组前使用的, having是在分组之后使用的。简单来说就是分组之后表可以作为一个整体,然后使用having对它进行条件查询。

select * from 表名 where 条件 group by 字段 having 条件;

6. 排序查询

select 字段 from 表名 order by 字段1 排序方式1, 字段2 排序方式2...;

排序方式只有两种,ASC升序,DESC降序。如果使用的升序,可以省略ASC不写。从语法可以看出来,排序是支持多字段排序的, 它的排序逻辑是先按照字段1进行排序, 如果有相同的,相同的数据在按字段2进行排序,以此类推

按成绩进行升序排序

select * from students order by 成绩;

按成绩进行降序排序

select * from students order by 成绩 desc;

先按成绩进行升序排序, 在按年龄进行升序排序

select * from students order by 成绩, 年龄;

7. 分页查询

select * from 表名 limit 起始索引,查询记录数;

注意1:起始索引 = (查询页数 - 1) * 查询记录数。

怎么理解这句话呢? 假如你想查询第2页, 每页显示10条数据,那么“起始索引”就等于(2-1)*10=1, 那么sql应该这么写:select * from 表名 limit 1,10;   或许你有疑惑,起始页为什么要按这个公式来呢? 不用思考太多,规则就是这样的

注意2:limit这个关键字是mysql专用的, 在oracle中是不适用的。

补充:sql语句的执行顺序

sql的编写顺序:

SELECT
    字段
FROM
    表名
WHERE
    条件
GROUP BY
    分组
HAVING
    分组后条件
ORDER BY
    排序
LIMIT

    分页参数

sql的执行顺序:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【空间-光谱联合注意网络:多时相遥感图像】

A Spatial–Spectral Joint Attention Network for Change Detection in Multispectral Imagery &#xff08;一种用于多光谱图像变化检测的空间-光谱联合注意网络&#xff09; 变化检测是通过比较双时相图像来确定和评估变化&#xff0c;这是遥感领域的一项具有挑战性的任务…

Wireshark抓包分析ICMP协议

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 分析目的&#xff1a;分析ICMP协议的数据格式、报文…

【赠书活动】无测试组织:测试团队的敏捷转型

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

不可忽视的字符函数与字符串函数:它们如何改变你的编程世界

&#x1f493;博客主页&#xff1a;江池俊的博客⏩收录专栏&#xff1a;C语言进阶之路&#x1f449;专栏推荐&#xff1a;✅C语言初阶之路 ✅数据结构探索&#x1f4bb;代码仓库&#xff1a;江池俊的代码仓库&#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐ 文…

苹果恢复出厂设置怎么操作?方法在这!

手机恢复出厂设置&#xff0c;简单点来说就是将手机恢复到出厂时的默认状态。如果在使用手机的过程中遇到内存不足、系统闪退、应用卡顿等问题&#xff0c;可以尝试通过将手机恢复出厂设置来解决问题。那么&#xff0c;苹果恢复出厂设置的方法是什么&#xff1f;还不知道如何操…

API接口自动化测试框架

前言 接口自动化逐渐成为各大公司投入产出最高的测试技术。但是如何在版本迅速迭代过程中提高接口自动化的测试效率&#xff0c;仍然是大部分公司需要解决的问题。 框架定位 数据驱动设计模式&#xff0c;无需写测试代码脚本即可实现自动化等价类非等价类覆盖&#xff0c; E2E…

浅谈如何预防高层小区电气火灾的发生

【摘要】&#xff1a;随着国民经济的发展和人民生活水平的不断提高&#xff0c;我国工业用电和家庭用电量逐年增加。电气火灾造成的人员伤亡和财产损失巨大&#xff0c;时刻威胁着人们的生命及财产安全。众所周知&#xff0c;因供电线路或用电设备的损坏引发的接地电气火灾的例…

Seata入门系列【2】Spring Cloud 2021.0.5集成seata 1.7.1

1 引出分布式事务问题 1.1 seata-service-account编写查询用户、远程调用下订单接口 RestController RequestMapping("/accountTbl") public class AccountTblController {AutowiredAccountTblMapper accountTblMapper;AutowiredOrderFeign orderFeign;GetMapping(…

西门子KTP触摸屏做画面时如何把设备图片或Logo做到画面上?

西门子KTP触摸屏做画面时如何把设备图片或Logo做到画面上&#xff1f; 如下图所示&#xff0c;新建一个项目&#xff0c;添加一个触摸屏设备&#xff0c;这里以TP1200 Comfort触摸屏为例进行说明&#xff0c;双击进入根画面&#xff0c; 如下图所示&#xff0c;在右侧的工具箱中…

SpringBoot 学习(一)自动装配

本系列文章为【狂神说 Java 】视频的课堂笔记&#xff0c;若有需要可配套视频学习。 1.1 pom.xml (1) 父工程&#xff08; spring-boot-starter-parent &#xff09; 核心依赖&#xff0c;静态资源过滤等配置。编写或导入 springboot 依赖时不需要指定版本号&#xff0c;继承…

MySQL 连接查询(多表查询 二)

基本介绍 作用&#xff1a;连接查询&#xff08;Join&#xff09;操作&#xff0c;用于联结多个表以获取更全面和准确的数据 基本分类&#xff1a; 内连接&#xff1a;相当于查询A、B交集部分数据&#xff08;去掉迪卡尔积无效组合&#xff09;外连接&#xff1a; 左外连接&…

nginx: 部署前端项目的详细步骤(vue项目build打包+nginx部署)

目录 第一章 前言 第二章 准备工作 2.1 项目打包理解 2.1.1 打包命令 2.1.2 理解npm run serve/dev 和 npm run build命令 2.2 nginx参数配置理解 2.2.1 nginx常用基本命令 2.2.2 默认配置 2.2.3 搭建不同网站的站点 2.2.4 禁止访问的目录以及一键申请SSL证书验证目录…

Red Hat更新开发套件了,有你期待的功能吗?

导读近日&#xff0c;Red Hat公司将Red Hat Development Suite更新到了2.0版本&#xff0c;其中包括对Red Hat JBoss Development Suite和Red Hat Container Development Kit的一系列优化。 Red Hat Development Suite 2.0版本的主题是扩展可用性与产品集成&#xff0c;以及扩展…

毕业设计--基于SpringBoot+Vue的科研课题项目管理系统

介绍 基于SpringBootVue的科研课题项目管理系统 &#xff1b; 实现 登录 /注销、 用户管理、项目管理、申报管理、变更管理、结题管理、角色管理、权限管理、数据字典等功能 &#xff1b; 可作为 SpringBoot前后端分离项目 开发练习模型、课程设计 、 毕业设计 等。 环境准…

上车加速!为下一代LCoS HUD造势,华为和哪些企业在领跑

高工智能汽车研究院监测数据显示&#xff0c;今年1-7月中国市场&#xff08;不含进出口&#xff09;乘用车前装标配W/AR HUD交付108.35万辆&#xff0c;同比增长47.98%&#xff0c;前装搭载率升至9.82%。 其中&#xff0c;从价位区间分布来看&#xff0c;30万元及以上车型标配W…

【如何看待Unity收费】对标中小公司的待就业者的该如何做

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

多个vtk文件合并

收费工具&#xff0c;白嫖党勿扰 收费金额200元 程序下载链接 1 概述 最近在项目上&#xff0c;有一个客户&#xff0c;通过超算&#xff0c;得到了几百个vtk文件&#xff0c;让我们显示出来&#xff0c;将这几百个vtk文件分别解析&#xff0c;然后再做可视化显示&#xff0c…

更好的用户体验, 开源实时监控新版发布

哈喽大家好&#xff0c;时间很快两个月又过去了&#xff0c;HertzBeat 经过近两个月的迭代终于发布了 v1.4.1 版本。为什么是终于&#xff0c;因为有点难哈哈。我们参考 rocketmq 重构了 netty 的 server client 端模块&#xff0c;重构了采集器集群调度。比起上一版本有了更优…

2023-09-27 monetdb-存储架构-记录

摘要: 2023-09-27 monetdb-存储架构-记录 存储架构 MonetDB SAM/BAM 模块支持两种类型的模式来存储 SAM/BAM 数据。使用顺序模式&#xff0c;所有对齐记录都可以轻松读取、解析并随后存储&#xff0c;与它们在 SAM/BAM 文件中的存储方式相当。使用成对模式&#xff0c;对齐记…

【计算机网络笔记六】应用层(三)HTTP 的 Cookie、缓存控制、代理服务、短连接和长连接

HTTP 的 Cookie HTTP 的 Cookie 机制要用到两个字段&#xff1a;响应头字段 Set-Cookie 和请求头字段 Cookie。 Cookie 可以设置多个 key-value 对&#xff0c; 响应头中可以设置多个 Set-Cookie 字段&#xff0c;请求头Cookie后面可以设置多个键值对&#xff0c;用分号隔开&a…