MySQL数据的插入、修改、删除(INSERT /Update/DELETE)

news/2025/2/21 8:28:46/

一、数据的插入(Insert/Create)


CREATE TABLE students (
    id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
    sn INT NOT NULL UNIQUE COMMENT '学号',
    name VARCHAR(45) NOT NULL,
    email VARCHAR(200) NULL
);

-- INSERT 操作的基本格式

-- 表名称:
-- 全名称: `库名`.`表名`
-- 库名和表名没有歧义的情况下: 库名.表名
-- 指定了默认库的情况下: 表名 遗憾着是 默认库.表名
-- 一次插入一行,并且插入的数据中包含 (id、sn、name、email) 所有的字段的数据
-- 由于插入的是全字段,所以 SQL 中可以省略字段部分
-- 后边跟要插入的值,值的顺序必须和表结构中的顺序一致
-- id、sn、name、email
INSERT INTO students VALUES (100, 10000, '唐三藏', NULL);
-- 由于我们的 id 是主键、sn 是唯一键,所以这两个字段的值不能出现重复
INSERT INTO students VALUES (101, 10001, '孙悟空', 'swk@qq.com');
-- 一次插入一行,指定列的插入,要求,没有默认值的字段,必须有值
-- id(自增,视为有默认值)
-- sn(没有默认值)
-- name(没有默认值)
-- email(允许为 Null,视为有默认值,就是 Null)
-- 所以 sn、name 字段必须在插入时有值
INSERT INTO students (sn, name) VALUES (20002, '鹿角大仙');
-- 指定字段的顺序,没有要求,不要求和建表的顺序有关系
-- 字段的顺序 和 传入的值的顺序一致即可
INSERT INTO students (name, sn) VALUES ('牛角大仙', 20003);
-- 多行插入
-- 多行 + 全字段    
INSERT INTO students VALUES
    (204, 30001, '贾宝玉', 'jby@qq.com'),    -- 一条记录
    (205, 30002, '林黛玉', NULL),    -- 一条记录
    (206, 30003, '薛宝钗', NULL);    -- 一条记录
-- 多行 + 指定字段
INSERT INTO students (sn, name, email) VALUES
    (40001, '宋江', 'sj@qq.com'),
    (40002, '扈三娘', 'hsn@qq.com'),
    (40003, '王英', NULL),
    (40004, '武松', NULL);

二、Update  更新操作:

指定where条件(如果不写where,视为所有记录都满足条件),一定可以选择出一批记录(可能只有一条,或者1条没有)只能统一将这批记录中的指定字段的值,一次性修改!
update 表名 set 要修改的字段 where ...
-- 更新操作
update exam_result set chinese = 60 where id between 1 and 3;

update exam_result set chinese = 30 where id = 1;
update exam_result set chinese = 60 where id = 2;
update exam_result set chinese = 90 where id = 3;

-- 表中已经存在的所有记录的语文都被改成了 40
update exam_result set chinese = 40;

-- 允许修改时,一次改多个字段
-- 字段直接用逗号(,)分割即可
update exam_result set chinese = 10, math = 20, english = 30 where id between 1 and 3;

-- 修改时,以字段的原来的值作为基础进行修改
update exam_result set math = math / 2 where not (id between 1 and 3);
-- 注意,不支持 math -= 3、math += 10,只能 math = math - 3、math = math + 10

三、DELETE 删除操作:

-- 数据库的所有操作,都是以一行行记录为基本单位
-- 目标:只想删除 孙悟空
-- delete 和 from 中间没东西
delete from exam_result where id = 2;            -- 最精确
delete from exam_result where name = '孙悟空';    -- 毕竟精确的
delete from exam_result where name like '孙__';    -- 正确的前提,是我知道我表里的数据有哪些
delete from exam_result where name like '孙%';    -- 不是数据库报错,是不符合目标错误,因为会把孙权也删除
-- 不加 where 条件,意味着所有记录都满足条件,所以是全表中的所有数据统统删除(慎用)
delete from exam_result;
-- 建议:
-- 1. 删除之前,先用 SELECT + 同样的 where 条件确认下数据是否满足预期
-- 2. 能用主键删除,优先用主键删除;由于主键不会重复,所以使用主键是最准确的
-- 从数据安全的角度,核心数据一定做好备份;

-- 截断表: DDL 操作,针对表结构的操作,视为把表结构复位(reset)
-- 主要体现的自增的 id 上,重点观察其生成的 id
-- exam_result 表当时建表时没有带上自增 id,我们先修改表结构,带上 AI
INSERT INTO db_11_23.exam_result SELECT * FROM db_11_22.exam_result;
truncate exam_result;
insert into exam_result (name, math, chinese, english) values ('A', 1, 1, 1);

-- 对比全表数据删除:DML 操作,针对表中的数据操作的,表结构不动
INSERT INTO db_11_23.exam_result SELECT * FROM db_11_22.exam_result;
delete from exam_result;
insert into exam_result (name, math, chinese, english) values ('A', 1, 1, 1);

-- truncate 和 delete 一样,也是谨慎使用
-- 如果我们已经明确要把表清空了,使用 truncate 会比 delete from 来的速度快
-- truncate 是时间复杂度是 O(1) :只需要动表结构,不管多少条数据
-- delete from 的时间复杂度是 O(n) :挨个记录遍历,删除


http://www.ppmy.cn/news/496621.html

相关文章

jbd2

[译文] Linux: The Journaling Block Device June 21, 2006 - 2:40am Submitted by Kedar Sovani on June 21, 2006 - 2:40am.http://kerneltrap.org/node/6741 原作者与版权信息: Amey Inamdar (www.geocities.com/amey_inamdar) is a kernel developer working at…

Qt 自定义流程图 diagram

Qt 自定义流程图 diagram 前言程序执行效果程序源码下载图形视图框架成员介绍重写QGraphicsItem程序源码介绍重点代码 前言 本文将对QGraphicsScene, QGraphicsView,QGraphicsItem这三个类进行简单介绍,并通过diagram流程图项目对自定义QGraphicsItem操作进行演示讲…

jewb21

调用doget 及dopost 拿到购物车 判断 private IgoodsBiz goodsBiznew GoodsBizImpl(); …

集合详解(小白必看)

一、集合概述 集合是JAVA中提供的一种容器,用来存储多个数据。 1、集合与数组的区别 数组特点:类型固定,长度固定 集合特点:类型不固定,长度也不固定,随意存放任何数据 二、集合框架 三、集合分类与特…

Markdown插入图片的方法

Markdown插入图片的方法 Markdown插入图片的语法: \!\[alt 属性文本](图片地址) \!\[alt 属性文本](图片地址 "可选标题") 说明: 以感叹号开头! 接着一个中括号[ ] 接着一个小括号( ),里面放上图片的网址,最后加上可选…

电路-并联谐振电路分析

并联谐振电路 为什么要并联谐振电路?根据品质因数章节的学习我们知道,串联谐振电路的品质因数跟内阻r呈反比,r越大,品质因数越小。如果电源内阻比较大,我们又想要一个品质因数高得谐振电路怎么办?这时就可…

关于聚合支付等收单外包备案机构监管要求

聚合支付等收单外包服务机构于2020年9月16日完成首批中国支付清算协会(下简称:协会),至2023年6月20日共备案30批17949家,其中,取消收单外包服务机构245家,拟取消备案机构24家,现公示…

MSP430G2553单片机——利用蜂鸣器播放一首歌

利用MSP430G2553单片机和无源蜂鸣器播放一首歌&#xff0c;下面给出两种方案。 方案一&#xff1a; 播放《两只老虎》 #include<MSP430G2553.h> //音乐播放 // by wys void P_Onclick(int n,int j); //7个基本音的子函数 void jby_1(int s); void jby_2(int s); v…