SQLでテーブルに列を追加する方法
はじめに
- 作成済みのテーブルに列を追加するには、ADD句とともにALTERコマンドを使用する必要があります。
- クエリで新しい列を追加する場所が指定されていない場合、デフォルトでは最後の列として追加されます。
- 作成済みのテーブルの特定の列の最初または後に新しい列を追加することもできます。
- 単一のSQLクエリを使用して、一度に1つの列または複数の列を追加できます。
(A)。既存のテーブルの最後に新しい列を追加する
構文:
ALTER TABLE tablename ADD (ColumnName datatype);
どこ 、
- Tablenameは、新しい列を追加する必要がある既存のテーブルの名前です。
- Column_nameは、既存のテーブルに追加される列の名前です。
例:
まず、「 studentdb」という名前のデータベースを作成します。 」。次に、そのデータベースにテーブル「student」を作成し、テーブルにレコードを挿入します。以降の例では、同じデータベースと同じテーブルを検討します。
次に、既存のテーブルに新しい列「City」を追加します。
mysql> USE studentdb; Database changed mysql> SELECT *FROM student; +---------+-----------+-----------+-------------+ | Stud_ID | Stud_Name | Course_ID | Course_Name | +---------+-----------+-----------+-------------+ | 1 | Prajakta | 101 | DBMS | | 2 | Shweta | 102 | CN | | 3 | Nikita | 103 | OS | | 4 | Ankita | 104 | C | +---------+-----------+-----------+-------------+ 4 rows in set (0.00 sec) mysql> ALTER TABLE student ADD (City VARCHAR(20)); Query OK, 4 rows affected (0.29 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT *FROM student; +---------+-----------+-----------+-------------+------+ | Stud_ID | Stud_Name | Course_ID | Course_Name | City | +---------+-----------+-----------+-------------+------+ | 1 | Prajakta | 101 | DBMS | NULL | | 2 | Shweta | 102 | CN | NULL | | 3 | Nikita | 103 | OS | NULL | | 4 | Ankita | 104 | C | NULL | +---------+-----------+-----------+-------------+------+ 4 rows in set (0.00 sec)
新しい列「City」が既存の学生テーブルに追加されます。なぜなら、クエリでは追加する場所を指定していないため、デフォルトでは最後の列として追加されます。
(B)既存のテーブルに複数の列を追加する
構文:
ALTER TABLE tablename ADD (ColumnName1 datatype, ColumnName2 datatype);
例:
次に、単一のクエリを使用して、既存のテーブルに2つの新しい列「City」と「Marks」を追加します。
mysql> USE studentdb;
出力:
Database changed mysql> SELECT *FROM student; +---------+-----------+-----------+-------------+ | Stud_ID | Stud_Name | Course_ID | Course_Name | +---------+-----------+-----------+-------------+ | 1 | Prajakta | 101 | DBMS | | 2 | Shweta | 102 | CN | | 3 | Nikita | 103 | OS | | 4 | Ankita | 104 | C | +---------+-----------+-----------+-------------+ 4 rows in set (0.00 sec) mysql> ALTER TABLE student ADD (City VARCHAR(20),Marks INT); Query OK, 4 rows affected (0.40 sec) mysql> SELECT *FROM student;
出力:
+---------+-----------+-----------+-------------+------+-------+ | Stud_ID | Stud_Name | Course_ID | Course_Name | City | Marks | +---------+-----------+-----------+-------------+------+-------+ | 1 | Prajakta | 101 | DBMS | NULL | NULL | | 2 | Shweta | 102 | CN | NULL | NULL | | 3 | Nikita | 103 | OS | NULL | NULL | | 4 | Ankita | 104 | C | NULL | NULL | +---------+-----------+-----------+-------------+------+-------+ 4 rows in set (0.00 sec)
新しい列「City」と「Marks」が既存の学生テーブルに追加されます。クエリでは追加する場所を指定していないため、デフォルトでは、両方の列が最後に1つのクエリを使用して追加されます。
(C)既存のテーブルの最初の位置に列を追加する
構文 :
ALTER TABLE tablename ADD ColumnName datatype FIRST;
例: 次に、新しい列「Sr_No」を最初の列として既存のテーブルに追加します。
mysql> USE studentdb;
出力:
Database changed mysql> SELECT *FROM student; +---------+-----------+-----------+-------------+ | Stud_ID | Stud_Name | Course_ID | Course_Name | +---------+-----------+-----------+-------------+ | 1 | Prajakta | 101 | DBMS | | 2 | Shweta | 102 | CN | | 3 | Nikita | 103 | OS | | 4 | Ankita | 104 | C | +---------+-----------+-----------+-------------+ 4 rows in set (0.00 sec) mysql> ALTER TABLE student ADD Sr_No INT FIRST;
出力:
Query OK, 4 rows affected (0.24 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT *FROM student;
出力:
+-------+---------+-----------+-----------+-------------+ | Sr_No | Stud_ID | Stud_Name | Course_ID | Course_Name | +-------+---------+-----------+-----------+-------------+ | NULL | 1 | Prajakta | 101 | DBMS | | NULL | 2 | Shweta | 102 | CN | | NULL | 3 | Nikita | 103 | OS | | NULL | 4 | Ankita | 104 | C | +-------+---------+-----------+-----------+-------------+ 4 rows in set (0.00 sec)
新しい列「Sr_No」が既存の学生テーブルに追加されます。クエリで「FIRST」キーワードを指定したため、「Sr_No」が最初の列として追加されます。
(D)既存のテーブルの特定の列の後に新しい列を追加する
構文:
ALTER TABLE tablename ADD ColumnName datatype AFTER column_name;
例:
次に、「Course_Name」の後に既存のテーブルに新しい列「Marks」を追加します。
mysql> USE studentdb;
出力:
Database changed mysql> SELECT *FROM student;
出力:
+---------+-----------+-----------+-------------+------+ | Stud_ID | Stud_Name | Course_ID | Course_Name | City | +---------+-----------+-----------+-------------+------+ | 1 | Prajakta | 101 | DBMS | NULL | | 2 | Shweta | 102 | CN | NULL | | 3 | Nikita | 103 | OS | NULL | | 4 | Ankita | 104 | C | NULL | +---------+-----------+-----------+-------------+------+ 4 rows in set (0.00 sec) mysql> ALTER TABLE student ADD Marks INT AFTER Course_Name;
出力 :
Query OK, 4 rows affected (0.28 sec) Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT *FROM student;
出力:
+---------+-----------+-----------+-------------+-------+------+ | Stud_ID | Stud_Name | Course_ID | Course_Name | Marks | City | +---------+-----------+-----------+-------------+-------+------+ | 1 | Prajakta | 101 | DBMS | NULL | NULL | | 2 | Shweta | 102 | CN | NULL | NULL | | 3 | Nikita | 103 | OS | NULL | NULL | | 4 | Ankita | 104 | C | NULL | NULL | +---------+-----------+-----------+-------------+-------+------+ 4 rows in set (0.00 sec)
新しい列「マーク」が既存の学生テーブルに追加されます。以来、クエリで列名に「AFTER」キーワードを指定した後、新しい列が追加されます。したがって、「Marks」は「Course_Name」の後に追加されます。