MySQL:CRUD(增删查改)
目录
一、准备工作
二、Create 新增
1、语法
2、单行数据全列插入
3、单行数据指定列插入
4、多行数据指定列插入
5、多行数据全列插入
三、Retrieve 检索
1、语法
2、全列查询
3、指定列查询
4、查询字段为表达式
(1)常量表达式
(2)表达式包含字段
5、为查询结果指定别名
6、结果去重查询
7、Where条件查询
(1)语法:
(2)比较运算符
(3)逻辑运算符
(4)基本查询
(5)AND和OR
(6)范围查询
(7)模糊查询
(8)NULL的查询
8 、Order by 排序
(1)语法
9、分页查询
(1)语法
四、Update修改
1、语法
五、Delete 删除
1、语法
在上一篇文章我们已经简单了解了库和表的操作,而我们在创建表的时候会建立很多的列,但是如果我们在原本的基础进行更改我们该怎么办呢?总不能把这个表删了,在创建一个新表吧,这太麻烦了。因此我们的数据库中也是具有增删查改(CRUD)的功能的。
一、准备工作
在对这些操作了解之前,我们先做好准备工作:创建库和表
为了保险我们先判断这个库是否存在就将他删除,然后再创建

当然创建表前也可以进行上述检验

好了这样我们的准备就做好了,接下来就开始我们的CRUD学习
二、Create 新增
1、语法
INSERT [INTO] table_name[(column [, column] ...)]VALUES (value_list) [, (value_list)] ...value_list: value, [, value] ...
大家看着这个语法可能有些不理解,我们其实可以将他用汉字表达下
INSERT INTO 表名 [列1,列2....] VALUES(值,值);
- insert into : 插入的关键字,后面接要插入数据的表名,表名后面可以根据查询方式指定要插入的列
- values :插入数据的关键字,后面接要插入的数据
2、单行数据全列插入
全列插入:我们就不需要指定列进行插入了,这样我们的列就可以省略了,接下来我们就可以根据上面的语法进行编写
使用:

我们可以查看一下我们是否插入成功,这就要用到了我们下面要了解的查询操作,我们先在这里演示一下 。

可以看到我们是成功的在表中插入了数据
3、单行数据指定列插入
指定列插入:在这里我指定了我们接下来要插入数据对应的列,我们需要写上我们要插入数据的列是那些,同时要插入值的数量必须和指定列数量及顺序一致
使用:

查看:
我们发现我们这时指定了全部的列进行插入,如果我们要插入下一个学生的数学成绩不存在,我们就可以不指定插入数学成绩,但是此时这个学生的数学成绩会显示什么呢?

我们发现在这里他显示的将会是一个空值
4、多行数据指定列插入
多行数据插入:既然我们可以指定多个列插入,那么我们也一定可以让多个不同行的数据进行插入,而插入的方法其实很简单,只需要在插入值的后边加上 ' , ' 然后在插入新的一行数据即可
使用:

查看:

5、多行数据全列插入
这个其实和我们上面展示的指定全部列插入是一样的,只是比他省略了列,因此在我们要全部插入时,使用全列插入即可。

查看:

三、Retrieve 检索
1、语法
SELECT[DISTINCT]select_expr [, select_expr] ...[FROM table_references][WHERE where_condition][GROUP BY {col_name | expr}, ...][HAVING where_condition][ORDER BY {col_name | expr } [ASC | DESC], ... ][LIMIT {[offset,] row_count | row_count OFFSET offset}]
DISTINC ,FROM,WHERE,GROUP BY,HAVING,ORDER BY ...[ASC | DESC],LIMIT这些都是我们的一些不同的查询方式,接下来我们会对他们一一进行讲解
2、全列查询
查询语句:select * from 表名;
这个方式在上面我们已经进行了使用,现在我们就对他进行一下了解
- select :查询的关键字,后面接要查询的列
- ' * ' :代表表中全部的列
- from : 后面接我们要查询的表名
使用:

3、指定列查询
查询语句:select [列1,列2...] from 表名;
使用:

4、查询字段为表达式
(1)常量表达式
查询的列有一个列为常量表达式

这个常量是可以进行计算的

(2)表达式包含字段
我们是可以利用这种表达式的方式让我们当前列的值进行某种运算的

同时这个表达式也是可以包含多个字段的,这样我们发现我们就可以直接得到所有学生的总成绩了

当然我们这里需要注意:如果我们要进行运算的数据存在NULL,那么他最后的结果就是NULL
5、为查询结果指定别名
我们其实可以发现我们上述获得总分后形成的表,不是很美观,上面的列名过长了,既然这样我们是否可以将他变短呢?这就要用到我们的别名了
语法:
SELECT column [AS] alias_name [, ...] FROM table_name;
select [列名] as [别名] from 表名
在这里我们的as可以省略
使用:

省略 as :![]()
当然我们的别名也是可以用汉字的:

但是我们使用汉字的时候最好加上 (' ')单引号,因为如果我定义的汉字别名中间有空格就会报错


6、结果去重查询
我们目前表里并没有重复的数据,在插入一组数据

这回我们查询我们的数学列

进行去重查询

注意:使用DISCTINCT去重时,只有查询列表中所有列的值都相同才会判定为重复

如果我们加上id了他就不是我们所有的查询列表都相同因为我们的id列是不同的,因此我们不能进行去重
7、Where条件查询
(1)语法:
SELECTselect_expr [, select_expr] ... [FROM table_references]WHERE where_condition
select [列1,列2...] from 表名 where 条件
看到这里,我们发现where后面是要跟着一些条件的,而这些条件的形成就取决于我们下面的这些运算符
(2)比较运算符
| 运算符 | 说明 |
| >, >=,<,<= | 大于,大于等于,小于,小于等于 |
| = | 等于,对于NULL的比较不安全,比如NULL=NULL结果还是NULL |
| <=> | 等于,对于NULL的比较是安全的,比如NULL<=>NULL结果是TRUE(1) |
| !=,<> | 不等于 |
| value BETWEEN a0 AND a1 | 范围匹配,[a0,a1],如果a0<= value<= a1,返回TRUE或1,NOT BETWEEN则取反 |
| value lN (option, ...) | 如果value 在optoin列表中,则返回TRUE(1),NOTIN则取反 |
| IS NULL | 是NULL |
| IS NOT NULL | 不是NULL |
| LIKE | 模糊匹配,% 表示任意多个(包括0个)字符; _表示任意一个字符,NOT LIKE则取反 |
(3)逻辑运算符
| 运算符 | 说明 |
| AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
| OR | 任意一个条件为 TRUE(1),结果为 TRUE(1) |
| NOT | 条件为 TRUE(1),结果为 FALSE(0) |
(4)基本查询
① 查询语文小于70的学生及其成绩

② 查询语文成绩高于英语成绩的同学及其成绩

③ 查询总分在200以下的学生及其成绩

注意:这里会自动将为NULL的值过滤掉

同时,我们发现我们对所有成绩的和使用了别名,但是where后面的条件却没有根据别名进判断,
这是因为我们语句的执行顺序是:from -> where -> select。
会先选择要操作的表,然后进行条件筛选,最后将筛选的结果进行展示
(5)AND和OR
① 查询语文成绩大于80分且英语成绩大于80分的同学

② 查询语文成绩大于80分或英语成绩大于80分的同学

③ AND和OR的优先级
and 的优先级是要高于 or 的所以我们在写类似以下语句时

我们要先明确我们哪一个要先执行,如果or要先执行,要加上()

(6)范围查询
① 语文成绩在[80,90]分的同学及语文成绩
between ... and ...

and

② 数学成绩是78或者79或者98或者99分的同学及数学成绩
in()

or

(7)模糊查询
% 表示任意多个(包括0个)字符
① 查询所有姓孙的同学

_表示任意一个字符
②查询姓孙且姓名共有两个字同学 /三个字


(8)NULL的查询
is null
① 查询数学成绩为NULL的记录
在上面我们曾发现有一位同学的数学成绩为null,那么我们接下来就根据这个null找到这位同学

② 查询数学成绩不为NULL的记录
当然我们能根据null去找为数学null的同学,那么我们也一定可以去找不为数学null的同学

在查询的过程中我们是推荐加上NULL过滤条件的 。
但是我们要注意,当我们要进行判断成绩是否为NULL作为条件过滤,不要使用等于号(=)与不等于号(!=,<>)。
因为在我们进行NULL与NULL的判断时只有,(<=>) 能得到true(1),其他的的判断结果都为NULL
8 、Order by 排序
(1)语法
-- ASC
为升序(从⼩到⼤)-- DESC
为降序(从⼤到⼩)--
默认为 ASC
SELECT ... FROM table_name [WHERE ...] ORDER BY {col_name | expr } [ASC | DESC], ... ;
select [列1,列2...] from 表名 【where 条件】 order by 列名 asc / desc ;
① 按数学成绩从低到高排序(升序)

注意:在这里NULL默认比任何数都要小
② 按语文成绩从高到低排序(降序)

注意:这里的desc是用来降序排列的,不是之前的查看表结构
③ 查询同学各门成绩,依次按数学降序,英语升序,语文升序的方式显示

④ 查询同学及总分,由高到低排序

注意:在这里示可以使用别名的,因为这里的执行顺序示:from -> select -> order by.
先选择要操作的表,然后再表中进行查询和计算,最后再根据计算的结果进行排序
9、分页查询
(1)语法
-- 起始下标为0
-- 从0 开始,筛选num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num;
-- 从start 开始,筛选 num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT start,num;
-- 从start 开始,筛选num 条结果
SELECT ... FROM table_name [WHERE ...] [ORDER BY ...] LIMIT num OFFSET start;
我们以3个数据当成一页进行查询
① 查询第一页数据(升序)
LIMIT num:默认从0开始

LIMIT start,num:从start位置开始

LIMIT num OFFSET start:从start位置开始

② 查询第二页数据(升序)

③ 查询第三页数据(升序)

注意:start没有超过limit最大条数,有多少条就显示多少条,超过就显示为空

四、Update修改
1、语法
UPDATE [LOW_PRIORITY] [IGNORE] table_referenceSET assignment [, assignment] ...[WHERE where_condition][ORDER BY ...][LIMIT row_count]
update 表名 set 修改 where 要修改的行 【order by】【limit】
① 修改一个:将孙悟空同学的数学成绩变更为80分

② 修改多个:将曹孟德同学的数学成绩变更为60分,语文成绩变更为70分

③ 将总成绩倒数前三的3位同学的数学成绩加上30分
再这里我们要利用is not null将等于null的过滤掉

五、Delete 删除
1、语法
DELETE FROM tbl_name [WHERE where_condition] [ORDER BY ...] [LIMIT row_count]
delete from 表名 where 删除的列 【order by】【limit】
① 删除孙悟空同学的考试成绩

② 删除math 数学成绩为空的同学

③ 将总成绩倒数前三的3的同学删除

④ 删除整张表的数据

好了,今天的分享就到这里了,还请大家多多关注我们下一篇见!
相关文章:
MySQL:CRUD(增删查改)
目录 一、准备工作 二、Create 新增 1、语法 2、单行数据全列插入 3、单行数据指定列插入 4、多行数据指定列插入 5、多行数据全列插入 三、Retrieve 检索 1、语法 2、全列查询 3、指定列查询 4、查询字段为表达式 (1)常量表达式 &…...
德鲁伊连接池
德鲁伊连接池(Druid Connection Pool)是一个开源的Java数据库连接池项目,用于提高数据库连接的性能和可靠性。德鲁伊连接池通过复用数据库连接、定时验证连接的可用性、自动回收空闲连接等机制,有效减少了数据库连接的创建和销毁开…...
【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器---tinyEasyMuduoWebServer
【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器—tinyEasyMuduoWebServer csdn项目: 原文链接:https://blog.csdn.net/weixin_45178775/article/details/122257814 github链接:https://github.com/wyewyewye/tinyEasyMuduo…...
每周一个网络安全相关工具——MetaSpLoit
一、Metasploit简介 Metasploit(MSF)是一款开源渗透测试框架,集成了漏洞利用、Payload生成、后渗透模块等功能,支持多种操作系统和硬件平台。其模块化设计(如exploits、auxiliary、payloads等)使其成为全球…...
Python入门———条件、循环
目录 语句 顺序语句 条件语句 缩进和代码块 判断年份是否是闰年 空语句 pass 循环 while 循环 求5的阶乘: 求1!2!3!4!5! for循环 打印1-10 打印2,4,6,8&#x…...
InDraw6.2.3 | 甾体、核苷、黄酮类化合物实现简称命名
导语 当化学家对着屏幕输入"2-amino-1,9-dihydro-6H-purin-6-one"时,隔壁生物学家可能正在搜索"鸟嘌呤";这种命名差异如同"火星文"与"地球语"的碰撞。现在,鹰谷InDraw 6.2.3版带着53种多环化合物的…...
Linux中的TCP编程接口基本使用
TCP编程接口基本使用 本篇介绍 在UDP编程接口基本使用已经介绍过UDP编程相关的接口,本篇开始介绍TCP编程相关的接口。有了UDP编程的基础,理解TCP相关的接口会更加容易,下面将按照两个方向使用TCP编程接口: 基本使用TCP编程接口…...
系统部署【信创名录】及其查询地址
一、信创类型 (一)服务器: 1.华为云 2.腾讯云 3.阿里云 (二)中央处理器(CPU): 1.海思,鲲鹏920服务器 (三)中间件 1.人大金仓 ࿰…...
JavaWeb后端基础(7)AOP
AOP是Spring框架的核心之一,那什么是AOP?AOP:Aspect Oriented Programming(面向切面编程、面向方面编程),其实说白了,面向切面编程就是面向特定方法编程。AOP是一种思想,而在Spring框…...
Python 中多种方式获取屏幕的 DPI值
在 Python 中,可以通过多种方式获取屏幕的 DPI(每英寸点数)。以下是几种常见的方法: 方法 1:使用 tkinter 模块 tkinter 是 Python 的标准 GUI 库,可以通过它获取屏幕的 DPI。 import tkinter as tkdef …...
高效数据分析实战指南:Python零基础入门
高效数据分析实战指南 —— 以Python为基石,构建您的数据分析核心竞争力 大家好,我是kakaZhui,从事数据、人工智能算法多年,精通Python数据分析、挖掘以及各种深度学习算法。一直以来,我都发现身边有很多在传统行业从…...
Unity DOTS从入门到精通之EntityCommandBufferSystem
文章目录 前言安装 DOTS 包ECBECB可以执行的指令示例: 前言 DOTS(面向数据的技术堆栈)是一套由 Unity 提供支持的技术,用于提供高性能游戏开发解决方案,特别适合需要处理大量数据的游戏,例如大型开放世界游…...
开放充电点协议(OCPP)技术解析:架构演进与通信机制 - 慧知开源充电桩平台
开放充电点协议(OCPP)技术解析:架构演进与通信机制 引言 开放充电点协议(Open Charge Point Protocol, OCPP)作为电动汽车充电基础设施的核心通信标准,其技术架构与实现逻辑直接影响充电桩与中央管理系统&…...
MySQL 索引的数据结构(详细说明)
6. MySQL 索引的数据结构(详细说明) 文章目录 6. MySQL 索引的数据结构(详细说明)1. 为什么使用索引2. 索引及其优缺点2.1 索引概述 3. InnoDB中索引的推演3.1 索引之前的查找3.2 设计索引3.3 常见索引概念1. 聚簇索引2. 二级索引(辅助索引、非聚簇索引)…...
初学者快速入门Python爬虫 (无废话版)
全篇大概 5000 字(含代码),建议阅读时间 40min 一、Python爬虫简介 1.1 什么是网络爬虫? 定义: 网络爬虫(Web Crawler)是自动浏览互联网并采集数据的程序,就像电子蜘蛛在网页间"爬行"。 分类&…...
【git】ssh配置提交 gitcode-ssh提交
【git】ssh配置提交 gitcode-ssh提交 之前一直用的是gitee和阿里云的仓库,前两天想在gitcode上面备份一下我的打洞代码和一些资料 就直接使用http克隆了下来 。 在提交的时候他一直会让我输入账号和密码,但是我之前根本没有设置过这个,根本没…...
【二】JavaScript能力提升---this对象
目录 this的理解 this的原理 事件绑定中的this 行内绑定 动态绑定 window定时器中的this 相信小伙伴们看完这篇文章,对于this的对象可以有一个很大的提升! this的理解 对于this指针,可以先记住以下两点: this永远指向一个…...
C++————类和对象(一)
1.类定义格式 在C中,类(class)是封装数据和操作这些数据的函数的构造。类的定义包含成员变量和成员函数。 类的基本定义格式如下: class ClassName {// 访问修饰符public:// 公有成员DataType memberVariable; // 成员变量voi…...
SpringBoot参数校验:@Valid 与 @Validated 详解
SpringBoot参数校验:Valid 与 Validated 详解 一、案例(参数校验的必要性) 传统方式(无注解)的缺点: // 需要手动校验每个字段,代码冗余且易出错 public String register(User user) {// 手动…...
<论文>MiniCPM:利用可扩展训练策略揭示小型语言模型的潜力
一、摘要 本文跟大家一起阅读的是清华大学的论文《MiniCPM: Unveiling the Potential of Small Language Models with Scalable Training Strategies》 摘要: 对具有高达万亿参数的大型语言模型(LLMs)的兴趣日益增长,但同时也引发…...
SpringCloud系列教程(十三):Sentinel流量控制
SpringCloud中的注册、发现、网关、服务调用都已经完成了,现在就剩下最后一部分,就是关于网络控制。SpringCloud Alibaba这一套中间件做的非常好,把平时常用的功能都集成进来了,而且非常简单高效。我们下一步就完成最后一块拼图Se…...
Codeforces Round 502 E. The Supersonic Rocket 凸包、kmp
题目链接 题目大意 平面上给定两个点集,判定两个点集分别形成的凸多边形能否通过旋转、平移重合。 点集大小 ≤ \leq ≤ 1 0 5 10^{5} 105,坐标范围 [0, 1 0 8 10^{8} 108 ]. 思路 题意很明显,先求出凸包再判断两凸包是否同构。这里用…...
论文阅读方法
文章目录 步骤一:对论文进行自我判断阅读题目和关键词。阅读摘要阅读总结要点 步骤二:阅读文章阅读图表和图表的注释阅读引言阅读实验部分阅读结果和作者对结果的讨论(创新点)要点 步骤三:精度论文回答问题1回答问题2回…...
ArcGIS操作:15 计算点的经纬度,并添加到属性表
注意:需要转化为地理坐标系 1、打开属性表,添加字段 2、计算字段(以计算纬度为例 !Shape!.centroid.Y ) 3、效果...
蓝桥杯历年真题题解
1.轨道炮(数学模拟) #include <iostream> #include <map> using namespace std; const int N1010; int x[N],y[N],v[N]; char d[N]; int main() {int n;int ans-100;cin>>n;for(int i1;i<n;i)cin>>x[i]>>y[i]>>v…...
IP-地址
主机号(Host ID) IP地址简介:IP地址是每台接入互联网的设备所拥有的唯一标识符,类似于电话号码的分层结构,由网络号和主机号组成。为了便于记忆,32位二进制的IP地址通常以点分十进制表示。 网络号…...
MoonSharp 文档一
目录 1.Getting Started 步骤1:在 IDE 中引入 MoonSharp 步骤2:引入命名空间 步骤3:调用脚本 步骤4:运行代码 2.Keeping a Script around 步骤1:复现前教程所有操作 步骤2:改为创建Script对象 步骤…...
2025-03-08 学习记录--C/C++-PTA 习题10-1 判断满足条件的三位数
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 裁判测试程序样例: #include <stdio.h> #include <math.h>int search( int n );int…...
三星首款三折叠手机被曝外屏6.49英寸:折叠屏领域的新突破
在智能手机的发展历程中,折叠屏手机的出现无疑是一次具有里程碑意义的创新。它打破了传统手机屏幕尺寸的限制,为用户带来了更加多元和便捷的使用体验。而三星,作为手机行业的巨头,一直以来都在折叠屏技术领域积极探索和创新。近日,三星首款三折叠手机的诸多细节被曝光,其…...
大白话Vue Router 中路由守卫(全局守卫、路由独享守卫、组件内守卫)的种类及应用场景
大白话Vue Router 中路由守卫(全局守卫、路由独享守卫、组件内守卫)的种类及应用场景 答题思路 明确要介绍的内容:需要分别介绍 Vue Router 中全局守卫、路由独享守卫和组件内守卫这三种路由守卫的种类,详细说明它们的定义、使用…...



