当前位置: 首页 > news >正文

mysql基础-数据操作之增删改

目录

1.新增数据

1.1单条数据新增

1.2多条数据新增

1.3查询数据新增

2.更新

2.1单值更新

2.2多值更新

2.3批量更新

2.3.1 批量-单条件更新

2.3.2批量-多条件更新

2.4 插入或更新

2.5 联表更新

3.删除


本次分享一下数据库的DML操作语言。

操作表的数据结构:

CREATE TABLE `t_order` (`order_id` int(12) NOT NULL AUTO_INCREMENT COMMENT '订单主键',`money` decimal(10,2) DEFAULT NULL COMMENT '金额',`good_id` int(12) DEFAULT NULL COMMENT '商品ID',`good_name` varchar(20) DEFAULT NULL COMMENT '商品名称',PRIMARY KEY (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4

新增语法:

insert into <table> (字段1,字段2) values (字段1值,字段2值)

1.新增数据

1.1单条数据新增

新增一条商品名称为松子的订单:

INSERT INTO `t_order`(`money`, `good_id`, `good_name`) VALUES ( 2.00, 11, '松子');

1.2多条数据新增

和单条数据相比,就是多一组数值。

INSERT INTO `t_order`(`money`, `good_id`, `good_name`) VALUES ( 2.00, 11, '松子'),( 3.00, 12, '巴旦木');

注意:字段名和字段值一定要一一对应。

1.3查询数据新增

假如我们有一张2023年的表,表结构和t_order相同,数据如下:

我们可以使用如下语句,将数据插入到t_order表中,

INSERT INTO `t_order`(`money`, `good_id`, `good_name`)   select  `money`, `good_id`, `good_name` from t_order_2023 where good_name = '苹果'

注意:插入的字段名顺序和查询的值需要一一对应。

2.更新数据

更新语法:

update <table> set 字段1=更新1值,字段2=更新2值

以下示例就不再粘图,有兴趣可以自行试一下。

2.1单值更新

示例:将order_id = 5的数据的商品名称改为火龙果

update t_order set good_name = '火龙果' where order_id = 5

2.2多值更新

示例:将商品名称为火龙果的数据的金额改为10,商品id改为99

update t_order set money=10,good_id = 99 where good_name = '火龙果'

2.3批量更新

2.3.1 批量-单条件更新

所谓单条件就是case中只有一个条件。

示例:将order_id = 1的商品名称改为松子1,将order_id = 2 的商品名称改为巴旦木1

UPDATE t_order 
SET good_name =
CASEWHEN order_id = 1 THEN '松子1' WHEN order_id = 2 THEN '巴旦木1'else good_nameend 

2.3.2 批量-多条件更新

所谓单条件就是case中有多个条件。

示例:将order_id = 1且 金额 = 2 的商品名称改为松子1,将order_id = 2 且 金额 = 3 的商品名称改为巴旦木1

UPDATE t_order 
SET good_name =
CASEWHEN order_id = 1 and money = 2 THEN '松子2' WHEN order_id = 2 and money = 3 THEN '巴旦木2'else good_nameend 

2.4 插入或更新

执行一条sql语句,如果存在则更新,如果不存在,则新增。前提必须有主键或唯一索引

语法:

INSERT INTO <table> (字段1, 字段2, 字段3, ...)  VALUES (字段值1, 字段值2, 字段值3, ...)
ON DUPLICATE KEY UPDATE SET 字段2 = 字段2只, 字段3 = 字段3值, ...;

示例:插入或更新 order_id = 1 的数据的商品名称改为'松子3'

	insert into t_order (order_id,good_name) value (1,'松子3') ON DUPLICATE KEY update good_name = '松子3';

注意事项:此处返回的修改条数为2,但是在数据库修改的就是order_id = 1这条数据。

2.5 联表更新

示例:假如我们存在一张商品表(表结构如下),此时我们需要更新商品名称为‘松子3’的订单的金额为5,商品名称的判断不能从订单中判断,需要从商品中判断,商品表与订单表通过good_id关联。

-- 商品表结构
CREATE TABLE `t_good` (`good_id` int(12) NOT NULL COMMENT '主键',`good_name` varchar(20) DEFAULT NULL COMMENT '商品名称',PRIMARY KEY (`good_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

sql如下(下次分享联表查询):

update t_order t1 join t_good  t2 on t1.good_id = t2.good_id set money = 5 where t2.good_name = '松子3'

3.删除数据

语法:

delete from  <table> where <condition>

示例:(订单表在生产环境均不会删除,此处仅为示例)假如我们存在一张商品表(表结构如上-联表更新),此时我们需要删除商品名称为'松子3'的数据,商品名称的判断不能从订单中判断,需要从商品中判断,商品表与订单表通过good_id关联。

删除语句如下:

DELETE 
FROMt_order 
WHEREorder_id IN ( SELECT order_id FROM t_order WHERE good_id = ( SELECT good_id FROM t_good WHERE good_name = '松子3' ) )

报错信息:

delete from t_order where order_id in (select order_id from t_order where good_id = (select good_id from t_good where good_name = '松子3'  ) )
> 1093 - You can't specify target table 't_order' for update in FROM clause
> 时间: 0.002s

报错的含义:不能从一个表中查询出数据,再继续删除这个表单的数据。我们可以修改在查询出来的数据进行一次表名封装。

修改如下:

DELETE 
FROMt_order 
WHEREorder_id IN ( select order_id from (SELECT order_id FROM t_order WHERE good_id = ( SELECT good_id FROM t_good WHERE good_name = '松子3' )) a  )

这样就可以了,举例可能不当,错误原因当理解,解决方法当知道。

本次分享至此。

相关文章:

mysql基础-数据操作之增删改

目录 1.新增数据 1.1单条数据新增 1.2多条数据新增 1.3查询数据新增 2.更新 2.1单值更新 2.2多值更新 2.3批量更新 2.3.1 批量-单条件更新 2.3.2批量-多条件更新 2.4 插入或更新 2.5 联表更新 3.删除 本次分享一下数据库的DML操作语言。 操作表的数据结构&#xf…...

写字母(文件)

请编写函数&#xff0c;将大写字母写入文件中。 函数原型 void WriteLetter(FILE *f, int n);说明&#xff1a;参数 f 为文件指针&#xff0c;n 为字母数目(1 ≤ n ≤ 26)。函数将前 n 个大写英文字母写入 f 所指示的文件中。 裁判程序 #include <stdio.h> #include &…...

基于Jackson自定义json数据的对象转换器

1、问题说明 后端数据表定义的id主键是Long类型&#xff0c;一共有20多位。 前端在接收到后端返回的json数据时&#xff0c;Long类型会默认当做数值类型进行处理。但前端处理20多位的数值会造成精度丢失&#xff0c;于是导致前端查询数据出现问题。 测试前端Long类型的代码 …...

【Java】缓存击穿解决方案

文章目录 什么是SingleFlight&#xff1f;优化缺点优化策略 什么是SingleFlight&#xff1f; SingleFlight是go语言中sync包中的一个东西。它用于确保在并发环境下某个操作&#xff08;例如&#xff0c;函数调用&#xff09;即使被多个goroutine同时请求&#xff0c;也只会被执…...

【HarmonyOS】掌握 Stage 模型的核心概念与应用

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…...

2024年甘肃省职业院校技能大赛 “信息安全管理与评估”赛项样题卷①

2024年甘肃省职业院校技能大赛 高职学生组电子与信息大类信息安全管理与评估赛项样题 第一阶段&#xff1a;第二阶段&#xff1a;模块二 网络安全事件响应、数字取证调查、应用程序安全第二阶段 网络安全事件响应第一部分 网络安全事件响应第二部分 数字取证调查第三部分 应用程…...

我的AI之旅开始了

知道重要&#xff0c;但是就是不动。 今天告诉自己&#xff0c;必须开始学习了。 用这篇博文作为1月份AI学习之旅的起跑点吧。 从此&#xff0c;无惧AI&#xff0c;无惧编程。 AI之路就在脚下。 AI&#xff0c;在我理解&#xff0c;就是让机器变得更加智能&#…...

Day25 235二叉搜索树的公共祖先 701二叉搜索树插入 450二叉搜索树删除

235 二叉搜索树的最近公共祖先 如果利用普通二叉树的方法&#xff0c;就是利用后序遍历回溯从低向上搜索&#xff0c;遇到左子树有p&#xff0c;右子树有q&#xff0c;那么当前结点就是最近公共祖先。本题是二叉搜索树&#xff0c;所以说是有序的&#xff0c;一定能够简化上面…...

android系列-init 挂载文件系统

1.init 挂载文件系统 //android10\system\core\init\main.cppint main(int argc, char** argv) {return FirstStageMain(argc, argv); } //android10\system\core\init\first_stage_init.cppint FirstStageMain(int argc, char** argv) {CHECKCALL(mount("tmpfs",…...

Spring 七种事务传播性介绍

作者&#xff1a;vivo 互联网服务器团队 - Zhou Shaobin 本文主要介绍了Spring事务传播性的相关知识。 Spring中定义了7种事务传播性&#xff1a; PROPAGATION_REQUIRED PROPAGATION_SUPPORTS PROPAGATION_MANDATORY PROPAGATION_REQUIRES_NEW PROPAGATION_NOT_SUPPORTED…...

Count the Colors ZOJ - 1610

题目链接 题意&#xff1a; 给定n个区间[ l, r ]和颜色c, 每次给[l, r]涂上c这个颜色. 后面的涂色会覆盖之前的涂色. 最后要求输出区间[0, 8000]中每种颜色及其出现的次数, 如果该颜色没有出现过则不输出. 思路&#xff1a;典型的线段树区间染色问题&#xff0c;一般这种题…...

MATLAB点云处理总目录

一、点云滤波 原始点云包含过多噪点和冗余点&#xff0c;滤波和采样往往是点云预处理的必要步骤 1.滤波 重复点去除 NAN或INF无效点去除 自定义半径滤波 2.采样 基于空间格网的点云抽稀 随机下采样 均匀体素下采样 非均匀体素下采样 二、邻近搜索 如何组织点云快速获取当前…...

C语言逗号表达式如何计算

在 C 语言中&#xff0c;逗号表达式是一种特殊的表达式形式&#xff0c;它由逗号分隔的多个表达式组成。 逗号表达式的计算过程如下&#xff1a;1、从左到右依次计算每个表达式的值。2、最终返回的值是最右边表达式的值。3、逗号表达式的求值过程是顺序执行的&#xff0c;不会…...

Ubuntu 本地部署 ChatGPT-Next-Web

Ubuntu 本地部署 ChatGPT-Next-Web 文章目录 Ubuntu 本地部署 ChatGPT-Next-Web ChatGPT-Next-Web 项目地址&#xff1a;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 本文主要演示如何在 Ubuntu 本地&#xff08;默认是端口 3000&#xff09;部署 ChatGPT-Next-Web&am…...

小程序商城搭建:快速入门指南

随着移动互联网的普及&#xff0c;小程序商城逐渐成为了商家们进行线上销售的重要渠道。如果你也想搭建一个小程序商城&#xff0c;那么本文将为你介绍如何使用乔拓云这一第三方小程序搭建平台来轻松搭建自己的小程序商城。 一、选择合适的第三方小程序搭建平台 在选择第三方小…...

c# windows10大小端试

测试代码&#xff1a; unsafe public void ceshi() {byte[] by BitConverter.GetBytes(0x12345678);Debug.WriteLine(" byte[0] 0x" by[0].ToString("x2"));Debug.WriteLine(" byte[1] 0x" by[1].ToString("x2"));Debug.WriteLi…...

【算法专题】动态规划之斐波那契数列模型

动态规划1.0 动态规划 - - - 斐波那契数列模型1. 第 N 个泰波那契数2. 三步问题3. 使用最小花费爬楼梯4. 解码方法 动态规划 - - - 斐波那契数列模型 1. 第 N 个泰波那契数 题目链接 -> Leetcode -1137. 第 N 个泰波那契数 Leetcode -1137. 第 N 个泰波那契数 题目&…...

K2P路由器刷OpenWrt官方最新版本固件OpenWrt 23.05.2方法 其他型号的智能路由器OpenWrt固件刷入方法也基本上适用

最近路由器在开机时总出问题,于是就那他来开刀,直接刷一个OpenWrt官方最新版本的固件, 刷其他第三方的固件总是觉得不安全, 而且很多第三方固件都带了些小工具,始终会有安全隐患, 而且占用内存空间太多,本来这个东西就没有多少内存,于是就干脆刷一个官方的原始固件(才6.3M, 相…...

AI大语言模型会带来了新一波人工智能浪潮?

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…...

How to view the high-tech zone atmospheric project

How to view the high-tech zone atmospheric project 问题与建议登录界面没有验证码部分页面加载时间过长联动型下拉列表框点击反应迟钝页面缺乏导航没有采用https协议没有完成域名实名认证左侧菜单区不能收缩大屏区域功能图层不能完全隐藏部分页面表单控件没有文案提示其功能…...

sqlalchemy 中的缓存机制解释

SQLAlchemy 的缓存机制主要涉及两个层面&#xff1a;会话&#xff08;Session&#xff09;缓存和查询缓存。这两种缓存机制对于提升应用性能和数据一致性都非常重要。下面详细解释这两种缓存机制&#xff1a; 1. 会话&#xff08;Session&#xff09;缓存 会话缓存是 SQLAlch…...

网络安全B模块(笔记详解)- 漏洞扫描与利用

漏洞扫描与利用 1.通过Kali对服务器场景server2003以半开放式不进行ping的扫描方式并配合a,要求扫描信息输出格式为xml文件格式,从生成扫描结果获取局域网(例如172.16.101.0/24)中存活靶机,以xml格式向指定文件输出信息(使用工具Nmap,使用必须要使用的参数),并将该操…...

【C语言】指针——从底层原理到应用

C语言指针-从底层原理到花式技巧&#xff0c;用图文和代码帮你讲解透彻 目录 一、前言二、变量与指针的本质 1. 内存地址2. 32位与64位系统3. 变量4. 指针变量5. 操作指针变量 5.1 指针变量自身的值5.2 获取指针变量所指向的数据5.3 以什么样的数据类型来使用/解释指针变量所指…...

想了解步进伺服的朋友可以了解下这个方案

TMC4361A 是一款小型化、高性能的驱动步进电机的运动控制器。实用于很多的斜坡轮廓的应用&#xff0c;特别是速度快、限制过冲的运动场合。用户根据自己的要求实现 S 形或 sixPoint™六点式速度轮廓配置及闭环或开环的操作、动态修改运动参数。TMC4361A 包含 SPI接口、Step/Dir…...

航天航空线束工艺3D虚拟展馆支持多人异地参观漫游

为了满足汽车线束企业员工工作需要&#xff0c;让新老员工了解到更先进、规范的线束工艺设计技术&#xff0c;华锐视点基于VR虚拟仿真、web3d开发和图形图像技术制作了一款汽车线束工艺设计VR虚拟仿真模拟展示系统。 汽车线束工艺设计VR虚拟仿真模拟展示系统共分为pc电脑端和VR…...

JAVA面向对象基础-容器

一、泛型 我们可以在类的声明处增加泛型列表&#xff0c;如&#xff1a;<T,E,V>。 此处&#xff0c;字符可以是任何标识符&#xff0c;一般采用这3个字母。 【示例9-1】泛型类的声明 1 2 3 4 5 6 7 8 9 10 class MyCollection<E> {// E:表示泛型; Object[] o…...

2022年山东省职业院校技能大赛高职组信息安全管理与评估—开发测试服务器解析

任务5:开发测试服务器 目录 任务5:开发测试服务器 解题方法:...

2024年我国网络安全发展形势展望

2023年&#xff0c;我国网络安全政策法规陆续出台&#xff0c;网络安全与数据安全产业发展势头强劲&#xff0c;网络安全形势整体向好。展望2024年&#xff0c;世界各国在网络空间中的竞争将变得愈发激烈&#xff0c;我国网络安全领域的法律法规将不断完善&#xff0c;数据安全…...

如何使用 NFTScan NFT API 在 PlatON 网络上开发 Web3 应用

PlatON 是由万向区块链和矩阵元主导开发的面向下一代的全球计算架构&#xff0c;创新性的采用元计算框架 Monad 和基于 Reload 覆盖网络的同构多链架构&#xff0c;其愿景是成为全球首个提供完备隐私保护能力的运营服务网络。它提供计算、存储、通讯服务&#xff0c;并提供算力…...

如何使用web文件管理器Net2FTP搭建个人网盘

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…...

上海 房地产网站建设/百度网盘帐号登录入口

此代码在我的本地xampp apache服务器中工作正常。 我在具有不同IP地址系统的局域网中运行相同的代码。 该文件无法打开&#xff0c;我无法将其写入所需的目录。 请做有需要的吗&#xff1f; 提前致谢。通过下面的代码传递xml文件。#!"C:\xampp\perl\bin\perl.exe"#!&…...

怎么做淘宝 天猫京东网店的网站/重庆seo的薪酬水平

明确学习目标&#xff0c;不急于求成当下是一个喧嚣、浮躁的时代。我们总是被生活中大量涌现的热点所吸引&#xff0c;几乎没有深度阅读和思考的时间和机会。我始终认为&#xff0c;学习是需要沉下心来慢慢钻研的&#xff0c;是长期的&#xff1b;同时&#xff0c;学习不应该被…...

免费下载高清图片素材的网站/关于普通话的手抄报

本文框架如下 第一部分&#xff0c;主要是在阅读代码过程中的日志和笔记&#xff1b; 第二部分&#xff0c;主要介绍了 Redis 的主要框架&#xff0c;以及 Redis 是如何提供服务的&#xff0c;从一个最简单的命令开始讲起&#xff1b; 第三部分&#xff0c;主要介绍 Redis 底…...

微商城网站建设好么/推客平台

CGI CGI全称是“公共网关接口”(Common Gateway Interface)&#xff0c;HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具&#xff0c;其程序须运行在网络服务器上。 CGI可以用任何一种语言编写&#xff0c;只要这种语言具有标准输入、输出和环境变量。如php,perl,tc…...

企业网站代码/武汉网络推广优化

一、所需环境 1&#xff0c;JDK 2&#xff0c;HADOOP 4&#xff0c;mysql 3&#xff0c;HIVE 二、安装azkaban 1,安装git命令: yum install git 2,下载azkaban源码&#xff1a;git clone https://github.com/azkaban/azkaban.git 3,安装到 azkaban-tar目录下 4,更改配置文件&am…...

一个教做网页的网站/学校网站模板

1.JDK,JRE,JVM的作用及关系 (1)作用 JVM&#xff1a;保证Java语言跨平台 JRE&#xff1a;Java程序的运行环境 JDK&#xff1a;Java程序的开发环境 (2)关系 JDK&#xff1a;JRE工具 JRE&#xff1a;JVM类库 …...