13. óra: Balatoni hajómenetrend III. (A mysql függvényei, záradékai)

A balatoni hajók menetrendjét tárolja a Balaton nevû adatbázisunk.

Az adatbázisban egyetlen tábla van, neve: menetrend.

A menetrend tábla egy részlete:

+-------+----------------+----------------+----------+----------+
| jarat | honnan         | hova           | indul    | erkezik  |
+-------+----------------+----------------+----------+----------+
| A1    | Siófok         | Balatonalmádi  | 09:30:00 | 10:30:00 |
| A2    | Balatonalmádi  | Alsóörs        | 10:35:00 | 11:10:00 |
| A2    | Alsóörs        | Csopak         | 11:10:00 | 11:40:00 |
| A2    | Csopak         | Siófok         | 11:40:00 | 12:20:00 |
| A3    | Siófok         | Csopak         | 16:00:00 | 16:45:00 |
| A3    | Csopak         | Alsóörs        | 16:45:00 | 17:15:00 |
| A3    | Alsóörs        | Balatonalmádi  | 17:15:00 | 17:45:00 |
| A4    | Balatonalmádi  | Siófok         | 17:50:00 | 18:50:00 |
| ..    | ...            | ...            | ...      | ...      |

Minden sor 5 adatot tartalmaz:

Elõzetes teendõk

-2. feladat: Lépjen be a mysql felületbe!
 
A parancs: mysql -u erettsegi -p
 
(A parancs 'megszólítja' a mysql kiszolgálót, közli, hogy a felhasználónevünk 'erettsegi', és ígéretet tesz arra, hogy majd megadjuk a jelszót.)

Az ENTER utána gép kéri a jelszót. Ezt adja meg!

Ha sikerült, akkor a prompt (a kurzor elõtt álló szöveg) ez lesz:

mysql>

A kiszolgáló várja a parancsainkat...

-1. feladat: Kérdezzük meg a kiszolgálót, hogy milyen adatbázisai vannak!
 
A parancs: show databases;

Az ENTER után valami ilyesmi fogad minket:

+--------------------+
| Database           |
+--------------------+
| Balaton            |
| information_schema |
| mysql              |
| performance_schema |
| pisti              |
| sys                |
+--------------------+

A lényeg, hogy meglegyen, amit kerestünk: a Balaton adatbázis.

0. feladat: Vegyük használatba a Balaton adatbázist!
 
A parancs: use Balaton;

Az ENTER után a kiszolgáló válasza:

Database changed

A lényeg, hogy meglegyen, amit kerestünk: a Balaton adatbázis.

 

Feladatok

Idõadattal végzett mûveletek
 

A Kovács család gyerekei bagyon szeretnének 'hajókázni'. Kovács úr (az apa) szerint ez egy elég unalmas dolog, tehát megpróbálja lebeszélni õket errõl - gondolván, hogy majd egy idõ után lehetetlenül viselkednek a hajón. (Ahonnan nincs hova menni...)
Szeretne tehát egy minél rövidebb menetet keresni. Segítsünk neki!
 
1.1. feladat: Készítsünk lekérdezést arról, hogy az egyes menetek hány percig tartanak! Jelenjen meg, hogy az egyes menetek honnan hová mennek, mikor indulnak, és hány percig tartanak.
 
A parancs: select jarat, 60*HOUR(erkezik)+MINUTE(erkezik)-60*HOUR(indul)-MINUTE(indul) as menetido from menetrend;
 
Egy másik megoldás: ???

1.2. feladat: Módosítsuk az elõzõ lekérdezést úgy, hogy csak a legrövidebb menet jelenjen meg!
 
A parancs: ???

Sorokon átívelõ összeadás
 

Színre lép Kovács anyuka...
 
A gyerekek nyafognak, hoy 'apa a legrövidebb útra vitt minket... brühühü'. Ezzel változott a feladat.
 
2.1. feladat: Listázzuk ki, hogy melyik járatnak mennyi a teljes menetideje (elejétõl a végéig)! Jelenjen meg a járat száma, és a menetidõ percben!
 
A parancs: select jarat, sum(60*HOUR(erkezik)+MINUTE(erkezik)-60*HOUR(indul)-MINUTE(indul)) as menetido from menetrend group by jarat;
 
Egy másik megoldas: ???
 
Most tehát itt a lehetõség...
 
2.2. feladat: Módosítsuk az elõzõ lekérdezést úgy, hogy csak a leghosszabb menetidejû járat száma és menetideje jelenjen meg!
 
A parancs: ???

Megszámlálás
 
A gyerekek tovább nyafognak...
 
Szerintük az a legérdekesebb, amikor a hajó a kikötõben forgolódik.
 
3.1. feladat: Készítsünk lekérdezést, amely kilistázza az egyes járatokra azt, hogy hány kikötõt érintenek.
 
A parancs: ???
 
3.2 feladat: Módosítsuk a fenti lekérdezést úgy, hogy csak az a járatszám és érintett kikötõszám jelenik meg, amely ez utóbbi tekintetben maximális!
 
A parancs: ???

Az eredménytábla szûrése
 
Melyek a legforgalmasabb balatatoni kikötõk?
 
4.1. feladat: Készítsünk lekérdezést, amely kilistázza , hogy az egyes kikötõk hány hajót indítanak naponta. A listában csak azok a kikötõk jelenjenek meg, amelyek 5-nél több járatot indítanak.
 
A parancs: ???
 
4.2. feladat: Módosítsuk a fenti lekérdezést úgy, hogy a lista az indított hajók száma szerint csökkenõ sorrendben jelenjen meg.

Allekérdezés
 
Lajos a tihanyi kikötõben várja a kedvesét, aki sms-ben közölte, hogy "az utolsó Tihanyba menõ hajóval érkezem". Lajos még szeretne továbbmenni hajóval (és kedvesével).
 
5.1. feladat: Készítsünk lekérdezést, mely megadja, hogy hova indulnak hajók Tihanyból az oda érkezõ utolsó hajó után (még). Jelenjen meg az induló hajók minden adata.
 
A parancs: ???
 
5.2. feladat: Módosítsuk a fenti lekérdezést úgy, hogy a listában ne csak azok az állomások jelenjenek meg, ahova a hajók közvetlenül Tihanyból indulnak, hanem ha azok még tovább is mennek, akkor azok az állomásook is jelenjenek meg, amelyek még elérhetõk Tihanyból - e kései órán...
 
A parancs: ???

Jó munkát!