Professional Documents
Culture Documents
Ders erii
Tablo (Table) & Kstlamalar (Constraints) ndeks (Index) Grnt (View) Synonym & Sequence Hareket (Transaction) leme Kullanc, Rol ve Yetki lemleri Tetikleyici (Trigger) Sakl Yordam (Stored Procedure)
Tablo Yaratma
CREATE TABLE scott.emp( empno NUMBER CONSTRAINT pk_emp PRIMARY KEY, ename VARCHAR2(10) CONSTRAINT nn_ename NOT NULL CONSTRAINT upper_ename CHECK (ename = UPPER(ename)), job VARCHAR2(9), mgr NUMBER CONSTRAINT fk_mgr REFERENCES scott.emp(empno), hiredate DATE DEFAULT SYSDATE, sal NUMBER(10,2) CONSTRAINT ck_sal CHECK (sal > 500), comm NUMBER(9,0) DEFAULT NULL, deptno NUMBER(2) CONSTRAINT nn_deptno NOT NULL CONSTRAINT fk_deptno REFERENCES scott.dept(deptno) );
Kstlamalar tablolar oluturulurken tanmlanabilecei gibi tablolar oluturulduktan sonra da tanmlanabilirler. Ancak tabloya nceden girilmi olan veriler varsa, bu verilerin tanmladmz kstlamaya uymas gerekir.
Unique Constraint
Baz durumlarda, bir tabloda birincil anahtar alann yan sra baka baz stunlardaki verilerin de tekrarlanmamas istenebilir. Bu trden alanlar iin Unique Constraint tanm yaplr. Unique Constrainti, Primary Key Constraintten ayran en nemli iki zellik,
Unique bir tabloda birden fazla olabilir. Ancak Primary Key tablo bana sadece bir adet alan olabilir. Unique Constraint tanml bir alan NULL deerler kabul edebilir.
Check Constraint
Bir stuna girilebilecek deerleri, belli kyaslara kar kontrol eden kstlayc trdr ve farkl ama iin kullanlabilir:
Bir stuna girilebilecek deerleri belli bir kme ile kstlamak iin Bir stuna girilebilecek deerleri belli bir formata uygunluunu denetlemek iin Bir stuna girilebilecek deerleri, baka stunlar stnden bir kyas ile denetlemek iin
CREATE TABLE tablo-ismi( stun tanmlamalar..., CONSTRAINT constraint-ismi CHECK(ifade) FOR stun-ismi )
ndeks Kullanm
ndeksler verilere hzl eriim amacyla kullanlr. OLAP sistemlerde mmkn olduu kadar ok indeks kullanlr, OLTPde ise fazlas uygulamaya zarar verebilir (zellikle ok sk gncellenen tablolarda). Primary Keyler otomatik olarak indekslenir, Foreign Keyler de genellikle indekslenmesi gereken alanlardr. WHERE koulu ile seilen stunlar, ayn srada indeks yaplmaldr.
ndeks Yaratma
Aadaki iki indeks ayn anda mevcut olabilir, nk stun sralar farkldr. CREATE INDEX emp_idx1 ON emp (ename, job); CREATE INDEX emp_idx2 ON emp (job, ename);
View (Grnt)
Gerekte olmayan tablolardr. Sadece SELECT ifadesinden ibarettirler. Neden view kullanlr?
1. 2. 3. 4. Veri eriimini snrlamak iin Karmak sorgular kolay hale getirmek iin Veri bamszln salamak iin Ayn verinin farkl grnmlerini sunmak iin
Eer Primary Key Viewda yer alyorsa DML (insert, delete, update) ilemleri o view zerinde uygulanabilir.
View Yaratma
CREATE VIEW emp_view AS SELECT empno, ename, sal, loc FROM emp, dept WHERE emp.deptno = dept.deptno AND dept.deptno = 10; CREATE VIEW dept20 AS SELECT ename, sal*12 annual_salary FROM emp WHERE deptno = 20;
Synonym
Tablo, view, sequence, procedure, function, package veya baka bir synonym iin alternatif bir isimdir. CREATE SYNONYM market FOR scott.market_research; CREATE PUBLIC SYNONYM emp FOR scott.emp;
Public olarak tanmlanrsa, dier kullanclar scott.emp yazmadan sadece emp yazarak ulaabilirler.
Sequence
Otomatik olarak artan saylar retmek iin kullanlr.
CREATE SEQUENCE seq_supplier MINVALUE 1 MAXVALUE 999999999999999999999 START WITH 1 INCREMENT BY 1 CACHE 20; INSERT INTO (seq_supplier.NEXTVAL, )
Transaction Nedir?
Daha kk paralara ayrlamayan en kk ilem ynna Transaction denir. Geerli kabul edilmesi bir dizi ilemin tamamnn yolunda gitmesine bal durumlarda transaction kullanlr. Transaction blou ya hep ya hi mant ile alr. Ya tm ilemler dzgn olarak gerekleir ve geerli kabul edilir veya bir ksm ilemler yolunda gitse bile, blok sona ermeden bir ilem bile yolunda gitmese hibir ilem olmam kabul edilir. Bir transaction COMMIT ilemi ile tamamlanr. Eer ROLLBACK ilemi uygulanrsa tm transaction ilemleri geri alnr.
Transaction rnei
UPDATE savings_accounts SET balance = balance 500 WHERE account = 3209; UPDATE checking_accounts SET balance = balance + 500 WHERE account = 3208; INSERT INTO journal VALUES (journal_seq.NEXTVAL, '1B' 3209, 3208, 500); COMMIT;
Kullanc Yaratma
Kullanc yaratma CREATE USER komutu ile yaplr. Bu komutu altrma yetkisi genellikle DBA yada gvenlik yneticisi olan kiilerde vardr.
CREATE USER AHMET IDENTIFIED BY A853B DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT;
Kullancnn Ad
ifresi
Kullancy Silme
Dier nesnelerde olduu gibi kullanc silmede de DROP komutu kullanlr:
DROP USER AHMET;
Eer kullancnn emas altnda nesneler varsa bu nesnelerin de silinmesi iin CASCADE ifadesi kullanlmaldr:
DROP USER AHMET CASCADE;
Eer kullanc sistemde bal durumda ise balantsn kesene kadar silinemez.
Sistem Yetkileri
Kullanclarn sistemde neler yapabileceklerini snrlayan tanmlamalara sistem yetkileri denir. lk slaytta oluturulan kullancnn henz hibir yetkisi yoktur. Sisteme balanabilmesi iin CREATE SESSION yetkisinin kullancya verilmesi gerekir:
GRANT CREATE SESSION TO AHMET;
GRANT komutu ile ayn anda birden ok yetki birden ok kullancya verilebilir:
GRANT CREATE TABLE, UNLIMITED TABLESPACE TO AHMET, MEHMET;
Nesne Yetkileri
Bir kullancnn veri tabanndaki nesneler zerinde ne tr yetkileri olduunu tanmlamak iin kullanlan yapya nesne yetkisi denir. Bir kullanc kendi yaratt tablolar zerinde SELECT yetkisine sahiptir, fakat baka emalardaki tablolar zerinde SELECT sorgusu yapabilmesi iin gerekli yetkinin verilmesi gerekir.
GRANT yetkiler [(stunlar)] Tm kullanclar ON nesneler TO kullanclar [roller] [PUBLIC];
AHMET kendisine ait olan OGRENCILER tablosunun sadece ADI ve SOYADI alanlar zerinde UPDATE yapma yetkisini MEHMETe vermek isterse:
GRANT UPDATE (ADI, SOYADI) ON OGRENCILER TO MEHMET;
Rol
Rol, birok yetkinin bir araya getirilmesi ile oluan yetki gruplarna verilen isimdir. Bir rol kendi iinde baka rolleri de ierebilir. rnein Oracle 11gde DBA Rolnn;
16 Rol 202 Sistem Yetkisi 284 Nesne Yetkisi
vardr.
* Oracle Enterprise Manager zerinden grlebilir.
Rol Yaratma
Rol de bir nesne olduu iin CREATE komutu ile yaratlr. Fakat dier nesnelerden farkl olarak, yaratan kullancnn emas altnda bu roller grnmez (rol bir kiiye ait deildir).
CREATE ROLE DENEME; GRANT CREATE TABLE, CREATE VIEW, UNLIMITED TABLESPACE TO DENEME; GRANT DENEME TO AHMET; GRANT DENEME TO ALTAN WITH ADMIN OPTION;
SYSOPER: Bu yetki ile veritabanna balanan kullanc temel iletim grevlerini yapma iznine sahip olur, fakat kullanc verilerini gremez.
STARTUP ve SHUTDOWN ilemlerini gerekletirir. ALTER DATABASE: open, mount, back up CREATE SPFILE (Sistem Parametre Dosyas yaratma) ARCHIVELOG ve RECOVERY
Trigger (Tetikleyici)
Bir veri tabannda belirli bir tabloda deiiklik olduunda otomatik olarak bir ilemi balatan bir dizi SQL ifadesidir. Bir trigger bir olaydan (insert, delete ya da update ifadelerin belirtilen tabloda olumas) ve bir hareketten (ilgili prosedr) oluur. rnein; personel tablosundan bir kaydn silinmesi olay gerekletiinde, eski_personel tablosuna personelin numarasn ve iten ayrlma tarihini belirtmek iin o anki tarihi kaydeden bir prosedr yazlmas ile bir tetikleyici oluturulabilir.
Trigger Yaratma
CREATE [or REPLACE] TriggerName [ BEFORE | AFTER ] [ DELETE | INSERT | UPDATE [of ColumnName ] ] ON [User.]TableName [ FOR EACH ROW ] [ WHEN Condition ] BEGIN [PL/SQL Block] END ; BEFORE / AFTER: DML ifadesinden nce / sonra tetikle FOR EACH ROW: Etkilenen her satr iin tekrar tetikle WHEN: Tetikleyiciye koul ekler
Trigger rnei
Package (Paket)
Birbiriyle ilikili olan prosedrlerin, fonksiyonlarn, deikenlerin ve dier yaplarn bir btn haline getirildii ve veritabannda sakland yapdr. Bir global deikenin tanmlanp paket iindeki herhangi bir prosedrde arlabilmesi gibi ekstra zellikler salar. Ayrca paketler bir btn halinde bir kerede parse edilip, derlenip, bellee yklendii iin performans art da salar. Paketlerde genellikle tanmlama (specification) ve gvde (body) olmak zere iki ksm bulunur.
Package rnei
CREATE PACKAGE emp_actions AS -- package specification PROCEDURE hire_employee (empno NUMBER, ename CHAR, ...); PROCEDURE fire_employee (emp_id NUMBER); END emp_actions;
CREATE PACKAGE BODY emp_actions AS -- package body PROCEDURE hire_employee (empno NUMBER, ename CHAR, ...) IS BEGIN INSERT INTO emp VALUES (empno, ename, ...); END hire_employee; PROCEDURE fire_employee (emp_id NUMBER) IS BEGIN DELETE FROM emp WHERE empno = emp_id; END fire_employee; END emp_actions;