MySQL 数据操作:增删改核心语法全解析

在数据库日常管理中,对数据的添加、修改、删除是最基础也是最核心的操作。本文将以 MySQL 为例,系统讲解 SQL 中 INSERT(添加)、UPDATE(更新)、DELETE(删除)的常用语法,结合实际案例让新手也能快速上手。


目录

一、添加数据(INSERT)

[1. 选择插入(指定列插入)](#1. 选择插入(指定列插入))

[2. 完全插入(全列插入)](#2. 完全插入(全列插入))

[3. 默认值的处理](#3. 默认值的处理)

(1)创建表时指定默认值

(2)修改表添加带默认值的新列

(3)插入数据时使用默认值

二、更新数据(UPDATE)

三、删除数据(DELETE/TRUNCATE)

[1. 按条件删除数据](#1. 按条件删除数据)

[2. 清空表中全部数据](#2. 清空表中全部数据)

[(1)DELETE 方式](#(1)DELETE 方式)

[(2)TRUNCATE 方式](#(2)TRUNCATE 方式)

总结


一、添加数据(INSERT)

添加数据是向数据表中写入新记录的操作,根据列的指定方式,主要分为选择插入完全插入两种形式,同时需注意默认值的处理逻辑。

1. 选择插入(指定列插入)

当只需为表中部分列赋值时,使用选择插入语法,明确指定要插入数据的列名,values 后按列名顺序对应赋值。

语法格式

insert into 表名(列名 1 , 列名2 ,列名 3 ......) values(值 1, 值 2, 值 3 ......);

示例:向 student 表中插入姓名、成绩、班级 ID 数据

sql 复制代码
insert into student (st_name,st_grade,cl_id) values("小孔",100,1);

2. 完全插入(全列插入)

若要为表中所有列赋值,可省略列名列表,直接在 values 后按表的列顺序赋值。注意:如果主键是自增类型(auto_increment),需用 default、null 或 0 占位,数据库会自动生成主键值。

语法格式

insert into 表名 values(值1, 值2, 值3......);

示例:向 class 表(含自增主键 cl_id)插入数据

sql 复制代码
insert into class values (default,"63","黄老师");
insert into class values (null,"64","孟老师");
insert into class values (0,"65","钱老师");

3. 默认值的处理

(1)创建表时指定默认值

建表时可为列设置默认值,插入数据时若未赋值,会自动使用默认值。

语法格式

create table 表名(列名 类型 default 默认值,......);

示例:创建 student3 表,地址列默认值为 "未知"

sql 复制代码
create table student3 (st_id int primary key auto_increment,st_name varchar(20) not null, st_address varchar(20) default "未知");

(2)修改表添加带默认值的新列

已存在的表可通过 ALTER 语句添加新列并指定默认值。

语法格式

alter table 表名 add column 列名 类型 default 默认值;

示例:为 student3 表添加 class_name 列,默认值 "未分配"

sql 复制代码
alter table student3 add column class_name varchar(20) default "未分配";

(3)插入数据时使用默认值

插入数据时,未指定值的列会自动使用默认值;也可显式用 default 指定使用默认值。

示例

sql 复制代码
insert into  student3 (st_name) values ("小周");
insert into  student3 values(default,"小孔",default,default);

二、更新数据(UPDATE)

更新数据用于修改表中已存在的记录,核心是通过 WHERE 子句指定修改范围,避免误改全表数据。

语法格式

update 表名 set 列名 = 值 , 列名 = 值 where 条件;

示例

sql 复制代码
update student3 set st_address = "北京" where st_id = 1;
update student3 set st_address = "雄安新区" where st_id = 1;

注意:若省略 WHERE 子句,会修改表中所有记录,务必谨慎!

三、删除数据(DELETE/TRUNCATE)

1. 按条件删除数据

删除指定条件的记录,同样通过 WHERE 子句限定范围。

语法格式

delete from 表名 where 条件;

示例:

sql 复制代码
delete from student3 where st_addresss = "雄安新区"

2. 清空表中全部数据

清空全表有两种方式,适用场景不同:

(1)DELETE 方式

sql 复制代码
delete from 表名;
-- 示例
delete from student3;

特点:逐行删除记录,速度较慢;自增主键不会重置,适合需要保留表结构、且可能需恢复数据的场景。

(2)TRUNCATE 方式

sql 复制代码
truncate table 表名;
-- 示例
truncate table student3;

特点:一次性清除所有数据,速度快;会重置自增主键,且数据不可恢复,适合批量清空无备份需求的表。

总结

  1. 插入数据分 "选择插入"(指定列)和 "完全插入"(全列),自增主键需用 default/null/0 占位,默认值可在建表 / 改表时设置,插入时未赋值自动使用默认值;
  2. 更新数据(UPDATE)必须加 WHERE 条件,否则会修改全表,核心是 "指定表 + 设置新值 + 限定条件";
  3. 删除数据可按条件删除(DELETE+WHERE),清空全表优先选 TRUNCATE(快、重置自增),需保留自增序列选 DELETE。

掌握以上基础语法,就能完成日常 80% 的 SQL 数据操作需求,使用时需注意条件的准确性,避免误操作导致数据丢失。

希望这篇文章对你有帮助,如果你有任何问题或建议,欢迎在评论区留言。谢谢阅读(求攒攒 收藏 关注)!

相关推荐
萧咕1 天前
理解MySQL数据可视化的核心概念
数据库·mysql·信息可视化
wWYy.1 天前
详解redis(5):Gossiping 协议
数据库·redis·缓存
简叙生活1 天前
【CES直击:从“屏幕依赖”到“真实对话”,Lookee如何用声网技术重构英语学习?
学习·ces
静谧空间1 天前
Linux自动备份Mysql数据
linux·运维·mysql
霖霖总总1 天前
[小技巧40]MySQL中的MVCC:多版本并发控制的深度解析
数据库·mysql
德彪稳坐倒骑驴1 天前
DataX将数据在MySQL和HDFS之间互相迁移
数据库·mysql·hdfs
IT教程资源1 天前
N-159基于springboot,vue,AI协同过滤算法旅游推荐系统
mysql·vue·前后端分离·springboot旅游推荐·协同过滤算法旅游推荐·ai旅游推荐
结衣结衣.1 天前
Redis中的Hash哈希
数据库·redis·哈希算法
Coder_Boy_1 天前
基于SpringAI的在线考试系统-考试管理功能布局+交互优化方案
java·数据库·人工智能·spring boot·交互·ddd·tdd
IT大白1 天前
4、数据库的事务
数据库