Emrah UYSAL 1

Benzer belgeler
BÖLÜM- 8: DİĞER ŞEMA NESNELERİNİ OLUŞTURMA

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME

Emrah UYSAL 1

Emrah UYSAL 1

1. IT bölümünde çalışan tüm çalışanların isimlerini gösteren bir sorgu yazınız.

BÖLÜM- 11: BÜYÜK VERİ KÜMELERİ

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

Emrah UYSAL 1

Oracle da kullanılan veri tipleri:

BÖLÜM- 9: KULLANICI ERİŞİMLERİNİ YÖNETMEK

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

Veri Tabanı Hafta Dersi

Veritabanı Tasarımı. Seriler ile Çalışma

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

VERİ TABANI YÖNETİM SİSTEMLERİ I

BÖLÜM- 13: ALT SORGULAR İLE VERİ İŞLEME

VERİTABANI Veritabanı Yönetimi

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

DELPHİDE SQL KULLANIMI Database İlişkisi

BÖLÜM -2: VERİLERİ SINIRLAMA VE SIRALAMA

SQL'e Giriş 2. CREATE TABLE tabloadı (kolon isimleri ve veri türleri) (BOLUM_NO NUMBER, BOLUM_ADI CHAR(10));

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

Veritabanına Uygulanması

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

VERİ TABANI YÖNETİM SİSTEMLERİ I

EBE-368 Veri Tabanı Yönetim Sistemleri İlişkisel Model (The Relational Model)

SQL Komutları (2) Uzm. Murat YAZICI

Oracle Database 11g: Introduction to SQL

Creating Tables in Oracle

Bölüm 4: DDL Veri Tanımlama Dili

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Veriyi ve Bilgiyi Organize Etmek. Bilgisayar Mühendisliğine Giriş 1

Unutulmuş Özellikler: Oracle Veritabanına Yaptığınız Yatırımı Sonuna Kadar Kullanın

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

BÖLÜM -6: VERİLERİ DEĞİŞTİRMEK

--Tüm personel kayıtlarını seçiniz. SELECT* FROM employees ;

Örnek: HAFTA12B isimli bir kullanıcı tanımlayalım. Bu kullanıcıya gerekli yetkileri verelim.

BÖLÜM- 5: BİRDEN FAZLA TABLODAN VERİ GETİRMEK

Mysql Veritabanı Komutları

«BM364» Veritabanı Uygulamaları

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

Veritabanlarına ve SQL'e Giriş. Devrim GÜNDÜZ. Teknoloji Destek Merkezi --

Veritabanı Tasarımı. DML İşlemleri ve Görünümler

SORGULAR VE ÇEŞİTLERİ II

VERİ TABANI YÖNETİM SİSTEMLERİ-II

ACCESS PLATFORMUNDA SQL

YAPISAL SORGULAMA DİLİ (SQL)

Laboratuvar 6 TABLOLAR VE KISITLAR

Veritabanına Giriş. Oğuzhan Ceylan. 19 Eylül 2011

Emrah UYSAL 1 TABLESPACE ENCRYPTION ORACLE 11G

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU

Veritabanı Tasarımı. İndeksler ve Eşanlamlar

MOBİL UYGULAMA GELİŞTİRME

BMB202. Veritabanı Yönetimi Ders 6. SQL. Erdinç Uzun NKÜ Çorlu Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Veritabanı Tasarımı. Tablo Değiştirme

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

Veri Tabanı Programlamaya Giriş

Veritabanı Tasarımı. Çoklu Satır Alt Sorgular

SQL Deyimleri. Öğr.Gör.Volkan ALTINTAŞ Volkanaltintas.com

ORACLE DERS 1 SQL E GİRİŞ

Veritabanı Yönetim Sistemleri (Başarım Eniyileme Performance Tuning)

Veritabanı Tasarımı. Alt Sorgu Temelleri

Her Yönüyle SQL Enjeksiyonu. OWASP-Türkiye Bünyamin Demir

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

PostgreSQL'de Güvenlik

3. Hafta Tablo İşlemleri BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri Kısıtlamalar (Constraints)

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

3. Hafta Tablo İşlemleri BPR255 Veritabanı Yönetim. Bu Derste Öğrenecekleriniz: 1. Tablo İşlemleri

Liquibase ile Veri Tabanı Değişiklik Yönetimi

Startup ve Shutdown Yöntemleri. ORACLE STARTUP ve SHUTDOWN YÖNTEMLERİ

Çok tablolu sorgulamalar

2- Total de 8000 byte yer tutup 4000 karakter olarak kullanabildiğimiz tip aşağıdakilerden hangisidir?

SQL Kod ile Tablo Oluşturma

İNTERNET PROGRAMCILIĞI HAFTA. MYSQL ile VERİTABANI İŞLEMLERİ - 1. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Veritabanı Oluşturma, Silme

Veritabanı Tasarımı. SQL Deyimi Anatomisi

VERİTABANI. SQL (Structured Query Language)

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

1 - Adi A Harfi İle Biten Kişilerin Listesi İçin Hangisi Kullanılmalıdır? Select * From Kisiler Where Adi End A Select * From Kisiler Where Adi Like

SORGULAR. Öğr.Gör.Volkan Altıntaş

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

KULLANICI TANIMLI FONKSİYONLAR

Sorgudan elde edilen değerin değişkenlere aktarılmasını sağlar. Sorgudan tek satır dönmesi gerekir. Çok satır dönerse hata verir.

Veri Bütünlüğü ve Constraint ler. Veritabanı 1

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL

Veritabanı Tasarımı. Self-Join ve Hiyerarşik Sorgular

SQL e Giriş. Uzm. Murat YAZICI

VİEW (SANAL TABLO) 1. View Nedir? 2. View ler ile Çalışmak 3. View Oluşturmanın Yararları Veri güvenliği; Birim dönüştürmeleri;

İLERİ VERİTABANI SİSTEMLERİ SUAT ÜSTKAN

Veritabanı Tasarımı. Basit Eşleme: Dönüşüm İşlemi

1 ORACLE 11G DATABASE SERVER LE

Transkript:

ORACLE DERS 4 CONSTRAINTS(KISITLAR) Constraintler table yada kolon bazlı güvenilik yani veri güvenliği sağlamada kullanılır,not NULL,CHECK,UNIQUE,PROMARY KEY VE FOREIGN KEY olmak üzere çeşitleri vardır. Constraint e bir isim verilebildiği gibi Oracle Server bizim için SYS_Cxxxx gibi bir isim verebilir.constraint tablonun yaratılma aşamasında oluşturulacağı gibi sonradan da oluşturulabilir.constarintleri USER_CONSTRAINTS altından da takip edebiliriz. SYNTAX : CREATE TABLE [schema.]table (column datatype [DEFAULT expr] [column_constraint],... [table_constraint][,...]); SQL > CREATE TABLE employees( employee_id NUMBER(6), first_name VARCHAR2(20),... job_id VARCHAR2(10) NOT NULL, CONSTRAINT emp_emp_id_pk PRIMARY KEY (EMPLOYEE_ID)); column [CONSTRAINT constraint_name] constraint_type, column,... [CONSTRAINT constraint_name] constraint_type (column,...), Emrah UYSAL www.emrahuysal.com 1

NOT NULL CONSTRAINTS İlgili kolonun null içermemesni sağlamak için kullanılır. SQL > CREATE TABLE employees( employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, --SYSTEM TARAFINDAN salary NUMBER(8,2), commission_pct NUMBER(2,2), hire_date DATE -- KULLANICI TANIMLI CONSTRAINT emp_hire_date_nn NOT NULL, UNIQUE CONSTRAINTS İlgili kolonun unique olması esasına dayanır, SQL > CREATE TABLE employees( employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, email VARCHAR2(25), salary NUMBER(8,2), commission_pct NUMBER(2,2), hire_date DATE NOT NULL,... CONSTRAINT emp_email_uk UNIQUE(email)); Eğer ilgili kolon için NOT NULL ibaresi kullanılmadıysa UNIQUE CONSTRAINT null girişine izin vermektedir. Emrah UYSAL www.emrahuysal.com 2

PRIMARY KEY CONSTRAINTS İlgili kolonun unique olması ve başka bir kolonu refere etmesi esasına dayanır, SQL > CREATE TABLE departments( department_id NUMBER(4), department_name VARCHAR2(30) CONSTRAINT dept_name_nn NOT NULL, manager_id NUMBER(6), location_id NUMBER(4), CONSTRAINT dept_id_pk PRIMARY KEY(department_id)); FOREIGN KEY CONSTRAINTS İlgili kolonun başka bir tablo üzerinden referans alması ve düzenlenmesi esasına dayanır, Emrah UYSAL www.emrahuysal.com 3

SQL > CREATE TABLE employees( employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, email VARCHAR2(25), salary NUMBER(8,2), commission_pct NUMBER(2,2), hire_date DATE NOT NULL,... department_id NUMBER(4), CONSTRAINT emp_dept_fk FOREIGN KEY (department_id) REFERENCES departments(department_id), CONSTRAINT emp_email_uk UNIQUE(email)); FOREIGN KEY: Kolon bazlı foregn key olacak yani ana tabloya fereans olacak kolonu belirtir REFERENCES:Hangi tablodan referans alınacağını belirtir, ON DELETE CASCADE: Ana tablodan ilgili kolonun değeri silindiyse child tablodanda silinmesi sağlanır ON DELETE SET NULL: Ana tablodaki değer silindiyse child tablodaki değer Null değere çevrilir. CHECK CONSTRAINTS İlgili kolona expression yani bir kural koyabilmemize yarar, SQL > CREATE TABLE employees (... salary NUMBER(8,2) CONSTRAINT emp_salary_min CHECK (salary > 0 and salary < 100),... TABLO YARATILDIKTAN SONRA CONSTRAINT EKLEME Tablo yaratıldıktan sonrada tabloya constraint eklememiz mümkündür,kullanacağımız komut Alter Table komutudur. İstersek constraint i disbale yada enable yapabiliriz. ALTER TABLE table ADD [CONSTRAINT constraint] type (column); SQL > ALTER TABLE employees ADD CONSTRAINT kazim FOREIGN KEY(manager_id) REFERENCES employees(employee_id); Table altered. SQL > ALTER TABLE employees MODIFY (salary CONSTRAINT emp_salary_nn NOT NULL); SQL > ALTER TABLE employees Emrah UYSAL www.emrahuysal.com 4

Table altered. DROP CONSTRAINT emp_manager_fk; SQL > ALTER TABLE departments DROP PRIMARY KEY CASCADE; Table altered. Yukarıdaki örnekte ilgili Primary Key e refere olan kolonda düşürülmüş oldu. SQL > ALTER TABLE employees DISABLE CONSTRAINT emp_emp_id_pk CASCADE; Table altered. SQL > ALTER TABLE employees ENABLE CONSTRAINT emp_emp_id_pk; Table altered. CASCADE CONSTRAINTS Cascade constraints genellikle drop column syntaxında geçerli olan bir söz dizimidir. Drop column la birlikte geçerli olan cascade constraints ifadesi kolonu drop ettiği gibi ilgili tüm ilişkileri koparır. SQL > CREATE TABLE test1 ( pk NUMBER PRIMARY KEY, fk NUMBER, col1 NUMBER, col2 NUMBER, CONSTRAINT fk_constraint FOREIGN KEY (fk) REFERENCES test1, CONSTRAINT ck1 CHECK (pk > 0 and col1 > 0), CONSTRAINT ck2 CHECK (col2 > 0)); Yukarıda bir table yarattık ve bazı kolon yada ilişkileri koparmak isteyelim.aşağıdaki ifadeler hatalı olacaktır. SQL > ALTER TABLE test1 DROP (pk); -- pk parent keydir SQL > ALTER TABLE test1 DROP (col1); col1 ck1 constarint ine aittir. Bu ifadelerin çalışmasını ve ilişkilerini yok etmesi isteniyorsa; SQL > ALTER TABLE test1 DROP (pk) CASCADE CONSTRAINTS; Table altered. SQL > ALTER TABLE test1 DROP (pk, fk, col1) CASCADE CONSTRAINTS; Kullanılmalıdır. Table altered. Eğer tabloda bütün constraintler aynı anda silinecekse cascade constraint ifadesine gerek yoktur. Emrah UYSAL www.emrahuysal.com 5

SQL > ALTER TABLE test1 DROP (pk, fk, col1); SQL > SELECT constraint_name, constraint_type, search_condition FROM user_constraints WHERE table_name = EMPLOYEES ; SQL > SELECT constraint_name, column_name FROM user_cons_columns WHERE table_name = EMPLOYEES ; VİEWS(GÖRÜNTÜLER) Emrah UYSAL www.emrahuysal.com 6

Viewlar bir veya birden fazla tablonun yetkilendirilmiş olarak gösterilmesi ve üzerinde gerçek sorguların kolaylıkla yapılacağı yapılardır. Niçin view kullanırız diye bakarsak; Yetkilendirilmiş ve kısıtlı veri erişim imkanı sağlar Karmaşık yapıdaki sorguları basitleştirir, Veri bağımsızlığı imkanı sağlar, Benzer dataları farklı şekillerde gösterme imkanı sağlar, CREATE [OR REPLACE] [FORCE NOFORCE] VIEW view [(alias[, alias]...)] AS subquery [WITH CHECK OPTION [CONSTRAINT constraint]] [WITH READ ONLY [CONSTRAINT constraint]]; SQL > CREATE VIEW empvu80 AS SELECT employee_id, last_name, salary FROM employees WHERE department_id = 80; View created. SQL > DESCRIBE empvu80; View ı oluşturan subquery complex select yapısını içerebilir,örneğin group,join ve subquery yapılarını içerebilir, SQL > CREATE VIEW salvu50 AS SELECT employee_id ID_NUMBER, last_name NAME, salary*12 ANN_SALARY FROM employees WHERE department_id = 50; View created. SQL > CREATE VIEW salvu50 (ID_NUMBER, NAME, ANN_SALARY) AS SELECT employee_id, last_name, salary*12 FROM employees WHERE department_id = 50; View created. SQL > SELECT * FROM salvu50; Emrah UYSAL www.emrahuysal.com 7

Bir view yaratıldıktan sonra view hakkında detaylı bilgiyi USER_VIEWS data dictionary viewslerinden bulabilirsiniz. SQL > CREATE OR REPLACE VIEW empvu80 (id_number, name, sal, department_id) AS SELECT employee_id, first_name last_name, salary, department_id FROM employees WHERE department_id = 80; View created. SQL > CREATE VIEW dept_sum_vu (name, minsal, maxsal, avgsal) AS SELECT d.department_name, MIN(e.salary), MAX(e.salary),AVG(e.salary) FROM employees e, departments d WHERE e.department_id = d.department_id GROUP BY d.department_name; View created. SQL > SELECT * FROM dept_sum_vu; Viewlar üzerinde eğer bir ksııt yoksa tüm DML işlemleri yapılabilir,ama yaratılan view bir complex view ise yani Group,distinct,rownum gibi bilgileri içeriyorsa DML keywordleri kullanılamyıcaktır. Viewler üzerinde DML operasyonlarına karşı Check Option keyword u kullanılabilir.bu durumlarda view bir fail durumu döndürür. SQL > CREATE OR REPLACE VIEW empvu20 AS SELECT * FROM employees Emrah UYSAL www.emrahuysal.com 8

WHERE department_id = 20 WITH CHECK OPTION CONSTRAINT empvu20_ck ; View created. Bir kişi departman numarası üzerinden değişiklik yapmaya kalktığında sistem hata verecektir. SQL > UPDATE empvu20 SET department_id = 10 WHERE employee_id = 201; UPDATE empvu20 * ERROR at line 1: ORA-01402: view WITH CHECK OPTION where-clause violation Viewları check option dışında DML operasyonlarına karşı engellemek istiyorsak Read Only operatöünüde kullanabiliriz. SQL > CREATE OR REPLACE VIEW empvu10 (employee_number, employee_name, job_title) AS SELECT employee_id, last_name, job_id FROM employees WHERE department_id = 10 WITH READ ONLY; View created. SQL > DELETE FROM empvu10 WHERE employee_number = 200; DELETE FROM empvu10 * ERROR at line 1: ORA-01752: cannot delete from view without exactly one keypreserved table Bir view ı silmek için ise tablo uçurmaktan farksızdır. SQL > DROP VIEW empvu80; View dropped. INLINE VİEWS Emrah UYSAL www.emrahuysal.com 9

Normal yolla yapamadığımız bazı sorguların yapılmasına imkan verir,from keyword u ile birlikte tablo ismi yerine kullanılırlar.en önemli özelliği içerideki aliasları dışarı taşıyabilmemizdir. SQL > SELECT a.last_name, a.salary, a.department_id, b.maxsal FROM employees a, (SELECT department_id, max(salary) maxsal FROM employees GROUP BY department_id) b WHERE a.department_id = b.department_id AND a.salary < b.maxsal; TOP-N ANALİZLERİ Genellikle sıralama işlemlerinde kullanılırlar,örneğin şirketin ilk 10 listesi,en kötü 10 listesi gibi. SELECT [column_list], ROWNUM FROM (SELECT [column_list] FROM table ORDER BY Top-N_column) WHERE ROWNUM <= N; Aşağıdaki sorgu bir şirkette en çok kazanan ilk üç kişiyi listelemektedir. SQL > SELECT ROWNUM as RANK, last_name, salary FROM (SELECT last_name,salary FROM employees ORDER BY salary DESC) WHERE ROWNUM <= 3; SQL > SELECT ROWNUM as SENIOR,E.last_name, E.hire_date FROM (SELECT last_name,hire_date FROM employees ORDER BY hire_date)e WHERE rownum <= 4; Emrah UYSAL www.emrahuysal.com 10

VERİTABANI OBJELERİ SEQUENCE Otomatik olarak Unique bir numara oluşturulmasını sağlar, Genellikle primery key tarafı için kullanılır, Cache lenmiş memory den değer alınacağı için çok hzıldırlar, CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n NOMAXVALUE}] [{MINVALUE n NOMINVALUE}] [{CYCLE NOCYCLE}] [{CACHE n NOCACHE}]; SQL > CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999; Sequence created. Sequnce ler hakkında bilgi almak istiyorsak; SQL > SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequences; Kullanımı: SQL > INSERT INTO departments(department_id, department_name, location_id) VALUES (dept_deptid_seq.nextval, Support, 2500); Emrah UYSAL www.emrahuysal.com 11

SQL > SELECT dept_deptid_seq.currval FROM dual; SQL > ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Sequence altered. Bazen sequnecleri değiştirirken mevcut değerlerin ne olduğuna bakmak gerekir. SQL > ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 90 NOCACHE NOCYCLE; ALTER SEQUENCE dept_deptid_seq * ERROR at line 1: ORA-04009: MAXVALUE cannot be made to be less than the current value SQL > DROP SEQUENCE dept_deptid_seq; Sequence dropped. INDEXLER İndexler bir schema objesidir, Sorguların hızlarını arttırmada birebir rol alırlar, Oracle Server tarafından yönetilip kullanılırlar İndexler Otomatik olarak(primary Key yada Unique Constraint) yaratıldığında,yada Manuel olarak el ile vereceğimz komutlar ile oluşturlurlar. CREATE INDEX index ON table (column[, column]...); SQL > CREATE INDEX emp_last_name_idx ON employees(last_name); Index created. Ne zaman İndex yaratılır dersek İlgili kolon geniş aralıkta değerler içeriyorsa Bir yada daha fazla kolon where clause de sıklıkla kullanılıyorsa Tablo çok sorgu alıyor ve kullanılıyorsa Ne zaman kullanılmaz dersekte Tablo küçükse, Emrah UYSAL www.emrahuysal.com 12

İlgili kolon sorgularda sıklıkla kullanılmıyorsa, Tablo sıklıkla update ediliyorsa, İndexlenen veya indexlenecek kolon bir expressiona karşı geliyorsa USER_INDEXES ilgili viewların isim ve kullanımı hakkında bilgi verir, USER_IND_COLUMNS ise index,tablo ve kolon hakkında bilgi verir. SQL > SELECT ic.index_name, ic.column_name, ic.column_position col_pos,ix.uniqueness FROM user_indexes ix, user_ind_columns ic WHERE ic.index_name = ix.index_name AND ic.table_name = EMPLOYEES ; Yukarıdaki indexlere ilaveten birde Function Based indexler vardır,bunlar tamamen kolonun experssion edilmiş halidir. SQL > CREATE INDEX upper_dept_name_idx ON departments(upper(department_name)); Index created. SQL > SELECT * FROM departments WHERE UPPER(department_name) = SALES ; SQL > CREATE INDEX upper_last_name_idx ON employees (UPPER(last_name)); SQL > SELECT * FROM employees WHERE UPPER(last_name) = KING ; SQL > DROP INDEX upper_last_name_idx; Index dropped. Emrah UYSAL www.emrahuysal.com 13

SYNOYMS Genellikle objelerin ismini değiştirmek Yada objelerin sahiplerini saklamak veya değiştirmek amacıyla kullanılırlar CREATE [PUBLIC] SYNONYM synonym FOR object; SQL > CREATE SYNONYM d_sum FOR dept_sum_vu; Synonym Created. SQL > DROP SYNONYM d_sum; Synonym dropped. Eğer Synonym public yaratılırsa tüm userlar tarafından obje olarak görüntülenebilmektedir, SQL > CREATE PUBLIC SYNONYM dept FOR alice.departments; Synonym created. SQL > DROP PUBLIC SYNONYM dept; Synonym dropped. USER ACCESS Kullanıcıların oluşturluması,şifre işlemleri ve rollerin atanması bunun konularındandır. Emrah UYSAL www.emrahuysal.com 14

Privileges Database Security o Veri Güvenliği o System Güvenliği Şeklinde ayrılabilir System Privelegları DB üzerinde 100 den fazla mevcuttur, DB admin bu privligelarin çoğuna sahip olmalıdır,örneğin yeni bir user taratmak yada bir user ı silmek,yani bir tablo yaratmak vb.şeylere sahip olmalıdır. Tipik DBA privilege leri tablodaki gibidir. CRETATE USER Adı üstünde yeni bir user yaratmak için kullanılır, CREATE USER user IDENTIFIED BY password; SQL > CREATE USER scott IDENTIFIED BY tiger; User created. Bir user yaratıldıktan sonra user için işlem bitmemiştir,sistemin DBA i ilgili kullanıcıya aşağıdaki hakları örneğin bir developer için vermelidir. CREATE SESSION CREATE TABLE CREATE ANY TABLE CREATE SEQUENCE CREATE VIEW CREATE PROCEDURE Emrah UYSAL www.emrahuysal.com 15

SQL > GRANT create session, create table, create sequence, create view TO scott; Grant succeeded. ROLES Roller bazı privelegların gruplanarak kullanıcılara verilmesi için kullanılır,yapısı daha kullanışlı ve esnektir. CREATE ROLE role; SQL > CREATE ROLE manager; Role created. SQL > GRANT create table, create view TO manager; Grant succeeded. SQL > GRANT manager TO DEHAAN, KOCHHAR; Grant succeeded. Şifre Değiştirme içinse aşağıdaki komut geçerldir; SQL > ALTER USER scott IDENTIFIED BY lion; User altered. Emrah UYSAL www.emrahuysal.com 16

OBJECT PRİVİLİGES Obje yetkileri ise sistemde bulunan objelerin kullanıcılara yetki dahilinde verilmesi ile oluşur. Objelerin sahipleri objeler için bütün yetkilere sahiptirler. GRANT object_priv [(columns)] ON object TO {user role PUBLIC} [WITH GRANT OPTION]; SQL > GRANT select ON employees TO sue, rich; Grant succeeded. SQL > GRANT update (department_name, location_id) ON departments TO scott, manager; Grant succeeded. USerlara verilen bu obje yetkileri ile birde Grant Admin hakkı verilir,böylece yetki verilen kullanıcı gidip başka bir kullanıcıya aynı yekiyi verebilir. SQL > GRANT select, insert ON departments TO scott WITH GRANT OPTION; Emrah UYSAL www.emrahuysal.com 17

Grant succeeded. İstersek tüm kullanıcılar için obje hakkı vermek istiyorsak kullanıcı ismi yerine PUBLIC kullanmalıyız SQL > GRANT select ON alice.departments TO PUBLIC; Grant succeeded. User ve priviliglar hakkında detaylı bilgi almak istiyorsak,aşağıdaki tabloda verilen User dictionary viewlarına bakabiliriz. Grant ile kullanıcılar için yetki veriyrduk,revoke komutu ilede verilen yetkileri geri almak mümkündür, REVOKE {privilege [, privilege...] ALL} ON object FROM {user[, user...] role PUBLIC} [CASCADE CONSTRAINTS]; SQL > REVOKE select, insert ON departments FROM scott; Revoke succeeded. Emrah UYSAL www.emrahuysal.com 18

DATABASE LİNKLERİ Database linkleri veritabanları arasında veri taşıma aktarma gibi işlemlerde kullanılır. SQL > CREATE PUBLIC DATABASE LINK hq.acme.com USING sales ; Database link created. SQL > SELECT * FROM emp@hq.acme.com; SQL > CREATE PUBLIC SYNONYM HQ_EMP FOR emp@hq.acme.com; SQL > SELECT * FROM HQ_EMP; Emrah UYSAL www.emrahuysal.com 19