【MySQL】表的增删改查(二)

news2025/1/9 15:10:59

 你可以了解世间万物,但追根溯源的唯一途径便是亲身尝试。——《心灵捕手》


前言:

大家好,上期我们讲到了表的GRUD操作中的新增数据、查询数据以及表中数据的排序、去重等操作,本期讲解条件查询、修改数据、删除数据的简单操作,很容易理解。一起来看看吧。表的增删改查(一)


目录

1、条件查询

1.1比较运算符

1.1.1基本查询

1.1.2范围查询

1.1.3IN查询

1.1.4LIKE查询

1.1.5IS NULL和IS NOT NULL

1.2逻辑运算符

1.2.1AND查询

1.2.2OR用法

1.2.3NOT用法

2、修改数据

3、删除数据

总结:

1、查询

2、修改

3、删除

4、插入


1、条件查询

  • WHERE条件可以使用表达式,但不能使用别名。
  • AND的优先级高于OR,在同时使用时,需要使用小括号()包裹优先执行的部分

1.1比较运算符

运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于
=等于,NULL不稳定,例如NULL=NULL的结果是NULL
<=>等于,NULL稳定,例如NULL<=>NULL的结果是TRUE(1)
!=,<>不等于
BETWEEN a AND b匹配范围,[a,b],如果a<+value<=b,返回TRUE(1)

IN(option,...)

如果是()中的任意一个,就返回TRUE(1)
IS NULL是空
IS NOT NULL不是空
LIKE模糊查询。%表示任意多个(包括0个)任意字符;_表示任意一个字符

首先我们来创建一个名为student_grade的成绩表:

mysql> create table student_grade(
    -> id int,
    -> name varchar(20),
    -> english decimal(3,1),
    -> math decimal(3,1),
    -> chinese decimal(3,1)
    -> );
Query OK, 0 rows affected (0.02 sec)
mysql> insert into student_grade (id,name,english,math,chinese) values
    -> (1,'Turr',55,66,76),
    -> (2,'Rorric',65,77,65),
    -> (3,'Coline',43,56,76),
    -> (4,'Bob',77,66,64),
    -> (5,'Tom',53,74,66);
Query OK, 5 rows affected (0.00 sec)
Records: 5  Duplicates: 0  Warnings: 0

  窗口显示为:


1.1.1基本查询

当我们要查询某一条件下的数据,我们直接在where后面写出判断条件,格式为:where 字段(<、>、<=>、!=、<>)数字

比如我要查询英语不及格的同学即英语成绩 <60的学生。

mysql> select name,english from student_grade where english <60;
+--------+---------+
| name   | english |
+--------+---------+
| Turr   |    55.0 |
| Coline |    43.0 |
| Tom    |    53.0 |
+--------+---------+
3 rows in set (0.00 sec)

  窗口显示:


当然你也可以进行字段与字段之间的比较,格式为:where 字段1 判断符 字段2;

查询语文成绩好于英语成绩的同学 

mysql> select name,chinese ,english from student_grade where chinese>english;
+--------+---------+---------+
| name   | chinese | english |
+--------+---------+---------+
| Turr   |    76.0 |    55.0 |
| Coline |    76.0 |    43.0 |
| Tom    |    66.0 |    53.0 |
+--------+---------+---------+
3 rows in set (0.00 sec)

 窗口显示:


我们也可以给表达式起别名的时候同时进行条件判断,起别名在上一期表的增删改查中详细讲解到了,我们直接用就好了。表达式判断格式为:字段1 算术运算符(+、-、*等) 字段2 算术运算符(+、-、*等) 字段n 条件判断符 数字;

查询总分在200分以下的同学并且给表达式起名为sum:

mysql> select name,chinese + math + english sum from student_grade
    -> where chinese + math + english < 200;
+--------+-------+
| name   | sum   |
+--------+-------+
| Turr   | 197.0 |
| Coline | 175.0 |
| Tom    | 193.0 |
+--------+-------+
3 rows in set (0.00 sec)

  窗口显示:


1.1.2范围查询

当你想查找一个范围里面的数据时,你可以使用between  and 来查询,格式为:select 字段 from 表名 where 字段 between 数字 and 数字;

比如我要查找语文成绩在70-80之间的同学:

mysql> select name,chinese from student_grade where chinese between 70 and 80;
+--------+---------+
| name   | chinese |
+--------+---------+
| Turr   |    76.0 |
| Coline |    76.0 |
+--------+---------+
2 rows in set (0.00 sec)

窗口显示:

1.1.3IN查询

in查询就是查找某一列值满足一堆数字里面的值,格式为:select 字段 from 表名 where 字段 in(数据1,数据n);

查询数学成绩是56或者66或者77分的同学及数学成绩:

mysql> select name,math from student_grade where math in(56,66,77);
+--------+------+
| name   | math |
+--------+------+
| Turr   | 66.0 |
| Rorric | 77.0 |
| Coline | 56.0 |
| Bob    | 66.0 |
+--------+------+
4 rows in set (0.00 sec)

窗口显示:


1.1.4LIKE查询

like为模糊查询,分为%和_两中查询。%为 匹配任意多个(包括 0 个)字符。通常查询姓为什么的数据,格式为select 字段 from 表名 where 字段 like '字段%';

比如我要查询开头为T的所有同学:

mysql> select name from student_grade where name like 'T%';
+------+
| name |
+------+
| Turr |
| Tom  |
+------+
2 rows in set (0.00 sec)

窗口显示:

_ 匹配严格的一个任意字符,格式为:select 字段 from 表名 where 字段 like'字段_';其中_可以为多个。
比如我要查询开头为T且姓名长度为三的同学:

mysql> select name from student_grade where name like 'T__';
+------+
| name |
+------+
| Tom  |
+------+
1 row in set (0.00 sec)

窗口显示:

查询名字为T开头且总长度三个字符的同学只需要将姓写在开头加上两个_即可,比如Tom写为'T__'


1.1.5IS NULL和IS NOT NULL

由于student_grade表中没有一个值为空,我们来增加几个空值。我们使用多行插入,插入两行信息。怎样插入数据在表的增删改查(一)中有详细介绍。

mysql> insert into student_grade (name,chinese,math,english) values
    -> (6,'sarah',68,89,NULL),
    -> (7,'Tommy',NULL,60,80);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from student_grade;
+------+--------+---------+------+---------+
| id   | name   | english | math | chinese |
+------+--------+---------+------+---------+
|    1 | Turr   |    55.0 | 66.0 |    76.0 |
|    2 | Rorric |    65.0 | 77.0 |    65.0 |
|    3 | Coline |    43.0 | 56.0 |    76.0 |
|    4 | Bob    |    77.0 | 66.0 |    64.0 |
|    5 | Tom    |    53.0 | 74.0 |    66.0 |
|    6 | sarah  |    NULL | 89.0 |    68.0 |
|    7 | Tommy  |    80.0 | 60.0 |    NULL |
+------+--------+---------+------+---------+
7 rows in set (0.00 sec)

窗口显示:

is null的用法,is null就是满足空。语法比较简单,我们直接来看实例查询英语成绩为空的学生:

mysql> select name,english from student_grade where english is null;
+-------+---------+
| name  | english |
+-------+---------+
| sarah |    NULL |
+-------+---------+
1 row in set (0.00 sec)

窗口显示:

is not null的用法,is not null就是满足不是空。语法比较简单,我们直接来看实例查找英语成绩非空的学生:

mysql> select id,name,english,math,chinese from student_grade where english is not null;
+------+--------+---------+------+---------+
| id   | name   | english | math | chinese |
+------+--------+---------+------+---------+
|    1 | Turr   |    55.0 | 66.0 |    76.0 |
|    2 | Rorric |    65.0 | 77.0 |    65.0 |
|    3 | Coline |    43.0 | 56.0 |    76.0 |
|    4 | Bob    |    77.0 | 66.0 |    64.0 |
|    5 | Tom    |    53.0 | 74.0 |    66.0 |
|    7 | Tommy  |    80.0 | 60.0 |    NULL |
+------+--------+---------+------+---------+
6 rows in set (0.00 sec)

窗口显示:


1.2逻辑运算符

运算符说明
AND多个条件必须都为TRUE(1),结果才是TRUE(1)
OR任意一个条件为TRUE(1),结果为TRUE(1)
NOT条件为TRUE(1),结果为FALSE(0)

1.2.1AND查询

我们单独用and来查询一个范围内的数据,跟between and相似。只不过and需要两个表达式。格式为:表达式1 and 表达式2

mysql> select name,chinese from student_grade where chinese >70 and chinese <80;
+--------+---------+
| name   | chinese |
+--------+---------+
| Turr   |    76.0 |
| Coline |    76.0 |
+--------+---------+
2 rows in set (0.00 sec)

  窗口显示:


1.2.2OR用法

or用法是多个表达式组成的,相对于in的用法更为复杂,格式为:select 字段1,字段n from 表名 where 表达式1 or 表达n;

比如我要查询数学成绩为66、77、74的学生:

mysql> select name,math from student_grade where math=66 or math=77 or math=74;
+--------+------+
| name   | math |
+--------+------+
| Turr   | 66.0 |
| Rorric | 77.0 |
| Bob    | 66.0 |
| Tom    | 74.0 |
+--------+------+
4 rows in set (0.00 sec)

窗口显示:


1.2.3NOT用法

not是mysql中的一个逻辑运算符,逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。通常用于检测数据库对象是否存在

mysql> select not 1;
+-------+
| not 1 |
+-------+
|     0 |
+-------+
1 row in set (0.00 sec)

mysql> select !0;
+----+
| !0 |
+----+
|  1 |
+----+
1 row in set (0.00 sec)

窗口显示:


2、修改数据

修改数据语法:UPDATE table_name SET column = expr [, column = expr ...][WHERE ...] [ORDER BY ...] [LIMIT ...]。其中大写的为关键字。

比如我是数学老师有一天我看Tom不爽我把他的数学成绩置为0:

mysql> update student_grade set math=0 where name='Tom';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select name,math from student_grade where name='Tom';
+------+------+
| name | math |
+------+------+
| Tom  |  0.0 |
+------+------+
1 row in set (0.00 sec)

窗口显示:

有一天班主任看Tom被数学老师恶意修改了数学成绩,班主任为Tom报不平把Tom的数学成绩置为了满分并且把不及格的英语成绩置为及格:

mysql> update student_grade set english=60,math=90 where name='Tom';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select name,english,math from student_grade where name='Tom';
+------+---------+------+
| name | english | math |
+------+---------+------+
| Tom  |    60.0 | 90.0 |
+------+---------+------+
1 row in set (0.00 sec)

窗口显示:

数学老师看见班主任把Tom的成绩修改回来了,一气之下把数学倒数前三名学生的数学成绩全部置为了0:

mysql> update student_grade set math=0 order by math limit 3;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select name,math from student_grade;
+--------+------+
| name   | math |
+--------+------+
| Turr   |  0.0 |
| Rorric | 77.0 |
| Coline |  0.0 |
| Bob    | 66.0 |
| Tom    | 90.0 |
| sarah  | 89.0 |
| Tommy  |  0.0 |
+--------+------+
7 rows in set (0.00 sec)

窗口显示:

最后班主任只好妥协了。

以上就是修改数据的用法。举了个例子,希望你能理解。


3、删除数据

删除数据的语法为:DELETE FROM  table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]

删除关于Tom的所有信息:

mysql> delete from student_grade where name='Tom';
Query OK, 1 row affected (0.00 sec)

mysql> select * from student_grade;
+------+--------+---------+------+---------+
| id   | name   | english | math | chinese |
+------+--------+---------+------+---------+
|    1 | Turr   |    55.0 |  0.0 |    76.0 |
|    2 | Rorric |    65.0 | 77.0 |    65.0 |
|    3 | Coline |    43.0 |  0.0 |    76.0 |
|    4 | Bob    |    77.0 | 66.0 |    64.0 |
|    6 | sarah  |    NULL | 89.0 |    68.0 |
|    7 | Tommy  |    80.0 |  0.0 |    NULL |
+------+--------+---------+------+---------+
6 rows in set (0.00 sec)

窗口显示:

 删除student_grade整张表:

窗口显示:


总结:

1、查询

全列查询
select * from 表
指定列查询

select 字段1,字段2... from 表
查询表达式字段
select 字段1+100,字段2+字段3 from 表
别名
select 字段1 别名1, 字段2 别名2 from 表
去重DISTINCT
select distinct 字段 from 表
排序ORDER BY
select * from 表 order by 排序字段
条件查询WHERE
(1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR
(8)NOT
select * from 表 where 条件

2、修改

update 表 set 字段1=value1, 字段2=value2... where 条件

3、删除

delete from 表 where 条件

4、插入

 多行插入
insert into 表(字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);


本期博客到这里就结束了,如有收获,还请三连博主,感谢了!

 Never Give Up


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

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

相关文章

Jlink_V9固件修复教程

最近自己的Jlink坏了&#xff0c;于是找了一个好的Jlink给坏的重新刷了一下固件就修好了。记录一下修复过程&#xff0c;以及遇到的问题。 故障现象&#xff1a;Jlink丢失固件之后指示灯不亮&#xff0c;连接板子时&#xff0c;KEIL无法识别。 注&#xff1a;JLINK_V9主控芯…

【Vue】从vue2到vue3,生命周期函数有何变化之详解

vue2与vue3生命周期的对比&#xff1a; Vue2--------------Vue3 beforeCreate—————–>setup() created————————>setup() beforeMount—————–>onBeforeMount mounted—————-------> onMounted beforeUpdate -————–> onBeforeUpdate u…

Spring Boot自动配置原理(Spring Boot面试题)

目录 1、产生疑惑 2、源码分析 2.1、pom.xml文件分析 2.2、启动类分析 3、总结 1、产生疑惑 当我们第一次使用Spring Boot练习的时候会觉得Spring Boot这么厉害&#xff0c;不管是依赖还是配置&#xff0c;它都为我们准备好了&#xff0c;我们只需要去编写业务代码就可…

[附源码]Python计算机毕业设计Django数字乡村基础治理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

调优四剑客的实战演练,福尔摩斯•K带你轻松优化性能

前言天下武功&#xff0c;唯快不破。在侦探的世界中&#xff0c;破案效率永远是衡量一名侦探能力的不二法门。作为推理界冉冉升起的新星&#xff0c;大侦探福尔摩斯K凭借着冷静的头脑、严谨的思维&#xff0c;为我们展现了一场场华丽而热血的推理盛宴。接下来&#xff0c;我们不…

【运维面试题】访问www.baidu.com背后发生了什么·dns解析过程·ping过程

文章目录 一、访问www.baidu.com背后发生了什么二、dns解析过程答法1(推荐)答法2三、ping过程一、访问www.baidu.com背后发生了什么 1.浏览器解析url是否合法 2.浏览器向DNS服务器请求解析ip地址 3.dns将解析出来的ip地址返回给浏览器 4.三次握手,浏览器与服务器进行tcp连接…

TVM 从入门到精通 | 安装 TVM (Part 2)

By 超神经内容一览&#xff1a;TVM 共有三种安装方法&#xff1a;从源码安装、使用 Docker 镜像安装和 NNPACK Contrib 安装。本文讲解如何通过 Docker 镜像 和 NNPACK Contrib 安装。关键词&#xff1a;TVM Docker 基础教程 欢迎回到 TVM 文档讲解 101&#xff0c;这个系…

【Python+Appium】开展自动化测试(十二)通过坐标定位元素

目录 前言 1&#xff0c;通过绝对坐标定位&#xff08;不推荐&#xff09; 2&#xff0c;通过相对坐标定位&#xff08;推荐&#xff09; 写在最后 前言 在使用appium做app自动化测试的过程中&#xff0c;可能会遇到元素的属性值不是唯一的情况&#xff0c;导致不能通过fin…

Linux上docker部署Mysql备份与恢复

Linux上Mysql备份与恢复 1.完全备份 完整备份是将所选的全部数据都备份起来&#xff0c;将备份文件生成一个镜像&#xff0c;再保存到其他的硬盘分区中。 1.1 完全备份一个或多个完整的库 ps: 博主mysql是用docker部署的&#xff0c;这时候需要进入docker容器进行操作。 d…

太极限了,JDK的这个BUG都能被我踩到!

之前遇到个文件监听变更的问题&#xff0c;刚好这周末有空研究了一番&#xff0c;整理出来分享给大家。 从一次故障说起 我们还是从故障说起&#xff0c;这样更加贴近实际&#xff0c;也能让大家更快速理解背景。 有一个下发配置的服务&#xff0c;这个配置服务的实现有点特…

详解设计模式:访问者模式

访问者模式&#xff08;Visitor Pattern&#xff09;&#xff0c;是在 GoF 23 种设计模式中定义了的行为型模式。据《大话设计模式》中说算是最复杂也是最难以理解的一种模式了。 访问者模式 是一种将数据操作与数据结构分离的设计模式&#xff0c;它可以算是 23 中设计模式中最…

NewStar CTF Week3Misc 4-5Web

目录 <1> Week-3 Misc (1) Whats HTTP (2) qsdzs girlfriend 3 (3) WebShell&#xff01; (4) 混沌的图像 <1> Week-4 Web (1) So Baby RCE(%0A进行rce rev|sort读取flag) (2) UnserializeThree(%0d换行rce) <2> week5-web (1) Give me your photo…

step-by-step 配置 gtest 在 vscode 测试 c/c++(Ubuntu 环境下示范)

1. 去把 gtest 装好 详见&#xff1a;CSND-PangCoder-[Ubuntu]GTest安装和测试-https://blog.csdn.net/qq_36251561/article/details/85319547 2. 在 VS Code 打上这几个插件 印象里打上 C TestMate 下面的就会自动装了…如果没有就手动装一下 3. 编写测试脚本 第一步那…

【Pytorch】第 1 章 :强化学习和 PyTorch 入门

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

Java并发常见面试题(三)

并发编程三大特性 原子性 一次操作或者多次操作&#xff0c;要么所有的操作都得到执行并且不受任何因素的干扰而中断&#xff0c;要么都不会执行。 在 Java 中&#xff0c;可以借助synchronized 、各种 Lock 以及各种原子类实现原子性。synchronized 和各种 Lock 可以保证任…

【吴恩达机器学习笔记】十三、异常检测

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4e3;专栏定位&#xff1a;为学习吴恩达机器学习视频的同学提供的随堂笔记。 &#x1f4da;专栏简介&#xff1a;在这个专栏&#xff0c;我将整理吴恩达机器学习视频的所有内容的笔记&…

[附源码]计算机毕业设计人事系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Contest2850 - 【在线编程平台】2022年计算机类数据结构作业12.20221201-1206

问题 A: 二叉排序树 - 文本输出 题目描述 给定一个序列&#xff0c;使用该序列生成二叉排序树&#xff08;也叫二叉搜索树&#xff0c;BST&#xff09;&#xff0c;然后以本题规定方法输出该二叉排序树。 例&#xff1a; 给定一个序列&#xff1a;43 25 29 67 17 88 54 47 35…

用R语言制作交互式图表和地图

可以直接从R / RStudio制作在线交互式图表和地图。 去年&#xff0c;我们为一位客户进行了短暂的咨询工作&#xff0c;他正在构建一个主要基于在线交互式图表的分析应用程序。 配置 启动RStudio&#xff0c;创建一个新的RScript&#xff0c;然后将工作目录设置为下载的数据文…

git merge origin master和git merge master的区别(个人理解)

先说结论 git merge origin master 意思是当前的分支,进行合并,合并二个分支分别是远程分支master在本地的副本和本地分支的master git merge master 当前分支于本地所处的master分支进行合并 还有就是 git merge origin master是把origin merge 到 master 上的说法是错误的…