個人的な備忘録：ALTER TABLE を使用したテーブル内のカラム削除について、記事としてアウトプットしてみた

## はじめに
この記事では、テーブル内のカラムを削除する `ALTER TABLE` について、SQL文を検証しながら解説します。

:::note info
**これからSQLの基礎を学びたい方や、簡単に環境を構築して気軽に試したい方に向けた内容です。**
:::

また、本記事は個人的な備忘録としてまとめたものです。***その点をご理解いただければ幸いです。***

## 書こうと思ったきっかけ
私は、テーブル設計やSQLについて、技術書を読んで体系的に学んだわけではありません。

:::note warn
***とにかく手を動かし、試行錯誤しながら基礎を身につけてきました。***
:::

この経験を踏まえ、今回は SQLの基本を整理し、体系的に振り返りながら 記事としてアウトプットしていきます。

## 事前準備
手軽にSQL文を試す方法として、今回は Docker Hub を活用し、SQLコマンドの技術検証を行います。

📌 **詳しい手順については、過去の記事にまとめていますので、こちらを参考にしてください。**

https://qiita.com/free-honda/items/222e17d909b4507b93c2#2-docker-hub%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3

また、本記事では 事前にデータベースが作成されていることを前提 に進めていきます。***まだデータベースを作成していない方は、以下の記事を参考にしてください。***

https://qiita.com/free-honda/items/eed6e5ee16d18d0d66f2

https://qiita.com/free-honda/items/c0696b9e6d202cbb6577

## 実際にやってみた

### テーブル内のカラムを削除する方法
カラムを削除する前に、**現在のテーブル構造を確認することが安全** です。

```sql
DESC users;
```

**実行結果**

```sql
mysql> DESC users;
+------------+--------------+------+-----+-------------------+-------------------+
| Field      | Type         | Null | Key | Default           | Extra             |
+------------+--------------+------+-----+-------------------+-------------------+
| id         | int          | NO   | PRI | NULL              | auto_increment    |
| name       | varchar(100) | NO   |     | NULL              |                   |
| email      | varchar(255) | NO   | UNI | NULL              |                   |
| created_at | timestamp    | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+------------+--------------+------+-----+-------------------+-------------------+
4 rows in set (0.02 sec)
```

**カラムを削除するSQL文**

テーブル内の 特定のカラム（列） を削除するには、`ALTER TABLE` コマンドを使用します。

```sql
ALTER TABLE users DROP COLUMN email;
```

**解説**

- `ALTER TABLE users` は、`users` テーブルの構造を変更するSQLコマンド。
- `DROP COLUMN email` は、`email` カラムを削除。

**実行結果**

```sql
mysql> ALTER TABLE users DROP COLUMN email;
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC users;
+------------+--------------+------+-----+-------------------+-------------------+
| Field      | Type         | Null | Key | Default           | Extra             |
+------------+--------------+------+-----+-------------------+-------------------+
| id         | int          | NO   | PRI | NULL              | auto_increment    |
| name       | varchar(100) | NO   |     | NULL              |                   |
| created_at | timestamp    | YES  |     | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+------------+--------------+------+-----+-------------------+-------------------+
3 rows in set (0.01 sec)
```

### 複数のカラムを削除する場合

```sql
ALTER TABLE users 
DROP COLUMN name, 
DROP COLUMN created_at;
```

`DROP COLUMN` をカンマ区切りで指定することで、複数のカラムを一度に削除 できます。

**実行結果**

```sql
mysql> DESC users;
+-------+------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra          |
+-------+------+------+-----+---------+----------------+
| id    | int  | NO   | PRI | NULL    | auto_increment |
+-------+------+------+-----+---------+----------------+
1 row in set (0.00 sec)
```

`name` と `created_at` カラムが正常に削除されたことが確認できました。

## まとめ
本記事では、テーブル内のカラムを削除する `ALTER TABLE` の基本的なSQL文 を紹介しました。

:::note warn
***SQLを学ぶ上で、`ALTER TABLE` の使い方を正しく理解し、適切に使い分けることが重要です。***
:::

今後も、基本的なSQLの知識をしっかりと定着 させていきたいと思います。