
Ralibajnok_2022_tavasz_idegen
Ralibajnok_2022_tavasz_idegen
I1. Adatbázis létrehozása és adatok importálása
1.1 Adatbázis létrehozása
CREATE DATABASE rali;
USE rali;
1.2 Táblák létrehozása
CREATE TABLE versenyzo (
id INT PRIMARY KEY, -- Egyedi azonosító
nev VARCHAR(100) UNIQUE -- Versenyző neve
);
CREATE TABLE bajnok (
ev INT PRIMARY KEY, -- Év (kulcs)
pilotaid INT, -- Pilóta azonosítója
navigatorid INT, -- Navigátor azonosítója
csapat VARCHAR(100), -- Csapat neve
auto VARCHAR(100), -- Versenyautó gyártója vagy típusa
FOREIGN KEY (pilotaid) REFERENCES versenyzo(id),
FOREIGN KEY (navigatorid) REFERENCES versenyzo(id)
);
1.3 Adatok importálása fájlból
LOAD DATA INFILE 'versenyzo.txt'
INTO TABLE versenyzo
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
LOAD DATA INFILE 'bajnok.txt'
INTO TABLE bajnok
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;j
LOAD DATA LOCAL INFILE 'versenyzo.txt' INTO TABLE versenyzo ...
2. Csapatnevek, amelyek tartalmazzák a "Rally" szót (2rally)
SELECT DISTINCT csapat
FROM bajnok
WHERE csapat LIKE '%Rally%'
ORDER BY csapat;
Magyarázat:
- LIKE '%Rally%' → Megkeresi azokat a csapatokat, ahol a név tartalmazza a "Rally" szót.
- DISTINCT → Egy csapatot csak egyszer listáz ki.
- ORDER BY csapat → Ábécé sorrendbe rendezi.
3. 2000–2010 közötti évek navigátorai (3iranyitok)
SELECT bajnok.ev, versenyzo.nev AS navigator
FROM bajnok
JOIN versenyzo ON bajnok.navigatorid = versenyzo.id
WHERE bajnok.ev BETWEEN 2000 AND 2010
ORDER BY bajnok.ev;
Magyarázat:
- JOIN a bajnok és versenyzo táblára a navigatorid alapján.
- WHERE bajnok.ev BETWEEN 2000 AND 2010 → Csak a 2000–2010 közötti éveket listázza ki.
- ORDER BY bajnok.ev → Évek szerinti sorrend.
4. Kiss Ferenc pilóta navigátorai (4kiss)
SELECT bajnok.ev, versenyzo.nev AS navigator
FROM bajnok
JOIN versenyzo AS pilota ON bajnok.pilotaid = pilota.id
JOIN versenyzo AS navigator ON bajnok.navigatorid = navigator.id
WHERE pilota.nev = 'Kiss Ferenc'
ORDER BY bajnok.ev;
Magyarázat:
- Két JOIN:
- Az egyik a pilótára (pilotaid).
- A másik a navigátorra (navigatorid).
- Csak azokat az éveket listázza ki, ahol a pilóta Kiss Ferenc volt.
5. A legtöbbször bajnok pilóta (5csillag)
SELECT versenyzo.nev, COUNT(bajnok.ev) AS bajnoki_cimek
FROM bajnok
JOIN versenyzo ON bajnok.pilotaid = versenyzo.id
GROUP BY versenyzo.nev
ORDER BY bajnoki_cimek DESC
LIMIT 1;
Magyarázat:
- COUNT(bajnok.ev) → Megszámolja, hányszor nyert bajnokságot egy pilóta.
- GROUP BY versenyzo.nev → Pilótánként csoportosít.
- ORDER BY bajnoki_cimek DESC → A legtöbb bajnoki címmel rendelkező pilóta kerül előre.
- LIMIT 1 → Csak az első helyezettet adja vissza.
6. Navigátorok, bajnoki éveik és pilótáik (6versenytars)
SELECT versenyzo.nev AS navigator, bajnok.ev, pilota.nev AS pilota
FROM bajnok
JOIN versenyzo AS pilota ON bajnok.pilotaid = pilota.id
JOIN versenyzo AS navigator ON bajnok.navigatorid = navigator.id
ORDER BY navigator, bajnok.ev;
Magyarázat:
- Mindegyik navigátorra kigyűjti:
- a bajnoki címet szerző éveket
- és pilótájukat
- ORDER BY navigator, bajnok.ev →
- Először navigátoronként rendezi a listát.
- Utána az éveket időrendbe teszi.