mysql alter table how add column table mysql
Informazioni sul comando MySQL ALTER Table per aggiungere / eliminare una colonna, un indice, un vincolo, modificare il nome della tabella, ecc. Con esempi:
MySQL ALTER viene utilizzato per modificare una tabella esistente aggiungendo una nuova colonna o rimuovendo una colonna esistente o cambiando il tipo di dati della colonna.
In parole semplici, il comando ALTER viene utilizzato per modificare la struttura di una tabella esistente aggiungendo / rimuovendo / aggiornando colonne, rinominando tabelle, ecc.
È quasi impossibile che tutti i requisiti per un dato schema siano disponibili in anticipo, quindi è imperativo che ci sia un modo per aggiornare la struttura della tabella secondo necessità.
Cosa imparerai:
TABELLA ALTER DI MySQL
SINTASSI:
ALTER TABLE table_name (alter_option1, alter_option2...)
Qui table_name è il nome della tabella su cui vogliamo eseguire l'azione alter. Una o più alter_options possono essere specificate insieme al file ALTER TABLE comando.
Diamo un'occhiata alle diverse alter_options utilizzate principalmente da MySQL.
Dati di esempio e impostazione tabella
Allo scopo di comprendere diversi usi di ETÀ comando, utilizzeremo 2 tabelle di esempio: Dipendente e Reparto con la struttura indicata di seguito.
Stiamo anche aggiungendo alcuni dati fittizi a entrambe le tabelle.
Non abbiamo aggiunto alcun vincolo FOREIGN KEY tra queste tabelle. Impareremo ad aggiungerli usando il comando ALTER negli esempi mostrati nelle sezioni seguenti mentre discutiamo.
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');
Diversi modi per utilizzare il comando ALTER Table
Il MySQL ALTER Il comando può essere utilizzato per più cose come aggiungere / eliminare una colonna, aggiungere / eliminare un indice o un vincolo e aggiornare una tabella stessa. Diamo un'occhiata a diversi scenari con l'aiuto di esempi.
AGGIUNGI COLONNA
Con le tabelle di esempio precedenti, aggiungiamo una nuova colonna denominata 'department_id' di tipo INT nella tabella Employee.
ALTER TABLE employee ADD COLUMN department_id INT
COLONNA DROP
Simile all'aggiunta di una nuova colonna, il MySQL ALTER può essere utilizzato per eliminare una colonna esistente dalla tabella.
Prova a rimuovere la colonna department_id sopra aggiunta dalla tabella Employee.
ALTER TABLE employee DROP COLUMN department_id
Tieni presente che, mentre rilasci una COLONNA, devi solo menzionare il nome della colonna e non il suo tipo di dati.
Per verificare se il comando ALTER ha avuto esito positivo, è possibile eseguire il comando SHOW COLUMNS.
SHOW COLUMNS FROM employee;
Produzione:
Campo | genere | Nullo | Chiave | Predefinito | Extra |
---|---|---|---|---|---|
nome | varchar (100) | SÌ | NULLO | ||
id | int | SÌ | NULLO | ||
indirizzo | varchar (100) | SÌ | NULLO |
Ora puoi vedere che non è presente alcuna colonna department_id nella tabella 'Employee'.
Aggiungi / Elimina vincoli
Vediamo ora come utilizzare ALTER per aggiungere un vincolo.
Il comando ALTER può essere utilizzato per aggiungere o rimuovere vincoli per una tabella esistente. Vediamo un esempio di un vincolo FOREIGN KEY che deve essere aggiunto tra 2 tabelle.
Useremo il comando ALTER per aggiungere FOREIGN KEY CONSTRAINT nella tabella Employee per la tabella Employee_department.
Aggiungi una nuova colonna denominata department_id nella tabella Employee.
ALTER TABLE employee ADD COLUMN department_id INT
Ora aggiungi il vincolo FOREIGN KEY.
ALTER TABLE employee ADD FOREIGN KEY (department_id) REFERENCES employee_department(id)
Per convalidare questo vincolo, possiamo usare il comando SHOW per vedere la definizione della tabella.
SHOW CREATE TABLE employee;
tavolo | Crea tabella |
---|---|
dipendente | CREA TABELLA `dipendente` ( `nome` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `address` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, KEY `department_id` (` department_id`), CONSTRAINT `dipendente_ibfk_1` CHIAVE ESTERA (` department_id`) RIFERIMENTI `Employee_department` (` id`) ) ENGINE = SET DI CARATTERI PREDEFINITI InnoDB = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Scoprirai che è presente un vincolo FOREIGN KEY creato nella colonna department_id.
Vediamo ora come possiamo utilizzare il comando ALTER per rimuovere il vincolo FOREIGN KEY che abbiamo appena aggiunto.
ALTER TABLE employee DROP CONSTRAINT employee_ibfk_1
Tieni presente che dovrai utilizzare il nome del vincolo che è stato creato. Quindi, nell'output del comando SHOW sopra riportato, puoi vedere il nome del vincolo che MySQL ha creato per il vincolo FOREIGN KEY è ' dipendente_ibfk_1 '
Eseguire il comando MOSTRA per vedere se il vincolo viene rimosso come mostrato di seguito:
SHOW CREATE TABLE employee;
tavolo | Crea tabella |
---|---|
dipendente | CREA TABELLA `dipendente` ( `nome` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `address` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, KEY `department_id` (` department_id`) ) ENGINE = SET DI CARATTERI PREDEFINITI InnoDB = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Aggiungi / rilascia indici
MySQL ALTER Il comando table consente anche di creare o rilasciare INDEXES su una tabella.
Ci possono essere quattro diversi tipi di indici che possono essere aggiunti utilizzando il comando ALTER TABLE.
# 1) Aggiungi PRIMARY KEY: Questo comando aggiunge un indice PRIMARY KEY su una data colonna (o colonne)
Nell'esempio seguente, utilizza la tabella Employee e aggiungi l'indice PRIMARY KEY alla colonna 'Id'.
ALTER TABLE employee ADD PRIMARY KEY (id);
# 2) Aggiungi UNICO: Aggiunge o crea un indice univoco rispetto a una o più colonne date
Supponiamo ipoteticamente di volere solo nomi univoci in una tabella. Aggiungi un indice UNICO alla colonna 'nome' nella tabella dei dipendenti come mostrato di seguito.
ALTER TABLE employee ADD UNIQUE (name);
# 3) Aggiungi INDICE: Aggiungi un indice ordinario su qualsiasi colonna.
Aggiungi un normale indice nel campo 'indirizzo' nella tabella Dipendenti.
ALTER TABLE employee ADD INDEX (name);
# 4) Aggiungi indice FULLTEXT: Questo è un tipo speciale di indice utilizzato per la ricerca di testo.
Aggiungeremo un indice FULLTEXT ai valori della colonna 'nome' nella tabella Employee.
ALTER TABLE employee ADD FULLTEXT(address);
Per tutti i 4 esempi precedenti, possiamo eseguire il file MOSTRA CREA TABELLA comando per ottenere i dettagli sugli indici creati.
SHOW CREATE TABLE employee;
tavolo | Crea tabella |
---|---|
dipendente | CREA TABELLA `dipendente` ( `nome` varchar (100) DEFAULT NULL, `id` int NON NULL, `address` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, CHIAVE PRIMARIA (`id`), CHIAVE UNICA `nome` (` nome`), CHIAVE 'nome_2' ('nome'), FULLTEXT KEY `address` (` address`) ) MOTORE = SET DI CARATTERI PREDEFINITI InnoDB = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Nell'output precedente, osserverai che tutti gli indici sono stati creati secondo il valore nella colonna create_table.
Simile alla creazione di indici, il comando ALTER può essere utilizzato anche per eliminare gli indici esistenti dalla tabella.
Esempio:
ALTER TABLE employee DROP INDEX address;
Il comando precedente farà cadere l'indice FULLTEXT che abbiamo aggiunto per il campo dell'indirizzo.
Nota il nome 'indirizzo'. Dovrebbe corrispondere al nome dell'indice nell'output di MOSTRA CREA TABELLA comando.
Modifica il valore predefinito della colonna
ALTER TABLE Il comando può essere utilizzato anche per IMPOSTARE / modificare il valore DEFAULT per una colonna esistente.
client ssh gratuito per Windows 10
Diamo un'occhiata a un esempio in cui cambieremo il valore predefinito della colonna department_id in '1'. Con questo, qualsiasi nuovo inserimento in questa tabella cambierebbe / imposterebbe il valore per la colonna department_id su 1
ALTER TABLE employee ALTER department_id SET DEFAULT 1
Aggiungi un nuovo record alla tabella Employee:
INSERT INTO `employee` (`id`,`name`,`address`) VALUES (11,'Saket Sharma','NB 23 Domlur')
E ora interroghiamo il department_id per questo record e vediamo qual è il valore impostato.
SELECT department_id FROM employee where id=11 //Output department_id 1
Aggiorna nome tabella
MySQL ALTER Il comando table può essere utilizzato anche per aggiornare il nome di una tabella esistente. A volte è necessario aggiornare la struttura dello schema, il che può comportare la modifica / l'aggiornamento dei nomi delle tabelle.
Esempio - Rinomineremo la tabella 'dipendente' in 'Employee_details'.
ALTER TABLE table_name RENAME TO new_table_name;
Domande frequenti
D # 1) Come cambio la struttura della tabella in MySQL?
Risposta: MySQL fornisce il comando ALTER per modificare la struttura di una tabella esistente in MySQL. Puoi eseguire varie operazioni con il comando ALTER come,
- Aggiunta / eliminazione di una colonna
- Aggiunta / rimozione di indice o vincolo
- Rinominare una tabella
D # 2) Il comando ALTER blocca una tabella?
Risposta: Potrebbe dipendere dalle versioni - con le versioni precedenti di MySQL Blocco di una tabella durante l'esecuzione dell'istruzione ALTER. In generale, il blocco avverrebbe, ovvero qualsiasi lettura e scrittura durante ALTER.
Per esempio - L'aggiunta di una nuova colonna per una tabella esistente toccherebbe tutte le righe della tabella in cui viene aggiunta la colonna e quando la tabella ha un numero di record in milioni, l'esecuzione dell'operazione ALTER potrebbe richiedere del tempo. In questo caso, il blocco delle letture / scritture sarebbe costoso in quanto il database sarebbe inattivo e inaccessibile.
D # 3) Possiamo aggiungere più di una colonna nella tabella ALTER?
Risposta: Sì, il comando ALTER può essere utilizzato per aggiungere più colonne all'interno di una singola istruzione.
Diamo un'occhiata a un esempio in cui abbiamo una tabella Employee con colonne id, name e address e supponiamo di voler aggiungere altre 2 colonne denominate - latest_education (tipo varchar) e phone_number (tipo varchar)
ALTER TABLE employee ADD highest_education VARCHAR(50), ADD phone_number VARCHAR(20);
Diamo un'occhiata alle informazioni sulla tabella
SHOW COLUMNS FROM employee;
Produzione:
Campo | genere | Nullo | Chiave | Predefinito | Extra |
---|---|---|---|---|---|
nome | varchar (100) | SÌ | UNITO | NULLO | |
id | int | NON | PRI | NULLO | |
indirizzo | varchar (100) | SÌ | NULLO | ||
department_id | int | SÌ | 1 | ||
Il più alto livello educativo | varchar (50) | SÌ | NULLO | ||
numero di telefono | varchar (20) | SÌ | NULLO |
Nell'output sopra puoi vedere le colonne, più alto_education e phone_number sono stati aggiunti.
Conclusione
In questo tutorial, abbiamo appreso diversi utilizzi di MySQL ALTER Comando da tavolo. ALTER è un comando importante in quanto può essere utilizzato per molteplici scopi per ALTER la struttura di una tabella esistente in MySQL.
Può essere utilizzato per cose come: aggiungere / rimuovere una colonna, aggiungere / eliminare Indici o Vincoli e può anche essere utilizzato anche per rinominare una tabella esistente.
Chiunque apprenda MySQL dovrebbe avere una conoscenza approfondita del comando ALTER table, poiché viene utilizzato principalmente durante le fasi di manutenzione dei database in cui è necessario modificare lo schema della tabella esistente.
Lettura consigliata
- Tutorial sulla creazione di tabelle in MySQL con esempi
- MySQL Insert Into Table - Inserisci sintassi ed esempi di istruzioni
- Tipi di dati MySQL | Quali sono i diversi tipi di dati in MySQL
- Nozioni di base sul vincolo di MySQL FOREIGN KEY con esempi
- MySQL JOIN Tutorial: Inner, Outer, Cross, Left, Right e Self
- MySQL Create Database - Come creare un database in MySQL
- Le 40 migliori domande e risposte per i colloqui di MySQL (domande 2021)
- Tabella hash in C ++: programmi per implementare tabelle hash e mappe hash