Az adatbázis-kezelés alapjai (SQL alapok)

Ebben a cikkben összefoglaljuk az adatbázis-kezelés alapjait, bemutatjuk, hogy mit jelent az adatbázis, az SQL, megismerkedünk alapfogalmakkal, bemutatjuk a környezet kialakítását, szó lesz a MySQL adattípusairól, a kényszerfeltételekről, a záradékokról, illetve az adatbázisok, táblák, rekordok létrehozásáról, törléséről.

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

Az adatbázis-kezelés alapjai (SQL alapok)

Ebben a cikkben összefoglaljuk az adatbázis-kezelés alapjait, bemutatjuk, hogy mit jelent az adatbázis, az SQL, megismerkedünk alapfogalmakkal, bemutatjuk a környezet kialakítását, szó lesz a MySQL adattípusairól, a kényszerfeltételekről, a záradékokról, illetve az adatbázisok, táblák, rekordok létrehozásáról, törléséről.

Ebben a bejegyzésben megpróbáljuk a legalapvetőbb információkat átadni, de minden témáról írtunk egy sokkal részletesebb cikket is, így ha valakit valamelyik téma mélyebben érdekel, akkor a bekezdések alatt található linkek segítségével elnavigálhat a teljes cikkhez, amelyben az adott téma példákkal kiegészítve, sokkal részletesebben ki van fejtve.

Mi az az adatbázis?

Az adatbázis olyan számítógépen tárolt és rendezett adathalmaz, melynek elemei összetartoznak. Az adatbázisok célja, hogy az adatokat hosszútávon, tartósan lehessen tárolni, illetve, hogy a tartalma gyorsan kereshető legyen.

Adatbázis elméleti példa

Egy közösségi oldalon profilokat lehet létrehozni, tudunk tartalmakat feltölteni, ismerősöket keresni. A profilokhoz tartozó adatokat, azaz például a felhasználónevet, a jelszót, az email címet, a születési dátumot adatbázisban szokás tárolni.

>> Ebben a cikkben megismerkedhetsz a következőkkel is: adatbázis, relációs adatbázis, adatbázis-kezelés, SQL <<

Adatbázis alapfogalmak

Most, hogy már tudjuk, hogy mi az az SQL, nézzünk meg pár alapvető relációs adatbázisokhoz kapcsolódó fogalmat.

Egyed

Egyednek nevezzük azt, aminek az adatait tároljuk az adatbázisban.

Például a közösségi oldalas példánál egy profil.

Attribútum (tulajdonság)

Az egyed egy jellemzője.

Az előző példánál maradva egy profil egy adata, például a vezetéknév, vagy telefonszám.

Tábla

A logikailag összetartozó adatokat egy táblában tároljuk.

Például a közösségi oldalas példánál maradva egy táblában tároljuk a regisztrált felhasználókat.

Rekord

Rekordnak nevezzük az adatbázis egy sorát.

Azaz, ha van egy adatbázisunk, amelyben személyek adatait tároljuk (például név és kor), akkor minden felvitt személy külön rekordnak tekinthető.

Mező

Az adatbázis egy oszlopa, azaz egy egyed attribútuma.

Például az előző fogalomnál említett példa esetében külön mezőnek tekinthető a név és a kor is. Gyakran csak oszlopként hivatkozunk rá.

>> Az alapfogalmakról ebben a leckében értekeztünk <<

Mit jelent az SQL?

Az SQL (ami az angol Structured Query Language szót jelöli) egy relációsadatbázis-kezelő lekérdezési nyelv. Bár nem tekintjük programozási nyelvnek, de mégis hasonlóan kell elképzelni, itt is vannak utasítások, amelyek segítségével műveleteket végezhetünk. Létrehozhatunk adatbázisokat, adatokat adhatunk az adatbázishoz, törölhetünk belőle, módosíthatjuk az egyes adatokat, lekérdezhetjük azokat, vagy rendezhetjük.

Környezet kialakítása

A XAMPP egy platformfüggetlen webszerver-szoftvercsomag, amely az alábbi eszközöket tartalmazza:

  • Apache webszerver
  • MariaDB (MySQL) adatbáziskezelő
  • PHP értelmező
  • FileZilla FTP-kliens


A XAMPP egy integrált rendszer, melynek óriási előnye, hogy egyetlen egy csomagban tartalmazza az összes webes alkalmazások készítéséhez szükséges eszközt, így nem kell egyesével letöltenünk őket az internetről, illetve telepítenünk. Ha valaki nem annyira járatos a programok telepítésében, akkor annak érdemes a XAMPP-ot választania, hiszen ennek az az előnye, hogy minden szoftver egyetlen egy telepítőbe van csomagolva, így csak egyetlen egy szoftvert kell letölteni és telepíteni.

>> A XAMPP részletes telepítési útmutatóját itt olvashatod <<

SQL nyelvi elemek csoportosítása

Az SQL utasításait négy osztályba rendezhetjük, minden osztálynak megvannak a maga feladatai, illetve utasításai.

  • Adatdefiníciós nyelv (Data Definition Language – DDL)
    • adatbázisok sémájának definiálására használják
    • jellemző utasításai: CREATE, ALTER, DROP
  • Adatlekérdező nyelv (Data Query Language – DQL)
    • adatok lekérdezéséhez, lehívásához használják
    • jellemző utasításai: SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY
  • Adatmanipulációs nyelv (Data Manipulation Language – DML)
    • adatok létrehozására, módosítására, törlésére használják
    • jellemző utasításai: INSERT, UPDATE, DELETE
  • Adatelérést Vezérlő Nyelv (Data Control Language – DCL)
    • jogosultságok adása
    • jellemző utasítások: GRANT, REVOKE


>> A nyelvi elemek csoportosításáról itt olvashatsz részletesebben <<

SQL adattípusok

Egy adatbázis-kezelő esetében az adattípusok határozzák meg azt, hogy egy oszlop milyen értéket vehet fel. Az SQL elvei szerint, egy oszlopnak (mezőnek) minden esetben meg kell határozni az adattípusát már a tábla létrehozásakor, ez mutatja meg, hogy az egyes oszlopokban milyen adatokat, értékeket lehet tárolni.

A MySQL-ben három főkategóriába sorolhatóak az adattípusok:

Szöveg adattípusok

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

AdattípusLeírás
BITBitérték típus.
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

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 megszorítások

Az SQL megszorítások célja elkerülni azt, hogy a felhasználó helytelen rekordokat vigyen fel az adatbázisba. Az alábbi korlátozások az adatbázistábla oszlopaira, azaz mezőire vonatkozó szabályok.

NévLeírás
NOT NULLaz oszlop értéke nem lehet NULL (üres)
UNIQUEaz oszlop összes értékének egyedinek kell lenni
PRIMARY KEYa NOT NULL és a UNIQUE kombinációja, minden rekordnak egyértelműen beazonosíthatónak kell lennie
FOREIGN KEYegyértelműen beazonosíthatónak kell lennie egy rekordnak egy másik táblában
CHECKaz oszlop értékének meg kell felelnie a meghatározott feltételnek
DEFAULTegy alapértelmezett értéket állít be az oszlopnak, ha a felhasználó nem adott volna meg értéket

>> Az összes megszorítást bemutatjuk ebben a cikkben példákon keresztül <<

Elsődleges kulcs

A PRIMARY KEY megszorítást magyarul elsődleges kulcsnak nevezzük. Az elsődleges kulcs egy olyan érték, amely alapján minden rekord egyértelműen és összetéveszthetetlenül beazonosítható. Ebből kifolyólag az elsődleges kulcs egy teljesen egyedi érték, ez az érték nem tartalmazhat NULL-t. Egy táblának csak egyetlen egy elsődleges kulcsa lehet, amely állhat egy vagy több oszlopból is. Ha egy oszlopból áll, akkor egyszerű kulcsnak, ha több oszlopból, akkor összetett kulcsnak nevezzük.

Egyszerű elsődleges kulcs szintaxisa

CREATE TABLE tábla (
    oszlop adattípus NOT NULL,
    PRIMARY KEY (oszlop)
);
Code language: PHP (php)

>> Példákat, illetve részletesebb leírásokat itt találsz az elsődleges kulcsról <<

Idegen kulcs

Az idegen kulcsot magyarul szokás másodlagos kulcsnak is nevezni, míg angolul FOREIGN KEY-ként hivatkozunk rá. A másodlagos kulcs egy olyan oszlop vagy több oszlop, amely kapcsolatot biztosít két tábla adatai között. Az idegen kulcs egy olyan azonosító, amellyel egy másik tábla elsődleges kulcsára hivatkozhatunk. Leegyszerűsítve azt mondhatjuk, hogy az idegen kulcs egy másik tábla elsődleges kulcsa.

Idegen kulcs szintaxisa

CREATE TABLE tábla (
    oszlop adattípus,
    FOREIGN KEY (oszlop) REFERENCES másikTábla(elsődlegesKulcs)
);

>> Az idegen kulcsról itt olvashatsz bővebben + példák <<

Adatbázis létrehozása

Adatbázis létrehozásához a CREATE DATABASE utasítást kell használnunk.

SQL CREATE DATABASE szintaxis

CREATE DATABASE adatbázis;

>> Az adatbázis létrehozásáról itt olvashatsz hosszabban <<

Adatbázis törlése

A DROP DATABASE utasítással törölhetjük, vagy ahogy az angol kulcsszó is mutatja, dobhatjuk el a már használni nem kívánt adatbázisokat. Az adatbázis eldobásával az adatbázisban tárolt táblák, adatok, rekordok is eldobásra, törlésre kerülnek.

SQL DROP DATABASE szintaxis

DROP DATABASE adatbázis;

>> DROP TABLE példák <<

Tábla létrehozása

A CREATE TABLE utasítással egy új táblát hozhatunk létre az adatbázisban. A létrehozott táblában adatokat tárolhatunk. Ezeken a tárolt adatokon végezhetünk később lekérdezéseket.

SQL CREATE TABLE szintaktika

<code>CREATE TABLE táblaNév (
    oszlopNév1 adattípus [megkötések],
    oszlopNév2 adattípus [megkötések],
    ...
);</code>
Code language: SQL (Structured Query Language) (sql)

>> A CREATE TABLE utasításhoz itt találhatsz példákat <<

Tábla törlése

A DROP TABLE utasítást arra használjuk, hogy már létező adatbázistáblákat töröljünk. Az utasítással mindenképp körültekintően kell bánni, hiszen egy adatbázistábla eldobásával, a tábla összes rekordja, adata törlődik.

SQL DROP TABLE szintaxis

DROP TABLE tábla;

>> A DROP TABLE utasításról itt olvashatsz bővebben <<

Rekord hozzáadása

Az INSERT INTO utasítással új sorokat, rekordokat adhatunk hozzá egy adatbázistáblához.

Az INSERT INTO utasítást kétféleképpen lehet használni, a használat módjától függően különböző szintaktika érvényesül. Az első esetként felírt szintaxist akkor használjuk, ha a megadott adatok, értékek abban a sorrend követik egymást, ahogy az az adatbázistábla szerkezetében megvannak határozva. A sorrendiségből következik, hogy a felvitt értékek számának meg kell egyeznie az adatbázis táblájának oszlopszámával.

<code>INSERT INTO tábla
VALUES (érték1, érték2 ...);</code>
Code language: SQL (Structured Query Language) (sql)

Azaz, ha az INSERT INTO után megadott tábla öt oszlopot, mezőt tartalmaz, akkor a VALUES után lévő zárójelbe öt értéket kell felsorolnunk. Nagyon fontos, hogy az adattípusok megfeleljenek, azaz, ha a tábla második oszlopa egy számtípus, akkor a VALUES utáni zárójelben lévő második érték nem lehet szöveg típusú.

A második szintaxis pont azokban az esetekben lehet hasznos, amikor nem szeretnénk minden oszlop értékét megadni. Ebben az esetben az INSERT INTO és a tábla neve után meg kell adnunk azokat az oszlopokat, amelyeket adatokkal szeretnénk feltölteni.

INSERT INTO tábla (oszlop1, oszlop2 ...)
VALUES (érték1, érték2 ...);

>> SQL rekordok hozzáadása, példákkal <<

Rekord törlése

Az SQL DELETE utasításával adatbázistáblák rekordjait tudjuk törölni. A törlendő rekordokat a WHERE feltétellel kell meghatározni. Ebben az esetben csak azok a rekordok fognak törlődni, amelyek esetében teljesül a WHERE feltételben meghatározott kitétel.

<code>DELETE FROM tábla
WHERE feltétel;</code>
Code language: SQL (Structured Query Language) (sql)

Az alábbi szintaxist használva a tábla minden rekordja törlődik.

DELETE FROM tábla;

>> A rekordok törléséről itt találsz több információt <<

SQL SELECT és FROM utasítások

Az SQL SELECT utasítását arra használjuk, hogy adatokat kérdezzünk le az adatbázisból. Visszatérési értéke egy vagy több rekord, attól függően, hogy hány rekord felel meg a lekérdezésnek. Ezt a visszatérési értéket eredményhalmaznak nevezzük.

A FROM utasítást arra használjuk, hogy meghatározzuk vele, hogy mely táblából szeretnénk adatokat lekérdezni. A SELECT után meghatározott oszlopok értékeit a FROM után definiált táblából szedi.

<code>SELECT oszlop(ok)
FROM tábla;</code>
Code language: SQL (Structured Query Language) (sql)

>> A SELECT és a FROM itt kerül részletes bemutatásra, példákkal szemléltetve <<

SQL WHERE záradék

Az SQL WHERE utasítását arra használjuk, hogy a lekérdezést szűrni tudjuk, a lekérdezés eredményeként csak azok a rekordok kerülnek megjelenítésre, amelyek eleget tesznek a WHERE után meghatározott feltételeknek.

SQL WHERE szintaktika

SELECT oszlop(ok)
FROM tábla
WHERE feltétel(ek);

>> Az SQL WHERE záradékról itt találsz még több infót és példát <<

SQL operátorok

A WHERE záradék esetében különböző operátorok is használhatók, ezekkel a feltételeket lehet specifikálni, például megadhatjuk, hogy az egyik mezőnek az értékének nagyobbnak kell lennie egy konkrét értéknél, vagy szimplán két feltétel közötti viszonyt írhatjuk le.

De előtte soroljuk fel tételesen az SQL operátorait:

  • egyenlő operátor
  • nagyobb operátor
  • kisebb operátor
  • nagyobb vagy egyenlő operátor
  • kisebb vagy egyenlő operátor
  • nem egyenlő (NOT) operátor
  • AND operátor
  • OR operátor
  • BETWEEN operátor
  • LIKE operátor
  • IN operátor

>> Az SQL operátorokról itt olvashatsz bővebben (+ példák) <<

SQL ORDER BY utasítás

Az SQL ORDER BY záradék segítségével a lekérdezések eredményét, azaz a kapott eredményhalmazt lehet rendezni. A rendezés lehet növekvő vagy csökkenő. Alapértelmezés szerint, azaz, ha nem adunk meg módosítót, akkor a növekvő (ASC) rendezés kerül végrehajtásra. Ha csökkenő sorrendbe szeretnénk rendezni, akkor a DESC módosítót kell megadnunk.

SQL ORDER BY módosítók:

  • ASC (növekvő rendezés, alapértelmezett, nem kötelező megadni)
  • DESC (csökkenő rendezés)

SQL ORDER BY szintaktikája

SELECT oszlop(ok)
FROM tábla
WHERE feltétel
ORDER BY oszlop(ok) [ASC | DESC]
Code language: CSS (css)

>> ORDER BY utasítás bemutatása példákon keresztül <<

SQL GROUP BY záradék

Az SQL GROUP BY utasítását arra használjuk, hogy összegezzük vagy csoportosítsuk az azonos értékű oszlopok rekordjait.

SQL GROUP BY szintaktikája

SELECT oszlop(ok)
FROM tábla
WHERE feltétel
GROUP BY oszlop(ok)
ORDER BY oszlop(ok);

>> GROUP BY záradék bemutatása példákkal <<

SQL JOIN, azaz táblák összekapcsolása

Egy adatbázisban általában nem csak egy táblát tárolunk, hanem többet is. Az átláthatóság érdekében célszerű az adatokat több táblába rendezni.

Például egy webshop esetében érdemes külön adatbázis táblát létrehozni a vásárlók és a vásárlások számára. Fölösleges egyetlen egy táblában tárolni a vásárló nevét és a vásárlás részleteit, például a rendelés azonosítót és a rendelt termékeket. Miért? Mert, ha egy vásárló többször vásárol, akkor a személyes adatai (például név, telefonszám, cím) többször szerepelni az adatbázisban. Ezt nevezzük redundanciának.

Ha készítünk egy külön táblát a vásárlóknak, amelyben az adataikat tároljuk és egy külön táblát a vásárlásoknak, akkor a vásárlást tartalmazó rekordban csak a vásárlóra kell hivatkozni, azaz nem kell minden adatát újból felvinni, mert a vásárló tábla már tartalmazza azt.

Az összekapcsolással (angolul JOIN) két vagy több táblát tudunk összekötni egy összefüggő mező alapján, azaz két különböző tábla rekordjait tudjuk egybefűzve megjeleníteni.

Az összekapcsolásoknak négy típusát különböztetjük meg:

  • (INNER) JOIN
  • LEFT (OUTER) JOIN
  • RIGHT (OUTER) JOIN
  • FULL OUTER JOIN

Példa táblák összekapcsolására: A webáruházas példánál maradva legyen egy “vasarlok” és egy “vasarlas” táblánk. A “vasarlok” táblában tároljuk a vásárlók adatait, minden vásárlónak megadtunk egy egyedi azonosítót (ID), amely alapján egyértelműen beazonosítható. A “vasarlasok” táblában van egy a vásárlást azonosító ID és egy a vásárlót azonosító ID. A két tábla között a kapcsolódási pont a “vasarlok” tábla ID-ja és a “vasarlasok” tábla vasarloID-ja.

Összekapcsolások közötti különbségek: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN

>> A 4 JOIN részletes részletes leírását, példákkal együtt itt találod <<

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