【MySQL】增删改操作(基础篇)
目录
1、新增操作(Create)
1.1 单行数据 + 全列插入
1.2 多行数据 + 全列插入
1.3 单行数据 + 指定列插入
2、修改操作(Update)
3、删除操作(Delete)
1、新增操作(Create)
如何给一张表新增数据呢? 新增(Create),在我们数据库中,用 insert into 来进行新增操作,首先我们需要有一张表:
create table student (id int,name varchar(10),sex varchar(2)
);
现在我们就对这个 student 这个表进行增加数据的操作。
1.1 单行数据 + 全列插入
这个意思就是,一次只插入一行,每一列都会插入数据,不存在没有不插入数据的列:
insert into student values(1, '张三', '男');
这样我们就插入了一条语句了,这里也可以用 value 不用 values,使用 value 在一次性插入多行的时候效率更优,而 values 在只插入一行的时候速度更优,所以不要看到有一个 s 就表示多行就更快了,其实是反着的。
1.2 多行数据 + 全列插入
如果一次性我有很多行数据想要插入,每列都要插入数据,如何做呢?
insert into student value (2, '小美', '女'),(3, '赵六', '男');
-- Query OK, 2 rows affected (0.00 sec)
-- Records: 2 Duplicates: 0 Warnings: 0
这里通过 mysql 客户端给出的信息,也能看到我们成功插入了 2 行数据了。
1.3 单行数据 + 指定列插入
在我们这个 student 表中,所有的列都是允许为空值的,也就是表示该列中可以不填任何数据,如果我们要插入 李四,而 李四又 不想告诉别人他的性别,那我们就可以不用给 李四 插入性别那一列了:
insert into student (id, name) values (4, '李四');
-- Query OK, 1 row affected (0.00 sec)
那里面 sex 这一列没有被填充怎么办呢?那肯定就是用默认值去填充了!我们这里就是 NULL:
desc student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| sex | varchar(2) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
-- 3 rows in set (0.00 sec)
注意:values () 括号中的内容,个数和类型一定要和表的结构匹配!如果是指定列插入,试具体情况而定!
insert into student(id, name) values(1, '张三', '男');
-- ERROR 1136 (21S01): Column count doesn't match value count at row 1
就比如说,我指定插入 id 和 name 这两列,但是我插入了三列,这样就会报错!多行数据 + 指定列插入也是如此,这里就在讲述了。
2、修改操作(Update)
很多同学在学习阶段不重视修改操作,导致在面试的时候连修改的 SQL 是写错的,所以增删改查,一个都不能少!
语法:
update 表名 set 列名 = 值 where 条件;
我们先来看下表中有哪些数据:
select * from student;
+------+--------+------+-------+--------+
| id | name | sex | java | python |
+------+--------+------+-------+--------+
| 1 | 张三 | 男 | 88.20 | 87.90 |
| 2 | 李四 | 男 | 92.50 | 78.20 |
| 3 | 小美 | 女 | 80.90 | 68.60 |
| 4 | 小花 | 男 | 97.00 | 71.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
+------+--------+------+-------+--------+
-- 6 rows in set (0.02 sec)
● 这里 python 老师觉得有些同学分数太低,决定把 python 分数低于 80 分的同学加上 5 分:
update student set python = python + 5 where python < 80;
-- Query OK, 3 rows affected (0.00 sec)
-- Rows matched: 3 Changed: 3 Warnings: 0mysql> select * from student;
+------+--------+------+-------+--------+
| id | name | sex | java | python |
+------+--------+------+-------+--------+
| 1 | 张三 | 男 | 88.20 | 87.90 |
| 2 | 李四 | 男 | 92.50 | 83.20 |
| 3 | 小美 | 女 | 80.90 | 73.60 |
| 4 | 小花 | 男 | 97.00 | 76.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
+------+--------+------+-------+--------+
-- 6 rows in set (0.00 sec)
这里我们发现 id 为 2,id 为 3, id 为 4,的同学 python 分数都加了 5 分,而后面两个 python 成绩为 NULL 的同学为什么没有加呢?前面不是说过 NULL 是最小值吗?但是这里我们注意,NULL 是最小值,但是 NULL 是无法进行算数运算的!
注意:update 操作是实际在修改服务器硬盘上的数据!
● 将所有同学的 java 成绩减少 5 分:
update student set java = java - 5;
-- Query OK, 4 rows affected (0.00 sec)
-- Rows matched: 6 Changed: 4 Warnings: 0mysql> select * from student;
+------+--------+------+-------+--------+
| id | name | sex | java | python |
+------+--------+------+-------+--------+
| 1 | 张三 | 男 | 83.20 | 87.90 |
| 2 | 李四 | 男 | 87.50 | 83.20 |
| 3 | 小美 | 女 | 75.90 | 73.60 |
| 4 | 小花 | 男 | 92.00 | 76.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
+------+--------+------+-------+--------+
-- 6 rows in set (0.00 sec)
上述可以发现,如果 update 后面不加 where 条件的话,默认就是对指定列的每一行都匹配上了!仍然还是有空值,因为空值是无法进行算数运算的!
注意:这里的 java = java - 5,一定不要写成 java -= 5,因为 SQL 是一门比较老的语言,很多的语法细节和 Java 啥的还是差别比较大的。
● 如果小美考试作弊了,被老师发现了,每一科的成绩都将按照 0 分进行处理,这时我们 update 也可以同时去修改多个列:
update student set java = 0, python = 0 where name = '小美';
-- Query OK, 1 row affected (0.00 sec)
-- Rows matched: 1 Changed: 1 Warnings: 0mysql> select * from student;
+------+--------+------+-------+--------+
| id | name | sex | java | python |
+------+--------+------+-------+--------+
| 1 | 张三 | 男 | 83.20 | 87.90 |
| 2 | 李四 | 男 | 87.50 | 83.20 |
| 3 | 小美 | 女 | 0.00 | 0.00 |
| 4 | 小花 | 男 | 92.00 | 76.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
+------+--------+------+-------+--------+
-- 6 rows in set (0.00 sec)
● 学校为了避免同学们成绩相差过大而失去信心,现需将总分为前两名同学每科成绩降低 3 分:
update student set java = java - 3, python = python - 3 order by java + python desc limit 2;
-- Query OK, 2 rows affected (0.00 sec)
-- Rows matched: 2 Changed: 2 Warnings: 0
这个 SQL 执行是这样的,先按照总分进行降序排序,然后再只选取两个,由于没有 where 条件,所以匹配的是对应列所有行,但是由于 limit 2,限制了只有 2 行,所以就能达到针对前两名的总分减 3 了:
mysql> select * from student;
+------+--------+------+-------+--------+
| id | name | sex | java | python |
+------+--------+------+-------+--------+
| 1 | 张三 | 男 | 80.20 | 84.90 |
| 2 | 李四 | 男 | 84.50 | 80.20 |
| 3 | 小美 | 女 | 0.00 | 0.00 |
| 4 | 小花 | 男 | 92.00 | 76.30 |
| 5 | 李四 | 男 | NULL | NULL |
| 6 | 小花 | 女 | NULL | NULL |
+------+--------+------+-------+--------+
-- 6 rows in set (0.00 sec)
通过查询修改后的,发现确实总分前两名的同学每科成绩都减少了 3 分。
对于 update 操作,我们也需要谨慎,update 中的条件,务必保证要是正确的,千万不能把不该改的数据给改了!!!
3、删除操作(Delete)
delete from 表名 where 条件;
● 删除 java 成绩或者 python 成绩为 NULL 的同学信息:
delete from student where java <=> NULL or python <=> NULL;
-- Query OK, 2 rows affected (0.01 sec)mysql> select * from student;
+------+--------+------+-------+--------+
| id | name | sex | java | python |
+------+--------+------+-------+--------+
| 1 | 张三 | 男 | 80.20 | 84.90 |
| 2 | 李四 | 男 | 84.50 | 80.20 |
| 3 | 小美 | 女 | 0.00 | 0.00 |
| 4 | 小花 | 男 | 92.00 | 76.30 |
+------+--------+------+-------+--------+
-- 4 rows in set (0.00 sec)
注意 :删除操作也是在操作数据库服务器的硬盘,需要小心!
delete 的操作,后面的条件是可以跟 update 一样的,支持 where,order by,limit 等操作。
如果没有写任何条件,那就是把整个表中的数据都删除了:
delete from student;
-- Query OK, 4 rows affected (0.00 sec)select * from student;
-- Empty set (0.00 sec)
对于这两期的内容来说,并没有什么难点,需要是多加练习,熟悉 SQL 的语法,不要去记忆一些关键字,一定要孰能生巧,你敲多了,自然就记住了!
下期预告:【MySQL】查询操作(基础篇)
相关文章:

【MySQL】增删改操作(基础篇)
目录 1、新增操作(Create) 1.1 单行数据 全列插入 1.2 多行数据 全列插入 1.3 单行数据 指定列插入 2、修改操作(Update) 3、删除操作(Delete) 1、新增操作(Create) 如何给一张表新增数据呢? 新增(Create),在我们数据库中,用 ins…...

STM32—DMA
什么是DMA? DMA(Direct Memory Access,直接存储器访问) 提供在外设与内存、存储器和存储器、外设与外设之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于内存的工作来…...

C语言刷题(3)——“C”
各位CSDN的uu们你们好呀,今天小雅兰的内容还是做几道题噢,好好复习一下之前的知识点,现在,就让我们开始复习吧 牛客网在线编程_编程学习|练习题_数据结构|系统设计题库 倒置字符串_牛客题霸_牛客网 BC40 竞选社长 BC41 你是天才…...

搭建Vue工程
搭建Vue工程 localhost 127.0.0.1 域名 IP 192.168.0.28 联网IP 最后都会渲染到一个页面里面,有多少个页面就有多少个页面模板。 vue里面改webpack配置 vue.config.js 配置参考 | Vue CLI /assets /api* 开发的时候用到的请求后台地址 和 项目真实部署上线的时候 请…...

C语言汉诺塔问题【图文详解】
汉诺塔1. 什么是汉诺塔2. 有关汉诺塔的有趣故事3. 利用动画来演示汉诺塔4. 如何用C语言实现汉诺塔1. 什么是汉诺塔 源于印度古老传说的益智玩具 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造…...

1、RocketMQ概述
文章目录1 MQ概述1.1 MQ简介1.2 MQ用途1.3 常见MQ产品1.4 MQ常见协议2 RocketMQ概述2.1 RocketMQ简介2.2 RocketMQ发展历程尚硅谷RocketMQ教程-讲师:Reythor雷(老雷) 我们缺乏的不是知识,而是学而不厌的态度 1 MQ概述 1.1 MQ简介…...
【POJ 3352】Road Construction 题解(Tarjan算法求边双连通分量缩点)
描述 现在几乎是夏天,这意味着几乎是夏天的施工时间!今年,负责偏远岛热带岛屿天堂道路的好心人希望修复和升级岛上各个旅游景点之间的各种道路。 道路本身也很有趣。由于岛上的奇怪风俗,道路的安排使得它们不会在交叉路口相遇&…...

Python—单分支结构
(1)if分支语句 Python中if语句的语法结构: if <条件表达式>: 满足条件运行的代码1 满足条件运行的代码2 代码示例: age 12 if age > 18:print(去上网)if 1 1 2 and :print(我满足条件了)if 1 …...

rabbitmq添加用户,虚拟机步,设置rabbitmq配置文件
第一步,登录后台控制页面 http://ip:15672第二步,添加用户和权限 重点:选择Admin和Users 第三步,添加虚拟机 点击侧边的Virtual Hosts 第四步将虚拟机和用户搭配 注意新建好后,在虚拟机列表中,点击虚拟机…...
Codeforces Round#853 div2 A-C
Codeforces Round#853 div2 A-C 等了很久终于迎来了一场cf比赛,白天出去玩了一圈,晚上回来打比赛,这次只出了A,B题。C题思路很巧妙,赛时没做出来,看了大佬学习到了,还是很不错。 A.Serval and Mocha’s A…...

软考之操作系统知识
目录 1.进程管理-进程的概念 2.进程的三态图和五态图 3.进程的同步与互斥 4.PV操作应用 5.死锁问题 6.银行家算法 7.存储管理 8.段式存储组织 9.段页式存储组织 10.页面置换算法 11.磁盘管理 12.作业管理 13.索引文件结构 14.树型目录结构 15.空闲存储空间管理 …...
【线性代数/计算复杂性理论】积和式的指数时间算法:Ryser算法
文章目录一、积和式的定义二、Ryser算法三、代码实现一、积和式的定义 积和式(permanent)是一种和行列式长得很像的矩阵函数。在介绍积和式之前,我们先看看行列式(determinant)的定义。 首先需要引入“排列”&#x…...

代码随想录 NO52 | 动态规划_leetcode 647. 回文子串 516.最长回文子序列
动态规划_leetcode 647. 回文子串 516.最长回文子序列今天是动态规划最后一天的题了,整个过程已经接近尾声了! 647. 回文子串 确定dp数组(dp table)以及下标的含义 本题如果我们定义,dp[i] 为 下标i结尾的字符串有 dp…...

【数据挖掘】1、综述:背景、数据的特征、数据挖掘的六大应用方向、有趣的案例
目录一、背景1.1 学习资料1.2 数据的特征1.3 数据挖掘的应用案例1.4 获取数据集1.5 数据挖掘的定义二、分类三、聚类四、关联分析五、回归六、可视化七、数据预处理八、有趣的案例8.1 隐私保护8.2 云计算的弹性资源8.3 并行计算九、总结一、背景 1.1 学习资料 推荐书籍如下&a…...

【架构师】零基础到精通——康威定律
博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…...

Could not extract response: no suitable HttpMessageConverter
版本:spring-cloud-openfeign-core-2.1.1.RELEASE.jar,spring-webmvc-5.1.14.RELEASE.jar,jetty-server-9.4.41.v20210516.jar,tomcat-embed-core-9.0.48.jar 问题背景 生产服务请求下游服务时偶发抛出下面的异常,下…...

文献计量三大定律之一---洛特卡定律及普赖斯定律
科学生产率是洛特卡定律的基础,科学生产率”(Scientific Productivity))是指科学家(科研人员)在科学上所表现出的能力和工作效率,通常用其生产的科学文献的数量来衡量。 1926年,洛特卡在一篇论文中提出了科…...

2023年软考高级网络规划设计师
网络规划设计师是软考高级考试科目之一,也是比较难的科目,据官方数据统计网规每年的通过率很低,而且每年只有下半年11月份考一次,如果是直接裸考,估计很悬哦~ 但是你参加考试获得证书的过程就是一个学习网络规划系统知…...
数据治理驱动因素 -报考题
数据治理并不是到此为止,而是需要直接与企业战略保持一致。数据治理越显著地帮助解决组织问题,人们越有可能改变行为、接受数据治理实践。数据治理的驱动因素大多聚焦于减少风险或者改进流程。(1)减少风险1)一般性风险…...

2023淘宝天猫38节红包满减优惠活动时间是从几月几号什么时候开始?
2023年淘宝天猫38节活动将于2023年3月2日中午12点正式开始,活动将持续至2023年3月8日晚上23点59分。届时,淘宝天猫将推出一系列的优惠活动和红包福利,为广大女性用户送上节日的祝福和福利。在这个特别的节日里,淘宝天猫为女性用户…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案
目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)
漏洞概述 漏洞名称:Apache Kafka Connect JNDI注入导致的远程代码执行漏洞 CVE编号:CVE-2023-25194 CVSS评分:8.8 影响版本:Apache Kafka 2.3.0 - 3.3.2 修复版本:≥ 3.4.0 漏洞类型:反序列化导致的远程代…...
统计学(第8版)——统计抽样学习笔记(考试用)
一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征(均值、比率、总量)控制抽样误差与非抽样误差 解决的核心问题 在成本约束下,用少量样本准确推断总体特征量化估计结果的可靠性(置…...
Vue 实例的数据对象详解
Vue 实例的数据对象详解 在 Vue 中,数据对象是响应式系统的核心,也是组件状态的载体。理解数据对象的原理和使用方式是成为 Vue 专家的关键一步。我将从多个维度深入剖析 Vue 实例的数据对象。 一、数据对象的定义方式 1. Options API 中的定义 在 Options API 中,使用 …...