# MySQL 数据的插入、修改与删除

# 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. **性能考虑**:大批量操作时,考虑分批处理以提高性能。

你可能感兴趣的:(数据仓库,mysql)