1. MySQL增删查改的艺术——数据库CRUD完全指南(上)
作为一名数据库开发工程师,每天打交道最多的就是CRUD操作。CRUD是数据库操作的四种基本功能:Create(增)、Read(查)、Update(改)、Delete(删)。这看似简单的四个操作,在实际开发中却蕴含着许多技巧和陷阱。今天我就结合多年实战经验,为大家详细剖析MySQL中的增删查改操作。
在本文中,我们将重点讲解Create和Read操作。这两个操作看似基础,但很多开发者在使用时仍然会犯一些常见错误。比如在插入数据时不考虑唯一键冲突,查询时不注意性能优化等。通过本文,你将掌握这些操作的底层原理和最佳实践。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Create(增)操作详解
2.1 单行数据插入的两种方式
2.1.1 指定列插入
指定列插入是最常用的插入方式,它允许我们只插入部分列的数据,其他列使用默认值。这种方式更加灵活和安全。
sql复制-- 创建学生表
CREATE TABLE student(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
sn INT UNSIGNED UNIQUE COMMENT "学号",
name VARCHAR(20) NOT NULL,
qq VARCHAR(32) UNIQUE KEY
);
-- 指定列插入
INSERT INTO student (sn, name, qq) VALUES(100, '张飞', '23435454');
这里有几个关键点需要注意:
- 我们明确指定了要插入的列(sn, name, qq)
- 没有指定id列,因为它有AUTO_INCREMENT属性会自动填充
- VALUES中的值顺序必须与前面指定的列顺序完全一致
提示:在实际开发中,建议始终使用指定列插入,这样可以避免表结构变更导致的插入错误。
2.1.2 全列插入
全列插入是指不指定列名,按表定义的列顺序插入所有列的值。
sql复制-- 全列插入
INSERT INTO student VALUES(3, 101, '刘备', '46565555');
全列插入的注意事项:
- 必须为所有列提供值,包括自增列
- 值的顺序必须与表定义的列顺序完全一致
- INTO关键字可以省略,但不建议这样做
警告:全列插入在表结构变更时非常脆弱,一旦列顺序或数量发生变化,插入语句就会出错。建议仅在临时查询或明确知道表结构的情况下使用。
2.2 多行数据插入的高效方式
MySQL支持一次插入多行数据,这比多次单行插入效率高得多。
sql复制-- 多行全列插入
INSERT INTO student VALUES
(5, 103, '曹操', '4776585'),
(6, 104, '诸葛亮', '54884'),
(7, 105, '许攸', '45564');
-- 多行指定列插入
INSERT INTO student (sn, name, qq) VALUES
(106, '周瑜', '12345'),
(107, '黄盖', '67890');
多行插入的优势:
- 减少网络开销:只需一次网络往返
