mysql alter table how add column table mysql
Lær om MySQL ALTER tabellkommando for å legge til / slippe en kolonne, indeks, begrensning, endre tabellnavn, etc. med eksempler:
MySQL ALTER kommandoen brukes til å endre en eksisterende tabell ved å legge til en ny kolonne eller fjerne en eksisterende kolonne eller endre datatypen for kolonnen.
Enkelt sagt brukes ALTER-kommandoen til å endre strukturen til en eksisterende tabell ved å legge til / fjerne / oppdatere kolonner, gi nytt navn til tabeller etc.
Det er nesten umulig at alle kravene til et gitt skjema er tilgjengelig på forhånd, og det er derfor viktig at det bør være en måte å oppdatere tabellstrukturen etter behov.
Hva du vil lære:
MySQL ALTER TABLE
SYNTAX:
ALTER TABLE table_name [alter_option1, alter_option2...]
Her er tabellnavn navnet på tabellen som vi vil utføre endringshandlingen på. En eller flere alter_options kan spesifiseres sammen med ALTER TABLE kommando.
La oss se på forskjellige mest brukte alter_opsjoner levert av MySQL.
Eksempeldata og tabelloppsett
For å forstå forskjellige bruksområder for ALDER kommandoen, vil vi bruke to eksempeltabeller - Ansatt og avdeling har strukturen som nevnt nedenfor.
Vi legger også til noen dummy-data i begge tabellene.
Vi har ikke lagt til noen UTENLANDSKE Nøkkelbegrensninger blant disse tabellene. Vi vil lære å legge til dem ved hjelp av ALTER-kommandoen i eksemplene som vises i avsnittene nedenfor mens 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');
Ulike måter å bruke ALTER tabellkommando på
De MySQL ALTER Kommando kan brukes til flere ting som å legge til / slippe en kolonne, legge til / slippe indeks eller begrensning, og oppdatere selve tabellen. La oss se på forskjellige scenarier ved hjelp av eksempler.
LEGG TIL KOLONN
Med eksemplene ovenfor, la oss legge til en ny kolonne med navnet ‘department_id’ av typen INT i tabellen Ansatt.
ALTER TABLE employee ADD COLUMN department_id INT
DROPKOLONN
I likhet med å legge til en ny kolonne, MySQL ALTER kommandoen kan brukes til å slippe en eksisterende kolonne fra tabellen.
Prøv å fjerne kolonnen department_id som er lagt til ovenfor fra medarbeidertabellen.
ALTER TABLE employee DROP COLUMN department_id
Vær oppmerksom på at mens du slipper en KOLONN, trenger du bare å nevne kolonnenavnet og ikke datatypen.
For å validere om ALTER-kommandoen lyktes, kan du kjøre SHOW COLUMNS-kommandoen.
SHOW COLUMNS FROM employee;
Produksjon:
Felt | Type | Null | Nøkkel | Misligholde | Ekstra |
---|---|---|---|---|---|
Navn | varchar (100) | JA | NULL | ||
id | int | JA | NULL | ||
adresse | varchar (100) | JA | NULL |
Du kan se at det ikke er noen avdeling_id-kolonne i 'Ansatt' -tabellen nå.
Legg til / slipp begrensninger
La oss nå se hvordan ALTER kan brukes til å legge til en begrensning.
ALTER-kommandoen kan brukes til å legge til eller fjerne begrensninger for en eksisterende tabell. La oss se et eksempel på en UTENLANDSK Nøkkelbegrensning som må legges til mellom to tabeller.
Vi vil bruke ALTER-kommandoen for å legge til UTENLANDSK NØKKELKONTRAKT i tabellen Medarbeidere for tabellen med ansatt_avdeling.
Legg til en ny kolonne med navnet department_id i medarbeidertabellen.
ALTER TABLE employee ADD COLUMN department_id INT
Legg nå til UTENLANDSK Nøkkelbegrensning.
ALTER TABLE employee ADD FOREIGN KEY (department_id) REFERENCES employee_department(id)
For å validere denne begrensningen, kan vi bruke kommandoen VIS for å se tabelldefinisjonen.
SHOW CREATE TABLE employee;
Bord | Lag bord |
---|---|
ansatt | OPPRETT TABELL `ansatt` ( `navn` varchar (100) STANDARD NULL, `id` int STANDARD NULL, `adresse` varchar (100) STANDARD NULL, `department_id` int STANDARD NULL, Nøkkel `department_id` (` department_id`), KONSTRAINT `medarbeider_ibfk_1` UTENLANDSK NØKKEL (` department_id`) REFERANSER `medarbeider_avdeling '(` id') ) MOTOR = InnoDB STANDARD CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Du vil finne at det er en UTENLANDSK Nøkkelbegrensning opprettet i kolonnen department_id.
La oss nå se hvordan vi kan bruke ALTER-kommandoen til å fjerne den UTENLANDSKE Nøkkelbegrensningen som vi nettopp la til.
ALTER TABLE employee DROP CONSTRAINT employee_ibfk_1
Vær oppmerksom på at du må bruke navnet på begrensningen som ble opprettet. Så i SHOW-kommandoutputen ovenfor kan du se begrensningsnavnet som MySQL har opprettet for UTENLANDSK Nøkkelbegrensning er ‘ ansatt_ibfk_1 ’
Kjør SHOW-kommandoen for å se om begrensningen er fjernet som vist nedenfor:
SHOW CREATE TABLE employee;
Bord | Lag bord |
---|---|
ansatt | OPPRETT TABELL `ansatt` ( `navn` varchar (100) STANDARD NULL, `id` int STANDARD NULL, `adresse` varchar (100) STANDARD NULL, `department_id` int STANDARD NULL, KEY `department_id` (` department_id`) ) MOTOR = InnoDB STANDARD CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
Legg til / slipp indekser
MySQL ALTER tabellkommando lar deg også lage eller slippe INDEKSER mot en tabell.
Det kan være fire forskjellige typer indekser som kan legges til ved hjelp av ALTER TABLE-kommandoen.
# 1) Legg til HOVEDNØKKEL: Denne kommandoen legger til en PRIMARY Nøkkelindeks mot en gitt kolonne (eller kolonner)
I eksemplet nedenfor, bruk tabellen medarbeidere og legg til PRIMÆR NØKKEL-indeks i kolonnen ‘Id’.
ALTER TABLE employee ADD PRIMARY KEY (id);
# 2) Legg til UNIKT: Legger til eller oppretter unik indeks mot gitt kolonne (r)
Anta at vi hypotetisk bare vil ha unike navn i en tabell. Legg til en UNIK indeks i kolonnen ‘navn’ i tabellen medarbeidere som vist nedenfor.
ALTER TABLE employee ADD UNIQUE (name);
# 3) Legg til INDEKS: Legg til en vanlig indeks mot en hvilken som helst kolonne.
Legg til en normal indeks i ‘adresse’ -feltet i tabellen Ansatte.
ALTER TABLE employee ADD INDEX (name);
# 4) Legg til FULLTEXT-indeks: Dette er en spesiell type indeks som brukes til tekstsøkingsformål.
Vi vil legge til en FULLTEXT-indeks på kolonnen 'navn' i kolonnen Verdier i medarbeidertabellen.
ALTER TABLE employee ADD FULLTEXT(address);
For alle de ovennevnte 4 eksemplene kan vi kjøre VIS OPPRETT TABELL kommando for å få detaljer om indeksene som er opprettet.
SHOW CREATE TABLE employee;
Bord | Lag bord |
---|---|
ansatt | OPPRETT TABELL `ansatt` ( `navn` varchar (100) STANDARD NULL, `id` int IKKE NULL, `adresse` varchar (100) STANDARD NULL, `department_id` int STANDARD NULL, PRIMÆR NØKKEL (`id`), UNIK NØKKEL `navn` (` navn`), NØKKEL `name_2` (` navn`), FULLTEXT Nøkkel `adresse` (` adresse`) ) MOTOR = InnoDB STANDARD CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
I ovenstående utdata vil du observere at alle indeksene er opprettet i henhold til verdien i create_table-kolonnen.
I likhet med å lage indekser kan ALTER-kommandoen også brukes til å slippe eksisterende indekser fra tabellen.
Eksempel:
ALTER TABLE employee DROP INDEX address;
Ovennevnte kommando slipper FULLTEXT-indeksen som vi har lagt til for adressefeltet.
Legg merke til navnet 'adresse'. Dette skal samsvare med indeksnavnet i utdataene til VIS OPPRETT TABELL kommando.
Endre standardverdien for kolonnen
ALTER TABLE kommandoen kan også brukes til å SETTE / endre standardverdien for en eksisterende kolonne.
hvordan man skriver manuelle testsaker med et eksempel
La oss se på et eksempel der vi vil endre standardverdien til avdelingen_id til '1'. Med dette vil eventuelle nye innlegg i denne tabellen endre / sette verdien for avdelingen_id til 1
ALTER TABLE employee ALTER department_id SET DEFAULT 1
Legg til en ny post i medarbeidertabellen:
INSERT INTO `employee` (`id`,`name`,`address`) VALUES (11,'Saket Sharma','NB 23 Domlur')
Og la oss spørre avdelingen_id for denne posten og se hvilken verdi som blir satt.
SELECT department_id FROM employee where id=11 //Output department_id 1
Oppdater tabellnavn
MySQL ALTER tabellkommando kan også brukes til å oppdatere navnet på en eksisterende tabell. Noen ganger er det nødvendig å oppdatere skjemastrukturen, som kan innebære endring / oppdatering av tabellnavnene.
Eksempel - Vi vil gi nytt navn til tabellen `ansatt` til` Ansatt_detaljer`.
ALTER TABLE table_name RENAME TO new_table_name;
ofte stilte spørsmål
Sp # 1) Hvordan endrer jeg tabellstruktur i MySQL?
Svar: MySQL gir ALTER-kommandoen for å endre strukturen til en eksisterende tabell i MySQL. Du kan utføre forskjellige operasjoner med ALTER-kommandoen som,
- Legge til / slippe en kolonne
- Legge til / fjerne indeks eller begrensning
- Endre navn på et bord
Q # 2) Låser ALTER-kommandoen et bord?
Svar: Det kan avhenge av versjoner - med eldre versjoner av MySQL Låser en tabell under utførelsen av ALTER-setningen. Generelt vil låsingen skje, dvs. lesing og skriving under ALTER.
For eksempel - Å legge til en ny kolonne for en eksisterende tabell vil berøre alle radene i tabellen der kolonnen legges til, og når tabellen har antall poster i millioner, kan det ta litt tid å utføre ALTER-operasjonen. I dette tilfellet vil låsing som skjer på lese / skrive være kostbart ettersom databasen vil være nede og utilgjengelig.
Q # 3) Kan vi legge til mer enn en kolonne i ALTER-tabellen?
Svar: Ja, ALTER-kommandoen kan brukes til å legge til flere kolonner i en enkelt setning.
La oss se på et eksempel der vi har en tabell Medarbeider med kolonne-ID, navn og adresse, og antar at vi vil legge til to kolonner til - høyeste utdanning (type varchar) og telefonnummer (type varchar)
ALTER TABLE employee ADD highest_education VARCHAR(50), ADD phone_number VARCHAR(20);
La oss ta en titt på tabellinformasjonen
SHOW COLUMNS FROM employee;
Produksjon:
Felt | Type | Null | Nøkkel | Misligholde | Ekstra |
---|---|---|---|---|---|
Navn | varchar (100) | JA | FORENT | NULL | |
id | int | IKKE | PRI | NULL | |
adresse | varchar (100) | JA | NULL | ||
avdeling_id | int | JA | en | ||
Høyeste utdanning | varchar (50) | JA | NULL | ||
telefonnummer | varchar (20) | JA | NULL |
I utgangen over kan du se kolonnene, høyeste utdanning og telefonnummer har blitt lagt til.
Konklusjon
I denne opplæringen lærte vi om forskjellige bruksområder for MySQL ALTER Tabellkommando. ALTER er en viktig kommando, siden den kan brukes til flere formål for å endre strukturen til en eksisterende tabell i MySQL.
Den kan brukes til ting som - å legge til / fjerne en kolonne, legge til / slippe indekser eller begrensninger, og kan også brukes til å gi nytt navn til en eksisterende tabell.
Alle som lærer MySQL, bør ha en grundig forståelse av ALTER-tabellkommandoen, da den hovedsakelig brukes under vedlikeholdsfaser av databaser der eksisterende tabellskjema må endres.
Anbefalt lesing
- MySQL Lag tabellveiledning med eksempler
- MySQL Sett inn i tabellen - Sett inn uttalelsessyntaks og eksempler
- MySQL datatyper | Hva er forskjellige datatyper i MySQL
- Grunnleggende om MySQL UTENLANDSK Nøkkelbegrensning med eksempler
- MySQL JOIN Opplæring: indre, ytre, kryss, venstre, høyre og selv
- MySQL Create Database - Hvordan lage en database i MySQL
- Topp 40 beste MySQL intervjuspørsmål og svar (2021 spørsmål)
- Hash-tabell i C ++: Programmer for å implementere Hash-tabell og Hash-kart