A rendszerkatalógus maga is egy adatbázisnak
tekinthető,
amit lekérdezve egyre többet
tudhatunk meg az ORACLE adatbázisban tárolt
dolgokról és azok
tulajdonságairól.
Elnevezésük: DBA_..., ALL_..., USER_...
- Kinek a tulajdonában van a DBA_TABLES nevű
nézet (illetve a DUAL nevű tábla)?
- Kinek a tulajdonában van a DBA_TABLES nevű
szinonima (illetve a DUAL nevű)?
(Az iménti két
lekérdezés megmagyarázza, hogy
miért tudjuk elérni őket.)
- Milyen típusú objektumai vannak az orauser nevű
felhasználónak az adatbázisban?
- Hány különböző
típusú objektum van nyilvántartva az
adatbázisban?
- Melyek ezek a típusok?
- Kik azok a felhasználók, akiknek több
mint 10 féle objektumuk van?
- Kik azok a felhasználók, akiknek van triggere
és nézete is?
- Kik azok a felhasználók, akiknek van
nézete, de nincs triggere?
- Kik azok a felhasználók, akiknek több
mint 40 táblájuk, de maximum 37 indexük
van?
- Melyek azok az objektum típusok, amelyek
tényleges tárolást
igényelnek, vagyis
tartoznak hozzájuk adatblokkok? (A
többinek csak a definíciója
tárolódik adatszótárban)
- Melyek azok az objektum típusok, amelyek nem
igényelnek tényleges
tárolást, vagyis nem
tartoznak hozzájuk adatblokkok?
(Ezeknek csak a definíciója
tárolódik adatszótárban)
Az utóbbi két
lekérdezés metszete nem üres. Vajon
miért? -> lásd majd
partícionálás
Táblák
oszlopai
(DBA_TAB_COLUMNS)
- Hány oszlopa van a sila.emp táblának?
- Milyen típusú a sila.emp tábla 6.
oszlopa?
- Adjuk meg azoknak a tábláknak a
tulajdonosát
és nevét, amelyeknek van 'Z' betűvel
kezdődő oszlopa.
- Adjuk meg azoknak a tábláknak a
nevét,
amelyeknek legalább 8 darab dátum
tipusú oszlopa
van.
- Adjuk meg azoknak a tábláknak a
nevét,
amelyeknek 1. es 4. oszlopa isVARCHAR2 tipusú.
HÁZI
FELADAT
1.) Írjunk meg egy plsql procedúrát,
amelyik a
paraméterül kapott karakterlánc
alapján
kiírja azoknak a
tábláknak a
nevét és tulajdonosát, amelyek az
adott
karakterlánccal
kezdődnek. (Ha a paraméter
kisbetűs, akkor
is működjön a procedúra!)
PROCEDURE tabla_kiiro(p_kar
VARCHAR2)
A fenti procedúra
segítségével írjuk ki a E
betűvel kezdődő
táblák nevét és
tulajdonosát.
2.) Írjunk meg egy plsql procedúrát,
amelyik a
paraméterül kapott táblára
kiírja
az őt létrehozó
CREATE TABLE
utasítást.
PROCEDURE cr_tab(p_owner VARCHAR2,
p_tabla
VARCHAR2)
Elég ha az oszlopok
típusát
és DEFAULT értékeit
kíírja,
és elég ha a következő
típusú
oszlopokra működik.
CHAR, VARCHAR2, NCHAR, NVARCHAR2, BLOB, CLOB,
NCLOB,
NUMBER, FLOAT, BINARY_FLOAT, DATE, ROWID
Teszteljétek a procedúrát az
alábbi
táblával.
CREATE TABLE tipus_proba(c10 CHAR(10) DEFAULT
'bubu',
vc20 VARCHAR2(20),
nc10 NCHAR(10), nvc15 NVARCHAR2(15), blo
BLOB, clo
CLOB, nclo NCLOB,
num NUMBER, num10_2
NUMBER(10,2), num10
NUMBER(10) DEFAULT 100,
flo FLOAT, bin_flo binary_float DEFAULT
'2e+38', bin_doub binary_double DEFAULT 2e+40,
dat DATE DEFAULT TO_DATE('2007.01.01',
'yyyy.mm.dd'), rid
ROWID);