12. óra: Lekérdezések ('tisztek' adatbázis)
Egy adatbázisban folytatjuk
a tanulást. Új adatbázisunk egy fiktív laktanya rendfokozattal
rendelkezõ katonáinak adatait tartalmazza (még a régi idõkbõl). 0.
feladat: Töltse le a home
könyvtárába a tisztek.sql fáljt!
(Jobb egér a linken/hivatkozás mentése másként...)
Indítson egy terminált, majd mportálja a tisztek adatbázist a
mysql-be!A parancs: barnabas@sir-kan:$
mysql -u erettsegi -p < tisztek.sql
|
Lépjen be az adatbáziskezelõbe! (mysql -u erettsegi -p, majd a jelszó)
Nyissa meg az tisztek adatbázist!
mysql>use tisztek;
Blablabla...
Database changed
mysql>
Blablabla...
Database changed
mysql>
Az adatbázisban két tábla van, nevük: tisztek és rang.
A tisztek tábla egy részlete (ön is lekérdezheti: select * from tisztek limit 5;):
+---------------+-----------------+-----------+---------------+-----------+------------------------------+---------+----------+
| Nev | Anyja | Lakohely | Rendfokozat | Kategoria | Beosztas | Fizetes | Szuletes |
+---------------+-----------------+-----------+---------------+-----------+------------------------------+---------+----------+
| Kiss Krisztián| Harcsa Virág | Kisoroszi | alezredes | tiszt | ezredparancsnok-helyettes | 269733 | 1961 |
| Zsákos Tamás | Halász Noémi | Nagymaros | õrnagy | tiszt | törzstiszt | 231884 | 1964 |
| Pécsi Ádám | Sólyom Gabriella| Szentendre| fõhadnagy | tiszt | osztályparancsnok-helyettes | 227311 | 1979 |
| Orosz Ubul | Oláh Regina | Budakalász| hadnagy | tiszt | ütegparancsnok | 198673 | 1980 |
| Halász Károly | Hegyes Eszter | Tahi | törzsõrmester | altiszt | szakaszparancsnok | 156627 | 1968 |
| ... | ... | ... | ... | ... | ... | ... | ... |
| Nev | Anyja | Lakohely | Rendfokozat | Kategoria | Beosztas | Fizetes | Szuletes |
+---------------+-----------------+-----------+---------------+-----------+------------------------------+---------+----------+
| Kiss Krisztián| Harcsa Virág | Kisoroszi | alezredes | tiszt | ezredparancsnok-helyettes | 269733 | 1961 |
| Zsákos Tamás | Halász Noémi | Nagymaros | õrnagy | tiszt | törzstiszt | 231884 | 1964 |
| Pécsi Ádám | Sólyom Gabriella| Szentendre| fõhadnagy | tiszt | osztályparancsnok-helyettes | 227311 | 1979 |
| Orosz Ubul | Oláh Regina | Budakalász| hadnagy | tiszt | ütegparancsnok | 198673 | 1980 |
| Halász Károly | Hegyes Eszter | Tahi | törzsõrmester | altiszt | szakaszparancsnok | 156627 | 1968 |
| ... | ... | ... | ... | ... | ... | ... | ... |
Minden sor 8 adatot tartalmaz:
- Nev: a katona személy neve (típusa: szöveg);
- Anyja: a katona anyjának neve (típusa: szöveg);
- Lakohely: a település neve, ahol a katona lakik (típusa: szöveg);
- Rendfokozat: az illetõ rendfokozata (típusa: szöveg);
- Kategória: a rendfokozathoz tartozó kategória (típusa: szöveg);
- Beosztas: a katona szolgálati beosztása (típusa: szöveg);
- Fizetés: az illetõ havi fizetése (típusa: egész szám);
- Születés: a katona születésének éve (típusa: egész szám).
A rang tábla egy részlete (ön is lekérdezheti: select * from rang;):
+--------------------+---------+
| rendfokozat | sorszam |
+--------------------+---------+
| tizedes | 1 |
| szakaszvezetõ | 2 |
| õrmester | 3 |
| törzsõrmester | 4 |
| fõtörzsõrmester | 5 |
| ... | ... |
| rendfokozat | sorszam |
+--------------------+---------+
| tizedes | 1 |
| szakaszvezetõ | 2 |
| õrmester | 3 |
| törzsõrmester | 4 |
| fõtörzsõrmester | 5 |
| ... | ... |
Minden sor 2 adatot tartalmaz:
- rendfokozat: az adott rendfokozat megnevezése (típusa: szöveg);
- sorszam: az adott rendfokozat sorszáma: minél nagyobb, annál magasabb az adott rendfokozat (típusa: egész szám).
Feladatok
A fehér dobozokban lévõ feladatokat itt megoldjuk, és késõbb kiteszem a megoldásokat ide a lapra.
1. feladat: Készítsen
lekérdezést, amely kiírja hogy kik a "tábornok"-okat!
(Ez egy Kategória.) A listában jelenjen a katona neve és
rendfokozata!
A parancs: SELECT Nev, Rendfokozat FROM tisztek WHERE Kategoria="tábornok";
A parancs: SELECT Nev, Rendfokozat FROM tisztek WHERE Kategoria="tábornok";
2. feladat: Készítsen
lekérdezést, amely kiírja a "Budakalász"-i "hadnagy"-ok
nevét és rendfokozatát. A lista a név szerint abc-sorrendben jelenjen
meg!
A parancs: SELECT Nev, Rendfokozat FROM tisztek WHERE Lakohely="Budakalász" AND Rendfokozat="hadnagy" ORDER BY Nev;
A parancs: SELECT Nev, Rendfokozat FROM tisztek WHERE Lakohely="Budakalász" AND Rendfokozat="hadnagy" ORDER BY Nev;
3. feladat: Kik a "Budakalász"-on
és a "Pomázon" lakó katonák? Jelenjen meg a
név, a rendfokozat és a katona lakóhelye!
A parancs: SELECT Nev, Rendfokozat, Lakohely FROM tisztek
WHERE Lakohely="Budakalász" OR Lakohely="Pomáz";
A parancs: SELECT Nev, Rendfokozat, Lakohely FROM tisztek
WHERE Lakohely="Budakalász" OR Lakohely="Pomáz";
4. feladat: Ki
a legfiatalabb a "Kisoroszi"-ban lakó katonák
közt? Adja meg a katona nevét, rendfokozatát, és azt, hogy 2000-ben
mennyi idõs volt. (Ez utóbbi "kor" fejléccel jelenjen meg.)
A parancs: SELECT Nev, Rendfokozat, 2000-Szuletes as Kor FROM tisztek
WHERE Lakohely="Kisoroszi" ORDER BY Kor LIMIT 1;
A parancs: SELECT Nev, Rendfokozat, 2000-Szuletes as Kor FROM tisztek
WHERE Lakohely="Kisoroszi" ORDER BY Kor LIMIT 1;
5. feladat: Milyen
rendfokozatok fordulnak elõ a "Kóspallag"-on
lakók közt? (Minden ilyen rendfokozat csak egyszer jelenjen meg a
listában.)
A parancs: SELECT DISTINCT Rendfokozat FROM tisztek WHERE Lakohely="Kóspallag";
A parancs: SELECT DISTINCT Rendfokozat FROM tisztek WHERE Lakohely="Kóspallag";
6. feladat: Hány
katona lakik az egyes településeken? Jelenjen meg a település neve, és
az ott lekó katonák száma!
A parancs: SELECT Lakohely, COUNT(*) as Letszam FROM tisztek GROUP BY Lakohely;
A parancs: SELECT Lakohely, COUNT(*) as Letszam FROM tisztek GROUP BY Lakohely;
7. feladat: Hány
katona viseli az egyes rendfokozatokat? Jelenjen meg a rendfokozat és
azt azt viselõk száma, ez utóbbi szerint csökkenõ sorrendben!
A parancs: ???
A parancs: ???
8. feladat: Ki
a legmagasabb rendfokozatú katona "Kóspallag"-on?
(Név, rendfokozat.)
A parancs: ???
A parancs: ???
9. feladat: Sorolja
fel a Gábor nevû katonák teljes nevét és rendfokozatát!
A parancs: ???
A parancs: ???
10. feladat: Melyik
katonának a legnagyobb a fizetése a "Szentendre"-i
katonák közt?
A parancs: ???
A parancs: ???
Jó munkát!