MySQL-CRUD-基础-(详解) ┗( ▔, ▔ )┛

news2024/10/22 9:50:08

目录

❄️一、新增(Create):

             ☑ 1、单行数据 + 全列插入:

             ☑ 2、指定列插入:

             ☑ 3、多行插入:

 ❄️二、查询(Retrieve):

             ☑ 1、全列查询:

             ☑ 2、指定列查询:

             ☑ 3、查询字段为表达式:

             ☑ 4、别名:

             ☑ 5、去重(DISTINCT):

             ☑ 6、排序(ORDER  BY):

        1、存在 NULL 数据的情况下:

         2、在使用表达式及别名的情况下:

          3、对多个字段进行排序:

             ☑ 7、条件查询(WHERE):

1、基本查询:

2、AND 和 OR的使用:

3、范围查询:

4、模糊查询:

             ☑ 8、分页查询(LIMIT):

❄️三、修改(Update):

❄️四、删除(Delete):

❄️总结:


我们的 CRUD 呢就是对应着我们的——增删查改,这些操作的。

C——Create ,增

R——Retrieve,查

U——Update,改

D——Delete,删

 我们一一来介绍这些操作。

我们在介绍这些语法之前呢,我们先来创建一个 student 表,来进行操作:


❄️一、新增(Create):

语法:

INSERT  INTO 表名 [(字段1,字段2)]  VALUES  (值,值); 

(这里要注意:字符串类型的值,要使用 单引号 括起来,不想JAVA中使用 双引号)

我们来解释解释,这里面的每一个段的意思: 

我们有几种插入方式,我们来一一介绍:

             ☑ 1、单行数据 + 全列插入:

       对于这个全列插入呢,我们不需要对其 表名后面进行字段的编写,直接就可以按照我们定义的顺序来进行赋值。

以上面的 student 这个表为例:

INSERT  INTO student  VALUES  (值,值,值); 

我们来插入演示一下看看: 

这个就是我们的单行全列插入的演示了,我们再引入一个新的语法—— select * from student; 

查询表中的数据当然这里的 * 可以换成任意的一个 列,这里的 * 代表的是全列查询。 

我们可以看到,当我们的有个值没有对应上,就会报错。 


             ☑ 2、指定列插入:

这个就是非常简单的了,就是字面意思:

INSERT  INTO student (字段1,字段2,字段3)  VALUES  (值,值,值); 

这个呢就比较简单了,我们来看:

这个呢就是指定列插入了,并且没有被指定赋值的列呢,我们会默认赋值为 NULL。 


             ☑ 3、多行插入:

语法:

INSERT  INTO student (字段1,字段2,字段3)  VALUES  (值,值,值),(值,值,值)......

在values后面跟多个 values组,每一组呢表示插入的一个数据行


注意:

      一次插入多条数据(在一个可控范围内),比一次提交一次数据的效率要高那么一点。

所以我们尽可能的在插入数据的时候呢,执行插入多条数据。


 ❄️二、查询(Retrieve):

语法:

SELECT
                [DISTINCT] {*  |  {column  [, column] ...}
                [FROM  table_name]
                [WHERE ...]
                [ORDER  BY  column [ASC  |  DESC], ...]
                LIMIT ...

我们一个一个来介绍都是什么作用。

             ☑ 1、全列查询:

这个语法呢,在上面我们已经了解过了,语法非常的简单:

SELECT    FROM 表名 ;

 

这个就是全列查询的语法和其使用示例。

其中:

1、 * 是表示的是要查询的所有列。 

但是要注意的是

     1、通常情况下,不要使用全列查询的方式,来查询列,因为如果数据太多,而所查的数据只是其中的小部分,这样会大大降低效率,所以不建议使用这个方法。


             ☑ 2、指定列查询:

语法:

SELECT  列,列,列  FROM 表名;

这里要注意的是,我们在这里查询的顺序不需要是按照我们表的定义顺序来

 这个就是我们的 指定列查询的 使用示例。


             ☑ 3、查询字段为表达式:

我们来看第一种表达式的编写方法:

语法:

SELECT  列,列,列,数字  FROM 表名;

 我们可以看到,10这个列呢,同样被查询出来了,但是这里要注意的是呢,我们的 这个 表达式10本身并不在我们的真实的表中。


我们再来看下一种表达式的编写方法:

假如 我们想要把其 所有人的年龄加 10 的话呢,我们要怎样才能做到呢?我们来看:

语法:

SELECT  列,列,列+数字  FROM 表名;

 

我们可以看到,这个年龄在原来的基础上已经 增加了10。


我们重新来创建 student表 这个表:

我们呢,对其每个学生的 成绩计算出它们的总和为多少:

语法:

SELECT  列 + 列 + 列  FROM 表名;

我们来看一下: 

这个就是 我们的对于 列和列之间的表达式了。 

      我们的表中是没有上面表达式这个列的,其实是存于一个临时表中,当我们执行完之后呢就会把这个临时表给删除了。


             ☑ 4、别名:

   我们在上面的 列和列之间形成表达式,但是呢由这个 表达式 而形成的列名呢,是不是非常的长,所以呢,这里我们可以使用 —— 别名,来是其 列的长度缩减下来,我们来看看如何使用:

语法:

SELECT  列 + 列 + 列 [ AS ] 别名 FROM 表名;

     这样呢就是我们 别名的使用方法了,但是其实,我们如果不写 as 的话呢同样可以达到这样的效果,我们来看看当不使用 as 的情况下,是不是和上面一样的结果:

我们可以看到是相同的结果。 


             ☑ 5、去重(DISTINCT):

我们在上面的查询中已经介绍了对于 查询的语法了,那么其中的 DISTINCT 就是 —— 去重的作用

那么其中的语法是什么呢?我们来看:

语法:

SELECT  DISTINCT 列,列,列  FROM 表名;

这个就是可以把指定的列中的 重复出现的达到去重的效果

 

     对于数学成绩呢,有三个 80 分的达到了重复的效果,当我们使用去重的语法后,看看是否是剩余一个80分的成绩:

 我们可以看到 这时候我们表中 math 中的成绩只剩下一个 80 了。


    但是有一种情况要注意,当我们指定多个列进行去重的时候呢,我们要确保列和列对应的数据必须是都重复的,如果有一个不是重复的话呢,那么就不会达到去重的效果了,我们来看:

这样就不会达到去重的效果了,因为其中的 id 并不是重复的。 


             ☑ 6、排序ORDER  BY):

    这个呢是我们查询中非常重要的语法了,如果没有 ORDER  BY 这个语法的时候查询出来的是默认的一个顺序,我们在查询的时候呢要排除一个有序的顺序,而非乱序的,所以我们来看看对于这个排序语法是如何使用的:

语法:

SELECT 列,列 FROM 表名  ORDER BY column [ ASC | DESC ], [...];
 

其中:

 1、ASC:为升序(从小到大)如果使用排序语法,而没有定义排序规则会默认为这个排序

 2、DESC:为降序(从大到小)

 1、ASC:为升序(从小到大):

我们可以看到对于这个排序规则呢,有 math 的升序来决定的查询顺序。


2、DESC:为降序(从大到小):

我们可以看到,我们这个查询的顺序是由 math 这个顺序来决定的。 


我们对于排序有几个特殊的情况:

        1、存在 NULL 数据的情况下:

1)、ASC 情况下:

 math 中的 NULL 会排在最前面。

2)、DESC 情况下:

我们的 NULL 排在最后面。 

这是为什么呢?

因为:

NULL 在排序的时候呢,视为比任何的值都小。


         2、在使用表达式及别名的情况下:

在使用表达式的情况,我们来看看: 

这个就是使用 表达式的情况下。我们来看看使用别名的情况下:

我们可以看到,使用别名和使用表达式达到的情况是一样的。 

我们可以在上面注意到一个点:

    我们的 NULL 不论和谁进行相加都是 NULL,我们的 MySQL 中的NULL,是特殊的始终都会被判定为 FALSE。


          3、对多个字段进行排序:

对于这中情况下,我们 排序的优先级与书写的顺序有关。

我们呢对 上面的实例进行排序,对数学进行降序,语文进行升序,数学进行升序。

  我们这种情况是如何进行排序的呢?我们呢先对 math进行降序,当math相等的时候呢,对相等的 math 值进行 语文成绩的比较,进行升序排序,再当语文相等的时候呢,对数学进行升序。


             ☑ 7、条件查询WHERE):

我们先来看几个条件:

比较运算符:

运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于

   =

MySQL中是 = ,而其余的语言中为 == ,这里要注意)

等于,NULL不安全,当NULL = NULL,时候结果为NULL
<=>等于,NULL安全,当 NULL <=> NULL ,时结果为 TRUE(1)
!=,<>不等于
BETWEEN a0 AND a1范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1)
IN (option, ...)如果是 option 中的任意一个,返回 TRUE(1)
IS NULL是 NULL
IS NOT NULL不是 NULL
LIKE模糊匹配。(% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符)

逻辑运算符:

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

我们来看看使用示例:

1、基本查询:

数学成绩 < 80 的进行查询打印:

这个便是我们的 查询结果了。 

注意:这个查询会自动过滤掉值为 NULL 的数据

我们同样可以进行字段之间的基本查询:

查询 语文成绩 > 数学成绩的学生:

这个便是查询的结果啦。 

同样,我们亦可对其进行 表达式的查询:

总分小于200的学生了。但是这里不能使用 别名进行条件查询,我们来看使用的情况下是何结果

这样呢就会发生报错,这是因为,程序执行过程中:

先执行from -> 之后是 where -> 之后再是 select -> 最后是 order by 

2、AND 和 OR的使用:

AND:查询 数学大于 60 并且 语文小于 80 的同学。

这个就是对于 AND 的使用方法了。


OR: 查询 数学大于 60 或者 语文小于 80 的同学。

这个就是我们的 OR 的使用方法了。 


我们再来看看对于 AND 和 OR 这个两个关键字的优先级谁大:

再看当我们把 or 这里给括起来,结果是否一样:

 是不是就不一样了,这时候是先执行的 or 后执行 and,所以不同。由此可以得出:

AND 的优先级大于 OR 的优先级,所以当我们共同使用时,应用 () 把需要先执行的括起来


3、范围查询:

1、 BETWEEN a0 AND a1 :

查询 数学成绩在 [70,80] 之间的。

对于这个方法我们同样可以使用 and 这个关键字做到


2、IN :

查询 语文成绩是 40 60 70 的学生。

同样使用 OR 也可以做到:


4、模糊查询:

我们的模糊查询就是对于—— LIKE 的使用,对于这个 关键字使用的时候呢,有两个 字符 去搭配着使用分别为:% 和 _

%:匹配任意多个字符。

_ : 匹配一个字符。


              8、分页查询LIMIT):

语法:

从 0 开始查询 n 个结果

SELECT ... FROM 表名 [WHERE ...] [ORDER BY ...] LIMIT n;
 

从 s 开始查询 n 个结果

SELECT ... FROM 表名 [WHERE ...] [ORDER BY ...] LIMIT s,n;

从 s 开始查询 n 个结果

SELECT ... FROM 表名 [WHERE ...] [ORDER BY ...] LIMIT n OFFEST s;

      通过分页查询呢可以有限的控制一次查询出来的结果集中的记录的条数,可以有效的减少数据库服务器的压力,同时对于用户也比较友好。

我们把上面的 student 这个表进行 对于 id 的分页查询,分成3页,即使最后一页不够也没事。


❄️三、修改(Update):

语法:

UPDATE 表名 SET column = expr [, column = expr ...]

 [WHERE ...] [ORDER BY ...] [LIMIT ...]
 

我们来使用一下看看:

 把张三的数学成绩改成 90: 

但是当我们不写 where 这个条件查询的时候呢,我们这里会修改所有人的成绩。 


我们在来写一个修改的示例:

把总成绩倒数前3的人的数学成绩 + 30 。

我们这里要注意,我们的 math = math + 30 不能写成 math += 30 


❄️四、删除(Delete):

语法:

DELETE FROM 表名 [WHERE ...] [ORDER BY ...] [LIMIT ...]
 

 我们来简单的实现一下:

删除张三的成绩:

我们可以看到 张三的成绩已经没有了。

当然这里如果不加条件的话,就是相当于把表中的数据都删除。


❄️总结:

     OK,到这里呢,我们的 CRUD 的基础操作到这里就结束了,在下一篇博客中我们来介绍一下对于 CRUD 的进阶操作与其介绍。尽情期待吧!!!拜拜~~~下次见

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

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

相关文章

API项目3:API签名认证

问题引入 我们为开发者提供了接口&#xff0c;却对调用者一无所知 假设我们的服务器只能允许 100 个人同时调用接口。如果有攻击者疯狂地请求这个接口&#xff0c;那是很危险的。一方面这可能会损害安全性&#xff0c;另一方面耗尽服务器性能&#xff0c;影响正常用户的使用。…

Linux命令——ls

命令格式&#xff1a;命令本身选项命令的指向目标 1.ls命令作用为列出目录下的内容 #lls后的选项有[-a,-l,-h]##注意ls与选项间应用空格隔开. 如下图为&#xff08;ls命令体-l选项/根文件&#xff09;的命令行 # ls -a 为&#xff1a;列出所有文件&#xff08;包括隐藏文件&…

解析:ARM 工业计算机在光伏储能中的关键作用

在当今能源转型的大背景下&#xff0c;光伏储能作为一种可持续、高效的能源解决方案&#xff0c;正受到越来越广泛的关注。而在光伏储能系统中&#xff0c;ARM 工业计算机以其卓越的性能和特点&#xff0c;成为了理想的选择。 一、光伏储能的重要性与挑战 全球对清洁能源的需…

视图使用控制器模板分配变量

文章目录 控制器视图路由配置控制器视图 视图使用控制器模板分配变量控制器视图 控制器视图 路由配置 <?phpuse Illuminate\Support\Facades\Route;/* |-------------------------------------------------------------------------- | Web Routes |---------------------…

服务性能优化之mybatis-plus 开启与关闭 SQL 日志打印

Hello&#xff01;欢迎各位新老朋友来看小弟博客&#xff0c;祝大家事业顺利&#xff0c;财源广进&#xff01;&#xff01; 主题&#xff1a;mybatis-plus 开启与关闭 SQL 日志打印 第一&#xff1a;开启打印 Mybatis-plus 需要通过下面的方式开启控制台 SQL 日志打印 myba…

2024 Mathorcup高校数学建模挑战赛ABCD题和 LaTeX 模版

01 A题-移动通信网络中 PCI 规划问题 02 B题-甲骨文智能识别中原始拓片单字自动分割与识别研究 03 C题-物流网络分拣中心货量预测及人员排班 &#xff08;左右滑动查看完整赛题&#xff09; 04 D题-量子计算在矿山设备配置及运营中的建模应用 看完了赛题&#xff0c;同学们…

同三维T80003JEH 4K30 HDMI解码器

1路HDMI输出&#xff0c; 1路3.5音频输出&#xff0c; 1个USB2.0,带1个RS232串口&#xff0c;1个网口&#xff0c;支持1路4K或4路1080P或9路720P及以下分辨率同时实时解码&#xff1b;支持视频画面输出1-16分割显示 同三维T80003JEH 4K30 HDMI解码器 同三维T80003JEH是一款4K3…

低成本轻量化5G网络部署redcap技术

RedCap&#xff08;Reduced Capability&#xff09;轻量化5G路由器旨在提供低功耗、成本效益高、性能较5G完整版稍微降低的解决方案。用于满足工业物联网&#xff08;IoT&#xff09;、消费电子产品和轻量级5G设备的需求。通过对5G技术进行一定程度的“功能裁剪”&#xff0c;降…

美食抖音视频素材网站推荐

为美食类抖音视频寻找高质量的素材&#xff0c;不仅能让作品更加吸引人&#xff0c;还能帮助创作者展现出精美的烹饪过程和独特的美食文化。以下推荐的素材网站&#xff0c;提供多种美食视频资源&#xff0c;从食材准备到烹饪技巧&#xff0c;甚至精致摆盘&#xff0c;让你的视…

postgres 的使用

postgres的常用命令&#xff1a; 查看所有库&#xff1a; \l 进入库 &#xff1a;\c 查看所有表&#xff1a;\d 库名; 查看表结构&#xff1a;\d 表名; 查看所有用户&#xff1a;\du 显示当前库下schema信息&#xff1a; \dn postgres的防火墙配置&#xff1a; 在安装目录的/va…

【升华】人生苦短,我要学python

一、python进阶成熟度阶梯 二、python进阶路线 三、python基础 Python 是由 Guido van Rossum 在八十年代末和九十年代初&#xff0c;在荷兰国家数学和计算机科学研究所设计出来的。 Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C、Algol-68、SmallTa…

解决使用MobaXterm不能向Ubuntu上传下载文件的问题

如上图所示 解决方案 新建连接&#xff0c;使用root账户建立ssh会话&#xff0c;就是建立会话的时候&#xff0c;用户名使用root。ubuntu系统默认不允许远程root账户建立连接&#xff0c;表现就是你新建ssh会话&#xff0c;在第一步输入root密码的时候&#xff0c;密码正确会报…

ACM会议模板左上角论文标题太长导致重叠 解决方法

解决方法&#xff1a; 打开acmart.cls文件 搜索 \else % Proceedings\fancyfoot[C]{\ifACMprintfolios\footnotesize\thepage\fi}%\fancyhead[LO]{\ACMlinecountL\headfootfont\shorttitle}%fancyhead[LO]{…} 里定义了左上角的内容&#xff08;LO 表示 “Left Odd”&#xff0…

四.python核心语法2

目录 1.元组&#xff08;tuple&#xff09; 1.1. 创建元组和删除元组 1.2. 删除元组 1.3. 访问元组元素 1.4. 元组元素的修改 1) 重新赋值法 2) 类型转换法 1.5. 总结 2.字典{dictionary} 2.1. 创建 2.2. 字典元素的访问 2.3. 是否存在 2.4. 添加元素 2.5. 删除元素…

部署带证书的docker高可用的私有仓库harbor

一、部署带证书的docker高可用的私有仓库harbor harbor下载包&#xff1a;https://hub.fastgit.org/goharbor/harbor/releases docker阿里云地址&#xff1a;docker-ce-linux-centos-7-x86_64-stable-Packages安装包下载_开源镜像站-阿里云 Harbor 是 VMware 公司开源的企业级 …

刷题训练之多源 BFS

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;熟练掌握多源 BFS算法。 > 毒鸡汤&#xff1a;学习&#xff0c;学习&#xff0c;再学习 ! 学&#xff0c;然后知不足。 > 专栏选自&#xff1a;刷…

quic-go源码一---server启动

前言&#xff1a; 走马观花地看了RFC 9000:QUIC: A UDP-Based Multiplexed and Secure Transport&#xff0c; 感受不是那么直观&#xff0c;所以再来看看这个协议的golang语言实现&#xff1a;quic-go,加强学习。 https://quic-go.net/docs/quic/quic-go文档 本篇准备的代…

threejs-法线向量

一、介绍 1.介绍 1.在3D计算机图形中&#xff0c;‘法向量’是一个向量&#xff0c;表示3d模型表面在某一点的方向。在每个顶点上&#xff0c;都会有一个关联的法向量&#xff0c;这个向量通常被归一化,也就是说它的长度为1。 2.使用:定点的法向属性在很多计算图形的领域都有应…

lammps统计一个原子周围不同类型原子数量的方法

本文介绍lammps统计一个原子周围不同类型原子数量的方法。 在之前的专栏中,曾介绍过动态统计某一个固定区域内原子数量的方法,也介绍过动态统计某一个原子周围原子数量的方法: 下面介绍第三种类型:动态统计某一个原子周围不同类型原子数量的方法。 以小球的随机碰撞为例,原…

【2024.10.14练习】生命之树

题目描述 题目分析 对于求树的子区域最大和&#xff0c;考虑使用树形DP求解。 假设以树的某一结点为根节点来深度优先搜索整棵树&#xff0c;搜索到每个结点时都会有两种决策状态&#xff1a;加入该节点和不加入该节点。定义代表选择此结点所能得到最大权值和&#xff0c;代表…