# MySQL 数据的插入、修改与删除
## 数据插入 (INSERT)
### 基本插入语法
```sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...);
```
示例:
```sql
INSERT INTO employees (first_name, last_name, email, hire_date, salary)
VALUES ('John', 'Doe', '[email protected]', '2023-01-15', 50000);
```
### 插入多行数据
```sql
INSERT INTO employees (first_name, last_name, email, hire_date, salary)
VALUES
('Jane', 'Smith', '[email protected]', '2023-02-20', 55000),
('Mike', 'Johnson', '[email protected]', '2023-03-10', 60000),
('Sarah', 'Williams', '[email protected]', '2023-04-05', 52000);
```
### 从其他表插入数据
```sql
INSERT INTO employee_archive (emp_id, first_name, last_name, email)
SELECT id, first_name, last_name, email
FROM employees
WHERE hire_date < '2020-01-01';
```
## 数据修改 (UPDATE)
### 基本更新语法
```sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
```
示例:
```sql
UPDATE employees
SET salary = 55000, last_updated = NOW()
WHERE id = 101;
```
### 使用表达式更新
```sql
UPDATE products
SET price = price * 1.1 -- 价格上涨10%
WHERE category = 'Electronics';
```
### 多表更新
```sql
UPDATE orders o
JOIN customers c ON o.customer_id = c.id
SET o.status = 'Shipped', c.last_order_date = o.order_date
WHERE o.id = 1005;
```
## 数据删除 (DELETE)
### 基本删除语法
```sql
DELETE FROM table_name
WHERE condition;
```
示例:
```sql
DELETE FROM employees
WHERE id = 105;
```
### 删除所有数据(慎用!)
```sql
DELETE FROM temp_table; -- 删除所有行但保留表结构
```
### 使用TRUNCATE快速删除所有数据
```sql
TRUNCATE TABLE temp_table; -- 比DELETE更快,但无法回滚
```
## 注意事项
1. **WHERE子句的重要性**:UPDATE和DELETE操作一定要谨慎使用WHERE子句,否则可能影响整张表的数据。
2. **事务处理**:对于重要操作,建议使用事务:
```sql
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT; -- 或 ROLLBACK 如果出现问题
```
3. **备份数据**:在执行大规模更新或删除前,最好先备份相关数据。
4. **外键约束**:注意表之间的外键关系,可能会阻止某些删除操作。
5. **性能考虑**:大批量操作时,考虑分批处理以提高性能。