MySQL数据库(5)----删除或更新已有行
有时候,会需要删除某些行,或者修改其内容。这是候便需要用到DELETE语句和UPDATE语句。
1. DELETE 语句的基本格式如下所示:
DELETE FROM tbl_name WHERE which rows to delete;
其中,WHERE子句是可选的,它用于指定需要删除掉哪些行。如果没有WHERE 子句,那么将删除表里面的所有行。这意味着,越简单的DELETE语句越危险,例如下面的语句:
DELETE FROM tbl_name
它会彻底删除表里的内容,因此务必要小心使用。
如果不清楚某条DELETE语句到底会删除哪些行,那么最好把这条语句的WHERE子句放到一条SELECT 语句里,看看这条SELECT 语句能查出哪些行。这有助于确认:它们的确是你想要删除的那些行,而且只有这些,不能多也不能少。
如下是一个使用示例:
mysql> select * from student; +--------+-----+------------+ | name | sex | student_id | +--------+-----+------------+ | Jim | M | 1 | | Tom | M | 2 | | Lily | F | 3 | | Lucy | F | 4 | | Travis | M | 5 | | Steve | M | 6 | +--------+-----+------------+ 6 rows in set (0.00 sec) mysql> delete from student where sex='F'; Query OK, 2 rows affected (0.01 sec) mysql> select * from student; +--------+-----+------------+ | name | sex | student_id | +--------+-----+------------+ | Jim | M | 1 | | Tom | M | 2 | | Travis | M | 5 | | Steve | M | 6 | +--------+-----+------------+ 4 rows in set (0.00 sec)
2. 如果想要修改已有记录行,则需要使用UPDATE语句,其基本格式如下:
UPDATE tbl_name SET which columns to change WHERE which rows to update;
这里的WHERE子句的情况与DELETE语句里的相似,它是可选的,因此在没有指定它时,会更新表里的每一行。例如,下面的语句会把每一位学生的 name 更改为 George:
mysql> UPDATE student SET name='George';
很显然,必须谨慎对待这类查询,所以通常情况下都需要加上一个WHERE子句,用它来更具体地指出需要更行那些行。
假设在 student 表里添加了一行,但忘记指定 sex 列的内容,默认地,该列会被设置为 'F':
mysql> INSERT INTO student (name) -> VALUES('Julian'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM student; +--------+-----+------------+ | name | sex | student_id | +--------+-----+------------+ | Jim | M | 1 | | Tom | M | 2 | | Travis | M | 5 | | Steve | M | 6 | | Hellen | M | 7 | | Julian | F | 8 | +--------+-----+------------+ 6 rows in set (0.00 sec)
此时,可以用一条UPDATE语句来进行修复,其中包含一条WHERE子句,用以标识需要更新的那一行:
mysql> UPDATE student -> SET sex='M' -> WHERE name='Julian'; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM student; +--------+-----+------------+ | name | sex | student_id | +--------+-----+------------+ | Jim | M | 1 | | Tom | M | 2 | | Travis | M | 5 | | Steve | M | 6 | | Hellen | M | 7 | | Julian | M | 8 | +--------+-----+------------+ 6 rows in set (0.00 sec)
标签:
MySQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix