详细介绍:DBA | MySQL 数据库基础数据操作学习实践笔记
2025-09-28 13:31 tlnshuju 阅读(0) 评论(0) 收藏 举报[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ]
大家好,我是 WeiyiGeek,一名深耕安全运维开发(SecOpsDev)领域的技术从业者,致力于探索DevOps与安全的融合(DevSecOps),自动化运维工具开发与实践,企业网络安全防护,欢迎各位道友一起学习交流、一起进步 ,若此文对你有帮助,一定记得倒点个关注⭐与小红星❤️,收藏学习不迷路 。
0x00 前言简述
描述:前面我们学习了DDL 数据定义语言的相关语句,以及介绍了 MySQL 五种数据类型,相信大家参考后必有所心得,趁热打铁,现在我们学习 DML 数据库操作语言,包含数据行的插入,更新以及删除(INSERT、UPDATE、DELETE)等语句。
温馨提示:若文章代码块中存在乱码,请通过文末的阅读原文链接,在知识星球中阅读,或者直接访问 https://articles.zsxq.com/id_l3z7unppx0sx.html
为了后续的学习,我们先来准备一个员工表,并插入几行数据,方便后续的演示。
-- 创建数据库CREATE DATABASE IF NOT EXISTS test;-- 切换到数据库USE test;-- 建表语句示例:CREATE TABLE IF NOT EXISTS employees ( id INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '编号', uid VARCHAR(10) COMMENT '工号', name VARCHAR(10) NOT NULL COMMENT '姓名', gender ENUM('男', '女', '未知') NOT NULL COMMENT '性别' DEFAULT '未知', age TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年龄' CHECK (age > 0 AND age < 120), phone_number CHAR(11) NOT NULL COMMENT '手机号' CHECK (phone_number REGEXP '^1[3-9]\\d{9}$'), skills JSON COMMENT '技能', id_card CHAR(18) NOT NULL UNIQUE KEY COMMENT '身份证号' CHECK (id_card REGEXP '^\\d{17}[0-9Xx]$'), city VARCHAR(50) NOT NULL COMMENT '城市', entry_date DATE COMMENT '入职时间', salary DECIMAL(10, 2) NOT NULL DEFAULT 0.0 COMMENT '薪资' CHECK (salary > 0), PRIMARY KEY (id), INDEX idx_id_card (id_card)) ENGINE=InnoDB AUTO_INCREMENT=1 COMMENT='员工信息表';
0x01 DML 数据操作语言
1.插入记录(INSERT)
描述:通过 INSERT 语句可以向表中插入新的数据行。
特别注意:
在插入数据时,指定的字段顺序需要与值的顺序一致,否则会报错。另外,如果要插入的数据中包含自增字段(AUTO_INCREMENT),则该字段的值需要设置为 NULL 或者不指定(显式指定字段时),由数据库自动生成。
在插入数据时,字符串和日期类型的值需要用引号(推荐:单引号)括起来,例如:'张三', '2023-04-01'。
在插入数据时,应该注意数据类型的匹配,例如:年龄字段是 TINYINT UNSIGNED 类型,应该插入的是正整数,而非是负整数。
指定字段添加数据
-- # 语法
INSERT INTO 表名 (字段1, 字段2, ...) VALUES (值1, 值2, ...);
-- # 示例
INSERT INTO employees (uid, name, gender, age, phone_number, skills, id_card, city ,entry_date, salary) VALUES ('001', '张三', '男', 30, '13800138000', '{"编程": "高级", "设计": "中级"}', '500102199001010001', '重庆','2020-01-01', 7500.00);
INSERT INTO employees (uid, name, gender, age, phone_number, skills, id_card,city , entry_date, salary) VALUES ('002', '李四', '女', 28, '13900139000', '{"测试": "高级", "项目管理": "中级"}', '500102199201010002','北京', '2020-02-15', 15800.00);
INSERT INTO employees (uid, name, gender, age, phone_number, skills, id_card, city ,entry_date, salary) VALUES ('003', '王五', '男', 35, '13700137000', '{"数据库": "专家", "架构": "高级"}', '500102198801010003','上海','2019-05-10', 16000.00);
INSERT INTO employees (uid, name, gender, age, phone_number, skills, id_card,city, entry_date, salary) VALUES ('004', '赵六', '女', 26, '13600136000', '{"前端": "高级", "UI设计": "中级"}', '500102199601010004', '杭州','2021-03-20', 12000.00);
按照字段顺序添加数据
-- # 语法
INSERT INTO 表名 VALUES (值1, 值2, ...);
-- # 示例
-- 注意:这里的值要和表中的字段顺序一致, 其次自增长的字段需要设置为NULL进行占位。
INSERT INTO employees VALUES (NULL,'005', '钱七', '男', 32, '13500135000', '{"运维": "高级", "网络安全": "中级"}', '500102199001010005','成都', '2018-08-05', 9000.00);
批量添加数据
-- # 语法
INSERT INTO 表名 VALUES (值1, 值2, ...), (值3, 值4, ...);
INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2), (值3, 值4);
-- # 示例
INSERT INTO employees (uid, name, gender, age, phone_number, skills, id_card, city, entry_date, salary) VALUES ('006', '孙八', '女', 29, '13400134000', '{"数据分析": "高级", "机器学习": "中级"}', '500102199301010006', '深圳','2020-11-12', 13500.00),('007', '周九', '男', 27, '13300133000', '{"移动开发": "高级", "后端": "中级"}', '500102199501010007','广州', '2021-07-30', 11500.00),(NULL, '吴十', '女', 31, '13200132000', '{"产品经理": "高级", "市场分析": "专家"}', '500102199101010008','重庆', '2019-09-18','12800.00');
最后,在 MySQL 命令行工具 或 DataGrip 图形化界面中执行上述 SQL 语句,可以看到 employees 表已经成功插入数据,若未安装 DataGrip 可参考作者前面的文章进行安装。

2.更新记录(UPDATE)
描述:UPDATE 语句用于修改表中的数据。注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据, 不过在生产环境中一定要添加条件,否则容易造成数据的误更新。
温馨提示:为了不影响后续演示,我将 employees 表结构及数据复制一份到 employees_test 表。
-- 复制表结构及数据到新表
CREATE TABLE IF NOT EXISTS employees_test LIKE employees;
-- 复制数据到新表
INSERT INTO employees_test SELECT * FROM employees;
语法示例
-- # 语法
UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2 WHERE 条件;
-- # 示例
-- 更新员工张三的薪资为10000.00,手机号为13900138421
UPDATE employees_test SET salary = 10000.00, phone_number = '13900138421' WHERE name = '张三';
-- 更新所有员工的城市为'重庆' , 注意:在生产环境中,不建议使用无条件的更新语句
UPDATE employees_test SET city = '重庆';

3.删除记录(DELETE)
描述:DELETE 语句用于删除表中的数据。注意:删除语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据, 建议在生产环境中一定要添加条件,否则容易造成数据的误删除。
温馨提示:DELETE 语句不能删除表的某一个字段,如果要删除某个字段的数据,可以使用 UPDATE 语句将该字段设置为 NULL 或者其他默认值。
语法示例
-- # 语法
DELETE FROM 表名 WHERE 条件;
-- # 示例
-- 删除员工表中姓名为'李四'的记录
mysql> DELETE FROM employees_test WHERE name = '李四';
[2025-09-25 11:37:25] 1 row affected in 156 ms
-- 删除所有员工的记录 注意:在生产环境中不建议使用无条件的删除语句
DELETE FROM employees_test;
温馨提示:DELETE 语句 与 TRUNCATE TABLE 语句的区别是,DELETE 语句可以删除表中的部分数据且在开启 BINLOG 时即可恢复误删除的数据,而 TRUNCATE TABLE 语句会删除整个表的数据并重置自增计数器。
总结:
INSERT 语句用于向表中插入新的数据行。
UPDATE 语句用于修改(更新)表中的数据。
DELETE 语句用于从表中删除数据。
INSERT INTO 表名 VALUES (值1, 值2, ...);
UPDATE 表名 SET 字段1 = 值1, 字段2 = 值2 WHERE 条件;
DELETE FROM 表名 WHERE 条件;
至此,MySQL 基础操作之增删改查就介绍完了,后续会继续分享 MySQL 基础查询 DQL 语句的相关内容。
END
加入:作者【全栈工程师修炼指南】知识星球
『 全栈工程师修炼指南』星球,主要涉及全栈工程师(Full Stack Development)实践文章,包括但不限于企业SecDevOps和网络安全等保合规、安全渗透测试、编程开发、云原生(Cloud Native)、物联网工业控制(IOT)、人工智能Ai,从业书籍笔记,人生职场认识等方面资料或文章。
Q: 加入作者【全栈工程师修炼指南】星球后有啥好处?
✅ 将获得作者最新工作学习实践文章以及网盘资源。
✅ 将获得作者珍藏多年的全栈学习笔记(需连续两年及以上老星球友,也可单次购买)
✅ 将获得作者专门答疑学习交流群,解决在工作学习中的问题。
✅ 将获得作者远程支持(在作者能力范围内且合规)。
获取:作者工作学习全栈笔记
作者整理了10年的工作学习笔记(涉及网络、安全、运维、开发),需要学习实践笔记的看友,可添加作者微信或者回复【工作学习实践笔记】,当前价格¥299,除了获得从业笔记的同时还可进行问题答疑以及每月远程技术支持,希望大家多多支持,收获定大于付出!
知识推荐 往期文章
【最新】DBA | MySQL 数据库前置知识与概述学习笔记
【最新】DBA | MySQL 数据库基础学习环境搭建与客户端工具笔记
【最新】DBA | MySQL 数据库五种数据类型介绍实践指南
【最新】DBA | MySQL 数据库与表字段操作管理指南
【相关】DBA | 十分钟上手SQL数据操纵!增删改查(CRUD)核心秘籍(上篇)
【相关】DBA | 十分钟上手SQL数据操纵!增删改查(CRUD)核心秘籍(下篇)
若文章对你有帮助,请将它转发给更多的看友,若有疑问的小伙伴,可在评论区留言你想法哟 !
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/920690.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!