1. 插入数据
1.1 INSERT INTO 语句
INSERT INTO 语句用于向数据库表中插入数据。你可以插入单条数据或多条数据。
- 插入单条数据:
INSERT INTO users (id, name, age, birth_date)
VALUES (1, 'Alice', 30, '1990-01-01');
上述语句将一条记录插入到 users 表中,包含 id、name、age 和 birth_date 字段。
- 插入多条数据:
INSERT INTO users (id, name, age, birth_date)
VALUES
(2, 'Bob', 25, '1995-03-15'),
(3, 'Charlie', 28, '1992-07-20'),
(4, 'David', 35, '1985-11-10');
此语句一次插入多条数据,每个括号中的值表示一条记录。
1.2 批量插入数据
如果你有大量数据需要插入,可以通过编写批量 INSERT 语句进行批量插入,避免一次插入大量单条数据,提高性能。
例如,批量插入多条记录时,使用逗号分隔各个插入数据项:
INSERT INTO users (id, name, age, birth_date)
VALUES
(5, 'Eva', 22, '1998-05-22'),
(6, 'Frank', 40, '1980-08-14'),
(7, 'Grace', 29, '1991-02-28');
2. 更新数据
2.1 UPDATE 语句
UPDATE 语句用于更新表中已有的数据。你可以更新一个或多个列的值。
- 更新单个列:
UPDATE users
SET age = 31
WHERE id = 1;
这条语句会将 id 为 1 的用户的年龄更新为 31。
- 更新多个列:
UPDATE users
SET name = 'Alice Smith', age = 32
WHERE id = 1;
这会同时更新 id 为 1 的用户的 name 和 age 字段。
2.2 使用 WHERE 更新特定行
WHERE 子句非常重要,因为它限制了更新的范围。如果没有使用 WHERE,UPDATE 会影响表中的所有记录。
- 更新特定行:
UPDATE users
SET age = age + 1
WHERE name = 'Alice';
这条语句会将所有名字为 “Alice” 的用户的年龄增加 1。
注意: 在执行
UPDATE语句时,要特别小心,如果没有WHERE子句,所有行都会被更新!
3. 删除数据
3.1 DELETE 语句
DELETE 语句用于从表中删除数据。同样,DELETE 语句也可以通过 WHERE 限制删除范围。
- 删除特定行:
DELETE FROM users WHERE id = 1;
这会删除 id 为 1 的用户记录。
- 删除所有记录:
DELETE FROM users;
这条语句会删除 users 表中的所有数据,但表结构仍然保留。如果你不想删除表中的所有数据,可以考虑使用 TRUNCATE 语句,它会清空表并重置自增字段。
3.2 使用 WHERE 删除特定行
与 UPDATE 类似,DELETE 语句没有 WHERE 子句时会删除所有数据。确保你使用 WHERE 子句来限制删除操作。
- 删除名字为 “Alice” 的用户:
DELETE FROM users WHERE name = 'Alice';
这条语句会删除所有名字为 “Alice” 的用户。
4. 事务管理
事务(Transaction)是指一组操作,要么全部执行成功,要么全部失败回滚。事务用于确保数据库的操作要么一致、要么不执行,以保持数据的完整性。
4.1 使用 COMMIT 和 ROLLBACK
- COMMIT:提交事务。
COMMIT会保存所有操作,对数据库进行永久更改。
BEGIN TRANSACTION;
UPDATE users SET age = 30 WHERE id = 1;
INSERT INTO users (id, name, age, birth_date) VALUES (5, 'Eva', 22, '1998-05-22');
COMMIT;
- ROLLBACK:回滚事务。如果事务过程中发生错误,可以使用
ROLLBACK来撤销所有已执行的操作。
BEGIN TRANSACTION;
UPDATE users SET age = 30 WHERE id = 1;
-- 发生错误,回滚事务
ROLLBACK;
使用事务可以确保数据操作的原子性,一旦发生错误,可以将事务回滚到执行前的状态。
4.2 事务隔离级别
事务隔离级别决定了事务如何与其他事务交互。SQL 标准定义了四个隔离级别,分别是:
- READ UNCOMMITTED:最低隔离级别,事务可以读取其他事务尚未提交的数据。可能会导致脏读。
- READ COMMITTED:事务只能读取已提交的数据,避免了脏读。
- REPEATABLE READ:保证在事务期间读取的数据不会被其他事务修改,避免了脏读和不可重复读。
- SERIALIZABLE:最高隔离级别,事务完全隔离,避免脏读、不可重复读和幻读。
示例:设置事务隔离级别
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
-- 执行查询和操作
COMMIT;
不同的隔离级别对并发性能和数据一致性有不同的影响。READ UNCOMMITTED 提供最低的隔离性和最大并发性,而 SERIALIZABLE 提供最高的隔离性,但会显著降低并发性。
总结
通过本部分教程,你已经掌握了 SQL 数据操作的核心技能,包括如何使用 INSERT INTO 插入数据、如何使用 UPDATE 更新数据、如何使用 DELETE 删除数据以及如何管理数据库事务。事务管理为数据库操作提供了保证数据一致性和可靠性的机制,尤其在复杂的多步操作中,事务的使用至关重要。掌握这些技巧将帮助你更有效地操作和管理数据库。