mysql alter table how add column table mysql
Obteniu informació sobre l’ordre MySQL ALTER Table per afegir / deixar anar una columna, un índex, una restricció, canviar el nom de la taula, etc., amb exemples:
MySQL ALTER L'ordre s'utilitza per modificar una taula existent afegint una nova columna o eliminant una columna existent o canviant el tipus de dades de la columna.
Simplement parlant, l'ordre ALTER s'utilitza per modificar l'estructura d'una taula existent afegint / eliminant / actualitzant columnes, canviant el nom de les taules, etc.
És gairebé impossible que tots els requisits d’un esquema determinat estiguin disponibles per endavant, per tant, és imprescindible que hi hagi una manera d’actualitzar l’estructura de la taula segons sigui necessari.
Què aprendreu:
TAULA D'ALTERACIÓ MySQL
SINTAXI:
ALTER TABLE table_name (alter_option1, alter_option2...)
Aquí table_name és el nom de la taula sobre la qual volem realitzar l'acció alter. Es poden especificar una o més alter_options juntament amb el fitxer ALTER TAULA comandament.
Vegem les diferents alter_opcions utilitzades principalment proporcionades per MySQL.
Configuració de dades i mostres de mostra
Amb el propòsit de comprendre els diferents usos del EDAT d'ordre, utilitzarem 2 taules de mostra: empleat i departament que tenen l'estructura tal com s'esmenta a continuació
També afegim algunes dades falses a les dues taules.
No hem afegit cap restricció de la CLAU ESTRANGERA entre aquestes taules. Aprendrem a afegir-los mitjançant l'ordre ALTER en els exemples que es mostren a les seccions següents mentre discutim.
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');
Diferents maneres d'utilitzar l'ordre de la taula ALTER
El MySQL ALTER L'ordre es pot utilitzar per a diverses coses com afegir / deixar anar una columna, afegir / deixar anar índex o restricció i actualitzar una taula per si mateixa. Vegem diferents escenaris amb l'ajut d'exemples.
AFEGEIX LA COLUMNA
Amb les taules de mostra anteriors, afegim una nova columna anomenada 'departament_id' de tipus INT a la taula Empleat.
ALTER TABLE employee ADD COLUMN department_id INT
COLUMNA DE GOTA
Similar a afegir una nova columna, el fitxer MySQL ALTER es pot utilitzar per deixar anar una columna existent de la taula.
Intenteu eliminar la columna afegida anteriorment department_id de la taula Empleats.
ALTER TABLE employee DROP COLUMN department_id
Tingueu en compte que, mentre es deixa caure una COLUMNA, només cal esmentar el nom de la columna i no el seu tipus de dades.
Per validar si l'ordre ALTER té èxit, podeu executar l'ordre SHOW COLUMNS.
SHOW COLUMNS FROM employee;
Sortida:
Camp | Tipus | Nul | Clau | Per defecte | Extra |
---|---|---|---|---|---|
nom | varchar (100) | SÍ | NUL | ||
identificador | int | SÍ | NUL | ||
adreça | varchar (100) | SÍ | NUL |
Ara podeu veure que no hi ha cap columna departament_id a la taula 'Empleat'.
Afegeix / deixa restriccions
Vegem ara com es pot utilitzar ALTER per afegir una restricció.
L'ordre ALTER es pot utilitzar per afegir o eliminar restriccions d'una taula existent. Vegem un exemple de restricció de claus estrangeres que cal afegir entre dues taules.
Utilitzarem l'ordre ALTER per afegir CONSTRICCIÓ DE CLAU ESTRANGERA a la taula Empleats de la taula empleat_departament.
Afegiu una columna nova anomenada department_id a la taula Employee.
ALTER TABLE employee ADD COLUMN department_id INT
Ara, afegiu la restricció FOREIGN KEY.
ALTER TABLE employee ADD FOREIGN KEY (department_id) REFERENCES employee_department(id)
Per validar aquesta restricció, podem utilitzar l'ordre SHOW per veure la definició de la taula.
SHOW CREATE TABLE employee;
Taula | Crea una taula |
---|---|
empleat | CREA TAULA `empleat` ( `name` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `address` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, CLAU `departament_id` (` departament_id`), CONSTRAINT `dipendent_ibfk_1` CLAU ESTRANGERA (` departament_id`) REFERÈNCIES `empleat_departament` (` identificador`) ) MOTOR = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Trobareu que hi ha una restricció FOREIGN KEY creada a la columna department_id.
Vegem ara com podem utilitzar l’ordre ALTER per eliminar la restricció FOREIGN KEY que acabem d’afegir.
ALTER TABLE employee DROP CONSTRAINT employee_ibfk_1
Tingueu en compte que haureu d’utilitzar el nom de la restricció que s’ha creat. Així doncs, a la sortida de l’ordre SHOW anterior, podeu veure el nom de la restricció que MySQL ha creat per a la restricció FOREIGN KEY: empleat_ibfk_1 '
Executeu l'ordre SHOW per veure si s'elimina la restricció tal com es mostra a continuació:
SHOW CREATE TABLE employee;
Taula | Crea una taula |
---|---|
empleat | CREA TAULA `empleat` ( `name` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `address` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, CLAU `departament_id` (` departament_id`) ) MOTOR = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Afegeix / deixa índexs
MySQL ALTER L'ordre table també us permet crear o deixar caure ÍNDEX contra una taula.
Hi pot haver quatre tipus diferents d'índexs que es poden afegir mitjançant l'ordre ALTER TABLE.
# 1) Afegiu una CLAU PRIMÀRIA: Aquesta ordre afegeix un índex de CLAU PRIMÀRIA contra una columna (o columnes) determinada
A l'exemple següent, utilitzeu la taula Empleat i afegiu l'índex PRIMARY KEY a la columna 'Identificador'.
ALTER TABLE employee ADD PRIMARY KEY (id);
# 2) Afegiu UNIQUE: Afegeix o crea índex únic sobre columnes determinades
Suposem que hipotèticament només volem noms únics en una taula. Afegiu un índex ÚNIC a la columna 'nom' de la taula Empleats, tal com es mostra a continuació.
ALTER TABLE employee ADD UNIQUE (name);
# 3) Afegiu ÍNDEX: Afegiu un índex ordinari contra qualsevol columna.
Afegiu un índex normal al camp 'adreça' de la taula Empleats.
ALTER TABLE employee ADD INDEX (name);
# 4) Afegiu un índex FULLTEXT: Es tracta d’un tipus d’índex especial que s’utilitza amb finalitats de cerca de text.
Afegirem un índex FULLTEXT als valors de la columna 'nom' de la taula Empleats.
ALTER TABLE employee ADD FULLTEXT(address);
Per a tots els 4 exemples anteriors, podem executar el fitxer MOSTRA CREAR TAULA per obtenir els detalls sobre els índexs creats.
SHOW CREATE TABLE employee;
Taula | Crea una taula |
---|---|
empleat | CREA TAULA `empleat` ( `name` varchar (100) DEFAULT NULL, `id` int NOT NULL, `address` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, CLAU PRIMÀRIA ('id'), CLAU ÚNICA 'nom' ('nom'), CLAU 'nom_2' ('nom'), CLAU DE TEXT COMPLET `address` (` address`) ) MOTOR = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
A la sortida anterior, observareu que tots els índexs s'han creat segons el valor de la columna create_table.
De manera similar a la creació d'índexs, l'ordre ALTER també es pot utilitzar per deixar caure els índexs existents de la taula.
Exemple:
ALTER TABLE employee DROP INDEX address;
L'ordre anterior CAUDARÀ l'índex FULLTEXT que hem afegit per al camp d'adreça.
Fixeu-vos en el nom 'adreça'. Això hauria de coincidir amb el nom de l'índex a la sortida del fitxer MOSTRA CREAR TAULA comandament.
Canvia el valor per defecte de la columna
ALTER TAULA L'ordre també es pot utilitzar per SET / Canviar el valor DEFAULT per a una columna existent.
java com fer una cua
Vegem un exemple en què canviarem el valor per defecte de la columna department_id a '1'. Amb això, qualsevol inserció nova a aquesta taula canviaria / establiria el valor de la columna department_id a 1
ALTER TABLE employee ALTER department_id SET DEFAULT 1
Afegiu un registre nou a la taula d'empleats:
INSERT INTO `employee` (`id`,`name`,`address`) VALUES (11,'Saket Sharma','NB 23 Domlur')
I ara consultem el departament_id d’aquest registre i vegem quin és el valor que s’estableix.
SELECT department_id FROM employee where id=11 //Output department_id 1
Actualitza el nom de la taula
MySQL ALTER L'ordre table també es pot utilitzar per actualitzar el nom d'una taula existent. De vegades és necessari actualitzar l'estructura de l'esquema, que pot implicar canviar / actualitzar els noms de les taules.
Exemple - Canviarem el nom de la taula 'empleat' a 'Detalls_empleat'.
ALTER TABLE table_name RENAME TO new_table_name;
Preguntes freqüents
P # 1) Com puc canviar l'estructura de la taula a MySQL?
Resposta: MySQL proporciona l'ordre ALTER per canviar l'estructura d'una taula existent a MySQL. Podeu realitzar diverses operacions amb l'ordre ALTER, com ara,
- Afegir / deixar anar una columna
- Afegint / eliminant índex o restricció
- Canviar el nom d’una taula
P # 2) L'ordre ALTER bloqueja una taula?
Resposta: Pot dependre de versions, amb versions anteriors de MySQL Bloqueig d'una taula durant l'execució de la sentència ALTER. En general, el bloqueig es produiria, és a dir, qualsevol lectura i escriptura durant ALTER.
Per exemple - Si afegiu una nova columna per a una taula existent, tocaríeu totes les files de la taula en què s’afegeix la columna i, quan la taula tingui un nombre de registres en milions, l’operació ALTER pot trigar un temps a executar-se. En aquest cas, el bloqueig que es produeixi en les lectures / escriptures seria costós, ja que la base de dades estaria inactiva i inaccessible.
P # 3) Podem afegir més d'una columna a la taula ALTER?
Resposta: Sí, l'ordre ALTER es pot utilitzar per afegir diverses columnes dins d'una sola sentència.
Vegem un exemple en què tenim una taula Empleat amb identificador, nom i adreça de columnes i suposem que volem afegir 2 columnes més anomenades: major_educació (tipus varchar) i número_telèfon (tipus varchar)
ALTER TABLE employee ADD highest_education VARCHAR(50), ADD phone_number VARCHAR(20);
Vegem la informació de la taula
SHOW COLUMNS FROM employee;
Sortida:
Camp | Tipus | Nul | Clau | Per defecte | Extra |
---|---|---|---|---|---|
nom | varchar (100) | SÍ | UNITS | NUL | |
identificador | int | NO | PRI | NUL | |
adreça | varchar (100) | SÍ | NUL | ||
id_departament | int | SÍ | 1 | ||
major_educació | varchar (50) | SÍ | NUL | ||
número de telèfon | varchar (20) | SÍ | NUL |
A la sortida superior podeu veure les columnes, el número més alt d'educació i el número de telèfon.
Conclusió
En aquest tutorial, hem conegut diferents usos del MySQL ALTER Ordre de la taula. ALTER és una ordre important ja que es pot utilitzar per a múltiples propòsits per ALTERAR l'estructura d'una taula existent a MySQL.
Es pot utilitzar per a coses com ara: afegir / eliminar una columna, afegir / eliminar índexs o restriccions, i també es pot utilitzar fins i tot per canviar el nom d'una taula existent.
Tothom que aprengui MySQL ha de tenir una comprensió profunda de l’ordre de la taula ALTER, ja que s’utilitza principalment durant les fases de manteniment de les bases de dades on s’ha d’alterar l’esquema de taula existent.
Lectura recomanada
- Tutorial MySQL Create Table amb exemples
- MySQL Insereix a la taula: insereix sintaxi i exemples de sentències
- Tipus de dades MySQL | Quins són els diferents tipus de dades a MySQL
- Conceptes bàsics de la restricció de la clau estrangera de MySQL amb exemples
- Tutorial MySQL JOIN: Interior, exterior, creuat, esquerre, dret i autònom
- MySQL Create Database - Com crear una base de dades a MySQL
- Top 40 de les millors preguntes i respostes d’entrevistes de MySQL (preguntes del 2021)
- Taula Hash a C ++: Programes per implementar Hash Table i Hash Maps