online kép - Fájl  tube fájl feltöltés file feltöltés - adja hozzá a fájlokat online fedezze fel a legújabb online dokumentumok Kapcsolat
   
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

 

Online dokumentumok - kep
   
kategória
 

Biológia állatok Fizikai Földrajz Kémia Matematika Növénytan Számítógépes
Filozófia
Gazdaság
Gyógyszer
Irodalom
Menedzsment
Receptek
Vegyes

 
 
 
 













































 
 

Mérési Segédlet Informatika II SQL nyelv

számítógépes

Fájl küldése e-mail Esszé Projekt


egyéb tételek

 
Tablazatok szerkesztési műveletei
Funkcionalis függőségek, normalformak
Egyenaramú halózatok
Az ACCESS objektumai
Prezentació készítése
Matav rendszertechnika
Assembly Design - CATIA V5 – Start
Az Excel alapjai
Az elsődleges operaciós rendszer telepítése és üzemeltetése
Linux
 
 

Mérési Segédlet

Informatika II

SQL nyelv

1. Mérés Célja

A mérés során a hallgatók megismerkednek az adatbázisok általános lekérdező nyelvével az SQL nyelvvel, azon belül is hangsúlyosan a DML (Data MAnipulation Language) kifejezésekkel.

2. Szükséges ismeretek

A mérés elvégzéséhez SQL nyelv 111g66b ismerete szükséges, valamint néhány speciális Oracle Server beépített függvény ismerete (dátum és string manipulációs függvények). Az SQL nyelvet előadáson került ismertetésre, a feladatok megoldásához a következő Oracle függvényekre lesz szükség:

  • Sysdate: Ez a makró az aktuális rendszerdátumot adja vissza.
  • to_date(érték, formátum string): string àdátum konverzió. Pl: to_date(’2006.04.16’,’YYYY.MM.DD’)
  • to_char(érték, formátum string): dátum, számàstring konverzió. A formátum string szintaktikája megegyezik a to_date-nél alkalmazott szintaktikával.
  • Dátum+szám: Az adott dátum értékét növeli megadott számú nappal.


3. Minta példasor

A mérés során hasonló példasort kell megoldani.

1.        Egy könyvtári rendszer néhány alaptábláját, és azok adatait hozza létre az adatbázist generáló SQL  állományt lefuttatva.

2.        Listázza ki azon tagoknak a nevét, akiknek lejárt a tagságuk!

3.        Listázza ki azon tagoknak a nevét, akiknek lejárt a kölcsönzésük, de még nem hozták vissza a könyvet!

4.        Hosszabbítsa meg azoknak a kölcsönzéseit, akiknek még nem járt le a kölcsönzési határidejük, és még nem hozták vissza a könyvet!

5.        Listázza ki azokat a szerzőket, akiknek még egyetlen könyvét sem kölcsönözték ki, de van könyvük a könyvtárban!

6.        Listázza ki azokat a szerzőket, akik a legdrágább könyvet írták!(könyvcím, ár, vezetéknév, keresztnév)

7.        Listázza ki, a visszahozott kölcsönzések alapján, átlag hány napig vannak kikölcsönözve az egyes könyvek! (Könyvcím, átlagkölcsönzési idő)

8.        Listázza ki, a visszahozott kölcsönzések alapján, hogy egyes könyvek minimum, maximum, átlag mennyi ideig vannak kikölcsönözve! (cím, min, max, átlag)

9.        Listázza ki, a visszahozott kölcsönzések alapján, hogy egyes tagok minimum, maximum, átlag mennyi ideig kölcsönöznek ki egy könyvet! (név, min, max, átlag)

10.    Listázza ki azon tagokat, akik átlagban több, mint 30 napig kölcsönöznek ki egy könyvet!

11.    Listázza ki, hogy összesen hány napot volt kikölcsönözve az egy embernél legtovább kikölcsönzött könyv!(cím, összes nap)

12.    Listázza ki azon tagokat, akiknek a tagságuk 2000-ben jár le.

13.    Hosszabbítsa meg azon tagok le nem járt kölcsönzéseit, akiknek a neve kov-val kezdődik.

4. Megoldások:

1.

1.


create table konyv

( isbn number(10,0),

  cim varchar2(30),

  nyelv varchar2(10),

  ar number(6,0),

  megjelenes date,

  kiado varchar2(30),

  leiras varchar2(1500)

);

create table szerzo

( id number(10,0),

  vezeteknev varchar2(30),

  keresztnev varchar2(30),

  nemzetiseg varchar2(10)

);

create table konyv_szerzo

( id number(10,0),

  konyvisbn number(10,0),

  szerzoid number(10,0),

  reszesedes number(3,2)

);

create table tag

( id number(10,0),

  vezeteknev varchar2(30),

  keresztnev varchar2(30),

  iranyitoszam number(4,0),

  varos varchar2(20),

  utca varchar2(40),

  tagsagiervenyes date

);

create table kolcsonzesek

( id number(10,0),

  konyvisbn number(10,0),

  tagid number(10,0),

  kiviteldatum date,

  lejaratdatum date,

  visszahozataldatum date

);


2.

select vezeteknev, keresztnev
from tag
where tagsagiervenyes< sysdate

3.

select distinct vezeteknev, keresztnev
from tag,kolcsonzesek
where tag.id=kolcsonzesek.tagid
and lejaratdatum < sysdate
and visszahozataldatum is null

4.

update kolcsonzesek
set lejaratdatum = lejaratdatum +10
where lejaratdatum > sysdate
and visszahozataldatum is null



5.

Első megoldás:

select distinct vezeteknev,keresztnev,szerzo.id
from szerzo, konyv_szerzo, konyv
where szerzo.id=konyv_szerzo.szerzoid
and konyv.isbn=konyv_szerzo.konyvisbn
minus
select vezeteknev,keresztnev,szerzo.id
from szerzo, kolcsonzesek, konyv_szerzo
where szerzo.id=konyv_szerzo.szerzoid
and konyv_szerzo.konyvisbn=kolcsonzesek.konyvisbn

Második megoldás:

select distinct vezeteknev,keresztnev
from szerzo, konyv_szerzo, konyv
where szerzo.id=konyv_szerzo.szerzoid
and konyv.isbn=konyv_szerzo.konyvisbn
and szerzo.id not in
(
  select szerzo.id
  from szerzo, kolcsonzesek, konyv_szerzo
  where szerzo.id=konyv_szerzo.szerzoid
  and konyv_szerzo.konyvisbn=kolcsonzesek.konyvisbn
)

Harmadik megoldás:

select distinct vezeteknev,keresztnev
from szerzo, konyv_szerzo, konyv,
(
  select szerzo.id as id
  from szerzo, kolcsonzesek, konyv_szerzo
  where szerzo.id=konyv_szerzo.szerzoid
  and konyv_szerzo.konyvisbn=kolcsonzesek.konyvisbn
)b
where szerzo.id=konyv_szerzo.szerzoid
and konyv.isbn=konyv_szerzo.konyvisbn
and szerzo.id = b.id(+)
and
b.id is null

6.

select cim,vezeteknev, keresztnev
from szerzo, konyv_szerzo, konyv,
(
  select max(ar) as maxar
  from konyv
) a
where szerzo.id=konyv_szerzo.szerzoid
and konyv.isbn=konyv_szerzo.konyvisbn
and konyv.ar=a.maxar

7.

select isbn,cim,avg(visszahozataldatum-kiviteldatum) as atlag
from kolcsonzesek,konyv
where konyv.isbn=kolcsonzesek.konyvisbn
and visszahozataldatum is not null
group by isbn,cim

8.

select isbn,cim,
avg(visszahozataldatum-kiviteldatum),
min(visszahozataldatum-kiviteldatum),
max(visszahozataldatum-kiviteldatum)
from kolcsonzesek,konyv
where konyv.isbn=kolcsonzesek.konyvisbn
and visszahozataldatum is not null
group by isbn,cim

9.

select tag.id,vezeteknev,keresztnev,
avg(visszahozataldatum-kiviteldatum),
min(visszahozataldatum-kiviteldatum),
max(visszahozataldatum-kiviteldatum)
from kolcsonzesek,tag
where tag.id=kolcsonzesek.tagid
and visszahozataldatum is not null
group by tag.id,vezeteknev,keresztnev

10

select tag.id,vezeteknev,keresztnev
from kolcsonzesek,tag
where tag.id=kolcsonzesek.tagid
and visszahozataldatum is not null
group by tag.id,vezeteknev,keresztnev

having avg(visszahozataldatum-kiviteldatum)>30

11.

select isbn,cim,sum(k2.visszahozataldatum-k2.kiviteldatum)
from kolcsonzesek k1, kolcsonzesek k2, konyv,
(
  select max(visszahozataldatum-kiviteldatum) as maxkolcs
  from kolcsonzesek
  where visszahozataldatum is not null
) a
where k1.visszahozataldatum-k1.kiviteldatum=a.maxkolcs
and konyv.isbn=k1.konyvisbn

and k2.konyvisbn=k1.konyvisbn

and k2.visszahozataldatum is not null
group by isbn,cim


12.

Első megoldás:

select vezeteknev,keresztnev
from tag
where tagsagiervenyes between to_date('2000.01.01','yyyy.mm.dd') and to_date('2000.12.31','yyyy.mm.dd')

Második megoldás:

select vezeteknev,keresztnev
from tag
where to_char(tagsagiervenyes,'yyyy.mm.dd') like '2000%'

13.

update kolcsonzesek
set lejaratdatum = lejaratdatum+10
where lejaratdatum < sysdate
and visszahozataldatum is null
and tagid in
(
  select id
  from tag
  where upper(vezeteknev) like 'KOV%'
)

Találat: 734