MySQL – DDL, adattípusok, megszorítások és DML

1. Az adatbázis-kezelés alapjai

Az adatbázisban az adatokat táblákban tároljuk.

Egy tábla:

Példa:

id nev eletkor email
1 Kovács Anna 18 anna@example.com
2 Nagy Péter 21 peter@example.com
3 Kiss Júlia 19 julia@example.com

Ebben az esetben:


2. DDL – Data Definition Language

A DDL (Data Definition Language) az adatbázis szerkezetének létrehozására és módosítására szolgál.

A legfontosabb DDL parancsok:

Parancs Jelentése
CREATE létrehozás
ALTER módosítás
DROP törlés
TRUNCATE a tábla összes rekordjának törlése

Adatbázis létrehozása

CREATE DATABASE iskola;

Az adatbázis használatának kiválasztása:

USE iskola;

3. Tábla létrehozása

Általános forma:

CREATE TABLE tabla_neve ( oszlop1 adattipus, oszlop2 adattipus, oszlop3 adattipus );

Példa:

CREATE TABLE diak ( id INT, nev VARCHAR(100), eletkor INT, email VARCHAR(150) );

4. Adattípusok

Az adattípus meghatározza, hogy egy oszlopban milyen adatokat tárolhatunk.

4.1. Egész számok

A leggyakrabban használt típus:

INT

Például:

eletkor INT

Lehetséges értékek például:

12 18 25 100

További egész szám típusok is léteznek, például:

TINYINT SMALLINT MEDIUMINT INT BIGINT

4.2. Tört számok

Például:

DECIMAL(5,2)

A zárójelben:

Példa:

ar DECIMAL(8,2)

Tárolható például:

1250.50 99999.99

Árak esetén a DECIMAL használata ajánlott.


4.3. Szöveg

VARCHAR

Változó hosszúságú szöveg:

nev VARCHAR(100)

A 100 a maximális karakterszám.

Például:

Kovács Anna Nagy Péter

CHAR

Fix hosszúságú szöveg:

kod CHAR(5)

Például öt karakterből álló kódokhoz használható.


4.4. Dátum és idő

DATE

Csak dátum:

szuldatum DATE

Formátuma:

YYYY-MM-DD

Például:

2007-04-15

DATETIME

Dátum és idő:

letrehozva DATETIME

Például:

2026-09-07 08:30:00

4.5. Logikai érték

A MySQL-ben használható:

BOOLEAN

A gyakorlatban ez a TINYINT(1) típushoz kapcsolódik.

Például:

aktiv BOOLEAN

Lehetséges érték:

TRUE FALSE

5. Megszorítások – Constraints

A megszorítások szabályokat határoznak meg az adatokra.

A legfontosabbak:


6. PRIMARY KEY

Az elsődleges kulcs egyértelműen azonosítja a tábla rekordjait.

Példa:

id INT PRIMARY KEY

Az elsődleges kulcs:

Példa:

CREATE TABLE diak ( id INT PRIMARY KEY, nev VARCHAR(100), eletkor INT );

Helyes:

id nev
1 Anna
2 Péter
3 Júlia

Helytelen lenne:

id nev
1 Anna
1 Péter

Mert az id = 1 már foglalt.


7. AUTO_INCREMENT

Gyakran az elsődleges kulcs értékét automatikusan szeretnénk létrehozni.

id INT PRIMARY KEY AUTO_INCREMENT

Példa:

CREATE TABLE diak ( id INT PRIMARY KEY AUTO_INCREMENT, nev VARCHAR(100), eletkor INT );

Ha ezt írjuk:

INSERT INTO diak (nev, eletkor) VALUES ('Kovács Anna', 18);

akkor az id értékét a MySQL automatikusan létrehozza.


8. NOT NULL

Azt jelenti, hogy az oszlop nem maradhat üresen (NULL).

nev VARCHAR(100) NOT NULL

Példa:

CREATE TABLE diak ( id INT PRIMARY KEY AUTO_INCREMENT, nev VARCHAR(100) NOT NULL, eletkor INT );

Ebben a táblában a nev megadása kötelező.


9. UNIQUE

A UNIQUE biztosítja, hogy egy érték csak egyszer szerepelhessen.

Példa:

email VARCHAR(150) UNIQUE

Így két tanuló nem használhatja ugyanazt az e-mail címet.

CREATE TABLE diak ( id INT PRIMARY KEY AUTO_INCREMENT, nev VARCHAR(100) NOT NULL, email VARCHAR(150) UNIQUE );

10. DEFAULT

A DEFAULT alapértelmezett értéket ad.

Például:

aktiv BOOLEAN DEFAULT TRUE

Ha beszúráskor nem adunk meg értéket, akkor a MySQL TRUE értéket használ.

Példa:

CREATE TABLE felhasznalo ( id INT PRIMARY KEY AUTO_INCREMENT, nev VARCHAR(100) NOT NULL, aktiv BOOLEAN DEFAULT TRUE );

11. CHECK

A CHECK segítségével feltételt adhatunk meg.

Példa:

eletkor INT CHECK (eletkor >= 0)

Ez megakadályozza, hogy negatív életkort adjunk meg.

Másik példa:

jegy INT CHECK (jegy BETWEEN 1 AND 5)

Így csak 1 és 5 közötti osztályzat adható meg.


12. FOREIGN KEY

A FOREIGN KEY (idegen kulcs) két tábla közötti kapcsolat létrehozására szolgál.

Például van egy osztaly tábla:

CREATE TABLE osztaly ( id INT PRIMARY KEY AUTO_INCREMENT, nev VARCHAR(50) NOT NULL );

A diák táblában hivatkozhatunk az osztályra:

CREATE TABLE diak ( id INT PRIMARY KEY AUTO_INCREMENT, nev VARCHAR(100) NOT NULL, osztaly_id INT, FOREIGN KEY (osztaly_id) REFERENCES osztaly(id) );

Az osztaly_id az osztaly tábla id mezőjére hivatkozik.


13. Összetett tábla létrehozása

Az eddigieket egy táblában is használhatjuk:

CREATE TABLE diak ( id INT PRIMARY KEY AUTO_INCREMENT, nev VARCHAR(100) NOT NULL, email VARCHAR(150) UNIQUE, eletkor INT CHECK (eletkor >= 0), atlag DECIMAL(3,2) CHECK (atlag BETWEEN 1.00 AND 5.00), aktiv BOOLEAN DEFAULT TRUE, szuletesi_datum DATE );

14. ALTER TABLE

Az ALTER TABLE segítségével egy már létező tábla szerkezetét módosíthatjuk.

Új oszlop hozzáadása

ALTER TABLE diak ADD telefon VARCHAR(20);

Oszlop törlése

ALTER TABLE diak DROP COLUMN telefon;

Oszlop módosítása

ALTER TABLE diak MODIFY nev VARCHAR(150) NOT NULL;

15. DROP TABLE

A tábla teljes törlése:

DROP TABLE diak;

Figyelem!

A tábla szerkezete és adatai is törlődnek.


16. TRUNCATE TABLE

A tábla összes rekordjának törlése:

TRUNCATE TABLE diak;

A tábla szerkezete megmarad, de az adatok törlődnek.

DROP és TRUNCATE különbsége

DROP TABLE → a tábla is megszűnik TRUNCATE TABLE → a tábla megmarad, az adatok törlődnek

17. DML – Data Manipulation Language

A DML az adatok kezelésére szolgál.

Legfontosabb parancsai:

A SELECT az adatok lekérdezésére szolgál, és gyakran külön DQL (Data Query Language) kategóriába sorolják.


18. INSERT – rekord beszúrása

Egy rekord beszúrása:

INSERT INTO diak (nev, eletkor) VALUES ('Kovács Anna', 18);

Több rekord beszúrása:

INSERT INTO diak (nev, eletkor) VALUES ('Kovács Anna', 18), ('Nagy Péter', 19), ('Kiss Júlia', 17);

19. SELECT – adatok lekérdezése

Az összes oszlop:

SELECT * FROM diak;

Csak bizonyos oszlopok:

SELECT nev, eletkor FROM diak;

Feltétellel:

SELECT * FROM diak WHERE eletkor >= 18;

20. UPDATE – adatok módosítása

Például Anna életkorának módosítása:

UPDATE diak SET eletkor = 19 WHERE nev = 'Kovács Anna';

Nagyon fontos: az UPDATE általában WHERE feltétellel használatos.

Ha ezt írjuk:

UPDATE diak SET eletkor = 19;

akkor minden rekord életkora 19 lesz.


21. DELETE – rekord törlése

Egy rekord törlése:

DELETE FROM diak WHERE id = 3;

Figyelem!

A következő parancs:

DELETE FROM diak;

a tábla összes rekordját törli.

A tábla szerkezete azonban megmarad.


22. DDL és DML összehasonlítása

DDL DML
Adatbázis szerkezetét kezeli Adatokat kezel
CREATE INSERT
ALTER UPDATE
DROP DELETE
TRUNCATE

Egyszerűen:

DDL → milyen legyen az adatbázis szerkezete?

DML → milyen adatok legyenek benne?


23. Gyakorlófeladatok

1. feladat – adattípusok

Válaszd ki a megfelelő adattípust!

a) Tanuló neve
b) Tanuló életkora
c) Egy termék ára, pl. 12999,90 Ft
d) Születési dátum
e) Egy felhasználó aktív-e
f) Hosszabb e-mail cím


24. 2. feladat – tábla létrehozása

Hozz létre egy tanulo nevű táblát az alábbi mezőkkel:


25. 3. feladat – megszorítások

Egészítsd ki a táblát úgy, hogy:


26. 4. feladat – INSERT

Szúrd be az alábbi tanulókat:

Az id mezőt nem kell megadni, mert AUTO_INCREMENT.


27. 5. feladat – SELECT

Írj lekérdezést:

a) az összes tanuló megjelenítésére;

b) csak a neveket jelenítsd meg;

c) csak a 18 éves vagy idősebb tanulókat jelenítsd meg;

d) jelenítsd meg a 4-es vagy annál jobb átlagú tanulókat.


28. 6. feladat – UPDATE

Anna javított egy dolgozatot, ezért az átlaga 4.50-ről 4.70-re változik.

Írd meg az SQL parancsot!


29. 7. feladat – DELETE

Töröld azt a tanulót, akinek az id értéke 2!


30. 8. feladat – ALTER TABLE

A tanulo táblához adj hozzá egy telefon nevű, legfeljebb 20 karakteres mezőt!


31. 9. feladat – komplex feladat

Hozd létre egy termek nevű táblát az alábbi feltételekkel:

Ezután szúrj be három terméket:


32. 10. feladat – komplex DML

A termek táblán hajtsd végre az alábbi műveleteket:

a) Listázd az összes terméket.

b) Listázd a 10000 Ft-nál drágább termékeket.

c) A laptop árát csökkentsd 289999.99 Ft-ra.

d) Az egér készletét növeld 10 darabbal.

e) Töröld a billentyűzetet.


33. Gyakorlás

Hozz létre egy film nevű táblát!

A tábla mezői:

Követelmények:

Ezután:

  1. Szúrj be legalább 5 filmet.
  2. Listázd ki az összes filmet.
  3. Listázd ki a 8-as vagy jobb értékelésű filmeket.
  4. Módosítsd az egyik film értékelését.
  5. Törölj egy filmet.
  6. Adj a táblához egy hossz nevű, percben tárolt egész szám mezőt.

34. Gyors összefoglaló

DDL

CREATE ALTER DROP TRUNCATE

A tábla/adatbázis szerkezetét kezeli.

DML

INSERT UPDATE DELETE

A tárolt adatokat módosítja.

Lekérdezés

SELECT

Adatok lekérdezésére szolgál.

Fontos adattípusok

INT DECIMAL(10,2) VARCHAR(100) CHAR(5) DATE DATETIME BOOLEAN

Fontos megszorítások

PRIMARY KEY NOT NULL UNIQUE DEFAULT CHECK FOREIGN KEY