MySQL--插入、更新与删除数据

news2024/9/21 22:33:49

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除

一、插入数据

1、为表的所有字段插入数据

使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值,其语法:

 insert into table_name (column_list) values (value_list);

为演示示例,我们创建表:

 create table person(
 id      int unsigned not null auto_increment,
 name    char(40) not null default '',
 age     int not null default 0,
 info    char(50) null,
 primary key (id)
 );

像表中插入值的方法有两种:一种是指定所有字段名,另一种是完全不指定字段名

 # 在person表中,插入一条新记录,id值为1,name值为Green,age值为21,info值为Lawyer
 insert into person (id,name,age,info)
 values (1,'Green',21,'Lawyer');
 ​
 -------# insert语句后面的列顺序可以不是person表定义时的顺序;需要保证值的顺序与列字段的顺序相同
 # 插入一条新记录,id为2,name为Suse,age为22,indo为dancer
 insert into person (age,name,id,info)
 values (22,'Suse',2,'dancer');

使用INSERT插入数据时,允许列名称列表column_list为空,此时,值列表中需要为表的每一个字段指定值,并且值的顺序必须和数据表中字段定义时的顺序相同

 # 在person表中,插入一条记录,id值为3,name值为Marry,age值为24,info值为Musician
 insert into person values (3,'Marry',24,'Musician');

2、为表的指定字段插入数据

为表的指定字段插入数据,就是在INSERT语句中只向部分字段中插入值,而其他字段的值为表定义时的默认值

 # 在person表中,插入一条:name为Willam,age为20,info为sports man;
 insert into person (name,age,info)
 values ('Willam',20,'sports man');
 ​
 ------# 未定义的部分使用默认值
 # 在person表中,插入一条:name为Laura,age为25
 insert into person (name,age) values ('Laura',25);

3、同时插入多条记录

INSERT语句可以同时向数据表中插入多条记录,插入时指定多个值列表每个值列表之间<u>用逗号分隔开

 insert into table_name (column_list)
 values (value_list1),(value_list2),...,(value_listn);

 # 在person表中,插入一条:在name、age和info字段指定插入值,同时插入3条新记录
 insert into person (name,age,info)
 values ('Evans',27,'secretary'),
 ('Dale',22,'cook'),
 ('Edison',28,'singer');
 ​
 # 在person表中,不指定插入列表,同时插入2条记录
 insert into person
 values (9,'Harry',21,'magician'),
 (null,'Harriet',19,'pianist');

4、将查询结果插入到表中

INSERT语句用来给数据表插入记录时指定插入记录的列值。INSERT还可以将SELECT语句查询的结果插入到表,如果想要从另外一个表中合并个人信息到person 表,不需要把每一条记录的值一个一个输入,只需要使用一条INSERT语句和一条SELECT语句组成的组合语句即可快速地从一个或多个表中向一个表中插入多行。基本语法格式如下:

 insert into table_name1 (column_list)
 select (column_list2) from table_name2 where (condition)

 # 从person_old表中查询所有的记录,并将其插入到person表中
 mysql> create table person_old(
 id      int unsigned not null auto_increment,
 name    char(40) not null default '',
 age     int not null default 0,
 info    char(50) null,
 primary key (id)
 );
 mysql> insert into person_old values (11,'Harry',20,'student'),(12,'Beckham',31,'police');
 mysql> insert into person(id,name,age,info) select id,name,age,info from person_old;

二、更新数据

MySQL中使用 UPDATE 语句更新表中的记录,可以更新特定的行或者同时更新所有的行

 update table_name 
 set column_name1 = value1,column_name2=value2,...,column_namen=valuen
 where (condition);

 # 在person表中,更新id值为11的记录,将age字段值改为15,将name字段值改为LiMing
 update person set age=15,name='LiMing' where id=1;
 ​
 # 在person表中,更新age值为19-22的记录,将info字段值都改为student
 update person set info='student' where age between 19 and 22;

三、删除数据

从数据表中删除数据使用 DELETE 语句DELETE语允许WHERE子指定删除条件。DELETE语句基本语法格式如下:

 delete from table_name [where <condition>];

 # 在person表中,删除id等于11的记录
 delete from person where id=11;
 ​
 # 在person表中,使用delete语句同时删除多条记录,在前面的update语句中将age字段值在19-22之间的记录的info字段值修改为student,删除这些记录
 delete from person where age between 19 and 22;
 ​
 ------# 删除person表中所有记录
 delete from person;

四、为表增加计算列

计算列就是某一列的值是通过别的列计算得来的,其语法格式如下:

 col_name date_type [GENERATED ALWAYS] AS (expression)
 [VIRTUAL | STORED] [UNIQUE [KEY]] [COMMENT comment]
 [NOT NULL | NULL] [[PRIMARY] KEY]

 # 定义数据表tb1,字段id、a、b和c,其中c为计算列,用于计算a+b的值
 create table tb1(
 id    int(9)     not null auto_increment,
 a     int(9)     default null,
 b     int(9)     default null,
 c     int(9)     generated always as ((a+b)) virtual,
 primary key (id)
 );
 insert into tb1(a,b) values (100,200);
 mysql> select * from tb1;
 +----+------+------+------+
 | id | a    | b    | c    |
 +----+------+------+------+
 |  1 |  100 |  200 |  300 |
 +----+------+------+------+
 # 更新数据发现c列值改变
 update tb1 set a=500;
 select * from tb1;
 +----+------+------+------+
 | id | a    | b    | c    |
 +----+------+------+------+
 |  1 |  500 |  200 |  700 |
 +----+------+------+------+

致谢

在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。 

学习永无止境,让我们共同进步!!

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

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

相关文章

Gradle 统一管理依赖

BOM 介绍 BOM 是 Bill of Material 的简写&#xff0c;表示物料清单。BOM 使我们在使用 Maven 或 Gradle 构建项目时对于依赖版本的统一变得更加规范&#xff0c;升级依赖版本更容易。 比如我们使用 SpringBoot 和 SpringCloud 做项目时&#xff0c;可以使用他们发布的 BOM …

CIFAR-10 数据集图像分类与可视化

数据准备 CIFAR-10 and CIFAR-100 datasets (toronto.edu)在上述网站中下载Python版本的CIFAR-10数据集。 下载后的压缩包解压后会得到几个文件如下&#xff1a; 对应的data_batch_1 ~ data_batch_5 是划分好的训练数据&#xff0c;每个文件里包含10000张图片&#xff0c;test…

基于SpringBoot + Vue的前后端分离项目-外包平台

项目名称&#xff1a;外包平台 作者的B站地址&#xff1a;程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csdn地址&#xff1a;程序员云翼-CSDN博客 1.项目技术栈&#xff1a; 前后端分离的项目 后端&#xff1a;Springboot MybatisPlus 前端&#xff1a;Vue …

达梦数据库安装(DM8)新版 windows11下安装及超详细使用教程

windows11下达梦数据库安装 1、安装参考链接2、存在问题2.1新建表空间失败&#xff0c;详情错误号: -70142.2创建表、视图等 1、安装参考链接 https://blog.csdn.net/u014096024/article/details/134722013 2、存在问题 2.1新建表空间失败&#xff0c;详情错误号: -7014 解决…

掌握 LINQ:通过示例解释 C# 中强大的 LINQ的集运算

文章目录 集运算符原理实战示例1. Union2. Intersect3. Except4. ExceptWith5. Concat6. Distinct 注意事项总结 在C#中&#xff0c;LINQ&#xff08;Language Integrated Query&#xff09;提供了丰富的集合操作功能&#xff0c;使得对集合数据进行查询、过滤、排序等操作变得…

从程序员视角浅入浅出了解计算机硬件——内存

前言 内存(Memory)是计算机的重要部件&#xff0c;用于存储数据和指令的重要组件&#xff0c;是冯诺依曼计算机中是的存储器部分。作为与CPU进行沟通的桥梁&#xff0c;内存用于临时存储计CPU中的运算数据&#xff0c;以及与硬盘、网卡等外部组件数据&#xff0c;以便CPU能够快…

STM32卡死、跑飞如何调试确定问题

目录 前言 一、程序跑飞原因 二、调试工具 2.1Registers工具 2.2 Memory工具 2.3 Disassembly工具 2.4 Call Stack工具 三、找到程序跑飞位置 方式一、 方式二、 前言 我们初学STM32的时候代码难免会出现疏忽&#xff0c;导致程序跑飞&#xff0c;不再正常运行&#…

电脑桌面便签软件哪个好,桌面便签如何显示在桌面?

在繁忙的工作日里&#xff0c;一款优秀的电脑桌面便签软件就像是一位贴心的小秘书&#xff0c;帮助你记录重要事项&#xff0c;提醒你不要错过任何细节。那么&#xff0c;哪个电脑桌面便签软件可以帮助我们更好地记录和管理日常工作和学习中的事项呢&#xff1f;又如何将桌面便…

16.搜索框滑块和简单验证

一、一些简单的验证 邮箱验证 <!-- 邮件验证 --><p>邮箱&#xff1a;<input type"email" name"email"></p>邮箱验证框的type是email&#xff0c;在框内&#xff0c;它会自动检测输入内容的格式 &#xff0c;若格式非邮箱格式&…

从分散到整合,细说比特币发展史

原文标题&#xff1a;《Layered Bitcoin》 撰文&#xff1a;Saurabh Deshpande 编译&#xff1a;Chris&#xff0c;Techub News 古往今来&#xff0c;货币在社会中都具有三个关键的功能&#xff1a;财富的储存手段、交换媒介和计量单位。虽然货币的形式在不断变化&#xff0c…

一文了解一下 MindSpeed,MindSpeed 是专为华为昇腾设备设计的大模型分布式加速套件。

https://gitee.com/ascend/MindSpeed Gitee Ascend/MindSpeed 项目&#xff0c;MindSpeed 是针对华为昇腾设备的大模型加速库。 MindSpeed 是专为华为昇腾设备设计的大模型加速库&#xff0c;旨在解决用户在大模型训练过程中遇到的显存资源不足等挑战。该库借鉴了 Megatron、D…

如何理解分布式光纤测温DTS的“实时在线监测”的概念?

实时在线监测是相对于非实时在线监测而言的一种高要求的监测方式。在非实时监测中&#xff0c;我们可以使用手持红外测温仪等设备&#xff0c;在需要时进行开机测量&#xff0c;而在不需要时则可以关机。然而&#xff0c;实时在线监测的目标是要求连续、全天候、每秒都不间断地…

检索增强生成RAG系列10--RAG的实际案例

讲了很多理论&#xff0c;最后来一篇实践作为结尾。本次案例根据阿里云的博金大模型挑战赛的题目以及数据集做一次实践。 完整代码地址&#xff1a;https://github.com/forever1986/finrag.git 本次实践代码有参考&#xff1a;https://github.com/Tongyi-EconML/FinQwen/ 目录 …

我的cesium for UE 踩坑之旅(一)

我的小小历程 创建过程场景搭建引入cesium for UE插件创建空白关卡并添加SunSky照明和FloatingPawn进行场景设置设置cesium token重设场景初始点位置顶层菜单窗口 —>打开cesium ion Assets &#xff0c;从而加入自己的资产 UI制作前端UI页面制作顶部菜单打开内容浏览器窗口…

第100+19步 ChatGPT学习:R实现朴素贝叶斯分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现朴素贝叶斯分类 &#xf…

人工智能ai聊天都有哪些?分享4款智能软件!

在这个科技日新月异的时代&#xff0c;人工智能&#xff08;AI&#xff09;已经悄然渗透到我们生活的方方面面&#xff0c;其中最令人兴奋的莫过于那些能够与人类进行流畅对话的AI聊天软件。它们不仅让交流跨越了物种的界限&#xff0c;更在娱乐、教育、客服等多个领域展现出无…

苹果电脑可以玩什么小游戏 适合Mac电脑玩的休闲游戏推荐

对于游戏爱好者而言&#xff0c;Mac似乎并不是游戏体验的首选平台。这主要是因为相较于Windows系统&#xff0c;Mac上的游戏资源显得相对有限。不过&#xff0c;这并不意味着Mac用户就与游戏世界绝缘。实际上&#xff0c;Mac平台上有着一系列小巧精致且趣味横生的小游戏&#x…

苍穹外卖项目day12(day09)---- 查询历史订单、查询订单详情、取消订单、再来一单(用户端)

目录 用户端历史订单模块&#xff1a; - 查询历史订单 产品原型 业务规则 接口设计 user/OrderController OrderService OrderServiceImpl OrderMapper OrderMapper.xml OrderDetailMapper 功能测试&#xff1a; - 查询订单详情 产品原型 接口设计 OrderControll…

安卓常用控件(下)

ImageView ImageView是用于在界面上展示图片的一个控件&#xff0c;它可以让我们的程序界面变得更加丰富多彩。 属性名描述id给当前控件定义一个唯一的标识符。layout_width给控件指定一个宽度。match_parent&#xff1a;控件大小与父布局一样&#xff1b;wrap_content&#x…

【两数相加】python刷题记录

R3-链表-链表高精度加法 目录 递归法 迭代 递归法 l1.vall2.valcarry&#xff0c;得到的和&#xff0c;%10为当前位存储的值&#xff0c;除以10为当前的进位值 # Definition for singly-linked list. # class ListNode: # def __init__(self, val0, nextNone): # …