Aki nincs kész, házi feladat befejezni. Köv. órán ellenőrizzük részletesen, jövő kedden dolgozat ebből a két adatbázisból.
Hajó adatbázis megoldás
/*1*/ CREATE DATABASE hajoDEFAULT CHARACTER SET UTF-8COLLATE UTF8_hungarian_ci; /* 3. Írassa ki a J1 hajójárat menetrendjét! Jelenjenek meg az indulási és érkezési állomások az időpontokkal együtt!*/SELECT honnan, hova, indul, erkezikFROM menetrend WHERE jarat = "j1";
/* 4. Listázza ki, hogy Balatonfüredről milyen állomások felé indulnak hajók 11 óra 30 perc és 12 óra 30 perc között (beleértve a megadott időpontokat is)! (4. feladat:)*//*Egyik megoldás*/
SELECT menetrend.hovaFROM menetrendWHERE ((honnan = "Balatonfüred") and (menetrend.indul between '11:30' AND '12:30'));
/*Másik megoldás*/
SELECT menetrend.hovaFROM menetrendWHERE ((honnan = "Balatonfüred") and (menetrend.indul>= '11:30' AND menetrend.indul<= '12:30'));
/*5. Listázza ki, hogy Siófokról milyen jelű járatok indulnak 9 óra után (beleértve a 9 órát is). (5. feladat:)*/
SELECT menetrend.jarat from menetrend WHERE honnan = "Siófok" and indul >= 9;
/*6. Listázza ki indulási sorrendben az összes B-vel kezdődő jelű járatot, ami délután indul. (6. feladat:)*/select menetrend.jarat, menetrend.indul from menetrend where jarat like 'b%' and indul>'12:00:00'order by indul;
/*7. Határozza meg lekérdezés segítségével, hogy naponta hány hajó érkezik a kikötőkbe! A lista az állomás nevéből és a kikötő hajók számából álljon, az utóbbi értéke szerint csökkenően!(7. feladat:)*/ SELECT menetrend.hova, count(menetrend.azon) from menetrend group by hova order by 2 desc;
SELECT menetrend.hova, count(azon) from menetrend group by hova order by count(azon) desc;
/*8. Adja meg, hogy a legkésőbben érkező hajó hánykor ér Balatonföldvárra! (8. feladat:)*/
/*Egyik megoldás*/ SELECT menetrend.erkezik from menetrend where hova="Balatonföldvár" order by erkezik desc limit 1;
/*Másik megoldás*/ SELECT max(menetrend.erkezik) from menetrend where hova="Balatonföldvár"; /*9. Az E2-es hajójáratnak mi a végállomása és hánykor érkezik oda? (9. feladat:)*/ SELECT hova, erkezik from menetrend where jarat="e2" order by erkezik DESC limit 1;
/*1*/
CREATE DATABASE hajo
DEFAULT CHARACTER SET UTF-8
COLLATE UTF8_hungarian_ci;
/* 3. Írassa ki a J1 hajójárat menetrendjét! Jelenjenek meg az indulási és érkezési állomások az időpontokkal együtt!*/
SELECT honnan, hova, indul, erkezik
FROM menetrend
WHERE jarat = "j1";
/* 4. Listázza ki, hogy Balatonfüredről milyen állomások felé indulnak hajók
11 óra 30 perc és 12 óra 30 perc között (beleértve a megadott időpontokat is)! (4. feladat:)*/
/*Egyik megoldás*/
SELECT menetrend.hova
FROM menetrend
WHERE ((honnan = "Balatonfüred") and (menetrend.indul between '11:30' AND '12:30'));
/*Másik megoldás*/
SELECT menetrend.hova
FROM menetrend
WHERE ((honnan = "Balatonfüred") and (menetrend.indul>= '11:30' AND menetrend.indul<= '12:30'));
/*5. Listázza ki, hogy Siófokról milyen jelű járatok indulnak 9 óra után (beleértve a 9 órát is). (5. feladat:)*/
SELECT menetrend.jarat
from menetrend
WHERE honnan = "Siófok" and indul >= 9;
/*6. Listázza ki indulási sorrendben az összes B-vel kezdődő jelű járatot, ami délután indul. (6. feladat:)*/
select menetrend.jarat, menetrend.indul
from menetrend
where jarat like 'b%' and indul>'12:00:00'
order by indul;
/*7. Határozza meg lekérdezés segítségével, hogy naponta hány hajó érkezik a kikötőkbe!
A lista az állomás nevéből és a kikötő hajók számából álljon, az utóbbi értéke szerint csökkenően!(7. feladat:)*/
SELECT menetrend.hova, count(menetrend.azon)
from menetrend
group by hova
order by 2 desc;
SELECT menetrend.hova, count(azon)
from menetrend
group by hova
order by count(azon) desc;
/*8. Adja meg, hogy a legkésőbben érkező hajó hánykor ér Balatonföldvárra! (8. feladat:)*/
/*Egyik megoldás*/
SELECT menetrend.erkezik
from menetrend
where hova="Balatonföldvár"
order by erkezik desc
limit 1;
/*Másik megoldás*/
SELECT max(menetrend.erkezik)
from menetrend
where hova="Balatonföldvár";
/*9. Az E2-es hajójáratnak mi a végállomása és hánykor érkezik oda? (9. feladat:)*/
SELECT hova, erkezik
from menetrend
where jarat="e2"
order by erkezik DESC
limit 1;
Szótár adatbázis megoldás
/*1. Hozzon létre a lokális SQL szerveren szotar néven adatbázist! Az adatbázis alapértelmezett rendezési sorrendje a magyar szabályok szerinti legyen! Ha az Ön által választott SQL szervernél nem alapértelmezés az UTF-8 kódolás, akkor azt is állítsa be alapértelmezettnek az adatbázis létrehozásánál!*/CREATE DATABASE szotar CHARACTER SET utf8 COLLATE utf8_hungarian_ci;
/*2. A tabla.sql és az adatok.sql állományok tartalmazzák a táblákat létrehozó, valamint az adatokat a táblába beszúró SQL parancsokat! Futtassa a lokális SQL szerveren elsőként a tabla.sql, majd az adatok.sql parancsfájlt. A feladatok megoldására elkészített SQL parancsokat a megoldasok.sql állományba illessze be a feladatok végén jelzett zárójelben lévő sor alá!*/
/*3. Készítsen lekérdezést, amely felsorolja azokat az angol szavakat, amelyeknek magyar megfelelőjét pontosan az angol írásmóddal egyezően írják! (3. feladat:) */select angol from szolista where angol=magyar;
/*4. Készítsen lekérdezést, amely ABC sorrendben felsorolja azokat a magyar szavakat, amelyeknél az adatbázisba kerülés dátuma 2003-ban, vagy 2004-ben volt! (4. feladat:)*/select szolista.magyar from szolista where felvetel>='2003.01.01.' AND felvetel<='2004.12.31.' order by magyar;
select szolista.magyar from szolista where felvetel between '2003.01.01.' AND '2004.12.31.' order by magyar;
select szolista.magyar from szolista where year(felvetel) between 2003 AND 2004 order by magyar;
select szolista.magyar from szolista where year(felvetel) = 2003 OR year(felvetel) = 2004 order by magyar;
select szolista.magyar from szolista where felvetel like "2003%" OR felvetel like "2004%" order by magyar;
/*5. Készítsen lekérdezést, amely megjeleníti azokat az angol szavakat, amelyek valamelyik magyar jelentését legalább 150 fő helyesnek ítélte, vagy kevesebb, mint 5 fő találta hibásnak! (5. feladat:)*/select angol from szolista where helyes>=150 or helytelen<5;
/*6. Készítsen lekérdezést, amely megjeleníti az „ac” betűkkel kezdődő és „y”-nal végződő angol szavakat és a magyar megfelelőiket. (6. feladat:)*/select angol, magyar from szolista where angol like 'ac%y';
/*7. Készítsen lekérdezést, amely megadja a 4000-nél nagyobb azonosítójú angol szavakra vonatkozóan a következőket: helyes minősítések száma, helytelen minősítések száma, minősítések száma átlagosan. A harmadik mező „átlag” néven jelenjen meg. (Egyetlen sort kell kiírni.) (7. feladat:)*/select sum(helyes), sum(helytelen), avg(helyes+helytelen) as 'átlag' from szolista where azon>4000; /*Rávezető feladatok: 7.a Készítsen lekérdezést, amely megadja a 4000-nél nagyobb azonosítójú angol szavakra vonatkozóan a következőket: angol szó, magyar szó, helyes minősítések száma (soronként), helytelen minősítések száma (soronként), minősítések száma átlagosan (soronként). A harmadik mező „minősítések száma átlagosan soronként” néven jelenjen meg. (Több sort kell kiírni.) (7.a feladat:)*/
select angol, magyar, helyes, helytelen, (helyes+helytelen)/2 as 'minősítések száma átlagosan soronként' from szolista where azon>4000; /* 7.b Készítsen lekérdezést, amely megadja a 4000-nél nagyobb azonosítójú angol szavakra vonatkozóan a következőket: helyes minősítések száma átlagosan (az összes sorban lévő értékek átlaga), helytelen minősítések száma átlagosan (az összes sorban lévő értékek átlaga), helyes és helytelen minősítések száma átlagosan (az összes sorban lévő értékek átlaga). (Egyetlen sort kell kiírni.) (7.b feladat:)*/
select avg(helyes), avg(helytelen), avg(helyes+helytelen) as 'minősítések száma átlagosan' from szolista where azon>4000; /*Itt a helyes értékeket soronként összeadja,majd elosztja a rekordok számával, a helytelen értékeket soronként összeadja,majd elosztja a rekordok számával, soronként a helyes és helytelen értékeket összeadja, majd ezeket is összeadja és elosztja a rekordok számával. Ha két rekorddal ki akarjuk próbálni, konkrétan milyen eredményt kapunk: select avg(helyes), avg(helytelen), avg(helyes+helytelen) as 'minősítések száma átlagosan' from szolista where azon = 3203 or azon = 3204; */
/* 7.c Készítsen lekérdezést, amely megadja a 4000-nél nagyobb azonosítójú angol szavak számát. (Egyetlen sort kell kiírni.) (7.c feladat:)*/
select count(azon) as 'rekordok száma' from szolista where azon>4000; /*Itt minden olyan mezőt megadhatunk a függvénynek, aminek az értéke garantáltan kitöltött. Az azonosító mező ezért mindig alkalmas. Vegyük észre, hogy az ilyen feladatoknál nincs értelme kiírni egy mezőt, pl. az angol nevet, mivel az nem köthető az összesítő függvény eredményéhez. pl. a következő megoldás nem dob hibát, de nincs értelme: select angol, count(azon) as 'rekordok száma' from szolista where azon>4000; Itt az első, szűrésnek megfelelő rekordban lévő angol szót írja ki. Győződj meg róla: SELECT angol, azon FROM `szolista` where angol like "perfume"; */
/*8. Készítsen lekérdezést, amely megadja, hogy legelőször mikor került a „warp” angol szó az adatbázisba! (8. feladat:)*/
select felvetel from szolistaWHERE angol like 'warp'order by felvetellimit 1;
select min(felvetel) from szolistaWHERE angol like 'warp';
/*9. Készítsen lekérdezést, amely megadja, hogy az adatbázis angol szavai közül melyeknek van legalább 3 magyar jelentése! A lekérdezésben csak az angol szavak jelenjenek meg. (9. feladat:)*/select angol from szolista group by angol having count(azon)>=3;
/*1. Hozzon létre a lokális SQL szerveren szotar néven adatbázist!
Az adatbázis alapértelmezett rendezési sorrendje a magyar szabályok
szerinti legyen!
Ha az Ön által választott SQL szervernél nem alapértelmezés az UTF-8 kódolás,
akkor azt is állítsa be alapértelmezettnek az adatbázis létrehozásánál!*/
CREATE DATABASE szotar
CHARACTER SET utf8
COLLATE utf8_hungarian_ci;
/*2. A tabla.sql és az adatok.sql állományok tartalmazzák a táblákat létrehozó, valamint az adatokat a táblába beszúró SQL parancsokat! Futtassa a lokális SQL szerveren elsőként a tabla.sql, majd az adatok.sql parancsfájlt.
A feladatok megoldására elkészített SQL parancsokat a megoldasok.sql állományba illessze be a feladatok végén jelzett zárójelben lévő sor alá!*/
/*3. Készítsen lekérdezést, amely felsorolja azokat az angol szavakat,
amelyeknek magyar megfelelőjét pontosan
az angol írásmóddal egyezően írják! (3. feladat:) */
select angol
from szolista
where angol=magyar;
/*4. Készítsen lekérdezést, amely ABC sorrendben
felsorolja azokat a magyar szavakat,
amelyeknél az adatbázisba kerülés dátuma 2003-ban,
vagy 2004-ben volt! (4. feladat:)*/
select szolista.magyar
from szolista
where felvetel>='2003.01.01.'
AND felvetel<='2004.12.31.'
order by magyar;
select szolista.magyar
from szolista
where felvetel between '2003.01.01.'
AND '2004.12.31.'
order by magyar;
select szolista.magyar
from szolista
where year(felvetel) between 2003 AND 2004
order by magyar;
select szolista.magyar
from szolista
where year(felvetel) = 2003 OR year(felvetel) = 2004
order by magyar;
select szolista.magyar
from szolista
where felvetel like "2003%" OR felvetel like "2004%"
order by magyar;
/*5. Készítsen lekérdezést, amely megjeleníti azokat az angol szavakat,
amelyek valamelyik magyar jelentését legalább 150 fő helyesnek ítélte,
vagy kevesebb, mint 5 fő találta hibásnak! (5. feladat:)*/
select angol
from szolista
where helyes>=150 or helytelen<5;
/*6. Készítsen lekérdezést, amely megjeleníti
az „ac” betűkkel kezdődő és „y”-nal végződő angol szavakat
és a magyar megfelelőiket. (6. feladat:)*/
select angol, magyar
from szolista
where angol like 'ac%y';
/*7. Készítsen lekérdezést, amely megadja a 4000-nél
nagyobb azonosítójú angol szavakra vonatkozóan
a következőket: helyes minősítések száma,
helytelen minősítések száma,
minősítések száma átlagosan.
A harmadik mező „átlag” néven jelenjen meg.
(Egyetlen sort kell kiírni.) (7. feladat:)*/
select sum(helyes), sum(helytelen), avg(helyes+helytelen) as 'átlag'
from szolista
where azon>4000;
/*Rávezető feladatok:
7.a Készítsen lekérdezést, amely megadja a 4000-nél
nagyobb azonosítójú angol szavakra vonatkozóan
a következőket: angol szó, magyar szó,
helyes minősítések száma (soronként),
helytelen minősítések száma (soronként),
minősítések száma átlagosan (soronként).
A harmadik mező „minősítések száma átlagosan soronként” néven jelenjen meg.
(Több sort kell kiírni.) (7.a feladat:)*/
select angol, magyar, helyes, helytelen, (helyes+helytelen)/2
as 'minősítések száma átlagosan soronként'
from szolista
where azon>4000;
/* 7.b Készítsen lekérdezést, amely megadja a 4000-nél
nagyobb azonosítójú angol szavakra vonatkozóan
a következőket:
helyes minősítések száma átlagosan (az összes sorban lévő értékek átlaga),
helytelen minősítések száma átlagosan (az összes sorban lévő értékek átlaga),
helyes és helytelen minősítések száma átlagosan (az összes sorban lévő értékek átlaga).
(Egyetlen sort kell kiírni.) (7.b feladat:)*/
select avg(helyes), avg(helytelen), avg(helyes+helytelen) as 'minősítések száma átlagosan'
from szolista where azon>4000;
/*Itt a helyes értékeket soronként összeadja,majd elosztja a rekordok számával,
a helytelen értékeket soronként összeadja,majd elosztja a rekordok számával,
soronként a helyes és helytelen értékeket összeadja,
majd ezeket is összeadja és elosztja a rekordok számával.
Ha két rekorddal ki akarjuk próbálni, konkrétan milyen eredményt kapunk:
select avg(helyes), avg(helytelen), avg(helyes+helytelen) as 'minősítések száma átlagosan'
from szolista where azon = 3203 or azon = 3204;
*/
/* 7.c Készítsen lekérdezést, amely megadja a 4000-nél
nagyobb azonosítójú angol szavak számát.
(Egyetlen sort kell kiírni.) (7.c feladat:)*/
select count(azon) as 'rekordok száma'
from szolista where azon>4000;
/*Itt minden olyan mezőt megadhatunk a függvénynek, aminek az értéke garantáltan kitöltött.
Az azonosító mező ezért mindig alkalmas.
Vegyük észre, hogy az ilyen feladatoknál nincs értelme
kiírni egy mezőt, pl. az angol nevet, mivel az nem köthető
az összesítő függvény eredményéhez.
pl. a következő megoldás nem dob hibát, de nincs értelme:
select angol, count(azon) as 'rekordok száma' from szolista where azon>4000;
Itt az első, szűrésnek megfelelő rekordban lévő angol szót írja ki.
Győződj meg róla:
SELECT angol, azon FROM `szolista` where angol like "perfume";
*/
/*8. Készítsen lekérdezést, amely megadja,
hogy legelőször mikor került
a „warp” angol szó az adatbázisba! (8. feladat:)*/
select felvetel
from szolista
WHERE angol like 'warp'
order by felvetel
limit 1;
select min(felvetel)
from szolista
WHERE angol like 'warp';
/*9. Készítsen lekérdezést, amely megadja,
hogy az adatbázis angol szavai közül
melyeknek van legalább 3 magyar jelentése!
A lekérdezésben csak az angol szavak jelenjenek meg. (9. feladat:)*/
select angol
from szolista
group by angol
having count(azon)>=3;