MySQL:表的增删查改——CRUD(二)

news2024/11/16 2:14:57

本篇博客接上篇MySQL:表的增删查改——CRUD(一)-CSDN博客


目录

1、查询(Retrieve)

1.1 条件查询:WHERE

1.1.1 比较运算符

1.1.2 逻辑运算符

1.1.3 查询语句的执行顺序

1.1.3 SQL代码示例

1.2 分页查询:LIMIT

2、修改(Update)

2.1 SQL代码示例


1、查询(Retrieve

1.1 条件查询:WHERE

语法:select 列名/表达式 from 表名 where 列名/表达式 运算符 条件

1.1.1 比较运算符

  • = 号,既可用来比较是否相等,可以用来赋值;但是,NULL比较特殊,不可使用 = 号来比较是否为NULL。
  • 若要比较值是否为NULL,需要 <=> 号,或者 IS NULL (是NULL返回1表示true,否则返回0表示false)与 IS NOT NULL(不是NULL返回true(1),否则返回false(0))。
  • != 和 <> 均用来判断两者是否不相等。
  • BETWEEN a0 AND a1,表示范围为[a0,a1],左闭右闭。
  • IN (a1,a2,...) 若存在小括号中的值则返回true(1),否则返回false(0)。
  • LIKE 表示模糊匹配。%表示0个或任意多个字符,_ 表示任意一个字符,_ _ 表示任意两个字符,.......

1.1.2 逻辑运算符

这里的逻辑运算符与Java、Cpp中的运算符含义相同。

  • AND 相当于 &&
  • OR 相当于 ||
  • NOT 相当于 !

 逻辑运算符之间具有优先级关系,其中NOT(逻辑非)> AND(逻辑与)> OR(逻辑或),但不建议特意记,建议编码时使用小括号手动指定优先级,提高可读性。

1.1.3 查询语句的执行顺序

查询时可配合去重、排序、条件一起使用,但是在where子句中,我们对于列名/表达式不能使用别名给出条件这跟SQL语句的执行顺序有关。

当我们将别名换成表达式后就能够正常执行:

但是我们看到,order子句可以使用别名,其实这跟SQL语句的执行顺序有关:

  1. 通过from找到要查的表
  2. 通过where子句筛选出符合条件的数据行(此时还没有完成select子句中别名的定义,不能使用别名)
  3. 通过select子句抽选出指定的列或生成相应的表达式(此时才完成别名的定义)
  4. 通过order子句排序(此时已完成select子句中别名的定义,可以使用别名)

1.1.3 SQL代码示例

-- 基本查询
-- 查询英语不及格的同学及英语成绩
SELECT name,english FROM exam WHERE english < 60;
-- 查询语文成绩好于英语成绩的同学
SELECT name,chinese,english FROM exam WHERE chinese > english;
-- 查询总分在 200 分以下的同学
SELECT name,chinese+math+english 总分 FROM exam WHERE chinese+math+english < 200;

-- AND与OR
-- 查询语文成绩大于80分,且英语成绩大于80分的同学
SELECT name,chinese,english FROM exam WHERE chinese > 80 AND english > 80;
-- 查询语文成绩大于80分,或英语成绩大于80分的同学
SELECT name,chinese,english FROM exam WHERE chinese > 80 OR english > 80;

-- 范围查询
-- 查询语文成绩在 [80, 90] 分的同学及语文成绩
SELECT name,chinese FROM exam WHERE chinese BETWEEN 80 AND 90;
SELECT name,chinese FROM exam WHERE 80 <= chinese AND chinese <= 90;
-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
SELECT name,math FROM exam WHERE math IN (58,59,98,99);
SELECT name,math FROM exam WHERE math = 58 OR math = 59 OR math = 98 OR math = 99;

-- 模糊查询:LIKE
-- % 匹配任意多个(包括0个)字符
SELECT * FROM exam WHERE name LIKE '孙%';
-- _ 匹配严格的一个任意字符
SELECT * FROM exam WHERE name LIKE '孙_';

-- NULL 的查询
-- IS [NOT] NULL
SELECT * FROM exam WHERE id IS NULL;
SELECT * FROM exam WHERE id <=> NULL;
SELECT * FROM exam WHERE id IS NOT NULL;

1.2 分页查询:LIMIT

我们之前所学的查询都是不限制记录条数的查询,其实这样的查询是非常危险的,因为在生产环境中,表中存储着大量的数据,不限制条数的查询会造成占用大量资源,非常的不安全。

分页查询就是能够限制查询的条数,能够有效的减少数据库服务器的压力,分页查询的使用也是非常的多,我们也常常见到分页查询:

分页查询语法:

分页查询的同样可以配合顺序、条件查询一起使用,其前面的语法与我们之前所学查询语法相同,知识在结尾处加上LIMIT关键字,表示限制查询的条数。

表中记录的起始下标为0。

分页查询共有3种语法规则:

  • SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n; 这里LIMIT 后的n指:(默认)从第0行开始查询,共查询n条记录。
  • SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT s, n; 这里LIMIT 后的s,n指:从第s行开始查询,共查询n条记录。
  • SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT n OFFSET s;这里LIMIT 后的n指:共查询n条记录。这里OFFSET 后的s指:从第s行开始查询。

示例:

  • 示例1:
  • 示例2:

如果每页都有相同的查询条数,则当前页数查询的起始行数s = (当前页数-1)*每页查询的记录数。

或者记忆为:s += 每页查询的记录数。

-- 每页查询两条数据
-- 查询第1页
select * from exam order by id asc limit 0,2;
-- 查询第2页
select * from exam order by id asc limit 2,2;
-- 查询第3页
select * from exam order by id asc limit 4,2;
-- 查询第4页
select * from exam order by id asc limit 6,2;

2、修改(Update)

update 表名 set 列名 = 新值  [, 列名 = 新值 ... ] [where ... ] [order ... ] [limit ... ];

  • 一条update语句可以修改多个属性,多个属性间使用逗号隔开
  • where为修改条件,满足条件的记录才可以被修改
  • order子句的作用是排序,limit子句的作用是限制修改条数即修改多少条。
  • order和limit的配合使用能够达到修改排名前多少个记录的作用。

注意:使用update修改数据时,一定要加where子句来控制修改条件,否则修改的将是整张表中所有的记录,这是非常危险的操作!!!

2.1 SQL代码示例

注意:

如果要让数学成绩减少30分,则只能这样书写:math = math - 30;而不能这样书写:math -= 30;

-- 将孙悟空同学的数学成绩变更为80分
UPDATE exam SET math = 80 WHERE NAME = '孙悟空' ;
-- 将曹孟德同学的数学成绩变更为60分,语文成绩变更为70分
UPDATE exam SET math = 60,chinese = 70 WHERE name = '曹孟德';
-- 将数学成绩前三名的同学的数学分数减30分
UPDATE exam SET math = math - 30 ORDER BY math DESC LIMIT 3;
-- 将语文成绩低于50分的同学的语文分数变为原来的2倍
UPDATE exam SET chinese = chinese*2 WHERE chinese < 50;

END

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

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

相关文章

小试牛刀-walletconnect二维码及交互

目录 1.编写目的 2.实现功能 3.功能详解 依赖组件 3.1 二维码生成 3.1.1 初始化SignClient 3.1.2 创建会话空间获取WC协议uri 3.1.3 生成二维码供用户扫描 3.1.4 等待扫描 3.2 发送交易事务 3.2.1 创建交易事务 3.2.2 向用户发送交易事务 3.3 签名事务 3.3.1 接收…

使用AI绘图工具生成风景图像的教程

随着人工智能技术的飞速发展&#xff0c;AI绘图工具在图像生成和艺术创作方面变得越来越强大&#xff0c;无论你是一个设计师、艺术家&#xff0c;还是仅仅对生成艺术感兴趣的爱好者&#xff0c;AI绘图工具都可以帮助你轻松地创作出惊艳的风景图像。 在这篇教程中&#xff0c;…

医疗设备漏费控制管理系统的必然性及未来发展性

医疗设备控费的必然性 医疗改革的要求 随着医疗改革的不断深入&#xff0c;原有的医药模式已经发生了改变。药品和耗材零差价的执行&#xff0c;使得医院需要寻找新的开源节流、降耗增效的方法。医疗设备控费系统的出现&#xff0c;正是为了满足这种管理需求。 控制成本和优…

【AI】人工智能核心三要素

上图来自甲子光年的资料&#xff0c;如有侵权&#xff0c;请联系删除。 在当今科技飞速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;作为引领未来科技变革的重要力量&#xff0c;正以前所未有的速度改变着我们的生活、工作乃至整个社会的面貌。人工智能之所以能…

文件Io编程基础

1. 标准I/O (stdio.h) stdio.h 是标准C库的头文件&#xff0c;包含了输入输出函数的声明。位置&#xff1a;/usr/include/stdio.h 2. 文件I/O操作步骤 打开文件: 使用 fopen 函数&#xff0c;返回 FILE* 指针。读/写操作: 使用 fread、fwrite、fgets、fputs、fprintf、fscan…

【SOC】SoC架构系统总线的QoS管理——QoS generator

#工具文档理解# QoS——Quality of Service 目录 一、概念 Master对于Latency的敏感性 流量控制和事务级概念 Splitting Pending order IDs 数据包创建和传输的QoS 序列化 一、概念 这一部分描述了QoS机制如何平衡不同发起者的流量访问&#xff0c;以适应互连的有限可…

都2024年了,SQL语句还需要手写吗?

前言 在当今的AI时代&#xff0c;数据库管理和SQL开发已不再是单调的编码过程。借助AI的智能化工具&#xff0c;数据库操作变得更加简洁高效&#xff0c;错误率也大大降低。特别是当AI与强大的数据库管理工具Navicat相结合时&#xff0c;开发者可以更加专注于数据的分析和应用…

home assistant 接入国家电网

一、安装加载项 在 配置 - 加载项 File editorAdvanced SSH & Web Terminal 二、安装state_grid 上传压缩包 在 File editor中&#xff0c;进入 homeassistant - custom_components 文件夹中&#xff0c;点击上传文件。 文件下载路径 https://download.csdn.net/downl…

密码学基础-身份认证

密码学基础-身份认证 概述 书信的亲笔签名&#xff1b;公文、证书的印章起到了核准、认证的功能。 如前文密码学基础-数据加密所述&#xff0c;信息安全少不了身份认证的话题。只有认证了信息的来源&#xff0c;我们才能知道这条信息是否是正确的&#xff0c;合法的&#xff…

如何让贵人一直帮你?

如果有贵人提携了你一把&#xff0c;牢记一定要抱住大腿。 如果一个段位比你高很多的贵人帮了你一个忙&#xff0c;他什么都不缺&#xff0c;他缺的也不是你这个层次的人能够给的了的&#xff0c;但你千万不要以为这个事儿就翻篇儿了。牢记一招&#xff0c;每隔半年给他汇报一下…

超声波眼镜清洗机有用吗?品质上等的超声波清洗机评选

超声波眼镜清洗机有用吗&#xff1f;眼镜是我们日常生活中不可或缺的配件&#xff0c;其卫生状况对健康至关重要。由于眼镜经常与外界环境接触&#xff0c;容易积聚细菌。为了有效解决这一问题&#xff0c;大家都纷纷选择使用超声波清洗机来进行彻底清洁。所以&#xff0c;超声…

C语言基础知识点(十三)结构体的深拷贝与浅拷贝

在C或C等语言中&#xff0c;结构体&#xff08;Struct&#xff09;是一种用户自定义的数据类型&#xff0c;它允许将不同类型的数据项组合成一个单一的类型。对于结构体的拷贝&#xff0c;存在深拷贝&#xff08;Deep Copy&#xff09;和浅拷贝&#xff08;Shallow Copy&#x…

DataWhale市场博弈和价格预测

文章目录 市场博弈和价格预测任务数据出清价格的形成步骤代码运行 Task1&#xff1a;跑通baseline使用ABM估计市场出清价格转换耗煤量为机组报价保存结果为submit.csv Task2&#xff1a;时间序列挖掘ABM构建学习数据基本信息统计指标分析数据分布分时统计特征不同小时的总负荷和…

错误代码0x80004005:全面解析与解决策略

在Windows操作系统中&#xff0c;错误代码0x80004005是一个相当常见的提示&#xff0c;它通常表示一个未指定的错误或一个无法找到的错误。这个错误可能出现在多种场景中&#xff0c;包括软件安装、系统更新、网络连接、文件操作等。由于其普遍性和模糊性&#xff0c;理解和解决…

搭建链路追踪系统 Jaeger

搭建链路追踪系统 Jaeger 架构 架构图 架构设计 在设计以 Jaeger 为中心的链路追踪系统时&#xff0c;我们采用微服务架构模式。 Jaeger 作为核心追踪系统&#xff0c;负责收集、存储和展示分布式追踪数据。Elasticsearch 作为后端存储&#xff0c;提供数据的持久化和高效…

网鼎杯之unfinish

题目来源&#xff1a;网鼎杯 2018 题目描述&#xff1a;SQL 问题&#xff1a;给一个页面&#xff0c;如何判断其有漏洞 通过awvs扫描得知存在 register.php 注册页面&#xff0c;并且注册界面存在SQL盲注漏洞。 题目提示SQL&#xff0c;在注册页面测试无果&#xff0c;且发现输…

解决Ubuntu报“无法解析域名cn.archive.ubuntu.com“问题

今天在Ubuntu系统上&#xff0c;使用sudo apt update命令&#xff0c;进行更新时&#xff0c;弹出"无法解析域名 cn.archive.ubuntu.com"问题&#xff0c;如图(1)所示&#xff1a; 图(1) 弹出"无法解析域名 cn.archive.ubuntu.com" 错误 出现这种现象的原因…

C++并发编程(一):线程基础

简介 本文学习的是 b 站 up 恋恋风辰的并发编程教学视频做的一些笔记补充。 教程视频链接如下&#xff1a;线程基础&#xff1a;视频教程 文档链接如下&#xff1a;线程基础&#xff1a;笔记文档 理论上直接看 up 提供的笔记文档即可&#xff0c;我这里主要是记录一些我自己…

免费qq号码估价的工具和软件

目前有多种 qq 号码估价的工具和软件。例如&#xff0c;晒号网的 QQ 估价器可以根据 QQ 号码等级、QQ 号码资深度、QQ 号码年限、活跃时间等进行准确的 QQ 号码估价。此外&#xff0c;还有其他一些相关的估价软件和平台&#xff0c;如 QQ 号码估价 2.0 全新玩法&#xff0c;利用…

复现opendrivelab的“点云预测”项目

本文的主要工作就是复现下述论文中的算法。 该论文全称&#xff1a;Visual Point Cloud Forecasting 论文内容在此不做过多介绍&#xff0c;直接上项目。 一、准备工作 首先通读readme.md文件的内容&#xff0c;了解所需要的相关依赖和数据等内容。 一定要多读几遍&#xf…