Zenekarok_2021_okt_minta

Zenekarok_2021_okt_minta

1. Adatbázis létrehozása és adatok importálása

1.1 Adatbázis létrehozása

CREATE DATABASE zenekarok;

USE zenekarok;


1.2 Táblák létrehozása

CREATE TABLE egyuttesek (

ekod INT PRIMARY KEY, -- Együttes egyedi kódja (kulcs)

nev VARCHAR(100), -- Együttes neve

ev INT, -- Alakulás éve

mufaj VARCHAR(255), -- Műfaj(ok)

emerton BOOLEAN -- eMeRTon-díj (logikai)

);

CREATE TABLE zeneszek (

azon INT PRIMARY KEY AUTO_INCREMENT, -- Egyedi azonosító

nev VARCHAR(100), -- Zenész neve

ekod INT, -- Együttes kódja (kapcsolat az együttesek táblával)

szuldt DATE, -- Születési dátum

haldt DATE NULL, -- Halálozási dátum (lehet NULL)

szerep VARCHAR(100), -- Zenész szerepe az együttesben

FOREIGN KEY (ekod) REFERENCES egyuttesek(ekod)

);

1.3 Adatok importálása fájlból

LOAD DATA INFILE 'egyuttesek.txt'

INTO TABLE egyuttesek

FIELDS TERMINATED BY ';'

LINES TERMINATED BY '\n'

IGNORE 1 ROWS;


LOAD DATA INFILE 'zeneszek.txt'

INTO TABLE zeneszek

FIELDS TERMINATED BY ';'

LINES TERMINATED BY '\n'

IGNORE 1 ROWS;

Ha a fájl a helyi gépen van, akkor LOCAL kulcsszót kell használni:

LOAD DATA LOCAL INFILE 'egyuttesek.txt' INTO TABLE egyuttesek ...

2. Gitáros zenészek listája (2gitar)

SELECT nev

FROM zeneszek

WHERE szeriep LIKE '*gitár*'

ORDER BY nev;

Megkeresi azokat a zenészeket, akiknek a szerepében szerepel a "gitár" szó.

A találatokat név szerint rendezi.

3. Együttesek tagjainak száma (3letszam)

SELECT egyuttesek.nev, COUNT(zeneszek.azon) AS letszam

FROM egyuttesek

LEFT JOIN zeneszek ON egyuttesek.ekod = zeneszek.ekod

GROUP BY egyuttesek.nev

ORDER BY letszam DESC;

Mit csinál?

Összeszámolja az együttesek tagjait.

A legtöbb taggal rendelkező együttes kerül előre.

4. Együttes(ek) a legtöbb énekessel (4enekes)

SELECT egyuttesek.nev, COUNT(zeneszek.azon) AS enekesek_szama

FROM egyuttesek

JOIN zeneszek ON egyuttesek.ekod = zeneszek.ekod

WHERE zeneszek.szerep LIKE '*ének-'

GROUP BY egyuttesek.nev

HAVING enekesek_szama = (

SELECT MAX(enekesek_count)

FROM (

SELECT COUNT(zeneszek.azon) AS enekesek_count

FROM zeneszek

WHERE szerep LIKE '*ének*'

GROUP BY ekod

) AS max_enekesek

);

Mit csinál?

Megszámolja az együttesek énekeseit.

Csak azt az együttest mutatja, amelyikben a legtöbb énekes van.

5. A legkorábban alakult együttes tagjai és szerepük (5tagok)

SELECT zeneszek.nev, zeneszek.szerep

FROM zeneszek

JOIN egyuttesek ON zeneszek.ekod = egyuttesek.ekod

WHERE egyuttesek.ev = (

SELECT MIN(ev) FROM egyuttesek

)

ORDER BY zeneszek.nev;

Mit csinál?

Kikeresi a legrégebbi együttest.

Annak tagjait és szerepüket név szerint rendezi.

6. Együttesek, amelyek már biztosan nem zenélhetnek eredeti felállásban (6egyuttes)

SELECT DISTINCT egyuttesek.nev

FROM egyuttesek

JOIN zeneszek ON egyuttesek.ekod = zeneszek.ekod

WHERE zeneszek.haldt IS NOT NULL;

Az egyuttesek táblából az együttesek nevét adja vissza, ismétlődések nélkül. 

Összekapcsolja az egyuttesek táblát a zeneszek táblával az ekod mező alapján. Szűrést végez: csak azokat a sorokat hagyja meg, ahol a zenész halálozási dátuma (haldt) nem üres. Tehát csak az elhunyt zenészekhez tartozó sorok maradnak meg.

Készítette: A COPILOT

Vissza