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;

Mit csinál?

  • 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;


Készítsd el weboldaladat ingyen! Ez a weboldal a Webnode segítségével készült. Készítsd el a sajátodat ingyenesen még ma! Kezdd el