# 修改和删除表

URL: https://caijiao.org/sqlite/tables/alter-drop
Source: docs/sqlite/tables/alter-drop.md
Description: 本章节介绍 SQLite 中修改和删除表的常用方法，包括重命名表、添加或删除字段以及删除表等操作。

[SQLite](/sqlite/) 支持部分表结构的修改操作，但不支持直接删除字段。以下是常用操作示例：

## 修改表名

使用 `ALTER TABLE` 语句重命名表：

```sql
ALTER TABLE old_table_name RENAME TO new_table_name;
```

示例：

```sql
ALTER TABLE users RENAME TO customers;
```

## 添加字段

可以使用 `ALTER TABLE` 添加新列：

```sql
ALTER TABLE table_name ADD COLUMN column_definition;
```

示例：

```sql
ALTER TABLE users ADD COLUMN age INTEGER DEFAULT 0;
```

> 注意：SQLite 不支持直接删除或修改已有列。

## 删除字段（间接方法）

SQLite 不支持直接删除字段，需通过以下步骤实现：

1. 创建新表，结构为所需字段。
2. 将旧表数据复制到新表。
3. 删除旧表。
4. 将新表重命名为旧表名。

示例：

```sql
BEGIN TRANSACTION;

CREATE TABLE new_users (
  id INTEGER PRIMARY KEY,
  name TEXT,
  email TEXT
);

INSERT INTO new_users (id, name, email)
SELECT id, name, email FROM users;

DROP TABLE users;

ALTER TABLE new_users RENAME TO users;

COMMIT;
```

## 删除表

删除整个表及其数据：

```sql
DROP TABLE table_name;
```

示例：

```sql
DROP TABLE users;
```

谨慎使用删除操作，避免数据丢失。
