はじめに
- SQLでは、テーブルの列を削除する必要がある場合があります。
- ALTER TABLEの使用 DROP COLUMNを使用したコマンド 条項 テーブルから列を削除/削除する目的を果たします。
- テーブルから単一の列と複数の列を削除することができます。
1.テーブルから1つの列を削除する
テーブルの1つの列を削除するには、次の構文を使用します。
ALTER TABLE TableName DROP COLUMN ColumnName;
ここで
- TableNameは、列が削除されるテーブルの名前です。
- DROP COLUMN句の後のColumnNameは、削除される列の名前です。
例:
テーブル「employee」が作成された「employee_db」という名前のデータベースについて考えてみます。このトピックでは、以降のすべての例について、このテーブルとデータベースを検討します。
mysql> USE employee_db;
Database changed
mysql> DESC employee;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Salary | int(11) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
| Emp_City | varchar(20) | YES | | NULL | |
| Emp_PhoneNo | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
6 rows in set (0.07 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+------------+----------+-------------+
| Emp_ID | Emp_Name | Emp_Salary | Emp_Dept | Emp_City | Emp_PhoneNo |
+--------+----------+------------+------------+----------+-------------+
| 101 | Ram | 52000 | R&D | Pune | 8798654676 |
| 102 | Shyam | 38000 | Finance | Delhi | 9898765687 |
| 103 | Anmol | 61000 | Accounting | Mumbai | 9087864532 |
| 104 | Abhishek | 69000 | Purchasing | Shimla | 7678987534 |
| 105 | Rohit | 53000 | HRM | Ambala | 8897865643 |
+--------+----------+------------+------------+----------+-------------+
5 rows in set (0.00 sec)
ここでは、「USEemployee_db」コマンドを使用して作成済みのデータベースを選択しました。 「DESCemployee」コマンドは、「employee」テーブルの構造を記述します。次に、SELECTコマンドを使用して、employee_dbに作成されたemployeeテーブルを表示しました。
次に、「従業員」テーブルの従業員の都市を含む列を削除するクエリを記述します 。
mysql> ALTER TABLE employee DROP COLUMN Emp_City;
Query OK, 5 rows affected (0.30 sec)
Records: 5 Duplicates: 0 Warnings: 0
ALTER TABLEコマンドは、Emp_CityのDROPCOLUMN句を使用して従業員テーブルで使用されます。
mysql> DESC employee;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Salary | int(11) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
| Emp_PhoneNo | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+------------+-------------+
| Emp_ID | Emp_Name | Emp_Salary | Emp_Dept | Emp_PhoneNo |
+--------+----------+------------+------------+-------------+
| 101 | Ram | 52000 | R&D | 8798654676 |
| 102 | Shyam | 38000 | Finance | 9898765687 |
| 103 | Anmol | 61000 | Accounting | 9087864532 |
| 104 | Abhishek | 69000 | Purchasing | 7678987534 |
| 105 | Rohit | 53000 | HRM | 8897865643 |
+--------+----------+------------+------------+-------------+
5 rows in set (0.00 sec)
上記のALTERコマンドを適用した直後に「employee」テーブルにDESCコマンドを再度適用すると、Emp_Cityが結果に表示されていないことがわかります。これは、Emp_Cityという名前の列がemployeeテーブルから削除されたことを示しています。
また、SELECTコマンドを再度使用しました。 SELECTコマンドの結果では、すべてのレコードからEmp_Cityに含まれる値が削除されます。
2.テーブルから複数の列を削除します
テーブルの複数の列を削除するには、以下の構文を使用します。
ALTER TABLE TableName DROP COLUMN ColumnName1, DROP COLUMN ColumnName2,……ColumnNameN;
ここで
DROP COLUMN句を使用して、削除するすべての列名を指定する必要があります。
例:
まず、employeeテーブルの構造とそこに存在するレコードを確認します。
mysql> DESC employee;
+-------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Salary | int(11) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
| Emp_PhoneNo | varchar(20) | YES | | NULL | |
+-------------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+------------+-------------+
| Emp_ID | Emp_Name | Emp_Salary | Emp_Dept | Emp_PhoneNo |
+--------+----------+------------+------------+-------------+
| 101 | Ram | 52000 | R&D | 8798654676 |
| 102 | Shyam | 38000 | Finance | 9898765687 |
| 103 | Anmol | 61000 | Accounting | 9087864532 |
| 104 | Abhishek | 69000 | Purchasing | 7678987534 |
| 105 | Rohit | 53000 | HRM | 8897865643 |
+--------+----------+------------+------------+-------------+
5 rows in set (0.00 sec)
ここでは、「USEemployee_db」コマンドを使用して作成済みのデータベースを選択しました。 「DESCemployee」コマンドは、「employee」テーブルの構造を記述します。次に、SELECTコマンドを使用して、employee_dbに作成されたemployeeテーブルを表示しました。
次に、「従業員」テーブルの従業員の給与と従業員の電話番号を含む列を削除するクエリを記述します。
mysql> ALTER TABLE employee DROP COLUMN Emp_Salary, DROP COLUMN Emp_PhoneNo;
Query OK, 5 rows affected (0.29 sec)
Records: 5 Duplicates: 0 Warnings: 0
ALTER TABLEコマンドは、Emp_SalaryおよびEmp_PhoneNoのDROPCOLUMN句を使用して従業員テーブルで使用されます。
mysql> DESC employee;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| Emp_ID | int(11) | NO | PRI | NULL | |
| Emp_Name | varchar(20) | YES | | NULL | |
| Emp_Dept | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
mysql> SELECT *FROM employee;
+--------+----------+------------+
| Emp_ID | Emp_Name | Emp_Dept |
+--------+----------+------------+
| 101 | Ram | R&D |
| 102 | Shyam | Finance |
| 103 | Anmol | Accounting |
| 104 | Abhishek | Purchasing |
| 105 | Rohit | HRM |
+--------+----------+------------+
5 rows in set (0.00 sec)
上記のALTERコマンドを適用した直後に「employee」テーブルにDESCコマンドを再度適用すると、Emp_SalaryとEmp_PhoneNoが結果に表示されていないことがわかります。これは、Emp_SalaryおよびEmp_PhoneNoという名前の列がemployeeテーブルから削除されたことを示しています。次に、SELECTコマンドも再度使用しました。 SELECTコマンドの結果では、すべてのレコードからEmp_SalaryとEmp_PhoneNoに含まれる値が削除されます。