160 likes | 261 Views
Az Oracle SQL 4.a. Sorozatok, pszeudooszlopok. A rádiótelefonokat kérem KIKAPCSOLNI!. Sorozatok. Mi a sorozat?. Egyedi egész számérték előállítására szolgál A számok növekvő vagy csökkenő sorozatot is alkothatnak Nem biztos, hogy az előállított számok sorozata hézagmentes lesz
E N D
Az Oracle SQL 4.a. Sorozatok, pszeudooszlopok Markó Tamás, PTE
A rádiótelefonokat kérem KIKAPCSOLNI! Markó Tamás, PTE
Sorozatok Markó Tamás, PTE
Mi a sorozat? • Egyedi egész számérték előállítására szolgál • A számok növekvő vagy csökkenő sorozatot is alkothatnak • Nem biztos, hogy az előállított számok sorozata hézagmentes lesz • Leggyakrabban jelentés nélküli kulcsértékek („azonosítók”) előállítására használjuk Markó Tamás, PTE
Sorozat létrehozása • Példa: 1-gyel kezdődő 1 lépésközű növekvő sorozat:CREATE SEQUENCE gyaksor; • Példa: 100-zal kezdődő 10 lépésközű növekvő sorozat:CREATE SEQUENCE szazas_sor START WITH 100 INCREMENT BY 10; Markó Tamás, PTE
Sorozat következő értékének lekérdezése • Példa:SELECT gyaksor.NEXTVAL FROM DUAL; • A létrehozás utáni első lekérdezés a sorozat kezdőértékét adja vissza • Minden lekérdezés növeli a sorozat értékét a megadott lépésközzel Markó Tamás, PTE
Sorozat aktuális értékének lekérdezése • Példa:SELECT gyaksor.CURRVAL FROM DUAL; • Ugyanazt az értéket adja, mint az előző NEXTVAL lekérdezése • Nem változtatja meg a sorozat értékét • Csak akkor működik, ha előtte a NEXTVAL-t már lekérdeztük az adott munkamenetben! Markó Tamás, PTE
Sorozat törlése • Példa:DROP SEQUENCE gyaksor; Markó Tamás, PTE
Pszeudooszlopok Markó Tamás, PTE
Mi az a pszeudooszlop? • „Beépített”, rögzített nevű és tartalmú oszlop • Mindig létezik, nem módosítható, nem kötelező használni • Az Oracle szóhasználatában a sorozatoknál látott NEXTVAL és CURRVAL is pszeudooszlop • További pszeudooszlopok: • ROWID • ROWNUM • LEVEL • XMLDATA ezekre vonatkozóan lásd a gyári dokumentációt Markó Tamás, PTE
A ROWID pszeudooszlop • Egy string, ami az adott sor (háttértárolón lévő) fizikai címéről ad információt speciális formában • Értéke egy adott tábla minden sorára különböző • Ilyen adatok tárolására van egy külön ROWID adattípus is • Egy rekord leggyorsabb elérése a… WHERE ROWID = …típusú kifejezéssel lehetséges • Példa:SELECT cikkszam, ROWID FROM cikk; Markó Tamás, PTE
A ROWNUM pszeudooszlop • A megadja, hogy a SELECT utasítás hányadikként választotta ki a sort • A sorszámozás 1-gyel kezdődik • A sorszámok kiosztása még az ORDER BY előtt megtörténik:SELECT cikknev, ROWNUM FROM cikk;SELECT cikknev, ROWNUM FROM cikk ORDER BY cikknev;SELECT cikknev, ROWNUM FROM cikk ORDER BY egysegar; Markó Tamás, PTE
A visszaadott sorok számának korlátozása 1. • Pl. az első három sor lekérdezése:SELECT cikkszam, egysegar FROM cikk WHERE ROWNUM<=3; • Az utolsó valahány sort nem lehet így lekérdezni!SELECT cikkszam, egysegar FROM cikk WHERE ROWNUM>3; soha nem ad vissza egyetlen sort sem! Markó Tamás, PTE
A visszaadott sorok számának korlátozása 2. • Pl. a 2. - 4. sor lekérdezése:SELECT cikkszam, egysegar FROM (SELECT cikkszam, egysegar, ROWNUM as sor FROM cikk) WHERE sor >=2 AND sor <= 4; a belső SELECT sorszámaira a külső SELECT-ben adunk korlátozást Markó Tamás, PTE
„Top-N query” • Pl. a három legolcsóbb cikk lekérdezése:SELECT * FROM (SELECT cikkszam, egysegar, FROM cikk ORDER BY egysegar) WHERE ROWNUM <= 3; a belső SELECT rendez, a külső SELECT korlátoz (a saját sorszámaira) Markó Tamás, PTE
A visszaadott sorok számának korlátozása rendezett adatokra • Pl. a 2. - 4. legolcsóbb cikk lekérdezése:SELECT cikkszam, egysegar FROM (SELECT cikkszam, egysegar, ROWNUM as sor FROM (SELECT cikkszam, egysegar FROM cikk ORDER BY egysegar) WHERE sor >=2 AND sor <= 4; a belső SELECT rendez, a középső megsorszámozza, a külső SELECT korlátoz Markó Tamás, PTE