MySQL 基础知识(五)之数据增删改

目录

[1 插入数据](#1 插入数据)

[2 删除数据](#2 删除数据)

[3 更改数据](#3 更改数据)


创建 goods 表

sql 复制代码
drop table if exists goods;
create table goods (
id int(10) primary key auto_increment,
name varchar(14) unique,
stockdate date
)charset=utf8; 

1 插入数据

|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| > 当要插入的数据为日期/时间类型时,如果插入数据的格式不为 "%Y-%m-%d" 或 "%Y-%m-%d %h:%i:%s',需要通过 str_to_date(str,fmt); 方法将字符串转为日期/时间数据类型,其中 str 是要插入的字符串,fmt 是插入字符串的格式,具体用法请看代码 sql #单条数据插入 insert into goods(name,stockdate) values('香蕉','2024-02-13'); #多条数据插入 insert into goods(name,stockdate) values ('苹果','2024-02-12'), ('橘子',str_to_date('02-12-2024', '%m-%d-%Y')), ('葡萄',str_to_date('2024/02/14', '%Y/%m/%d')); > 将查询结果当作一张表,可完成表的快速复制,但是用这种方法创建的表缺少主键 sql create table goods_1 as select id, name, stockdate from goods; > 从上面的图片中可以看出表 goods_1 缺少主键,既然没有主键,加上就好了,用修改表中的 alter modify 或 alter change 方法 进行修改 > MySQL 基础知识(四)之表操作https://blog.csdn.net/zjs246813/article/details/136106989?spm=1001.2014.3001.5502 sql alter table goods_1 modify id int primary key auto_increment; > 将一张表的查询结果插入另一张表中,这种插入数据的方式需要保证两张表的数据类型是一样的 sql insert into goods_1(name,stockdate) select name, stockdate from goods; |

2 删除数据

|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| > 通过 delete 进行删除,如果不加 where 条件则删除整张表的数据,但是只是删除数据,表依然存在 sql delete from goods where id = 4; |

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| delete * delete 属于数据库操纵语言 DML,可用于删除表中的数据 * delete 语句执行删除的过程是每次从表中删除一行,并且同时将该行的删除操作作为事务记录在日志中保存以便进行进行回滚操作 * delete 既可以对 table 进行操作也可以对 view 进行操作,可以全部删除,也可以按条件删除 drop * drop 属于数据库定义语言 DDL,可用于删除表, 也可以用来删除数据库 truncate * truncate 属于数据库定义语言 DDL,用来删除表中所有数据 * truncate 只能对 table 进行操作,执行速度快 * truncate 是把整张表销毁,再按照原表的格式、结构创建一张新表 三者区别 * 执行速度,一般来说:drop > truncate > delete * delete 是 DML 语句,不会自动提交,即可以回滚,drop/truncate 都是 DDL 语句,执行后会自动提交,即不能回滚 * truncate 和 delete 只删除数据,不删除表结构, drop 则删除整个表(结构和数据) * 对于由 foreign key 约束的表,不能使用 truncate(因为它是删完表后,再重新建一张结构一样的表,只能先删从表,再删主表),而应使用不带 where 的 delete 语句。由于 truncate 不记录在日志中,所以它不能激活触发器 * truncate 不能用于参与了索引视图的表 |

3 更改数据

|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| > 通过 update 更新数据,如果不设置 where 条件,则会对该列的数据都进行修改 sql update goods set name = '脐橙' where id = 4; update goods set name = '红枣', stockdate = '2024-01-23' where id = 3; |

相关推荐
苹果醋320 分钟前
React源码02 - 基础知识 React API 一览
java·运维·spring boot·mysql·nginx
了一li43 分钟前
Qt中的QProcess与Boost.Interprocess:实现多进程编程
服务器·数据库·qt
码农君莫笑1 小时前
信管通低代码信息管理系统应用平台
linux·数据库·windows·低代码·c#·.net·visual studio
别致的影分身1 小时前
使用C语言连接MySQL
数据库·mysql
过过过呀Glik1 小时前
在 Ubuntu 上安装 MySQL 的详细指南
mysql·ubuntu
京东零售技术3 小时前
“慢”增长时代的企业数据体系建设:超越数据中台
数据库
sdaxue.com3 小时前
帝国CMS:如何去掉帝国CMS登录界面的认证码登录
数据库·github·网站·帝国cms·认证码
o(╥﹏╥)4 小时前
linux(ubuntu )卡死怎么强制重启
linux·数据库·ubuntu·系统安全
阿里嘎多学长4 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器
Yuan_o_4 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端