【MySql】数据库的CRUD(增删查改)

news2024/11/29 3:50:14

写在最前面的话

        哈喽,宝子们,今天给大家带来的是MySql数据库的CRUD(增删改查),CRUD是数据库非常基础的部分,也是后端开发日常工作中最主要的一项工作,接下来让我们一起进入学习吧,感谢大家的支持!喜欢的话可以三连哦~~~

目录

 一、新增(Create)

1、普通插入

2、指定列插入

​3、多行插入

4、拓展知识

二、查询(Retrieve)

1、全列查询

2、指定列查询

3、查询字段为表达式

4、别名

5、去重(DISTINCT)

6、排序(ORDER BY)

针对表达式进行排序

指定多个列进行排序

7、条件查询(WHERE)

比较运算符

逻辑运算符

学习案例

基本查询

AND与OR查询

范围查询

模糊查询

8、分页查询:LIMIT

三、修改(Update) 

1、单列修改 

2、多列修改

四、删除(Delete)


 一、新增(Create)

1、普通插入

语法:

insert into 表名 values(值,值...);--此处的值要与列的个数与类型匹配

执行上述SQL语句后,运行结果如下所示: 

 2、指定列插入

语法:

insert into 表名(列名,列名...) values(值,值...);

执行上述SQL语句后,运行结果如下所示: 

3、多行插入

语法:

insert into 表名 values(值,值...),(值,值...),...;

 执行上述SQL语句后,运行结果如下所示: 

 

        当多行需要数据插入的时候,多行插入相比于单行插入在速度上要快上许多,为什么这么说呢?因为我们mysql是一个客户端服务器结构的程序,当三行数据执行单行插入的时候就进行了三次网络交互,但是当三行数据执行多行插入的时候只进行了一次网络交互,因此多行插入速度更快。

三次网络交互:

一次网络交互:

4、拓展知识

时间日期如何插入? (以datetime类型为例)

二、查询(Retrieve)

先构造一张数据表:

-- 创建考试成绩表
DROP TABLE IF EXISTS exam_result;
CREATE TABLE exam_result (
    id INT,
    name VARCHAR(20),
    chinese DECIMAL(3,1),
    math DECIMAL(3,1),
    english DECIMAL(3,1)
);

-- 插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
    (1,'唐三藏', 67, 98, 56),
    (2,'孙悟空', 87.5, 78, 77),
    (3,'猪悟能', 88, 98, 90),
    (4,'曹孟德', 82, 84, 67),
    (5,'刘玄德', 55.5, 85, 45),
    (6,'孙权', 70, 73, 78.5),
    (7,'宋公明', 75, 65, 30);

1、全列查询

把表中所有的行和列都查询出来。

语法:

selecr * from 表名--*表示“通配符”,可以代指所有的列

 执行上述SQL语句后,运行结果如下所示: 

 2、指定列查询

一个表的列数可能是非常多的,某个场景的操作下,只需要关注其中几个列

语法:

select 列名,列名... from 表名;

  执行上述SQL语句后,运行结果如下所示: 

3、查询字段为表达式

        一边查询,一边进行计算。在查询的时候写做由列名构成的表达式,把这一列中所有的行都代入到表达式中参与运算(此处运算数据是临时数据)。

例如:想查询所有同学数学成绩都-10分的效果

select name,math-10 from exam_result;

 执行上述SQL语句后,运行结果如下所示: 

 

 例如:计算每个同学的总成绩

select name,chinese+math+english from exam_result;

 执行上述SQL语句后,运行结果如下所示: 

 

 综上,SQL在查询的时候,可以进行一些简单的统计操作。 

 4、别名

查询的时候给列/表达式指定别名(也可以给表指定别名)。

语法:

select 表达式 as 别名 from 表名 (as 别名);

  执行上述SQL语句后,运行结果如下所示: 

 5、去重(DISTINCT)

引用distinct修饰某个列/多个列,值相同的行只保留一个。

用例:

--去重前:
select  name,distinct math from exam_result;
--去重后:
select distinct name,distinct math from exam_result;

 执行上述SQL语句后,运行结果如下所示: 

 6、排序(ORDER BY)

查询的时候使用order by修饰列把行进行排序。

语法:

select 列名 from 表名 order by 列名 asc/desc;

注意:asc为升序,desc为降序,默认升序。

执行上述SQL语句后,运行结果如下所示: 

针对表达式进行排序
select name,chinese+math+english as total from exam_result order by total asc;

 执行上述SQL语句后,运行结果如下所示: 

 指定多个列进行排序
select * from exam_result order by math,chinese asc;

  执行上述SQL语句后,运行结果如下所示: 

order by指定的列,如果你select的时候没有把这一列查出来,也不影响使用排序

测试用例:

select name,math from exam_result order by chinese asc;

 执行上述SQL语句后,运行结果如下所示: 

修改测试用例:

select name,math,chinese from exam_result order by chinese asc;

执行上述SQL语句后,运行结果如下所示: 

 7、条件查询(WHERE)

指定具体条件,按照条件针对数据进行筛选。

语法:

select 列名 from 表名 where 条件;

筛选条件一般通过运算符来组成。

比较运算符
运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于
=        比较相等,SQL没有“==”,NULL不安全。例如NULL=NULL 结果是NULL
<=>比较相等,NULL安全,例如NULL<=>NULL的结果是TRUE(1)
!=,<>不等于
BETWEEN a0 AND a1范围匹配,[a0,a1],如果a0<=value<=a1,返回TRUE(1)
IN(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)
学习案例
  • 基本查询

查询英语不及格的同学及英语成绩 ( < 60)

select name,english from exam_result where english<60;

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

select name,chinese,english from exam_result where chinese>english;

查询总分在 200 分以下的同学

select name,chinese+math+english 
from exam_result 
where chinese+math+english<200;
  • AND与OR查询

查询语文成绩大于80分,且英语成绩大于80分的同学

select name,chinese,english from exam_result where chinese>80 and english>80;

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

select name,chinese,english from exam_result where chinese>80 or english>80;
  • 范围查询

BETWEEN ... AND...

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

select name,chinese from exam_result where chinese between 80 and 90;

使用AND也可以实现

select name,chinese 
from exam_result 
where chinese >= 80 and chinese <=90;

IN

查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

select name,math from exam_result where math in(58,59,98,99);

使用 OR 也可以实现

select name,math 
from exam_result
where math=58 or math=59 or math=98 math=99;
  • 模糊查询
  1. 孙%:查询以孙开头的

  2. %孙:查询以孙结尾的

  3. %孙%:查询包含孙的

% 匹配任意多个(包括 0 个)字符

select name from exam_result where name like '孙%';

_ 匹配严格的一个任意字符

select name from exam_result where name like '孙_';

8、分页查询:LIMIT

        其实使用select*这种方式查询是比较危险的,那么日常工作中我们如果需要保证一次查询,并且查询出来的数据准确的话,我们需要使用 分页查询,limit可以限制当前查询最多能查看几个结果。

用例:

select * from exam_result limit 3;

 执行上述SQL语句后,运行结果如下所示: 

此时显示出前三条,那么如果需要查看下面记录怎么显示,使用offset 偏移量 即可。

 用例:

select * from exam_result limit 3 offset 3;

 执行上述SQL语句后,运行结果如下所示:  

三、修改(Update) 

  语法:

update 表名 set 列名 = 值 ... (where 条件);
--此处的where限制具体要修改哪些数据

1、单列修改 

用例:

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

update exam_result set math=60 where name='孙悟空';

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

update exam_result set math=math+5 order by chinese+math+english limit 3;

将所有同学的语文成绩更新为原来的 0.5 倍

update exam_result set chinese = chinese*0.5;--update后面不加条件就是全列修改

 2、多列修改

用例:

将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分

update exam_result set math=60,chinese=70 where name='曹孟德';

将孙悟空同学的英语成绩变为原来的0.8倍,语文成绩变为原来的0.5倍

update exam_result 
set english = english*0.8,chinese = chinese*0.5 
where name = '孙悟空';

四、删除(Delete)

语法:

delete from 表名 (where 条件/order by/limit);
--根据括号内条件把符合的数据从表中删掉

用例:

删除孙悟空同学的考试成绩

delete from exam_result where name = '孙悟空';

删除整表数据

delete from exam_result;

拓展知识:这里的删除表delete和drop table不一样,前者只是删除表里的数据,表还在,后者则是把表的数据与表一起删除。


        希望各位读者阅读后都能有所收获,如果喜欢本篇博客的可以点赞+关注+收藏!!!同时也欢迎各位大神如果在阅读过程中发现文章有错误也可私信指正错误,我们下一篇博客再见~~~

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

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

相关文章

如何指定this

<script>/*如何指定this的值可以通过2类方法指定1.调用时指定1.1call方法1.2apply方法2.创建时指定2.1bind方法2.2箭头函数*/// ------1.调用时指定------//1.1call方法:挨个传入参数//1.2apply方法:数组形式传入参数function foo (numA, numB) {console.log(this)consol…

10个最强大的AI驱动的3D建模工具【生成式AI】

推荐&#xff1a;用 NSDT编辑器 快速搭建可编程3D场景 在快速发展的技术世界中&#xff0c;人工智能 (AI) 已经改变了游戏规则&#xff0c;尤其是在 3D 对象生成领域。 AI 驱动的 3D 对象生成器彻底改变了我们创建和可视化 3D 模型的方式&#xff0c;使该过程更加高效、准确且可…

【LarkDay】UE开发者沙龙活动回顾

文章目录 1、相关咨询2、录播链接3、演讲内容 1、相关咨询 「Paraverse平行云」邀您线上参与LarkDay UE 开发者沙龙 UE超硬核实战攻略&#xff5c;LarkDay UE开发者沙龙回顾&#xff08;文末有福利&#xff09; LarkDay UE 开发者沙龙问卷报告与获奖名单 2、录播链接 【Bil…

每日一题 501二叉搜素树中的众数(中序遍历)

题目 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 如果树中有不止一个众数&#xff0c;可以按 任意顺序 返回。 假定 BST 满足如下定义&a…

固定资产卡片乱怎么管理

固定资产卡片是记录公司固定资产信息的重要工具&#xff0c;如果管理不善&#xff0c;容易造成卡片混乱、数据错误等问题。 为了避免这种情况的发生&#xff0c;可以采取以下措施&#xff1a;  建立完善的资产管理制度&#xff0c;明确固定资产的分类、标准和使用情况&#x…

【vue】vuex持久化插件vuex-persistedstate:

文章目录 一、说明&#xff1a;二、手动利用HTML5的本地存储&#xff1a;三、利用vuex-persistedstate插件【1】安装【2】配置使用【3】存储sessionStorage的情况【4】存储cookie的情况【5】默认持久化所有state&#xff0c;指定需要持久化的state,配置如下【6】vuex引用多个插…

荣耀开发者沙龙 · 北京站 活动精彩回顾

聚梦想&#xff0c;创非凡&#xff0c;荣耀云业务开发者沙龙北京站顺利落幕。来自全国各地的开发者伙伴齐聚北京&#xff0c;共同探讨在应用分发、服务分发、内容分发上的新可能&#xff0c;探索云业务基础能力和荣耀MagicOS的奥秘&#xff0c;解码商业推广平台的增长潜力&…

手写Mybatis:第16章-解析含标签的动态SQL语句

文章目录 一、目标&#xff1a;动态SQL语句二、设计&#xff1a;动态SQL语句三、实现&#xff1a;动态SQL语句3.0 依赖修改3.1 工程结构3.2 动态SQL语句类图3.3 基本类型注册器3.4 Ognl表达式处理3.4.1 Ognl类解析器3.4.2 Ognl缓存3.4.3 表达式求值器 3.5 标签节点解析3.5.1 文…

智能电力运维系统

力安科技智能电力运维系统依托电易云-智慧电力物联网&#xff0c;利用“互联网”的思维模式&#xff0c;通过计算机网络、大数据、云计算、物联网等技术打造“智能电力运维云平台”&#xff0c;采用“线上监管线下维护”深度融合的方式&#xff0c;创新实现全方位主动运维&…

SpringBoot整合MQ

1.创建工程并引入依赖 <!-- 添加rocketmq的启动器--><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.1.1</version></dependency>2.编写…

toFixed() 保留小数

let num item.value / total;item.rate parseFloat(num).toFixed(4) * 100 "%"; 不用parseFloat 有时会失真

使用java代码给Excel加水印,代码全,进阶版

以下代码&#xff0c;亲测可以跑通 1、上一篇博客用了Apache POI库3.8的版本的形式对Excel加了水印&#xff0c;但是最近主线版本用了4.1.2的形式&#xff0c;由于为了保持版本的兼容性&#xff0c;下面有开发了Apache POI的4.1.2的版本号的方案。 pom文件为&#xff1a; <d…

如何培养潜在客户?看完这篇你就懂了

图片来源于&#xff1a;SaleSmartly官网 有效的潜在客户培育策略将帮助您将更多潜在客户转化为付费客户。 但是&#xff0c;这并不总是那么容易——您必须与其他公司争夺受众的注意力&#xff0c;并向您的领导证明为什么值得投资您的产品或服务。在本文中&#xff0c;我将向您展…

手写call方法

<script>/*手写call方法1.定义myCall方法2.设置this并调用函数3.接收剩余参数 */Function.prototype.myCall function myCall (thisArg, ...args) {// 1.设置this并调用函数//给thisArg添加一个一定和原属性不重名的新属性&#xff08;方法&#xff09;//使用symbol来保…

TikTok Shop启动东南亚跨境9.9大促,重要性类比“黑五”

TikTok Shop启动东南亚跨境9.9大促 据了解&#xff0c;TikTok Shop即将开启东南亚99大促活动&#xff0c;其重要程度可类比于“中国的双11”“美国的黑色星期五”等购物节日&#xff0c;且整合了包括马来西亚、新加坡、菲律宾、越南和泰国五个国家站点的大促资源、推出相关的流…

VMware 虚拟机安装

目录 ​编辑 一、环境说明 1.1 VMware 版本 1.2 系统镜像版本 二、VMware环境安装 2.1 下载VMware 2.2 VMware安装 三、安装CentOS-8.3.2011虚拟机系统 3.1 新建VMware虚拟机 3.2 安装程序光盘映像文件&#xff08;iso&#xff09; 3.3 设置账号密码 3.4 设置虚拟机…

【会议征稿】第五届土木工程、环境资源与能源材料国际学术会议(CCESEM 2023)

第五届土木工程、环境资源与能源材料国际学术会议&#xff08;CCESEM 2023&#xff09; 第五届土木工程、环境资源与能源材料国际学术会议&#xff08;CCESEM 2023&#xff09;&#xff0c;定于2023年10月27日至29日在厦门举行。会议主要围绕“土木工程”、“环境资源”、“能…

Automotive 添加一个特权APP

Automotive 添加一个特权APP platform: android-13.0.0_r32 一. 添加一个自定义空调的app为例 路径&#xff1a;packages/apps/Car/MyHvac app内容可以自己定义&#xff0c;目录结构如下&#xff1a; 1.1 Android.bp package {default_applicable_licenses: ["Andr…

软件生命周期及流程

软件生命周期&#xff1a; 软件生命周期(SDLC&#xff0c;Systems Development Life Cycle)是软件开始研制到最终被废弃不用所经历的各个阶段. 需求分析阶段--输出需求规格说明书&#xff08;原型图&#xff09; 测试介入的晚--回溯成本高 敏捷开发模型&#xff1a; 从1990年…

一文读懂|内核顺序锁

Linux 内核有非常多的锁机制&#xff0c;如&#xff1a;自旋锁、读写锁、信号量和 RCU 锁等。本文介绍一种和读写锁比较相似的锁机制&#xff1a;顺序锁&#xff08;seqlock&#xff09;。 顺序锁与读写锁一样&#xff0c;都是针对多读少写且快速处理的锁机制。而顺序锁和读写…