mysql alter table how add column table mysql
Lær om MySQL ALTER tabelkommando for at tilføje / slippe en kolonne, indeks, begrænsning, ændre tabelnavn osv. Med eksempler:
MySQL ALTER kommando bruges til at ændre en eksisterende tabel ved at tilføje en ny kolonne eller fjerne en eksisterende kolonne eller ændre datatypen i kolonnen.
Simpelthen bruges ALTER-kommandoen til at ændre strukturen i en eksisterende tabel ved at tilføje / fjerne / opdatere kolonner, omdøbe tabeller osv.
Det er næsten umuligt, at alle kravene til et givet skema er tilgængelige på forhånd, hvorfor det er bydende nødvendigt, at der skal være en måde at opdatere bordstrukturen efter behov.
Hvad du vil lære:
MySQL ALTER TABEL
SYNTAX:
ALTER TABLE table_name (alter_option1, alter_option2...)
Her er tabelnavn navnet på den tabel, som vi vil udføre ændringshandlingen på. En eller flere alter_options kan specificeres sammen med ALTER TABEL kommando.
Lad os se på forskellige, mest anvendte alter_options leveret af MySQL.
Prøvedata og tabelopsætning
Med henblik på at forstå forskellige anvendelser af ALDER kommando, vi bruger 2 eksempeltabeller - Medarbejder og afdeling har strukturen som nævnt nedenfor.
Vi tilføjer også nogle dummy-data til begge tabeller.
Vi har ikke tilføjet nogen UDENLANDSKE KEY-begrænsninger blandt disse tabeller. Vi lærer at tilføje dem ved hjælp af ALTER-kommandoen i eksemplerne vist i nedenstående afsnit, som vi diskuterer.
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');
Forskellige måder at bruge ALTER tabelkommando på
Det MySQL ALTER Kommando kan bruges til flere ting som tilføj / slip en kolonne, tilføj / slip indeks eller begrænsning og opdatere selve tabellen. Lad os se på forskellige scenarier ved hjælp af eksempler.
TILFØJ KOLONNE
Med ovenstående eksempletabeller skal vi tilføje en ny kolonne med navnet 'department_id' af typen INT i tabellen Medarbejder.
ALTER TABLE employee ADD COLUMN department_id INT
DROP KOLONNE
Svarende til at tilføje en ny kolonne, MySQL ALTER kommando kan bruges til at slippe en eksisterende kolonne fra tabellen.
Prøv at fjerne den ovennævnte kolonne department_id fra medarbejdertabellen.
ALTER TABLE employee DROP COLUMN department_id
Bemærk, at mens du dropper en KOLONNE, skal du bare nævne kolonnenavnet og ikke dets datatype.
For at validere, hvis ALTER-kommandoen lykkedes, kan du køre kommandoen SHOW COLUMNS.
SHOW COLUMNS FROM employee;
Produktion:
Mark | Type | Nul | Nøgle | Standard | Ekstra |
---|---|---|---|---|---|
navn | varchar (100) | JA | NUL | ||
id | int | JA | NUL | ||
adresse | varchar (100) | JA | NUL |
Du kan se, at der ikke er nogen afdeling_id-kolonne i tabellen 'Medarbejder' nu.
Tilføj / slip begrænsninger
Lad os nu se, hvordan ALTER kan bruges til at tilføje en begrænsning.
ALTER-kommandoen kan bruges til at tilføje eller fjerne begrænsninger for en eksisterende tabel. Lad os se et eksempel på en UDENLANDSK KEY-begrænsning, der skal tilføjes mellem to tabeller.
Vi bruger ALTER-kommandoen til at tilføje UDENLANDSK KEY CONSTRAINT i tabellen Medarbejder til tabellen medarbejder_afdeling.
Tilføj en ny kolonne med navnet department_id i tabellen Medarbejder.
ALTER TABLE employee ADD COLUMN department_id INT
Tilføj nu den UDENLANDSKE KEY-begrænsning.
ALTER TABLE employee ADD FOREIGN KEY (department_id) REFERENCES employee_department(id)
For at validere denne begrænsning kan vi bruge kommandoen SHOW til at se tabeldefinitionen.
SHOW CREATE TABLE employee;
Bord | Opret tabel |
---|---|
medarbejder | OPRET TABEL `medarbejder` ( `navn` varchar (100) STANDARD NULL, `id` int STANDARD NULL, `adresse` varchar (100) STANDARD NULL, `department_id` int STANDARD NULL, Nøgle `department_id` (` department_id`), KONSTRAINT `medarbejder_ibfk_1` UDENLANDSK KEY (` department_id`) REFERENCER `medarbejder_afdeling` (` id`) ) MOTOR = InnoDB STANDARD CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Du finder ud af, at der er oprettet en UDENLANDSK KEY-begrænsning i kolonnen department_id.
Lad os nu se, hvordan vi kan bruge ALTER-kommandoen til at fjerne den UDENLANDSKE KEY-begrænsning, som vi lige har tilføjet.
ALTER TABLE employee DROP CONSTRAINT employee_ibfk_1
Bemærk, at du bliver nødt til at bruge navnet på den begrænsning, der blev oprettet. Så i ovenstående SHOW-kommandooutput kan du se det begrænsningsnavn, som MySQL har oprettet til UDENLANDSK KEY-begrænsning, er ' medarbejder_ibfk_1 '
Kør kommandoen SHOW for at se, om begrænsningen er fjernet som vist nedenfor:
SHOW CREATE TABLE employee;
Bord | Opret tabel |
---|---|
medarbejder | OPRET TABEL `medarbejder` ( `navn` varchar (100) STANDARD NULL, `id` int STANDARD NULL, `adresse` varchar (100) STANDARD NULL, `department_id` int STANDARD NULL, Nøgle `department_id` (` department_id`) ) MOTOR = InnoDB STANDARD CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Tilføj / slip indekser
MySQL ALTER tabelkommando giver dig også mulighed for at oprette eller slippe INDEKSER mod en tabel.
Der kan være fire forskellige typer indekser, der kan tilføjes ved hjælp af ALTER TABLE-kommandoen.
# 1) Tilføj PRIMÆR NØGLE: Denne kommando tilføjer et PRIMÆRT NØGLE-indeks mod en given kolonne (eller kolonner)
I nedenstående eksempel skal du bruge medarbejdertabellen og tilføje PRIMÆRT NØGLEindeks til kolonnen 'Id'.
ALTER TABLE employee ADD PRIMARY KEY (id);
# 2) Tilføj UNIK: Tilføjer eller opretter unikt indeks mod givne kolonner
Antag, at vi hypotetisk bare vil have unikke navne i en tabel. Tilføj et UNIKT indeks i kolonnen ‘navn’ i medarbejdertabellen som vist nedenfor.
ALTER TABLE employee ADD UNIQUE (name);
# 3) Tilføj INDEX: Tilføj et almindeligt indeks mod en hvilken som helst kolonne.
Tilføj et normalt indeks i feltet 'adresse' i tabellen Medarbejder.
ALTER TABLE employee ADD INDEX (name);
# 4) Tilføj FULLTEXT-indeks: Dette er en særlig type indeks, der bruges til tekstsøgningsformål.
Vi tilføjer et FULLTEXT-indeks på kolonneværdierne 'navn' i tabellen Medarbejder.
ALTER TABLE employee ADD FULLTEXT(address);
For alle de ovennævnte 4 eksempler kan vi køre VIS Opret TABEL kommando for at få detaljerne om de oprettede indekser.
SHOW CREATE TABLE employee;
Bord | Opret tabel |
---|---|
medarbejder | Opret TABEL `medarbejder` ( `navn` varchar (100) STANDARD NULL, `id` int IKKE NULL, `adresse` varchar (100) STANDARD NULL, `department_id` int STANDARD NULL, PRIMÆR NØGLE (`id`), UNIK KEY `navn` (` navn`), KEY `name_2` (` navn`), FULLTEXT KEY `adresse` (` adresse`) ) MOTOR = InnoDB STANDARD CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
I ovenstående output vil du bemærke, at alle indekserne er oprettet i henhold til værdien i kolonnen create_table.
Svarende til Oprettelse af indekser kan ALTER-kommandoen også bruges til at slippe eksisterende indekser fra tabellen.
Eksempel:
ALTER TABLE employee DROP INDEX address;
Ovenstående kommando FALDER FULLTEXT-indekset, som vi har tilføjet til adressefeltet.
Læg mærke til navnet 'adresse'. Dette skal matche indeksnavnet i output af VIS Opret bord kommando.
Skift kolonneens standardværdi
ALTER TABEL kommando kan også bruges til at SET / ændre standardværdien for en eksisterende kolonne.
Java webservices interview spørgsmål og svar til erfarne
Lad os se på et eksempel, hvor vi vil ændre standardværdien af kolonnen department_id til '1'. Med dette vil eventuelle nye indsatser i denne tabel ændre / indstille værdien for kolonnen department_id til 1
ALTER TABLE employee ALTER department_id SET DEFAULT 1
Tilføj en ny post til medarbejdertabellen:
INSERT INTO `employee` (`id`,`name`,`address`) VALUES (11,'Saket Sharma','NB 23 Domlur')
Og lad os nu spørge afdelingen_id for denne post og se, hvad der er værdien, der indstilles.
SELECT department_id FROM employee where id=11 //Output department_id 1
Opdater tabelnavn
MySQL ALTER tabelkommando kan også bruges til at opdatere navnet på en eksisterende tabel. Til tider er det nødvendigt at opdatere skemastrukturen, hvilket kan omfatte ændring / opdatering af tabelnavne.
Eksempel - Vi omdøber tabellen `medarbejder` til` Medarbejder_detaljer`.
ALTER TABLE table_name RENAME TO new_table_name;
Ofte stillede spørgsmål
Q # 1) Hvordan ændrer jeg tabelstruktur i MySQL?
Svar: MySQL giver ALTER-kommandoen til at ændre strukturen på en eksisterende tabel i MySQL. Du kan udføre forskellige operationer med ALTER-kommandoen som f.eks.
- Tilføjelse / slip af en kolonne
- Tilføjelse / fjernelse af indeks eller begrænsning
- Omdøbning af et bord
Q # 2) Låser ALTER-kommandoen et bord?
Svar: Det afhænger muligvis af versioner - med ældre versioner af MySQL Låsning af en tabel under udførelsen af ALTER-sætningen. Generelt ville låsen ske, dvs. enhver læsning og skrivning under ALTER.
For eksempel - Tilføjelse af en ny kolonne til en eksisterende tabel vil røre ved alle rækkerne i tabellen, hvor kolonnen tilføjes, og når tabellen har et antal poster i millioner, kan ALTER-operationen tage noget tid at udføre. I dette tilfælde vil den Låsning, der sker på læser / skriver, være dyr, da databasen ville være nede og utilgængelig.
Q # 3) Kan vi tilføje mere end en kolonne i ALTER-tabellen?
Svar: Ja, ALTER-kommandoen kan bruges til at tilføje flere kolonner i en enkelt sætning.
Lad os se på et eksempel, hvor vi har en tabel Medarbejder med kolonne-id, navn og adresse og formoder, at vi vil tilføje 2 kolonner med navnet - højeste_uddannelse (type varchar) og telefonnummer (type varchar)
ALTER TABLE employee ADD highest_education VARCHAR(50), ADD phone_number VARCHAR(20);
Lad os se på tabeloplysningerne
SHOW COLUMNS FROM employee;
Produktion:
Mark | Type | Nul | Nøgle | Standard | Ekstra |
---|---|---|---|---|---|
navn | varchar (100) | JA | FORENET | NUL | |
id | int | LADE VÆRE MED | PRI | NUL | |
adresse | varchar (100) | JA | NUL | ||
afdeling_id | int | JA | 1 | ||
højeste uddannelse | varchar (50) | JA | NUL | ||
telefonnummer | varchar (20) | JA | NUL |
I outputen ovenfor kan du se kolonnerne, højeste uddannelse og telefonnummer er tilføjet.
Konklusion
I denne vejledning lærte vi om forskellige anvendelser af MySQL ALTER Tabelkommando. ALTER er en vigtig kommando, da den kan bruges til flere formål til ALTER strukturen i en eksisterende tabel i MySQL.
Det kan bruges til ting som - tilføje / fjerne en kolonne, tilføje / slippe indekser eller begrænsninger og kan også bruges endda til at omdøbe en eksisterende tabel.
Enhver, der lærer MySQL, skal have en dybdegående forståelse af ALTER-tabelkommandoen, da den mest bruges i vedligeholdelsesfaser af databaser, hvor det er nødvendigt at ændre eksisterende tabelskema.
Anbefalet læsning
- MySQL Opret tabelvejledning med eksempler
- MySQL indsæt i tabel - Indsæt erklæringens syntaks og eksempler
- MySQL datatyper | Hvad er forskellige datatyper i MySQL
- Grundlæggende om MySQL UDENLANDSK KEY-begrænsning med eksempler
- MySQL JOIN Tutorial: Indre, ydre, kryds, venstre, højre og selv
- MySQL Opret database - Sådan oprettes en database i MySQL
- Top 40 bedste MySQL-interviewspørgsmål og -svar (2021 spørgsmål)
- Hash-tabel i C ++: Programmer til implementering af Hash-tabel og Hash-kort