Tábla módosítása SQL adatbázisban: ALTER TABLE utasítás példákkal (ADD, DROP COLUMN, ALTER/MODIFY COLUMN)

Ebben az SQL leckében bemutatjuk, hogy hogyan lehet módosítani már létező adatbázistáblákat az ALTER TABLE utasítással.

SQL alapok kezdőknek, SQL ismeretek kurzus borítókép

Tábla módosítása SQL adatbázisban: ALTER TABLE utasítás példákkal (ADD, DROP COLUMN, ALTER/MODIFY COLUMN)

Az előző leckében tisztáztuk, hogy hogyan lehet adatbázis táblákat létrehozni, de mi van, akkor ha valamit elrontottunk? Szerencsére nem kell az egész táblát kidobnunk a kukába és újat csinálnunk, mert lehetőségünk van már meglévő adatbázistáblák módosítására is. Ehhez az ALTER TABLE utasítással kell megismerkednünk.

Az ALTER TABLE utasítás

Az ALTER TABLE utasítással a már meglévő táblák oszlopait módosíthatjuk, sőt akár hozzá is adhatunk vagy törölhetünk oszlopokat, korlátozásokat.

Az ALTER TABLE utasítás esetében három műveletet különböztetünk meg:

  • ADD
  • DROP COLUMN
  • ALTER/MODIFY COLUMN

ALTER TABLE ADD

Az ALTER TABLE ADD utasításával oszlopokat, mezőket adhatunk hozzá már létező táblákhoz.

ALTER TABLE ADD szintaxis

Az ALTER TABLE után meg kell adni azt a táblát, amelyen a módosítást szeretnénk elvégezni, majd az ADD kulcsszó után az új, létrehozandó oszlop nevét, adattípusát és esetleges megkötéseit.

ALTER TABLE tábla
ADD oszlop adattípus [megkötések];
Code language: SQL (Structured Query Language) (sql)

Bár az előző leckében már szó volt az adattípusok és a kényszerfeltételekről, de azért ismételjük át még egyszer. (Akinek már a könyökén jön ki ez a téma, az természetesen átugorhatja.)

SQL adattípusok

A szintaktika felírásánál látszott, hogy az oszlopok deklarációjához meg kell adnunk az oszlop adattípusát is. Alább pár alapvető SQL adattípus kerül bemutatásra.

Szöveg adattípusok

Ezek az adattípusok szöveg (string) tárolására alkalmasak.

AdattípusLeírás
CHARRögzített hosszúságú karakterlánc.
VARCHARVáltozó hosszúságú karakterlánc.
TEXTSzöveget tárol.

Szám adattípusok

Olyan adattípusok, amely számok formájában tárolják az értékeket, legyen szó akár konkrét számról vagy logikai értékről.

AdattípusLeírás
BITBitérték típus.
TINYINTKisméretű egész szám tárolása.
BOOLLogikai értéket tárol.
INTKözepes méretű egész szám tárolására alkalmas.
FLOATLebegőpontos szám.
DOUBLENormál méretű lebegőpontos szám.
DECIMALFixpontos szám.

Dátum és idő adattípusok

Dátumok és időpontok tárolására alkalmas adattípusok.

AdattípusLeírás
DATEDátum. Formátum: év-hónap-nap (YYYY-MM-DD)
TIMESTAMPIdőbélyeg. Formátum: év-hónap-nap óra:perc:másodperc (YYYY-MM-DD hh:mm:ss)
TIMEIdő. Formátum: óra:perc:másodperc (hh:mm:ss)
YEARÉv. Formátum: év (YYYY)

>> Itt olvashatsz bővebben a MySQL adattípusairól. <<

SQL megkötések, korlátozások, kényszerfeltételek

A következő tisztázandó dolgot angolul constraints-nek nevezik, míg magyarul szokás megkötésnek, korlátozásnak és kényszerfeltételnek is nevezni. Leginkább az első és az utolsó elnevezés terjedt el.

A kényszerfeltételeket arra használjuk, hogy az egyes mezők értékeire vonatkozólag megkötéseket tudjunk meghatározni. Ezzel csökkenteni tudjuk az adatbázisba kerülő hibás adatok számát, illetve növelni azok pontosságát.

Alább találhatóak a leggyakrabban használt SQL korlátozások:

MegnevezésLeírás
NOT NULLA mező nem lehet NULL, azaz érték nélküli.
UNIQUEA mező összes értékének egyedinek kell lennie.
PRIMARY KEYElsődleges kulcs. Olyan mező, amely egyértelműen beazonosítja a rekordot.
FOREIGN KEYEgy másik tábla elsődleges kulcsára hivatkozhatunk vele.
CHECKEllenőrzi, hogy az érték megfelel-e egy speciális feltételnek.
DEFAULTHa nem adunk meg értéket, akkor beállít egy alapértelmezettet.
CREATE INDEXIndexeket hoz létre a táblában, amellyel gyorsíthatóak a lekérdezések.

>> Az SQL megszorításokról itt olvashatsz bővebben. <<

SQL ALTER TABLE ADD példa

Ebben a példában a „vasarlok” táblához hozzáadunk egy telefonszámot is, amelynek a típusa VARCHAR, a zárójelben lévő 15 a maximális hosszra utal.

SQL kód

ALTER TABLE vasarlok
ADD telefonszam VARCHAR(15);
Code language: SQL (Structured Query Language) (sql)

SQL ALTER TABLE DROP COLUMN

Az ALTER TABLE DROP COLUMN utasításával a tábla oszlopát, mezőjét törölhetjük, dobhatjuk el.

SQL ALTER TABLE DROP COLUMN szintaktika

Az ALTER TABLE kulcsszó után következik az a tábla, amelynek oszlopát törölni szeretnénk. A törlendő mező neve pedig a DROP COLUMN kulcsszó után következik.

ALTER TABLE tábla
DROP COLUMN oszlop;
Code language: SQL (Structured Query Language) (sql)

SQL ALTER TABLE DROP COLUMN példa

Az alábbi példában a „vasarlok” tábla „telefonszam” oszlopát dobjuk el, vagyis töröljük.

SQL kód

ALTER TABLE vasarlok
DROP COLUMN telefonszam;
Code language: SQL (Structured Query Language) (sql)

SQL ALTER TABLE ALTER/MODIFY COLUMN

Az ALTER TABLE ALTER COLUMN vagy MODIFY COLUMN utasításával a tábla oszlopára, mezőjére vonatkozó megkötéseket vagy adattípusokat módosíthatjuk.

Fontos, hogy ezek az utasítások adatbáziskezelőnként eltérhetnek, például SQL Server, MS Access esetében az ALTER COLUMN utasítást kell használnunk, míg MySQL és Oracle Database esetében a MODIFY COLUMN használatos.

SQL ALTER TABLE ALTER/MODIFY COLUMN szintaktika

Az ALTER TABLE kulcsszó után következik az a tábla, amelynek oszlopát törölni szeretnénk. A törlendő mező neve pedig a DROP COLUMN kulcsszó után következik.

ALTER TABLE tábla
ALTER COLUMN oszlop adattípus [megkötések];

//vagy

ALTER TABLE tábla
MODIFY COLUMN oszlop adattípus [megkötések];
Code language: SQL (Structured Query Language) (sql)

SQL ALTER TABLE ALTER/MODIFY COLUMN példa

Az alábbi példában a „vasarlok” tábla „lakhely” oszlopát módosítjuk, hogy maximum 30 karakter hosszú TEXT legyen. (VARCHAR volt.) Továbbá kiegészítettük egy olyan kényszerfeltétellel is, miszerint az oszlop nem tartalmazhat NULL értéket.

SQL kód (MySQL, Oracle Database)

ALTER TABLE vasarlok
MODIFY COLUMN lakhely VARCHAR(30) NOT NULL;
Code language: SQL (Structured Query Language) (sql)

SQL kód (SQL Server, MS Access)

ALTER TABLE vasarlok
ALTER COLUMN lakhely VARCHAR(30) NOT NULL;
Code language: SQL (Structured Query Language) (sql)

Ha hasznos volt számodra, akkor kérlek oszd meg másokkal is, hogy ezzel támogass minket!