Comment ajouter une colonne dans une table en SQL
Présentation
- Pour ajouter une colonne dans une table déjà créée, il faut utiliser la commande ALTER avec la clause ADD.
- Si dans la requête, il n'est pas spécifié où la nouvelle colonne doit être ajoutée, alors par défaut elle sera ajoutée en tant que dernière colonne.
- On peut également ajouter une nouvelle colonne en première ou même après une colonne spécifique d'un tableau déjà créé.
- Vous pouvez ajouter une ou plusieurs colonnes à la fois à l'aide d'une seule requête SQL.
Syntaxe :
ALTER TABLE tablename ADD (ColumnName datatype);
où ,
- Tablename est le nom d'une table déjà existante à laquelle vous devez ajouter une nouvelle colonne.
- Column_name est le nom de la colonne qui doit être ajoutée à une table déjà existante.
Exemple :
Tout d'abord, nous allons créer une base de données avec le nom "studentdb ”. Ensuite, dans cette base de données, nous allons créer une table "étudiant" et insérer des enregistrements dans la table. Nous considérerons la même base de données et également la même table pour les exemples suivants.
Maintenant, nous allons ajouter une nouvelle colonne "Ville" à un tableau existant.
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)
La nouvelle colonne "Ville" est ajoutée à une table d'étudiants existante. Puisque, dans la requête, nous n'avons pas spécifié où il doit être ajouté, il est donc ajouté par défaut en tant que dernière colonne.
(B)Ajout de plusieurs colonnes à un tableau existant
Syntaxe :
ALTER TABLE tablename ADD (ColumnName1 datatype, ColumnName2 datatype);
Exemple :
Maintenant, nous allons ajouter deux nouvelles colonnes "Ville" et "Marques" à une table existante en utilisant une seule requête.
mysql> UTILISE Studentdb ;
Sortie :
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;
Sortie :
+---------+-----------+-----------+-------------+------+-------+ | 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)
Les nouvelles colonnes « Ville » et « Notes » sont ajoutées à une table d'étudiants existante. Puisque, dans la requête, nous n'avons pas spécifié où il doit être ajouté, donc par défaut, les deux colonnes sont ajoutées en dernier à l'aide d'une seule requête.
(C) Ajouter une colonne à la première position d'un tableau existant
Syntaxe :
ALTER TABLE tablename ADD ColumnName datatype FIRST;
Exemple : Maintenant, nous allons ajouter une nouvelle colonne "Sr_No" à une table existante en tant que première colonne.
mysql> USE studentdb;
Sortie :
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;
Sortie :
Query OK, 4 rows affected (0.24 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> SELECT *FROM student;
Sortie :
+-------+---------+-----------+-----------+-------------+ | 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)
La nouvelle colonne « Sr_No » est ajoutée à une table d'étudiants existante. Depuis, dans la requête, nous avons spécifié le mot clé "FIRST" afin que "Sr_No" soit ajouté en tant que première colonne.
(D) Ajouter une nouvelle colonne après une colonne spécifique d'un tableau existant
Syntaxe :
ALTER TABLE tablename ADD ColumnName datatype AFTER column_name;
Exemple :
Maintenant, nous allons ajouter une nouvelle colonne "Marks" à un tableau existant après le "Course_Name".
mysql> USE studentdb;
Sortie :
Database changed mysql> SELECT *FROM student;
Sortie :
+---------+-----------+-----------+-------------+------+ | 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;
Sortie :
Query OK, 4 rows affected (0.28 sec) Records: 4 Duplicates: 0 Warnings: 0
mysql> SELECT *FROM student;
Sortie :
+---------+-----------+-----------+-------------+-------+------+ | 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)
La nouvelle colonne "Notes" est ajoutée à un tableau étudiant existant. Depuis, dans la requête, nous avons spécifié le mot clé 'AFTER' avec le nom de la colonne après laquelle la nouvelle colonne doit être ajoutée. Par conséquent, "Marks" est ajouté après "Course_Name".