online kép - Fájl  tubefájl feltöltés file feltöltés - adja hozzá a fájlokat onlinefedezze fel a legújabb online dokumentumokKapcsolat
  
 

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
  

QUERY nyelv

számítógépes

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



egyéb tételek

 
Rendszerindítas
Automatika Segédlet Elektronikus eszközök szak II: évfolyam Nappali Müszaki Manager szak II: évfolyam Nappali
Programozasi eszközök, vezérlési szerkezetek
A digitalis elektronika alapjai
A PowerPoint program
Fajlrendszerek
Xara Webstyle
Keretek(frames)
A C nyelv kifejezései, utasítasai
Az elsődleges operaciós rendszer telepítése és üzemeltetése
 
 

QUERY nyelv

Projekció megvalósítása

SELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…

FROM táblanév;

Példa

SELECT Vnev, Unev, lakcim FROM olvaso;

SELECT * FROM konyv;

SELECT * FROM tab; (csak az Oracle-nél)

SELECT varos FROM kiado;




SELECT DISTINCT varos FROM kiado;

varos

varos

LONDON

LONDON

NEW YORK

NEW YORK

LONDON


LONDON


Szelekció megadása

SELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…

FROM táblanév

WHERE keresési_feltétel;

Keresési feltétel (logikai kifejezés)

egyszerű összehasonlítás

összehasonlítás egy halmaz elemeivel

összehasonlítás NULL értékkel

összetett keresési feltétel


Egyszerű összehasonlítás

oszlopnév relációs_operátor kifejezés|konstans


Összehasonlítás egy halmaz elemeivel

oszlopnév összehasonlító_operátor halmaz_definíció

operátor

jelentés

BETWEEN kif. AND kif.


IN (lista)


LIKE kar_minta


Összehasonlítás NULL értékkel

oszlopnév IS NULL

Összetett keresési feltételek

operátor

jelentés

NOT


AND


OR


A használható operátorokról bővebben a 2.3.4 részben olvashatunk.

Példa

 

 

ORACLE

MSSQL

 

SELECT o_azon, Vnev, Unev, lakcim

FROM olvaso

WHERE lakcim like ‘EGER%’ AND okod=6;

SELECT o_azon, Vnev, Unev, lakcim

FROM olvaso

WHERE lakcim like "EGER*" AND okod=6;


o_azon

Vnev

Unev

lakcim


POR

OSZKÁR

EGER DOBO U.21.


SELECT isbn,cim, kiad_ 616d37g dat FROM konyv WHERE kiad_dat BETWEEN AND


isbn

cim

kiad_dat


EGRI CSILLAGOK



KOSZIVU EMBER FIAI



SELECT * FROM olvaso WHERE okod IS NULL;


o_azon

vnev

unev

lakcim

beir_dat

okod


GIPSZ

JAKAB

DEBRECEN FAL U. 1.




KEMENY

HELEN

APAFA FA U. 12.




A kiválasztott sorok rendezése

SELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…

FROM táblanév

[WHERE keresési_feltétel]

ORDER BY kifejezés [DESC] [, kifejezés[DESC]]…;

Példa

SELECT isbn, cim,kiad_dat FROM konyv

WHERE kiad_azon=’K001’ /* MSACCESS-ben ‘ helyett “*/

ORDER BY cim;


isbn

cim

kiad_dat


EGRI CSILLAGOK



KOSZIVU EMBER FIAI



SELECT isbn, lelt_szam,kolcs_e FROM peldany

ORDER BY isbn, lelt_szam;


Csoportok képzése

SELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…

FROM táblanév

[WHERE keresési_feltétel]

GROUP BY kifejezés [,kifejezés]…

[HAVING csopkiv. feltétel]

[ORDER BY kifejezés [DESC] [, kifejezés[DESC]]…];


Csoportfüggvények (Oracle-nél és az Access-nél is ugyanaz)

AVG([DISTINCT|ALL] kifejezés)

A Null értéket figyelmen kívül hagyja.

COUNT([DISTINCT|ALL] )

A Null értéket figyelmen kívül hagyja.

MAX([DISTINCT|ALL] kifejezés)


MIN([DISTINCT|ALL] kifejezés)




SUM([DISTINCT|ALL] kifejezés)


A függvények NUMBER típusú adatokra alkalmazhatók, kivéve a MAX(), MIN(), COUNT() függvényeket, amelyek CHAR és DATE típusú adatokra is működnek.

Példa

SELECT okod, min(beir_dat), max(beir_dat), COUNT(*)

FROM olvaso

GROUP BY okod

HAVING COUNT(*)>1;


okod

min(beir_dat)

max(beir_dat)

COUNT(*)









Sztringátalakító függvények

INITCAP(kifejezés)


INSTR(kifejezés,’sztring’)


LENGTH(kifejezés)


LOWER(kifejezés)


SUBSTR(kifejezés, kp, hossz)


UPPER(kifejezés)


Aritmetikai függvények

ABS(kifejezés)


GREATEST(kifejezés,kif2)


LEAST(kifejezés,kif2)


MOD(kifejezés, osztó)


POWER(kifejezés,kitevő)


ROUND(kifejezés,szám)


SIGN(kifejezés)


SQRT(kifejezés)


TRUNC(kifejezés,szám)


egyéb műveletek:*,/,+,-

Dátumkezelő függvények

ADD_MONTHS(dát,hónapszám)


GREATEST(d1,d2)


LEAST(d1,d2)


MONTHS_BETWEEN(d1,d2)


ROUND(dátum,formátum)


TO_DATE(sztring)


TO_CHAR(dátum[,formátum])


SYSDATE



Példa

 

 

ORACLE

MSACCESS

 

SELECT lelt_szam, o_azon, SYSDATE-kolcs_dat ota_kint_van

FROM kolcson;

SELECT lelt_szam, o_azon, now-kolcs_dat as ota_kint_van

FROM kolcson;


lelt_szam

o_azon

ota_kint_van

L002



L003



L004



L005



L007



L008




Az NVL függvény

NVL(oszlopkif, kif) =oszlopkif, ha az nem NULL, egyébként =kif


Példa SELECT NVL(ar,0) FROM peldany;

JOIN

SELECT [DISTINCT] kifejezés [aliasnév][, kifejezés [aliasnév]]…

FROM táblanév [aliasnév], táblanév [aliasnév]

WHERE kapcs_oszlop1 összehas_operátor kapcs_oszlop2 AND további_feltétel

[GROUP BY kifejezés [,kifejezés]…]

[HAVING csopkiv_feltétel]

[ORDER BY kifejezés [DESC] [, kifejezés[DESC]]…];



Példa


ORACLE

MSACCESS

SELECT Vnev, Unev, lakcim, kolcs_dat FROM olvaso o, kolcson k

WHERE o.o_azon=k.o_azon AND SYSDATE-kolcs_dat>30;

SELECT Vnev, Unev, lakcim, kolcs_dat FROM olvaso INNER JOIN kolcson ON olvaso.o_azon=kolcson.o_azon
WHERE now-kolcs_dat>30;


Vnev

Unev

lakcim

kolcs_dat

KEMENY

HELEN

APAFA FA U. 12.


MINTA

MOKUS

SARAND FELFAL U. 9.


KEMENY

HELEN

APAFA FA U. 12.


GIPSZ

JAKAB

DEBRECEN FAL U. 1.



ORACLE

MSACCESS

SELECT a.kiad_azon, kiad_nev, varos, isbn,cim

FROM konyv k, kiado a

WHERE a.kiad_azon=k.kiad_azon;

SELECT kiado.kiad_azon, kiad_nev, varos, isbn, cim

FROM kiado INNER JOIN konyv ON kiado.kiad_azon=konyv.kiad_azon;


kiad_azon

kiad_nev

varos

isbn

cim

K001

TANKONYVKIADO

LONDON


EGRI CSILLAGOK

K001

TANKONYVKIADO

LONDON


KOSZIVU EMBER FIAI

K002

AKADEMIAI KIADO

NEW YORK


TUSKEVAR

K002

AKADEMIAI KIADO

NEW YORK


ANATOMIA

K003

GONDOLAT KIADO

LONDON


EMPATIA

K003

GONDOLAT KIADO

LONDON


RECEPTEK


Outer Join(+) azt a táblát egészíti ki NULL értékekkel, amely a kapcsoló oszlop mellett van.

ORACLE

MSACCESS

SELECT a.kiad_azon, kiad_nev, varos, isbn, cim

FROM kiado a, konyv k

WHERE a.kiad_azon=k.kiad_azon (+);

SELECT kiado.kiad_azon, kiad_nev, varos, isbn, cim

FROM kiado LEFT JOIN konyv ON kiado.kiad_azon=konyv.kiad_azon;


kiad_azon

kiad_nev

varos

isbn

cim

K001

TANKONYVKIADO

LONDON


EGRI CSILLAGOK

K001

TANKONYVKIADO

LONDON


KOSZIVU EMBER FIAI

K002

AKADEMIAI KIADO

NEW YORK


TUSKEVAR

K002

AKADEMIAI KIADO

NEW YORK


ANATOMIA

K003

GONDOLAT KIADO

LONDON


EMPATIA

K003

GONDOLAT KIADO

LONDON


RECEPTEK

K004

KOSSUTH KIADO

LONDON






Példa nem equijoinra

Listázzuk ki azokat, akik később iratkoztak be, mint GIPSZ JAKAB.

ORACLE

MSACCESS

SELECT x.vnev,x.unev,x.lakcim, y.vnev,y.unev FROM olvaso x,olvaso y

WHERE x.beir_dat>y.beir_dat AND UPPER(y.vnev)=’GIPSZ’ AND UPPER(y.unev)=’JAKAB’;

SELECT x.vnev,x.unev,x.lakcim, y.vnev,y.unev FROM olvaso as x,olvaso as y

WHERE x.beir_dat>y.beir_dat AND y.vnev="GIPSZ" AND y.unev="JAKAB";


Pl: Listázzuk ki, hogy az egyes olvasóknál hány könyv van.

ORACLE

MSACCESS

SELECT vnev, unev, count(k.lelt_szam)

FROM olvaso o, kolcson k

WHERE o.o_azon=k.o_azon (+)

group by o.o_azon,vnev,unev;

SELECT vnev, unev, count(kolcson.lelt_szam)

FROM olvaso left join kolcson

on olvaso.o_azon=kolcson.o_azon

group by olvaso.o_azon,vnev,unev;


Egymásbaágyazott lekérdezések

Az első SELECT WHERE részében újabb SELECT, össz. 15.

A beágyazott SELECT egyszerre több rekordot is visszaadhat. Ezek kezelésére használhatók a következők:

ANY

ALL

EXISTS

A belső SELECT-ből átvehetünk több oszlopot is.

Példa

Listázzuk ki azokat, akik később iratkoztak be, mint GIPSZ JAKAB.

ORACLE

MSACCESS

SELECT vnev,unev,lakcim

FROM olvaso

WHERE beir_dat>(select beir_dat From olvaso

where vnev=’GIPSZ’ AND unev=’JAKAB’);

SELECT vnev,unev,lakcim

FROM olvaso

WHERE beir_dat>(select beir_dat From olvaso

where vnev="GIPSZ" AND unev="JAKAB");


Listázzuk ki azon könyveket (ISBN, cim), amelyek Gipsz Jakabnál vannak.

ORACLE

MSACCESS

SELECT v.isbn,cim FROM konyv v, peldany p

WHERE v.isbn=p.isbn AND lelt_szam IN

(SELECT lelt_szam FROM kolcson k, olvaso o WHERE k.o_azon=o.o_azon AND UPPER(vnev)=’GIPSZ’ AND UPPER(unev)=’JAKAB’);

SELECT konyv.isbn,cim FROM konyv inner join peldany

ON konyv.isbn=peldany.isbn

where lelt_szam IN

(SELECT lelt_szam FROM kolcson inner join olvaso ON kolcson.o_azon=olvaso.o_azon

where vnev="GIPSZ" AND unev="JAKAB");


isbn

cim


EGRI CSILLAGOK


ANATOMIA


Példa korrelált lekérdezésre: a belső SELECT hivatkozik a külsőre.

Listázzuk ki azokat a könyveket, amelyeknek az ára nagyobb a könyv kiadója által kiadott könyvek átlagáránál.

ORACLE

MSACCESS

SELECT lelt_szam,k.isbn,cim,ar,kiad_azon FROM konyv k,peldany p WHERE p.isbn=k.isbn and ar>(SELECT avg(ar) FROM peldany, konyv WHERE k.kiad_azon=kiad_azon);

SELECT lelt_szam,k.isbn,cim,ar,kiad_azon FROM konyv as k,peldany as p WHERE p.isbn=k.isbn and ar>(SELECT avg(ar) FROM peldany, konyv WHERE k.kiad_azon=kiad_azon);


lelt_szam isbn   cim ar kiad_azon


L001 100001 TUSKEVAR 1100 K002

L002 100001 TUSKEVAR 1100 K002

L003 100001 TUSKEVAR 1150 K002

L004 100002 EGRI CSILLAGOK 800 K001

L005 100002 EGRI CSILLAGOK 800 K001

L006 100003 KOSZIVU EMBER FIAI 1200 K001


Pl: Lisázzuk ki azokat a műveket, amelyek kölcsönözhetők.

SELECT szerzo,cim

FROM konyv

WHERE isbn in (select isbn From peldany

where kolcs_e=1);

Listázzuk ki azokat a műveket, amelyeket Londonban adtak ki, és van kölcsönözhető példány belőlük.

Táblákban kódolt hierarchiák

SELECT [ALL] | [DISTINCT] ,kifejezés [aliasnév]]...

FROM táblanév

CONNECT BY PRIOR oszlopnév1= oszlopnév2

START WITH oszlopnév=kifejezés;

A CONNECT BY részben adható meg a hierarchiát kódoló két oszlop neve (az oszlopnév1 az alacsonyabb, míg a oszlopnév2 a magasabb szinten lévő adat a hierarchiában).

A visszakeresés kiindulási pontját a START WITH után lehet megadni.

Példa:

Listázzuk ki NAGY KLARA összes beosztottját!

SELECT LPAD(' ', 2*LEVEL)||VNEV||UNEV STRUKTURA,LEVEL,D_AZON,FONOK

FROM DOLGOZO

CONNECT BY PRIOR D_AZON = FONOK START WITH VNEV='NAGY' AND UNEV=’KLARA’;


STRUKTURA LEVEL D_AZON FONOK

-------- ----- ------ -----

NAGY KLARA 1 D01

KISS TEREZ 2 D02 D01

SZILARD ISTVAN 3 D04 D02

BARNA PETER 2 D03 D01

KEREK EMIL 3 D05 D03

FUTO ERZSEBET 2 D06 D01


Listázzuk ki NAGY KLARA összes közvetlen beosztottját!

SELECT LPAD(' ', 2*LEVEL)||VNEV||UNEV STRUKTURA,LEVEL,D_AZON,FONOK

FROM DOLGOZO

WHERE level=2

CONNECT BY PRIOR D_AZON = FONOK START WITH VNEV='NAGY' AND UNEV=’KLARA’;


Számítsuk ki a különböző vezetői szinteken az átlagfizetést!

SELECT LEVEL,AVG(FIZETES)

FROM DOLGOZO

CONNECT BY PRIOR D_AZON = FONOK START WITH VNEV='NAGY' AND UNEV=’KLARA’

GROUP BY LEVEL;

feladatok

Határozzuk meg, hány londoni kiadó van az adatbázisunkban.

Határozzuk meg, kik azok a debreceniek, akik 1990 februárjában iratkoztak be.

Határozzuk meg, hány darab kölcsönözhető, és hány darab köteles példány van a könyvtárunkban.

Határozzuk meg, hány darab 1994 január 1-től régebbi kölcsönözhető mű (létezik kölcsönözhető példánya) van a könyvtárunkban.

Melyik kiadótól van a legrégebbi könyvünk.

Listázzuk ki az olvasókat és adataik mellet azt, hogy az általuk legrégebben kivitt példány hány hete van náluk, névsor szerint rendezve.

Listázzuk ki a FEKETE ISTVAN által írt könyveket.

Irassuk ki azokat a könyveket, amelyekre egynél több előjegyzés van.

Irassuk ki azokat a könyveket, amelyek drágábbak, mint a TANKONYVKIADO által kiadott könyvek átlagára.

Irassuk ki, hogy az egyes szerzők hány könyvet írtak, névsor szerint rendezve.

Irassuk ki, hogy az egyes olvasóknál hány példány van kint, darabszám szerint csökkenően rendezve, és a listában csak azok legyenek benne, akiknél legalább két könyv van.

Irassuk ki, hogy az egyes olvasók hány könyvre jegyeztek elő.

Hány olvasónak nincs még figyelmeztetése (okod IS NULL).

Mennyi pénz szükséges a jelenlegi dolgozók havi bérének 10 %-os emeléséhez.

Irassuk ki, hogy az EGRI CSILLAGOKra jegyeztek-e elő, és ha igen, akkor ki(k).

Határozzuk meg a könyvtárosok átlagfizetését.

Irassuk ki BARNA PETER szintjén az átlagfizetést.

Irassuk ki az EGRI CSILLAGOK című könyv bent lévő példányait.

Kiviheti-e GIPSZ JAKAB az TUSKEVAR című könyvet? És az EGRI CSILLAGOKat.

Listázzuk ki a CIMVAL változó által meghatározott könyvből bent lévő kivihető (kölcsönözhető és nincs kikölcsönözve) példányokat.


megoldások

SELECT COUNT(kiad_azon) FROM kiado WHERE varos=’LONDON’;

SELECT * FROM olvaso WHERE lakcim LIKE ‘DEBRECEN %’ AND beir_dat<’01-MAR-1990’ AND beir_dat>=’01-FEB-1990’;

SELECT kolcs_e, COUNT(*) FROM peldany GROUP BY kolcs_e;

SELECT COUNT(ISBN) FROM konyv WHERE kiad_dat<’01-JAN-1994’ AND ISBN IN (SELECT ISBN FROM peldany WHERE kolcs_e=1);

SELECT cim,kiad_dat,a.* FROM kiado a, konyv k WHERE k.kiad_azon=a.kiad_azon AND kiad_dat=(SELECT MIN(kiad_dat) FROM konyv);

SELECT o.*, (sysdate-kolcs_dat)/7 FROM olvaso o,kolcson k WHERE o.o_azon=k.o_azon AND kolcs_dat = (SELECT MIN(kolcs_dat) FROM kolcson WHERE o_azon=o.o_azon);

SELECT * FROM konyv WHERE ISBN IN (SELECT ISBN FROM irta i, szerzo s WHERE i.szerzo_azon=s.szerzo_azon AND vnev=’FEKETE’ AND unev=’ISTVAN’);

SELECT * FROM konyv WHERE ISBN IN (SELECT ISBN FROM elojegy GROUP BY ISBN HAVING COUNT(ISBN)>1);

SELECT * FROM konyv WHERE ar>(SELECT AVG(NVL(ar,0)) FROM konyv k, kiado a WHERE a.kiad_azon=k.kiad_azon (+) AND kiad_nev=’TANKONYVKIADO’);

SELECT MAX(vnev), MAX(unev), COUNT(s.szerzo_azon) FROM szerzo s, irta i
WHERE s.szerzo_azon=i.szerzo_azon
GROUP BY s.szerzo_azon
ORDER BY MAX(vnev), MAX(unev);

SELECT MAX(vnev), MAX(unev), COUNT(NVL(lelt_szam,0)) FROM olvaso o, kolcson k
WHERE o.o_azon=k.o_azon (+)
GROUP BY o.o_azon
HAVING COUNT(NVL(lelt_szam,0))>1
ORDER BY COUNT(NVL(lelt_szam,0)) DESC;

SELECT MAX(vnev), MAX(unev),COUNT(NVL(ISBN,0)) FROM olvaso o, elojegy e
WHERE o.o_azon=e.o_azon (+)
GROUP BY o.o_azon;

SELECT * FROM olvaso WHERE okod IS NULL OR okod=0;

SELECT SUM(1.1*fizetes-fizetes) FROM dolgozo;

SELECT * FROM olvaso WHERE o_azon in (SELECT o_azon FROM elojegy e,konyv k
WHERE k.ISBN=e.ISBN AND cim=’EGRI CSILLAGOK’);

SELECT AVG(fizetes) FROM dolgozo WHERE beosztas=’KONYVTAROS’;

SELECT AVG(fizetes) FROM dolgozo
WHERE LEVEL=(SELECT LEVEL FROM dolgozo CONNECT BY PRIOR d_azon=fonok START WITH vnev=’BARNA’ AND unev=’PETER’)
CONNECT BY PRIOR d_azon=fonok START WITH vnev=’BARNA’ AND unev=’PETER’;

SELECT lelt_szam FROM peldany MINUS SELECT k.lelt_szam FROM kolcson k, peldany p WHERE k.lelt_szam=p.lelt_szam AND ISBN = (SELECT ISBN FROM konyv WHERE cim=’EGRI CSILLAGOK’);

GIPSZ JAKABnál kint lévő könyvek száma kisebb-e, mint a maximálisan kivihető könyvek száma (3)?
SELECT COUNT(NVL(lelt_szam,0))<3 FROM olvaso o, kolcson k
WHERE o.o_azon=k.o_azon (+) AND vnev=’GIPSZ’ AND unev=’JAKAB’
 Van-e jelenleg az TUSKEVAR ból példány GIPSZ JAKABnál?
SELECT vnev,unev FROM olvaso o, kolcson k
WHERE o.o_azon=k. o_azon AND vnev=’GIPSZ’ AND unev=’JAKAB’ AND lelt_szam IN
(SELECT lelt_szam FROM konyv k, peldany p WHERE k.ISBN=p.ISBN AND cim=’TUSKEVAR’);
Az előjegyzési sorban GIPSZ JAKAB előtt lévők száma kisebb-e, mint ahány szabad, kivihető példány van az TUSKEVARból jelenleg a könyvtárban?
Az előjegyzési sorban GIPSZ JAKAB előtt lévők száma:
SELECT COUNT(e.o_azon) FROM olvaso o, elojegy e WHERE o.o_azon=e.o_azon AND ISBN=(SELECT ISBN FROM konyv WHERE cim=’ TUSKEVAR’) AND eloj_dat < (SELECT eloj_dat FROM olvaso o, elojegy e WHERE o.o_azon=e.o_azon AND vnev=’GIPSZ’ AND unev=’JAKAB’);
Hány szabad, kivihető példány van az TUSKEVARból?
SELECT COUNT(p.lelt_szam) FROM peldany p, kolcson k WHERE p.lelt_szam =k.lelt_szam (+) AND kolcs_e=1 AND o_azon is NULL AND ISBN = (SELECT ISBN FROM konyv WHERE cim=’ TUSKEVAR’);
Az EGRI CSILLAGOK című könyv esetén a megoldás ugyanez, érdemes ilyen esetekben változókat használni (cim=&CIMVALT).

SELECT p.lelt_szam FROM peldany p, kolcson k WHERE p.lelt_szam =k.lelt_szam (+) AND kolcs_e=1 AND o_azon is NULL AND ISBN = (SELECT ISBN FROM konyv WHERE cim=&CIMVAL);


Találat: 788