mysql alter table how add column table mysql
Découvrez la commande MySQL ALTER Table pour ajouter / supprimer une colonne, un index, une contrainte, changer le nom de la table, etc. avec des exemples:
MySQL ALTER La commande est utilisée pour modifier une table existante en ajoutant une nouvelle colonne ou en supprimant une colonne existante ou en modifiant le type de données de la colonne.
Pour parler simplement, la commande ALTER permet de modifier la structure d'une table existante en ajoutant / supprimant / mettant à jour des colonnes, renommer des tables, etc.
Il est presque impossible que toutes les exigences pour un schéma donné soient disponibles à l'avance, il est donc impératif qu'il y ait un moyen de mettre à jour la structure de la table si nécessaire.
Ce que vous apprendrez:
MySQL ALTER TABLE
SYNTAXE:
ALTER TABLE table_name (alter_option1, alter_option2...)
Ici nom_table est le nom de la table sur laquelle nous voulons effectuer l'action alter. Une ou plusieurs alter_options peuvent être spécifiées avec le MODIFIER TABLE commander.
Regardons les différentes alter_options largement utilisées fournies par MySQL.
Exemple de configuration de données et de table
Aux fins de comprendre les différents usages du ÂGE commande, nous utiliserons 2 exemples de tableaux - Employé et Département ayant la structure mentionnée ci-dessous.
Nous ajoutons également des données factices aux deux tableaux.
Nous n'avons ajouté aucune contrainte FOREIGN KEY parmi ces tableaux. Nous allons apprendre à les ajouter à l'aide de la commande ALTER dans les exemples présentés dans les sections ci-dessous au fur et à mesure que nous en discuterons.
CREATE TABLE IF NOT EXISTS Employee_Department ( id INT, name VARCHAR(100), PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS Employee ( name VARCHAR(100), id INT, address VARCHAR(100), department_id INT, PRIMARY KEY (id) ); INSERT INTO `employee_department`(`name`,`id`) VALUES ('Information Technology',1),('HR',2),('Finance',3),('Accounting',4),('Housekeeping',5 ),('Security',6),('Support',7),('Contract Staff',8),('Sales',9),('Management',10); INSERT INTO `employee` (`id`,`name`,`address`) VALUES (1,'Alyssa Villarreal','Ap #558-3012 Nulla Street'),(2,'Vanna Parks','103-986 Cursus Rd.'),(3,'Quyn Byers','770 Nulla Avenue'),(4,'Kristen Hall','Ap #622-9967 Nullam St.'),(5,'Chelsea Stone','6017 Elementum St.'),(6,'Sacha Sweeney','239-7402 Etiam St.'),(7,'Sophia Charles','799 -745 Tellus. Rd.'),(8,'Jennifer Joyner','5803 Ligula. Avenue'),(9,'Mercedes Head','Ap #375-7999 Facilisis Rd.'),(10,'Reagan Holland','P.O. Box 625, 5744 Proin Avenue');
Différentes façons d'utiliser la commande ALTER Table
Le MySQL ALTER La commande peut être utilisée pour plusieurs choses comme ajouter / supprimer une colonne, ajouter / supprimer un index ou une contrainte et mettre à jour une table elle-même. Examinons différents scénarios à l'aide d'exemples.
AJOUTER UNE COLONNE
Avec les exemples de tableaux ci-dessus, ajoutons une nouvelle colonne nommée 'department_id' de type INT dans la table Employee.
ALTER TABLE employee ADD COLUMN department_id INT
DROP COLUMN
Similaire à l'ajout d'une nouvelle colonne, le MySQL ALTER peut être utilisée pour supprimer une colonne existante de la table.
Essayez de supprimer la colonne department_id ajoutée ci-dessus de la table Employee.
ALTER TABLE employee DROP COLUMN department_id
Veuillez noter que, lors de la suppression d'une COLONNE, il vous suffit de mentionner le nom de la colonne et non son type de données.
Pour valider si la commande ALTER a réussi, vous pouvez exécuter la commande SHOW COLUMNS.
SHOW COLUMNS FROM employee;
Production:
Domaine | Taper | Nul | Clé | Défaut | Supplémentaire |
---|---|---|---|---|---|
Nom | varchar (100) | OUI | NUL | ||
identifiant | int | OUI | NUL | ||
adresse | varchar (100) | OUI | NUL |
Vous pouvez voir qu'il n'y a pas de colonne department_id dans le tableau 'Employee' pour le moment.
Ajouter / supprimer des contraintes
Voyons maintenant comment ALTER peut être utilisé pour ajouter une contrainte.
La commande ALTER peut être utilisée pour ajouter ou supprimer des contraintes pour une table existante. Voyons un exemple de contrainte FOREIGN KEY qui doit être ajoutée entre 2 tables.
Nous utiliserons la commande ALTER pour ajouter FOREIGN KEY CONSTRAINT dans la table Employee pour la table employee_department.
Ajoutez une nouvelle colonne nommée department_id dans la table Employee.
ALTER TABLE employee ADD COLUMN department_id INT
Maintenant, ajoutez la contrainte FOREIGN KEY.
ALTER TABLE employee ADD FOREIGN KEY (department_id) REFERENCES employee_department(id)
Pour valider cette contrainte, nous pouvons utiliser la commande SHOW pour voir la définition de la table.
SHOW CREATE TABLE employee;
Table | Créer une table |
---|---|
employé | CRÉER TABLE `employé` ( `nom` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `adresse` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, KEY `department_id` (` department_id`), CONSTRAINT `employee_ibfk_1` FOREIGN KEY (` department_id`) REFERENCES `employee_department` (` id`) ) MOTEUR = INFODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Vous constaterez qu'une contrainte FOREIGN KEY a été créée sur la colonne department_id.
Voyons maintenant comment nous pouvons utiliser la commande ALTER pour supprimer la contrainte FOREIGN KEY que nous venons d'ajouter.
ALTER TABLE employee DROP CONSTRAINT employee_ibfk_1
Veuillez noter que vous devrez utiliser le nom de la contrainte créée. Ainsi, dans la sortie de la commande SHOW ci-dessus, vous pouvez voir que le nom de contrainte que MySQL a créé pour la contrainte FOREIGN KEY est ‘ employee_ibfk_1 »
Exécutez la commande SHOW pour voir si la contrainte est supprimée comme indiqué ci-dessous:
SHOW CREATE TABLE employee;
Table | Créer une table |
---|---|
employé | CRÉER TABLE `employé` ( `nom` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `adresse` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, KEY `department_id` (` department_id`) ) MOTEUR = INFODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Ajouter / supprimer des index
MySQL ALTER La commande table vous permet également de créer ou de supprimer des INDEXES sur une table.
Il peut y avoir quatre types différents d'index qui peuvent être ajoutés à l'aide de la commande ALTER TABLE.
# 1) Ajouter la clé primaire: Cette commande ajoute un index PRIMARY KEY par rapport à une ou plusieurs colonnes données
Dans l'exemple ci-dessous, utilisez la table Employee et ajoutez l'index PRIMARY KEY à la colonne «Id».
ALTER TABLE employee ADD PRIMARY KEY (id);
# 2) Ajouter UNIQUE: Ajoute ou crée un index unique par rapport aux colonnes données
Supposons que nous voulons simplement des noms uniques dans une table. Ajoutez un index UNIQUE dans la colonne «nom» du tableau des employés comme indiqué ci-dessous.
ALTER TABLE employee ADD UNIQUE (name);
# 3) Ajouter INDEX: Ajoutez un index ordinaire à n'importe quelle colonne.
Ajoutez un index normal dans le champ «adresse» de la table Employee.
ALTER TABLE employee ADD INDEX (name);
# 4) Ajouter un index FULLTEXT: Il s'agit d'un type spécial d'index utilisé à des fins de recherche de texte.
Nous ajouterons un index FULLTEXT sur les valeurs de la colonne «nom» dans la table Employee.
ALTER TABLE employee ADD FULLTEXT(address);
Pour tous les 4 exemples ci-dessus, nous pouvons exécuter le MONTRER CRÉER UNE TABLE commande pour obtenir les détails sur les index créés.
SHOW CREATE TABLE employee;
Table | Créer une table |
---|---|
employé | CRÉER TABLE `employé` ( `nom` varchar (100) DEFAULT NULL, `id` int NON NULL, `adresse` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, CLÉ PRIMAIRE (`id`), CLÉ UNIQUE `nom` (` nom`), CLÉ `nom_2` (` nom`), TOUCHE FULLTEXT `adresse` (` adresse`) ) MOTEUR = INFODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Dans la sortie ci-dessus, vous observerez que tous les index ont été créés selon la valeur de la colonne create_table.
Similaire à la création d'index, la commande ALTER peut également être utilisée pour supprimer des index existants de la table.
Exemple:
ALTER TABLE employee DROP INDEX address;
La commande ci-dessus supprimera l'index FULLTEXT que nous avons ajouté pour le champ d'adresse.
Notez le nom 'adresse'. Cela doit correspondre au nom de l'index dans la sortie du MONTRER CRÉER UNE TABLE commander.
Modifier la valeur par défaut de la colonne
MODIFIER TABLE La commande peut également être utilisée pour définir / modifier la valeur PAR DÉFAUT d'une colonne existante.
meilleur convertisseur de fichiers gratuit pour windows 10
Prenons un exemple dans lequel nous allons changer la valeur par défaut de la colonne department_id en '1'. Avec cela, toute nouvelle insertion dans cette table modifierait / définirait la valeur de la colonne department_id sur 1
ALTER TABLE employee ALTER department_id SET DEFAULT 1
Ajoutez un nouvel enregistrement à la table Employé:
INSERT INTO `employee` (`id`,`name`,`address`) VALUES (11,'Saket Sharma','NB 23 Domlur')
Et maintenant, interrogeons le department_id pour cet enregistrement et voyons quelle est la valeur définie.
SELECT department_id FROM employee where id=11 //Output department_id 1
Mettre à jour le nom de la table
MySQL ALTER La commande table peut également être utilisée pour mettre à jour le nom d'une table existante. Parfois, il est nécessaire de mettre à jour la structure du schéma, ce qui peut impliquer la modification / mise à jour des noms de table.
Exemple - Nous renommerons la table «Employee» en «Employee_details».
ALTER TABLE table_name RENAME TO new_table_name;
Questions fréquemment posées
Q # 1) Comment changer la structure de table dans MySQL?
Répondre: MySQL fournit la commande ALTER pour changer la structure d'une table existante dans MySQL. Vous pouvez effectuer diverses opérations avec la commande ALTER comme,
- Ajouter / supprimer une colonne
- Ajouter / supprimer un index ou une contrainte
- Renommer une table
Q # 2) La commande ALTER verrouille-t-elle une table?
Répondre: Cela peut dépendre des versions - avec les anciennes versions de MySQL Verrouiller une table pendant l'exécution de l'instruction ALTER. En général, le verrouillage se produirait, c'est-à-dire toute lecture et écriture pendant ALTER.
Par exemple - L'ajout d'une nouvelle colonne pour une table existante toucherait toutes les lignes de la table dans laquelle la colonne est ajoutée et lorsque la table a un nombre d'enregistrements en millions, l'opération ALTER peut prendre un certain temps à s'exécuter. Dans ce cas, le verrouillage se produisant sur les lectures / écritures serait coûteux car la base de données serait hors service et inaccessible.
Q # 3) Pouvons-nous ajouter plus d'une colonne dans la table ALTER?
Répondre: Oui, la commande ALTER peut être utilisée pour ajouter plusieurs colonnes dans une seule instruction.
Examinons un exemple dans lequel nous avons une table Employee avec les colonnes id, name et address et supposons que nous souhaitons ajouter 2 autres colonnes nommées - most_education (type varchar) et phone_number (type varchar)
ALTER TABLE employee ADD highest_education VARCHAR(50), ADD phone_number VARCHAR(20);
Jetons un œil aux informations du tableau
SHOW COLUMNS FROM employee;
Production:
Domaine | Taper | Nul | Clé | Défaut | Supplémentaire |
---|---|---|---|---|---|
Nom | varchar (100) | OUI | UNI | NUL | |
identifiant | int | NE PAS | PRI | NUL | |
adresse | varchar (100) | OUI | NUL | ||
department_id | int | OUI | 1 | ||
Higher_education | varchar (50) | OUI | NUL | ||
numéro de téléphone | varchar (20) | OUI | NUL |
Dans la sortie ci-dessus, vous pouvez voir les colonnes, Lowest_education et phone_number ont été ajoutés.
Conclusion
Dans ce didacticiel, nous avons découvert les différentes utilisations du MySQL ALTER Commande de table. ALTER est une commande importante car elle peut être utilisée à des fins multiples pour ALTER la structure d'une table existante dans MySQL.
Il peut être utilisé pour des choses comme - ajouter / supprimer une colonne, ajouter / supprimer des index ou des contraintes, et peut également être utilisé même pour renommer une table existante.
Toute personne qui apprend MySQL doit avoir une compréhension approfondie de la commande ALTER table, car elle est principalement utilisée pendant les phases de maintenance des bases de données où le schéma de table existant doit être modifié.
lecture recommandée
- Tutoriel MySQL Create Table avec des exemples
- MySQL Insert Into Table - Syntaxe et exemples d'instructions d'insertion
- Types de données MySQL | Quels sont les différents types de données dans MySQL
- Principes de base de la contrainte MySQL FOREIGN KEY avec des exemples
- Tutoriel MySQL JOIN: intérieur, extérieur, croix, gauche, droite et soi
- MySQL Create Database - Comment créer une base de données dans MySQL
- Top 40 des meilleures questions et réponses d'entretien MySQL (Questions 2021)
- Table de hachage en C ++: programmes pour implémenter une table de hachage et des cartes de hachage