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

【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) 如何给一张表新增数据呢&#xff1f; 新增(Create)&#xff0c;在我们数据库中&#xff0c;用 ins…...

STM32—DMA

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

C语言刷题(3)——“C”

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

搭建Vue工程

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

C语言汉诺塔问题【图文详解】

汉诺塔1. 什么是汉诺塔2. 有关汉诺塔的有趣故事3. 利用动画来演示汉诺塔4. 如何用C语言实现汉诺塔1. 什么是汉诺塔 源于印度古老传说的益智玩具 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;又称河内塔&#xff0c;是一个源于印度古老传说的益智玩具。大梵天创造…...

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教程-讲师&#xff1a;Reythor雷&#xff08;老雷&#xff09; 我们缺乏的不是知识&#xff0c;而是学而不厌的态度 1 MQ概述 1.1 MQ简介…...

【POJ 3352】Road Construction 题解(Tarjan算法求边双连通分量缩点)

描述 现在几乎是夏天&#xff0c;这意味着几乎是夏天的施工时间&#xff01;今年&#xff0c;负责偏远岛热带岛屿天堂道路的好心人希望修复和升级岛上各个旅游景点之间的各种道路。 道路本身也很有趣。由于岛上的奇怪风俗&#xff0c;道路的安排使得它们不会在交叉路口相遇&…...

Python—单分支结构

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

rabbitmq添加用户,虚拟机步,设置rabbitmq配置文件

第一步&#xff0c;登录后台控制页面 http://ip:15672第二步&#xff0c;添加用户和权限 重点&#xff1a;选择Admin和Users 第三步&#xff0c;添加虚拟机 点击侧边的Virtual Hosts 第四步将虚拟机和用户搭配 注意新建好后&#xff0c;在虚拟机列表中&#xff0c;点击虚拟机…...

Codeforces Round#853 div2 A-C

Codeforces Round#853 div2 A-C 等了很久终于迎来了一场cf比赛&#xff0c;白天出去玩了一圈&#xff0c;晚上回来打比赛&#xff0c;这次只出了A,B题。C题思路很巧妙&#xff0c;赛时没做出来&#xff0c;看了大佬学习到了&#xff0c;还是很不错。 A.Serval and Mocha’s A…...

软考之操作系统知识

目录 1.进程管理-进程的概念 2.进程的三态图和五态图 3.进程的同步与互斥 4.PV操作应用 5.死锁问题 6.银行家算法 7.存储管理 8.段式存储组织 9.段页式存储组织 10.页面置换算法 11.磁盘管理 12.作业管理 13.索引文件结构 14.树型目录结构 15.空闲存储空间管理 …...

【线性代数/计算复杂性理论】积和式的指数时间算法:Ryser算法

文章目录一、积和式的定义二、Ryser算法三、代码实现一、积和式的定义 积和式&#xff08;permanent&#xff09;是一种和行列式长得很像的矩阵函数。在介绍积和式之前&#xff0c;我们先看看行列式&#xff08;determinant&#xff09;的定义。 首先需要引入“排列”&#x…...

代码随想录 NO52 | 动态规划_leetcode 647. 回文子串 516.最长回文子序列

动态规划_leetcode 647. 回文子串 516.最长回文子序列今天是动态规划最后一天的题了&#xff0c;整个过程已经接近尾声了&#xff01; 647. 回文子串 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 本题如果我们定义&#xff0c;dp[i] 为 下标i结尾的字符串有 dp…...

【数据挖掘】1、综述:背景、数据的特征、数据挖掘的六大应用方向、有趣的案例

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

【架构师】零基础到精通——康威定律

博客昵称&#xff1a;架构师Cool 最喜欢的座右铭&#xff1a;一以贯之的努力&#xff0c;不得懈怠的人生。 作者简介&#xff1a;一名Coder&#xff0c;软件设计师/鸿蒙高级工程师认证&#xff0c;在备战高级架构师/系统分析师&#xff0c;欢迎关注小弟&#xff01; 博主小留言…...

Could not extract response: no suitable HttpMessageConverter

版本&#xff1a;spring-cloud-openfeign-core-2.1.1.RELEASE.jar&#xff0c;spring-webmvc-5.1.14.RELEASE.jar&#xff0c;jetty-server-9.4.41.v20210516.jar&#xff0c;tomcat-embed-core-9.0.48.jar 问题背景 生产服务请求下游服务时偶发抛出下面的异常&#xff0c;下…...

文献计量三大定律之一---洛特卡定律及普赖斯定律

科学生产率是洛特卡定律的基础&#xff0c;科学生产率”(Scientific Productivity)&#xff09;是指科学家&#xff08;科研人员&#xff09;在科学上所表现出的能力和工作效率&#xff0c;通常用其生产的科学文献的数量来衡量。 1926年&#xff0c;洛特卡在一篇论文中提出了科…...

2023年软考高级网络规划设计师

网络规划设计师是软考高级考试科目之一&#xff0c;也是比较难的科目&#xff0c;据官方数据统计网规每年的通过率很低&#xff0c;而且每年只有下半年11月份考一次&#xff0c;如果是直接裸考&#xff0c;估计很悬哦~ 但是你参加考试获得证书的过程就是一个学习网络规划系统知…...

数据治理驱动因素 -报考题

数据治理并不是到此为止&#xff0c;而是需要直接与企业战略保持一致。数据治理越显著地帮助解决组织问题&#xff0c;人们越有可能改变行为、接受数据治理实践。数据治理的驱动因素大多聚焦于减少风险或者改进流程。&#xff08;1&#xff09;减少风险1&#xff09;一般性风险…...

2023淘宝天猫38节红包满减优惠活动时间是从几月几号什么时候开始?

2023年淘宝天猫38节活动将于2023年3月2日中午12点正式开始&#xff0c;活动将持续至2023年3月8日晚上23点59分。届时&#xff0c;淘宝天猫将推出一系列的优惠活动和红包福利&#xff0c;为广大女性用户送上节日的祝福和福利。在这个特别的节日里&#xff0c;淘宝天猫为女性用户…...

Qt6开发环境搭建避坑指南:为什么你的Kit里没有MSVC2019?两种情况的解决方案都在这

Qt6开发环境搭建避坑指南&#xff1a;为什么你的Kit里没有MSVC2019&#xff1f;两种情况的解决方案都在这 当你满怀期待地安装完Qt6&#xff0c;打开Qt Creator准备大展拳脚时&#xff0c;却发现Kit列表空空如也&#xff0c;或者只有MinGW孤零零地躺在那里——这场景是不是很熟…...

MobaXterm远程连接:管理Baichuan-M2-32B-GPTQ-Int4服务器

MobaXterm远程连接&#xff1a;管理Baichuan-M2-32B-GPTQ-Int4服务器 1. 为什么选择MobaXterm来管理大模型服务器 部署Baichuan-M2-32B-GPTQ-Int4这样的医疗增强推理模型&#xff0c;通常需要在Linux服务器上运行vLLM或SGLang等推理引擎。这类服务对系统资源要求高&#xff0…...

【 MySQL 】第三节 - 约束实战全攻略

&#x1f31f;【深度剖析】MySQL 约束实战全攻略&#xff1a;从建表到外键行为管理&#xff08;附避坑指南&#xff09; 前言 在数据库设计中&#xff0c;约束&#xff08;Constraint&#xff09; 是保障数据一致性、完整性和业务逻辑性的“安全锁”。日前我系统学习了 MySQL…...

Scoop国内镜像加速全攻略:从安装失败到高效下载的完整解决方案

1. Scoop安装失败的常见原因分析 第一次接触Scoop的Windows用户&#xff0c;90%都会在安装阶段卡壳。我刚开始用的时候也踩过不少坑&#xff0c;后来帮团队部署开发环境时更是见识了各种奇葩错误。总结下来主要有三类典型问题&#xff1a; 网络连接问题是最常见的拦路虎。由于S…...

3分钟快速上手:163MusicLyrics终极歌词提取工具完整指南

3分钟快速上手&#xff1a;163MusicLyrics终极歌词提取工具完整指南 【免费下载链接】163MusicLyrics Windows 云音乐歌词获取【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 你是否曾为心爱的歌曲找不到歌词而烦恼&#xff1f;是…...

实测才敢推!盘点2026年用户挚爱的AI论文网站

一天写完毕业论文在2026年已不再是天方夜谭。最新实测数据显示&#xff0c;2026年AI论文网站正以惊人的效率重塑学术写作&#xff0c;覆盖选题构思、文献综述、内容生成、格式排版等全流程场景&#xff0c;真正实现高效搞定论文。 一、全流程王者&#xff1a;一站式搞定论文全链…...

CAD 如何实现序号标注与明细表序号联动?

条件1、准备&#xff1b;如图&#xff0c;多重引线标注了5处件&#xff1b;明细表用表格录入表示&#xff1b;设置值2、设置序号值时&#xff0c;右键选择 “插入字段”&#xff1b;3、字段设置&#xff1b;依次选择&#xff1a;字段类别&#xff0c;选择 对象&#xff1b;字段…...

别再只用STFT了!用Python手把手实现短时DCT(STDCT),搞定音频压缩和特征提取

别再只用STFT了&#xff01;用Python手把手实现短时DCT&#xff08;STDCT&#xff09;&#xff0c;搞定音频压缩和特征提取 如果你处理过音频信号&#xff0c;大概率用过短时傅里叶变换&#xff08;STFT&#xff09;——这个在语音识别、音乐分析中无处不在的工具。但当你面对一…...

用ESP32和2.13寸墨水屏,我把汉朔电子价签改造成了桌面网络时钟(附完整代码)

用ESP32和2.13寸墨水屏打造极简网络时钟&#xff1a;从电子价签到桌面艺术 在智能硬件爱好者的世界里&#xff0c;总有一些被遗忘的电子元件等待重生。汉朔电子价签的2.13寸墨水屏就是这样一个被低估的宝藏——它低功耗、高对比度的特性&#xff0c;配合ESP32的强大无线功能&am…...

LeetCodehot100-21 合并两个有序链表

class Solution { public:ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {if(list1nullptr||list2nullptr){return list1nullptr?list2:list1;}ListNode* headlist1->val<list2->val?list1:list2;ListNode* cur1head->next;ListNode* cur2headlist…...