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ípus | Leírás |
---|---|
CHAR | Rögzített hosszúságú karakterlánc. |
VARCHAR | Változó hosszúságú karakterlánc. |
TEXT | Szö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ípus | Leírás |
---|---|
BIT | Bitérték típus. |
TINYINT | Kisméretű egész szám tárolása. |
BOOL | Logikai értéket tárol. |
INT | Közepes méretű egész szám tárolására alkalmas. |
FLOAT | Lebegőpontos szám. |
DOUBLE | Normál méretű lebegőpontos szám. |
DECIMAL | Fixpontos szám. |
Dátum és idő adattípusok
Dátumok és időpontok tárolására alkalmas adattípusok.
Adattípus | Leírás |
---|---|
DATE | Dátum. Formátum: év-hónap-nap (YYYY-MM-DD) |
TIMESTAMP | Időbélyeg. Formátum: év-hónap-nap óra:perc:másodperc (YYYY-MM-DD hh:mm:ss) |
TIME | Idő. 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és | Leírás |
---|---|
NOT NULL | A mező nem lehet NULL, azaz érték nélküli. |
UNIQUE | A mező összes értékének egyedinek kell lennie. |
PRIMARY KEY | Elsődleges kulcs. Olyan mező, amely egyértelműen beazonosítja a rekordot. |
FOREIGN KEY | Egy másik tábla elsődleges kulcsára hivatkozhatunk vele. |
CHECK | Ellenőrzi, hogy az érték megfelel-e egy speciális feltételnek. |
DEFAULT | Ha nem adunk meg értéket, akkor beállít egy alapértelmezettet. |
CREATE INDEX | Indexeket 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)