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

目录

❄️一、新增(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.mzph.cn/web/56181.shtml

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

相关文章

【数据结构与算法】走进数据结构的“时间胶囊”——栈

大家好&#xff0c;我是小卡皮巴拉 文章目录 目录 引言 一.栈的基本概念 1.1 定义 1.2 特性 1.3 基本操作 二.栈的实现方式 2.1 顺序栈 2.2 链栈 三.顺序栈的实现 定义顺序栈的结构 初始化 入栈 检查栈是否为空 出栈 销毁 四.链栈的实现 定义链栈的结构 初始…

新版idea菜单栏展开与合并

新版idea把菜单栏合并了看着很是不习惯&#xff0c;找了半天原来在这里展开 ① 点击文件 -> 设置 ② 点击外观与行为 -> 外观 -> 合并主菜单和窗口标题 然后确定&#xff0c;重启即可

戴维南,叠加,稳态笔记

一点点学习笔记,仅做个人复习使用 节点电压分清电流电压源&#xff0c;电流源才能写在右边&#xff0c;容易混淆 叠加定理仅适用于线性电路&#xff0c;且不能用于计算功率&#xff0c;主要是方向&#xff0c;要看源的方向判断等效之后的&#xff0c;受控源不参与除源&#x…

数据库表的创建

运用的环境是pychram python3.11.4 创建一个表需要用到以下语法 注释已经写清楚各种语法的含义&#xff0c;记住缩进是你程序运行的关键&#xff0c;因为程序是看你的缩进来判断你的运行逻辑&#xff0c;像我这个就是缩进不合理导致的报错 那么今天分享就到这里&#xff0c;谢…

android11 usb摄像头添加多分辨率支持

部分借鉴于&#xff1a;https://blog.csdn.net/weixin_45639314/article/details/142210634 目录 一、需求介绍 二、UVC介绍 三、解析 四、补丁修改 1、预览的限制主要存在于hal层和framework层 2、添加所需要的分辨率&#xff1a; 3、hal层修改 4、frameworks 5、备…

第九届清洁能源与发电技术国际学术会议(CEPGT 2024)

第九届清洁能源与发电技术国际学术会议&#xff08;CEPGT 2024&#xff09; 2024 9th International Conference on Clean Energy and Power Generation Technology (CEPGT 2024) 【早投稿早录用&#xff0c;享受早鸟优惠】 CEPGT 2024会议已上线至IEEE官网 第九届清洁能源…

15分钟学Go 第2天:安装Go环境

第2天&#xff1a;安装Go环境 1. 引言 在学习Go语言之前&#xff0c;首先需要配置好本地开发环境。本节将详细介绍如何在Windows 11上安装和配置Go语言环境&#xff0c;包括安装步骤、环境变量设置、VS Code配置与测试、以及常见问题解决方案。完成这些步骤后&#xff0c;你将…

Java项目-基于springboot框架的基于协同过滤算法商品推荐系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

Kettle9.4支持Clickhouse数据源插件开发以及性能测试

前言 最近业务这边有个指标需要用到大数据这边的列式数据库进行处理&#xff0c;由于kettle不支持clickhouse数据源驱动&#xff0c;这里查了一下网上的相关资料&#xff0c;发现了一些别人开发好的驱动包&#xff0c;下载下来后使用效果不尽人意。总结下来有以下几个问题&…

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文档 本篇准备的代…

基于R语言机器学习方法在生态经济学领域中技术应用

近年来&#xff0c;人工智能领域已经取得突破性进展&#xff0c;对经济社会各个领域都产生了重大影响&#xff0c;结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一&#xff0c;目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据&#xf…

证件照小程序源码,前后端稳定运行

演示&#xff1a;证寸照制作 运行环境: Linux Nginx PHP >5.6 MySQL>5.6 安装步骤: 1.下载源码上传至你的服务器宝塔面板 2.直接添加站点选择源码目录&#xff0c;新建数据库 3.设置代码执行目录为/web 4.在浏览器中输入你的域名&#xff0c;会提示安装&#xff0c;填写…

SpringBoot02:第一个springboot程序

3、第一个springboot程序 3.1、准备工作 我们将学习如何快速的创建一个Spring Boot应用&#xff0c;并且实现一个简单的Http请求处理。通过这个例子对Spring Boot有一个初步的了解&#xff0c;并体验其结构简单、开发快速的特性。 我的环境准备&#xff1a; java version "…

智能优化算法-禁忌搜索算法(TS)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 禁忌搜索优化算法 (Tabu Search, TS) 是一种基于局部搜索的元启发式优化算法&#xff0c;由Fred Glover于1986年提出。TS通过引入“禁忌表”来避免重复搜索已经访问过的解&#xff0c;从而跳出局部最优解&#…

十四、MySQL事务日志

文章目录 1. redo日志1.1 为什么需要REDO日志1.2 REDO日志的好处、特点1.2.1 好处1.2.2 特点1.3 redo的组成1.4 redo的整体流程1.5 redo log 的刷盘策略1.6 不同刷盘策略演示1.7 写入redo log buffer 过程1.7.1 补充概念:Mini-Transaction1.7.2 redo 日志写入log buffer1.7.3 …

[DB] NSM

Database Workloads&#xff08;数据库工作负载&#xff09; 数据库工作负载指的是数据库在执行不同类型任务时所需的资源和计算方式&#xff0c;主要包括以下几种类型&#xff1a; 1. On-Line Transaction Processing (OLTP) 中文&#xff1a;联机事务处理解释&#xff1a;…

如何使用DockerSpy检测你的Docker镜像是否安全

关于DockerSpy DockerSpy是一款针对Docker镜像的敏感信息检测与安全审计工具&#xff0c;该工具可以帮助广大研究人员在Docker Hub上检测和搜索自己镜像的安全问题&#xff0c;并识别潜在的泄漏内容&#xff0c;例如身份验证密钥等敏感信息。 功能介绍 1、安全审计&#xff1a…

基于yolov10的驾驶员抽烟打电话安全带检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv10的驾驶员抽烟、打电话、安全带检测系统是一种先进的驾驶行为监测系统。该系统利用YOLOv10算法的高效性和准确性&#xff0c;实现对驾驶员行为的实时检测与识别。 YOLOv10是一种最新的实时物体检测模型&#xff0c;其通过深度学习技术&#xff0c;如卷…

【网络原理】HTTP协议

目录 前言 一.什么是HTTP HTTP报文格式 HTTP的请求格式 1.首行 2.请求头&#xff08;header&#xff09; 3.空行 4.正文&#xff08;body&#xff09; HTTP的响应格式 1.首行 2.响应头 3.空行 4.正文&#xff08;body&#xff09; 首行中的方法 GET和POST的区别 …

使用Radzen Blazor组件库开发的基于ABP框架炫酷UI主题

一、项目简介 使用过ABP框架的童鞋应该知道它也自带了一款免费的Blazor UI主题&#xff0c;它的页面是长这样的&#xff1a; 个人感觉不太美观&#xff0c;于是网上搜了很多Blazor开源组件库&#xff0c;发现有一款样式非常不错的组件库&#xff0c;名叫&#xff1a;Radzen&am…