Sådan tilføjes kolonne i tabel i SQL
Introduktion
- For at tilføje en kolonne i allerede oprettet tabel, skal man bruge ALTER-kommandoen sammen med ADD-sætningen.
- Hvis det i forespørgslen ikke er angivet, hvor den nye kolonne skal tilføjes, vil den som standard blive tilføjet som en sidste kolonne.
- Man kan også tilføje en ny kolonne ved den første eller endda efter en specifik kolonne i en allerede oprettet tabel.
- Du kan tilføje én kolonne eller mere end én kolonne ad gangen ved hjælp af en enkelt SQL-forespørgsel.
(A). Tilføjelse af en ny kolonne til sidst i en eksisterende tabel
Syntaks:
ALTER TABLE tablename ADD (ColumnName datatype);
hvor ,
- Tabelnavn er navnet på en allerede eksisterende tabel, som du skal tilføje en ny kolonne til.
- Kolonne_navn er navnet på den kolonne, der skal tilføjes til en allerede eksisterende tabel.
Eksempel:
Først vil vi oprette en database med navnet "studentdb ”. Så i den database vil vi oprette en tabel "elev" og indsætte poster i tabellen. Vi vil overveje den samme database og også den samme tabel for efterfølgende eksempler.
Nu vil vi tilføje en ny kolonne 'By' til en eksisterende tabel.
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)
Ny kolonne 'By' tilføjes til en eksisterende elevtabel. Da vi i forespørgslen ikke har angivet, hvor det skal tilføjes, så som standard tilføjes det som den sidste kolonne.
(B)Tilføjelse af mere end én kolonne til en eksisterende tabel
Syntaks:
ALTER TABLE tablename ADD (ColumnName1 datatype, ColumnName2 datatype);
Eksempel:
Nu vil vi tilføje to nye kolonner "By" og "Mærker" til en eksisterende tabel ved hjælp af en enkelt forespørgsel.
mysql> BRUG studentdb;
Output:
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;
Output:
+---------+-----------+-----------+-------------+------+-------+ | 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)
Nye kolonner 'By' og 'Mærker' tilføjes til en eksisterende elevtabel. Da vi i forespørgslen ikke har angivet, hvor den skal tilføjes, så som standard tilføjes begge kolonner sidst ved hjælp af en enkelt forespørgsel.
(C) Tilføjelse af en kolonne ved den første position i en eksisterende tabel
Syntaks :
ALTER TABLE tablename ADD ColumnName datatype FIRST;
Eksempel: Nu vil vi tilføje en ny kolonne 'Sr_No' til en eksisterende tabel som en første kolonne.
mysql> USE studentdb;
Output:
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;
Output:
Query OK, 4 rows affected (0.24 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT *FROM student;
Output:
+-------+---------+-----------+-----------+-------------+ | 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)
Ny kolonne 'Sr_No' tilføjes til en eksisterende elevtabel. Da vi i forespørgslen har angivet 'FIRST' søgeord, så 'Sr_No' tilføjes som en første kolonne.
(D) Tilføjelse af en ny kolonne efter en specifik kolonne i en eksisterende tabel
Syntaks:
ALTER TABLE tablename ADD ColumnName datatype AFTER column_name;
Eksempel:
Nu vil vi tilføje en ny kolonne 'Mærker' til en eksisterende tabel efter 'Course_Name' .
mysql> USE studentdb;
Output:
Database changed mysql> SELECT *FROM student;
Output:
+---------+-----------+-----------+-------------+------+ | 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;
Output :
Query OK, 4 rows affected (0.28 sec) Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT *FROM student;
Output:
+---------+-----------+-----------+-------------+-------+------+ | 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)
Ny kolonne 'Mærker' tilføjes til en eksisterende elevtabel. Siden har vi i forespørgslen angivet 'AFTER' søgeord med kolonnenavnet, hvorefter den nye kolonne skal tilføjes. Derfor tilføjes 'Mærker' efter 'Course_Name'.