Az adatbázisban az adatokat táblákban tároljuk.
Egy tábla:
Példa:
| id | nev | eletkor | |
|---|---|---|---|
| 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:
diak → a tábla neveid, nev, eletkor, email → oszlopokA 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 |
CREATE DATABASE iskola;
Az adatbázis használatának kiválasztása:
USE iskola;
Á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)
);
Az adattípus meghatározza, hogy egy oszlopban milyen adatokat tárolhatunk.
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
Például:
DECIMAL(5,2)
A zárójelben:
5 → összesen legfeljebb 5 számjegy2 → ebből 2 a tizedesvessző utánPélda:
ar DECIMAL(8,2)
Tárolható például:
1250.50
99999.99
Árak esetén a DECIMAL használata ajánlott.
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
Fix hosszúságú szöveg:
kod CHAR(5)
Például öt karakterből álló kódokhoz használható.
Csak dátum:
szuldatum DATE
Formátuma:
YYYY-MM-DD
Például:
2007-04-15
Dátum és idő:
letrehozva DATETIME
Például:
2026-09-07 08:30:00
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
A megszorítások szabályokat határoznak meg az adatokra.
A legfontosabbak:
PRIMARY KEYNOT NULLUNIQUEDEFAULTCHECKFOREIGN KEYAz elsődleges kulcs egyértelműen azonosítja a tábla rekordjait.
Példa:
id INT PRIMARY KEY
Az elsődleges kulcs:
NULL;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.
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.
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ő.
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
);
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
);
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.
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.
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
);
Az ALTER TABLE segítségével egy már létező tábla szerkezetét módosíthatjuk.
ALTER TABLE diak
ADD telefon VARCHAR(20);
ALTER TABLE diak
DROP COLUMN telefon;
ALTER TABLE diak
MODIFY nev VARCHAR(150) NOT NULL;
A tábla teljes törlése:
DROP TABLE diak;
Figyelem!
A tábla szerkezete és adatai is törlődnek.
A tábla összes rekordjának törlése:
TRUNCATE TABLE diak;
A tábla szerkezete megmarad, de az adatok törlődnek.
DROP TABLE
→ a tábla is megszűnik
TRUNCATE TABLE
→ a tábla megmarad, az adatok törlődnek
A DML az adatok kezelésére szolgál.
Legfontosabb parancsai:
INSERTUPDATEDELETEA SELECT az adatok lekérdezésére szolgál, és gyakran külön DQL (Data Query Language) kategóriába sorolják.
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);
Az összes oszlop:
SELECT *
FROM diak;
Csak bizonyos oszlopok:
SELECT nev, eletkor
FROM diak;
Feltétellel:
SELECT *
FROM diak
WHERE eletkor >= 18;
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.
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.
| 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?
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
Hozz létre egy tanulo nevű táblát az alábbi mezőkkel:
id – egész szám, elsődleges kulcs, automatikus növelésnev – legfeljebb 100 karakter, kötelezőeletkor – egész számemail – legfeljebb 150 karakter, egyediatlag – két tizedesjegyű számEgészítsd ki a táblát úgy, hogy:
Szúrd be az alábbi tanulókat:
Az id mezőt nem kell megadni, mert AUTO_INCREMENT.
Í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.
Anna javított egy dolgozatot, ezért az átlaga 4.50-ről 4.70-re változik.
Írd meg az SQL parancsot!
Töröld azt a tanulót, akinek az id értéke 2!
A tanulo táblához adj hozzá egy telefon nevű, legfeljebb 20 karakteres mezőt!
Hozd létre egy termek nevű táblát az alábbi feltételekkel:
id – automatikusan növekvő elsődleges kulcs;nev – maximum 100 karakter, kötelező;ar – két tizedesjegyű szám, nem lehet negatív;keszlet – egész szám, nem lehet negatív;aktiv – logikai érték, alapértelmezés szerint TRUE.Ezután szúrj be három terméket:
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.
Hozz létre egy film nevű táblát!
A tábla mezői:
idcimrendezoevertekelesmegjelentKövetelmények:
id legyen elsődleges kulcs és AUTO_INCREMENT;cim legyen kötelező;ev legyen egész szám;ertekeles 0 és 10 közötti érték legyen;megjelent logikai érték legyen, alapértelmezés szerint TRUE.Ezután:
hossz nevű, percben tárolt egész szám mezőt.CREATE
ALTER
DROP
TRUNCATE
A tábla/adatbázis szerkezetét kezeli.
INSERT
UPDATE
DELETE
A tárolt adatokat módosítja.
SELECT
Adatok lekérdezésére szolgál.
INT
DECIMAL(10,2)
VARCHAR(100)
CHAR(5)
DATE
DATETIME
BOOLEAN
PRIMARY KEY
NOT NULL
UNIQUE
DEFAULT
CHECK
FOREIGN KEY