1.gyak.
Adatbázisbeli
objektumok, táblák és oszlopai
Követelmények
ismertetése: Gyakorlati
követelmények és
ZH
infó Kérem, hogy az
aktuális előadás
anyagából
felkészülten jöjjön a
gyakorlatra,
a félév
során a gyakorlatokok Kiss
Attila AB2EA előadás
anyagára épülnek.
További hasznos olvasmányok:
> Tankönyv: Molina-Ullman-Widom:
Adatbázisrendszerek
megvalósítása, 2001.
> Oracle
Dokumentáció
Honnan kaphatunk információkat az
adatbázisban
tárolt dolgokról és azok
tulajdonságairól? -> Az
adatszótár nézetekből, amyeleknek neve
általában
a köv.karakterláncok valamelyikével kezdődik:
USER (az adott user tulajdonában
lévő
objektumok) pl. USER_TABLES
ALL (amihez joga van az adott usernek)
pl. ALL_TABLES
DBA (az adatbázis
összes objektuma) pl.
DBA_TABLES
Milyen dolgok vannak az
adatbázisban? Például
táblák,
nézetek, indexek,
stb.
- Minden fel van sorolva a
típusával együtt a DBA_OBJECTS
adatszótárban.
- Minden adatbázisbeli objektumnak van egy egyedi
objektum
azonosítója (OBJECT_ID),
és amelyikhez tartozik szegmens, annak egy
úgynevezett adatobjektum
azonosítója is van
(DATA_OBJECT_ID). Amelyik objektumhoz nem tartozik szegmens,
annak az adatobjektum
azonosítója NULL vagy 0, és
ezeknek csak a
definíciója van (szövegesen)
tárolva a
szótárban.
Ezen utóbbi objektumokra azt mondjuk, hogy
tényleges tárolást nem
igénylő
objektumok.
Feladatok:
1.01. Kérdezzük le a DBA_OBJECTS, ALL_OBJECTS
és
USER_OBJECTS nézeteket.
1.02. Kinek a tulajdonában van a DBA_TABLES nevű
nézet valamint a DBA_TABLES
nevű
szinonima? (A két
lekérdezés megmagyarázza, hogy
miért tudjuk elérni őket.)
1.03. Milyen típusú objektumai vannak az orauser
nevű
felhasználónak az adatbázisban?
(a
katalógustáblákban nagy betűvel vannak
az adatok
'orauser' helyett 'ORAUSER')
1.04. Hány különböző
típusú objektum van nyilvántartva az
adatbázisban? Melyek ezek a típusok?
1.05. 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)
1.06. 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
1.07. Kik azok a felhasználók, akiknek
több
mint 10 féle objektumuk van?
1.08. Kik azok a felhasználók, akiknek van
triggere
és nézete is?
1.09. Kik azok a felhasználók, akiknek van
nézete, de nincs triggere?
1.10. Kik azok a felhasználók, akiknek
több
mint 40 táblájuk, de maximum 37 indexük
van?
G2. Táblák
és oszlopai, megszorítások
(DBA_TABLES, DBA_VIEWS, DBA_TAB_COLUMNS, DBA_CONSTRAINTS)
Mely táblák vannak egy adott
felhasználó tulajdonában?
- A DBA_TABLES adatszótár az
összes
táblát felsorolja, például
HR séma
táblái ezek:
SELECT table_name FROM dba_tables WHERE owner='HR';
Mit tudhatunk a táblák oszlopairól,
milyen nevű és típusú oszlopai vannak,
sorrendjük, stb.
- A DBA_TAB_COLUMNS adatszótár a
táblák
oszlopairól tartalmaz információt.
Feladatok:
2.01. Az Oracle
SQL Language Reference
segítségével (Data
Types típusokkal,
vagy az innen
összeállított oszloptípusok segédlettel)
hozzunk
létre
táblákat,
majd keressük
meg az
adatszótár
nézetekben, hogy milyen
információkat
találhatunk a
táblákról és a
táblák
oszlopairól. Adatszótár
nézetek:
DBA_OBJECTS,
DBA_TABLES
és
DBA_TAB_COLUMNS
--
Például
dept,
emp, salgrade
táblák közvetlen
létrehozása és
sorokkal való
feltöltése az INSERT 1.alakja: cr_dept_emp.sql
-- A dept, emp, salgrade, dummy, customer, ord, item,
product,
price
táblák
valamint a sales
nézettábla létrehozása: cr_dept_stb_sales.sql
-- Például
Example
2-1 CREATE
TABLE
utasítás alapján hozzunk
létre saját táblát:
DROP TABLE MY_EMPLOYEES;
CREATE TABLE MY_EMPLOYEES (...);
majd HR.EMPLOYEES
táblából az
INSERT 2.alakjával (alkérdéssel)
töltsük
fel.
-- Keressük ki erről a
saját táblánkról az
adatszótár
nézetekben tárolt
információkat!
2.02. Hozzunk létre táblákat
megszorításokkal, majd nézzük
meg hogyan
jelennek meg
az oszlopok
és a
megszorítások a
DBA_CONSTRAINTS katalógustáblában is.
2.03. Hozzunk létre
nézettáblákat, majd
nézzük
meg a DBA_VIEWS katalógustáblában.
2.04. Hány oszlopa van a sila.emp
táblának?
2.05. Milyen típusú a sila.emp tábla
6.
oszlopa?
2.06. Adjuk meg azoknak a tábláknak a
tulajdonosát
és nevét, amelyeknek van 'Z' betűvel
kezdődő oszlopa.
2.07. Adjuk meg azoknak a tábláknak a
nevét,
amelyeknek legalább 8 darab dátum
tipusú oszlopa
van.
2.08. Adjuk meg azoknak a tábláknak a
nevét,
amelyeknek 1. es 4. oszlopa isVARCHAR2 tipusú.