MySQL表的增删改查(CRUD2)

news2024/11/25 13:48:59

美好的一天又开始了,大家今天有没有学习呢?没学的话,开始跟随和博主一起对MYSQL的学习吧!!!

复习:

CRUD新增
1.新增 insert into 表名 [(列名[,列名,列名...])] values (值[,值,值...]); -- 列名与值是一一对应的关系
2.如果对表中所有的列设置值insert into 表名values (值[,值,值...]); -- 值的顺序与表中列的顺序相同
3.多行插入 insert into 表名[(列名[,列名,列名....)] values (值[ 值, 值..])[ (值[ 值, 值..]), (值[, 值,值..])..;  这里有多少组值的列表就代表要插入多少行数据
  
查询     
1.全列查询 select * from 表名; *  是一个通配符,表示表中所有的列都会被查询出来
2.指定列查询 select 列名[,列名][,列名]... from 表名; --列名可以有多个,中间用逗号隔开
3.表达式    select 表达式 from 表名;#表达式可以是多个列的运行结果,也可是一个常量    
4.表达式 +别名:select 表达式/列名 [as] 别名from 表名;# 别名也就是结果集中显示表头的列名
5. 去重 select distinct列名[,列名][列名] from 表名;# 重复记录的判定标准,一个数据行中的所有的列都相同才判定为相同,才可以得到去重的效果
6.排序 select * from 表名 order by 列名 [ASC(升序)| DESC(降序)]; #排序时order by 后面的列名,必须是一个有效的列,必须是表中的列或是查询列表中的表达式

1. 条件查询:WHERE

1 语法

根据指定的一些条件,这过滤掉不符合条件的记录,把符合条件的记录返回给用户可以通过一些运算符,比如说比较运算符,逻辑运算符 ,和JAVA中的思路是一样的

1 ⽐较运算符


大于,大于等于,小于,小于等于 和JAVA中一模一样

原始表:

比较条件:使用比较运算符(如 >、<、=、<> 等)来比较列值和常量或其他列值。例如:

我们查看数学成绩大于80分的数据

我们查看英语成绩小于80分的数据

我们查看语文成绩等于80.5分的数据

我们看上表可以看到丽丽的英语的成绩为NULL 但是我们把条件等于空时,并没有值

是不是很简单呐,看到这里相信大家已经蠢蠢欲动了,快去练习一下吧!!!

3 逻辑运算符

逻辑运算符有优先级的,不建议记忆,建议使用的时候还是通过小括号的方式,:
手动去指定优先级

使用where条件的语法:select * from 表名 where 列名/表达式 运算符 条件;

1. AND

当使用 AND 连接多个条件时,只有当所有条件都为真时,整个表达式才为真。

我们从上可以看到当数学成绩为80时,值为空,说明在数学里面没有值大于80的条件为假所以没值

2. OR

当使用 OR 连接多个条件时,只要其中一个条件为真,整个表达式就为真。

3. NOT

用于对一个条件取反。

4.观察AND和OR的优先级

根据返回的结果,我们可以得出一个结论AND 的优先级是大于OR的整体的优先级顺序和JAVA中一样NOT>AND>OR
用的时候还是手动加括号

4. 范围查询

使⽤BETWEEN AND 实现

查询语⽂成绩在[80,90]分的同学及语⽂成绩:

数学成绩是78或者79或者98或者99分的同学及数学成绩

使⽤IN实现

使⽤OR实现

5  模糊查询

1. LIKE 关键字与通配符

%(百分号)通配符

代表任意字符序列(包括空字符序列)。例如

如果要查询所有以 '悟' 开头的学生名字,可以使用以下语句:

也可以用于查询包含特定字符串的情况。比如查询名字中包含'悟' 的客户:

还可以用于查询以特定字符串结尾的情况。例如查询名字以 '悟' 结尾的客户:

2.  ____(下划线)通配符

代表任意单个字符,如果要查询产品代码是三个字符,且第二个字符是 '悟' 的名字,可以使用以下语句:

2. 区分大小写问题

在 MySQL 中,LIKE 操作默认是区分大小写的(取决于数据库的字符集和排序规则)。如果希望进行不区分大小写的模糊查询,可以使用以下两种方法之一:

1.使用 COLLATE 子句:假设数据库的字符集是 utf8mb4,可以在查询中指定不区分大小写的排序规则。例如:

SELECT * FROM customers WHERE customer_name COLLATE utf8mb4_general_ci LIKE '%smith%';

这里的 utf8mb4_general_ci 中的 ci 表示不区分大小写(case - insensitive)。

2.修改数据库或表的字符集和排序规则:如果经常需要进行不区分大小写的操作,可以考虑将整个数据库或相关表的字符集和排序规则设置为不区分大小写的类型。但这种方法需要谨慎操作,因为可能会影响到其他依赖于当前字符集和排序规则的功能。

3. 其他模糊查询相关技巧

使用多个条件组合:可以将模糊查询与其他条件(如比较条件、逻辑条件等)结合使用。

SELECT * FROM products WHERE (price >= 100 AND price <= 200) AND product_name LIKE '%good%';

使用正则表达式(REGEXP)进行更复杂的模糊查询:MySQL 支持使用正则表达式进行模式匹配。例如,查询以元音字母开头的客户名字:

SELECT * FROM customers WHERE customer_name REGEXP '^[aeiouAEIOU].*';

不过,正则表达式的执行效率可能比简单的 LIKE 操作低,对于大型数据集,需要谨慎使用。

6 NULL的查询

查询包含 NULL 值的行可以使用 IS NULLIS NOT NULL 运算符。

1. 使用 IS NULL 查询 NULL 值

查询英语成绩为NULL的记录

这种查询方式适用于任何数据类型的列。例如,如果有一个 products 表,其中 description 列可能为 NULL,要查询没有描述信息的产品,可以使用:

SELECT * FROM products WHERE description IS NULL;

2. 使用 IS NOT NULL 查询非 NULL 值

查询英语成绩不为NULL的记录

NULL与其他值进⾏运算结果为NULL

与其他条件的组合:可以将 IS NULLIS NOT NULL 与其他条件(如比较条件、逻辑条件等)一起使用。

索引和 NULL 值:在某些数据库引擎中,索引对 NULL 值的处理方式可能有所不同。在设计数据库和查询时,如果经常需要对包含 NULL 值的列进行查询,需要考虑索引的使用和性能影响。例如,在 MySQL 的某些存储引擎中,含有 NULL 值的列可能不会被包含在索引中,这可能会影响查询性能。

函数处理 NULL 值:在使用一些函数处理数据时,需要特别注意 NULL 值的情况。例如,SUM() 函数在计算包含 NULL 值的列的总和时,会忽略 NULL 值。如果希望将 NULL 值视为 0,可以使用 COALESCE() 函数进行处理。

SELECT SUM(COALESCE(sales_amount, 0)) FROM sales_data;

注意

• WHERE条件中可以使⽤表达式,但不能使⽤别名

• AND的优先级⾼于OR,在同时使⽤时,建议使⽤⼩括号()包裹优先执⾏的部分

• 过滤NULL时不要使⽤等于号(=)与不等于号(!=,<>)

• NULL与任何值运算结果都为NULL

分页查询:

LIMIT 作用:限制查询结果集中的条数
之前我们学习select* from 表名;的时候,给大家说过,不加限制记录条数的査询是不安全的分页查询在项目中运行的非常多,只要查询的是一个记录的集合(多条记录)都在使用分页查询

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

1.语法:

使用 LIMIT 子句

基本语法LIMIT [offset,] row_count。其中,offset 是可选参数,表示偏移量(从第几行开始查询),row_count 表示要返回的行数,即每页的记录数。

查询第⼀⻚数据

如果是第一页s应该取什么值?
因为要从第一条开始,所以取0

查询第⼆⻚数据

第二页的记录s应该取什么值?
因为每页获取2条记录,那么第二页就应该跳过之前显示的前3条,从下标为3的位置开始

查询第三⻚数据,没有达到limit的条数限制,也不会有任何影响,有多少条就显⽰多少条

第二..页的记录s应该取值的公式?   s=(当前页号-1)*每页显示的记录数
s=(3-1)*3=6

2. 基于排序的分页

在实际应用中,分页查询通常会结合排序操作,以确保每页数据的顺序一致性。例如,按照员工的入职日期对员工信息进行分页查询。假设每页显示 8 条记录,查询第 2 页,按照入职日期升序排序:SELECT * FROM employees ORDER BY hire_date ASC LIMIT 8 OFFSET 8;

这里先通过 ORDER BY 子句对数据进行排序,然后再使用 LIMIT 和偏移量进行分页。

3. 性能优化考虑

索引使用:如果分页查询涉及到排序字段,为排序字段创建合适的索引可以提高查询性能。例如,在上面按照入职日期排序的分页查询中,如果在 hire_date 列上有索引,查询速度会更快。

避免使用 OFFSET 过大的查询:当 OFFSET 值非常大时(比如查询很深的页码),查询性能可能会下降,因为数据库需要跳过大量的行。在这种情况下,可以考虑使用 “键集分页” 等更优化的分页策略,但实现相对复杂,需要根据具体业务场景来决定。例如,可以记录上一页最后一条记录的主键值,下一页查询时使用该主键值作为条件进行查询,而不是简单地依赖 OFFSET

2. Update修改

1.  ⽰例

将孙悟空同学的数学成绩变更为80分

update exam set math = 80 where name = '孙悟空';

将总成绩倒数前三的3位同学的数学成绩加上30分

查看原始数据

select name, math,chinese + math + english as 总分 from exam where chinese + math + english is not null order by 总分 asc limit 3;

更新操作并查看结果

update exam set math = math +30 where chinese + math + english is not null order by chinese + math + english asc limit 3;

update exam set math = 100;

update操作的时候,如果不加where条件,修改的将是整张表中的所有记录,是非常危险的操作谨慎操作

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

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

相关文章

用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门(三)

概述 从 WWDC 24 开始&#xff0c;苹果推出了全新的测试机制&#xff1a;Swift Testing。利用它我们可以大幅度简化之前“老态龙钟”的 XCTest 编码范式&#xff0c;并且使得单元测试更加灵动自由&#xff0c;更符合 Swift 语言的优雅品味。 在这里我们会和大家一起初涉并领略…

【案例】Excel使用宏来批量插入图片

一、场景介绍 我有一个excel文件&#xff0c;需要通过一列的文件名称&#xff0c;按照规则给批量上传图片附件。 原始文件&#xff1a; 成功后文件&#xff1a; 二、实现方法 1. 使用【wps】工具打开Excel文件&#xff0c;将其保存为启用宏的文件。 2.找到编辑宏的【VB编辑器…

Springboot项目报错记录

SpringBoot测试报错&#xff1a;Unable to find a SpringBootConfiguration, you need to use Context 该测试类所在测试包test下的包名和类路径java下的包名不一致导致的 引发以下报错 java.lang.IllegalStateException: Unable to find a SpringBootConfiguration, you need…

RabbitMQ 高级特性——消息分发

文章目录 前言消息分发RabbitMQ 分发机制的应用场景1. 限流2. 负载均衡 前言 当 RabbitMQ 的队列绑定了多个消费者的时候&#xff0c;队列会把消息分发给不同的消费者&#xff0c;每条消息只会发送给订阅列表的一个消费者&#xff0c;但是呢&#xff0c;RabbitMQ 默认是以轮询…

深度学习:bert模型

multi-headed机制 1、通过不同的head得到多个特征表达&#xff0c;一般8个head 2、将所有特征拼接在一起 3、降维&#xff0c;将Z0~Z7连接一个FC全连接实现降维 多层堆叠 位置编码 如何实现位置编码&#xff1f; &#xff08;1&#xff09;为每个时间步添加一个0-1范围内的数…

Vue实战学习(2)(Vue快速入门(快速构建一个局部Vue项目))

目录 一、Vue快速入门。 &#xff08;1&#xff09;快速入门的案例需求。 &#xff08;2&#xff09;原生js解决。 &#xff08;3&#xff09;使用Vue解决。 1、准备一个html页面。且该页面需要引入Vue模块。 2、创建Vue程序的应用实例。 3、准备html元素&#xff08;如div&…

SpringMVC学习记录(三)之响应数据

SpringMVC学习记录&#xff08;三&#xff09;之响应数据 一、页面跳转控制1、快速返回模板视图2、转发和重定向 二、返回JSON数据1、前置准备2、ResponseBody 三、返回静态资源1、静态资源概念2、访问静态资源 /*** TODO: 一个controller的方法是控制层的一个处理器,我们称为h…

Spring WebFlux 核心原理(2-3)

1、Project Reactor 高级 1.1、响应式流的生命周期 要理解多线程的工作原理以及 Reactor 中实现的各种内部优化&#xff0c;首先必须了解 Reactor 中响应式类型的生命周期。 1.1.1、组装时 流生命周期的第一部分是组装时&#xff08;assembly-time&#xff09;。 Reactor 提供…

Python爬虫与Web渗透测试入门指南——初学者防踩雷

目录 Python爬虫与Web渗透测试入门指南一、学习方向和基础知识Python爬虫学习方向Web渗透学习方向 二、具体知识点总结三、学习流程和典型案例案例1&#xff1a;Python爬虫 - 简单网页数据爬取案例2&#xff1a;Web渗透 - SQL注入漏洞检测与利用案例3&#xff1a;Python爬虫 - …

apache-seata-2.1.0 AT模式使用篇(配置简单)

最近在研究seata的AT模式&#xff0c;先在本地搭建了一个演示demo&#xff0c;看看seata是如何使用的。在网上搜的demo&#xff0c;配置相对来说都比较多。我最终搭建的版本&#xff0c;配置较少&#xff0c;所以写篇文章分享下&#xff0c;希望能帮到对seata感兴趣的小伙伴。先…

Java代码与数据库纽带——JDBC

ok&#xff0c;看了题目&#xff0c;就可以知道今天要分享的是JDBC 讲这个这之前&#xff0c;想讲讲之前的。 之前我们操作数据库基本都是通过MySQL客户端&#xff0c;进行编写sql语句来操作的。 但是我们在开发中一般都是通过代码来操控数据库的。 而且在我们日常开发中&a…

navicat pg库安装mysql fdw 外表扩展

在Windows上手动安装mysql_fdw&#xff08;MySQL Foreign Data Wrapper&#xff09;通常涉及一系列步骤&#xff0c;包括下载源码、编译、配置和测试。以下是一个详细的指南&#xff1a; 一、下载mysql_fdw源码 访问mysql_fdw的GitHub发布页面&#xff0c;选择最新版本的源码…

智能提醒助理系列-jdk8升级到21,springboot2.3升级到3.3

本系列文章记录“智能提醒助理”产品建设历程&#xff0c;记录实践经验、巩固知识点、锻炼总结能力。 本篇介绍技术栈升级的过程&#xff0c;遇到的问题和解决方案。 一、需求出发点 智能提醒小程序 当前使用的是jdk8&#xff0c;springboot2.3,升级到jdk21和springboot3.3 学…

雷军-2022.8小米创业思考-11-新零售:用电商思维做新零售,极致的效率+极致的体验。也有弯路,重回极致效率的轨道上。

第十一章 新零售 当我们说到小米模式的时候&#xff0c;其实我们说的是两件东西&#xff1a; 一是小米模式的本质&#xff0c;即高效率的商业模式&#xff1b; 另一件是小米这家公司具象的商业模式&#xff0c;这是小米在实践中摸索、建立的一整套业务模型。 从2015年到202…

人工智能——小白学习指南

知孤云出岫 目录 1. **智能评测系统**2. **个性化学习路径推荐**3. **虚拟学习助手**4. **学习行为分析**5. **数据驱动的教学决策**6. **自动化课程推荐**7. **数据隐私与安全保护** 人工智能知识点的总结和学习路线&#xff0c;以数据表格形式呈现&#xff0c;并附带在教育行…

【深度学习基础】常用图像卷积核类型

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;深度学习_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. 常…

SpringCloud框架学习(第一部分:初始项目搭建)

目录 一、SpringBoot和SpringCloud版本选型 1.Springcloud版本选择 2.Springcloud版本选择 3.Springcloud Alibaba版本选择 4.SpringCloud VS SpringBoot VS SpringCloud Alibaba版本三者制约对应关系 二、SpringCloud介绍 1.单体架构 2.微服务架构 3.springcloud 4.S…

【动手学运动规划】 4.1 图搜的基础

&#x1f3f0;代码及环境配置&#xff1a;请参考 环境配置和代码运行! 4.1.1 基础概念 4.1.1.1 Configuration Space(配置空间) configuration: 机器人上每一点位置的完整说明degrees of freedom: 机器人能够独立移动或旋转的关节数量&#xff08;下图所示有4个自由度&#x…

如何用彩屏显示精美的动画

1什么样的动画是精美的&#xff1f; 1&#xff09;视觉暂留 视频播放的原理基于人眼的视觉暂留现象。‌视频是由一系列静态图像&#xff08;帧&#xff09;组成的&#xff0c;这些图像以特定的频率&#xff08;帧率&#xff09;连续播放&#xff0c;使得人眼无法区分单帧图像&…

信息安全工程师(81)网络安全测评质量管理与标准

一、网络安全测评质量管理 遵循标准和流程 网络安全测评应严格遵循国家相关标准和流程&#xff0c;确保测评工作的规范性和一致性。这些标准和流程通常包括测评方法、测评步骤、测评指标等&#xff0c;为测评工作提供明确的指导和依据。 选择合格的测评团队 测评团队应具备相关…