无论是对于数据开发者、数据库管理员还是数据分析师,熟练掌握MySQL的增删改查(CRUD)操作是基本要求
本文将详细介绍MySQL中的增(Create)、删(Delete)、改(Update)和查(Select)语句,帮助你全面提升数据操作能力
一、引言 MySQL是一种开源的关系型数据库管理系统,广泛应用于各种Web应用程序中
掌握MySQL的基本操作不仅能够帮助你高效地管理数据,还能够为数据分析和高级数据库管理打下坚实的基础
本文将通过详细的示例和解释,带你全面了解MySQL的增删改查语句
二、增(Create):插入数据 1. 基本插入语句 在MySQL中,使用`INSERT INTO`语句向表中插入数据
基本语法如下: sql INSERT INTO 表名(列1, 列2, 列3,...) VALUES(值1, 值2, 值3,...); 示例: sql CREATE TABLE users( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) ); INSERT INTO users(name, email) VALUES(Alice, alice@example.com); 2. 插入多条记录 你也可以一次插入多条记录,语法如下: sql INSERT INTO 表名(列1, 列2, 列3,...) VALUES (值1_1, 值1_2, 值1_3, ...), (值2_1, 值2_2, 值2_3, ...), ...; 示例: sql INSERT INTO users(name, email) VALUES (Bob, bob@example.com), (Charlie, charlie@example.com); 3. 插入子查询结果 你也可以通过子查询插入数据,这在数据迁移和数据同步中非常有用
语法如下: sql INSERT INTO 表名(列1, 列2, 列3,...) SELECT 列1, 列2, 列3, ... FROM 其他表 WHERE 条件; 示例: sql CREATE TABLE new_users AS SELECTFROM users; -- 创建备份表 INSERT INTO new_users(name, email) SELECT name, email FROM users WHERE id > 1; -- 插入特定条件的记录 三、查(Select):查询数据 1. 基本查询语句 `SELECT`语句用于从表中检索数据
基本语法如下: sql SELECT 列1, 列2, ... FROM 表名 WHERE 条件; 示例: sql SELECT name, email FROM users WHERE id = 1; 2. 选择所有列 使用星号()可以选择所有列: sql SELECTFROM users; 3. 排序和限制结果集 使用`ORDER BY`子句对结果进行排序,使用`LIMIT`子句限制返回的记录数
sql SELECT - FROM users ORDER BY name ASC LIMIT 5; -- 升序排列并限制返回5条记录 4. 聚合函数 聚合函数用于计算汇总值,如`COUNT`、`SUM`、`AVG`、`MAX`和`MIN`
sql SELECT COUNT() FROM users; -- 计算总记录数 SELECT AVG(id) FROM users; -- 计算id的平均值 5. 分组和过滤分组结果 使用`GROUP BY`子句对结果进行分组,使用`HAVING`子句对分组结果进行过滤
sql SELECT email_domain, COUNT() FROM(SELECT SUBSTRING_INDEX(email, @, -1) AS email_domain FROM users) AS domain_counts GROUP BY email_domain HAVING COUNT() > 1; -- 查找出现次数大于1的邮箱域名 四、改(Update):更新数据 1. 基本更新语句 使用`UPDATE`语句修改表中的记录
基本语法如下: sql UPDATE 表名 SET 列1 = 新值1, 列2 = 新值2, ... WHERE 条件; 示例: sql UPDATE users SET email = alice_new@example.com WHERE id = 1; 2. 更新多个列 你可以一次更新多个列: sql UPDATE users SET name = Alicia, email = alicia@example.com WHERE id = 1; 3. 使用子查询更新 你可以使用子查询来更新记录: sql UPDATE users u SET u.email =(SELECT CONCAT(u.name,_new@example.com) FROM users WHERE u.id = id) WHERE u.id IN(1, 2, 3); 五、删(Delete):删除数据 1. 基本删除语句 使用`DELETE FROM`语句删除表中的记录
基本语法如下: sql DELETE FROM 表名 WHERE 条件; 示例: sql DELETE FROM users WHERE id = 1; 2. 删除所有记录 注意,删除所有记录但不删除表结构时,应省略`WHERE`子句或使用`TRUNCATE TABLE`(性能更高): sql DELETE FROM users; -- 删除所有记录,但保留表结构 TRUNCATE TABLE users; -- 更高效地删除所有记录并重置AUTO_INCREMENT 3. 使用子查询删除 你可以使用子查询来删除记录: sql DELETE FROM users WHERE id IN(SELECT id FROM users WHERE email LIKE %old_domain.com%); 六、高级操作和优化 1. 事务处理 事务处理确保一组操作要么全部成功,要么全部失败
使用`START TRANSACTION`、`COMMIT`和`ROLLBACK`
sql START TRANSACTION; UPDATE users SET email = alice_updated@example.com WHERE id = 1; DELETE FROM users WHERE id = 2; COMMIT;