QL (lekérdezőnyelv) =================== lekérdezés --> SELECT ... DDL (adatdefiníciós nyelv) ========================== Típusok: CHAR(méret): fix hosszú karakterlánc; hoszz megadása kötelező. VARCHAR2(maximális méret): változó hosszúságú karakterlánc; hossz megadása kötelező. NUMBER(precision, scale): fixpontos szám értékek; precision a számjegyek száma, scale a tizedespont jobb oldalán álló számjegyek száma. Megkötés nélkül is használható: NUMBER. A NUMBER(p) ekvivalens NUMBER(p, 0)-val, valamint NUMBER(36) ekvivalens INTEGER-rel és INT-tel. FLOAT: lebegőpontos szám. DATE: dátum típus; mindig egy (év, hónap, nap, óra, perc, másodperc) időpillanat megfelelője. Táblák ------ attribútum megszorítások (constraints), default értékek: NOT NULL PRIMARY KEY REFERENCES tábla(oszlop) UNIQUE CHECK (feltétel) DEFAULT érték CONSTRAINT megsz_név : lehetséges elnevezni a constrainteket tábla létrehozása: CREATE TABLE (oszlop típus, ...) CREATE TABLE (oszlop típus megszorítás(ok), ...) CREATE TABLE ... AS SELECT ... : tábla másolása Példa: create table cd ( id number primary key, artist varchar2(25) not null, album varchar2(25) not null, year number(4) check(year > 0), length number check(length > 0), lend_to varchar2(25), lend_date date default sysdate ) Tábla módosítása: ALTER TABLE ... ADD ... oszlop létrehozása MODIFY ADD CONSTRAINT DISABLE CONSTRAINT ENABLE CONSTRAINT RENAME TO ... átnevezés Példa: alter table cd add constraint cd_uq1 unique (artist, album) Tábla törlése: DROP TABLE ... Nézettábla (view): ------------------ CREATE VIEW ... AS SELECT ... DROP VIEW ... Példa: create view megye_irszam as select megye, count(distinct irszam) irszam_darab from ir_szam group by megye Indexek ------- CREATE INDEX indexnév ON táblanév( attribútumok ) DROP INDEX ... Példa: DML (adatmanipulációs nyelv) ============================ beszúrás: --------- INSERT INTO ... VALUES ( ... ) INSERT INTO ... SELECT ... INSERT INTO tábla (attribútumok) ... : csak a kiemelt attribútumok értékeit adom meg, többi default Példa: insert into cd values ( 99, 'Art1', 'Alb1', 1978, 60, 'Kolcson Kalman', to_date('20041123', 'YYYYMMDD') ) insert into cd (id, artist, album) values ( 100, 'Art1', 'Alb1' ) insert into cd select * from cd_catalog törlés: ------- DELETE FROM t DELETE FROM t WHERE TRUNCATE t Példa: delete from cd where artist = 'Art1' ; módosítás: --------- UPDATE t SET attr = új érték, ... WHERE ... régi értékek, subquery felhasználhatók az új értékhez UPDATE t SET attr = (SELECT ...) ... Példa: update cd set lend_to = null, lend_date = null where lend_to = 'Lelkes Lili' DCL (adatvezérlő nyelv) ======================= Tranzakciókezelés ----------------- COMMIT ROLLBACK SAVEPOINT s ROLLBACK TO s Példa: set AUTOCOMMIT OFF delete from cd ; select * from cd ; rollback ; select * from cd ; delete from cd ; commit ; Objektumszintű jogosultságok ---------------------------- GRANT jogok ON objektum TO user/public GRANT ALL PRIVILEGES ON ... GRANT ... ON ... TO ... WITH GRANT OPTION jogok: ALTER, DELETE, EXECUTE, INDEX, INSERT, READ, REFERENCES, SELECT, SELECT, UPDATE REVOKE jogok ON obj. FROM user REVOKE ALL PRIVILEGES ON ... Példa: grant delete on scsi.cd to public ; revoke delete on cd from public ; 1.feladat --------- a.) Hozz létre egy táblát, amiben van változó hosszúságú karakterlánc (ami ne vehessen fel null értéket, valamint legyen primary key), dátum és szám attribútum. b.) Módosítsd az előző táblát: töröld az egyik előzőleg létrehozott attribútumot, majd végy fel egy új attribútumot. c.) Nevezd át az előző táblát. d.) Szúrj be néhány rekordot a táblába. e.) Egészítsd ki a táblát egy CHECK típusú megszorítással. Próbálj beszúrni olyan sorokat, amik megsértenék ezt a megszorítást. f.) Törölj sorokat a táblában egy adott attribútum értéke alapján. g.) Módosítsd valamely attribútum értékét valamilyen feltétel teljesülése esetén. h.) Hozz létre egy indexet a tábla egy attribútumára, majd szüntesd meg. i.) Adj beszúrási jogot mindenkinek a táblára. j.) Vond vissza ezt a jogot, és add meg újra egy tetszőlegesen választott, konkrét user-nek. k.) Vond vissza a user beszúrási jogát, de adj select jogot mindenkinek. l.) Szüntesd meg az előző táblát, de előtte másold le (csinálj egy ugyanolyat). 2.feladat --------- SCSI.CD_CATALOG táblával: Adott a CD lemezeid nyilvántartása egy táblában: SCSI.CD_CATALOG. A tábla tartalmaz egy CD azonosítót, az előadó nevét, az album címét és hosszát, a kiadás évét, valamint ha esetleg kölcsönadtad valakinek, annak nevét és a kölcsönzés dátumát. a.) Hozz létre egy másolatot a saját sémádban a tábláról és a benne lévő adatokról. b.) A CD-id közül kölcsönadtál még régen egy 'Muse' CD-t 'Szép Szilvi'-nek, amit most visszahozott, viszont cserébe elvitte az összes 'Manu Chao' CD-det (ma). Frissítsd az adatbázist. c.) Töröld az előzőekben létrehozott adatbázistáblát.