Oracle Database — SQL Temelleri 11 — Diğer Şema Objeleri Oluşturma

Arkadaşlar Merhaba,

Bu yazımda Oracle veritabanında diğer şema objelerini oluşturma konusundan bahsedeceğim. Şema objeleri :

  • TABLE
  • VIEW
  • SEQUENCES
  • INDEX
  • SYNONYMS

Tablo oluşturmaktan 10. derste bahsettik. Şimdi ise geriye kalan nesneleri basit örneklerle açıklayalım.

VIEW

Kelime anlamı görüntü olan view, tablo veya başka bir görüntüdeki verinin yeniden gösterilmesi anlamına gelir. View’ler ile :

  • Kullanıcılara belirlenen şeylere erişme hakkı verilir.
  • Sürekli çalıştırılan SQL sorgularının tekrar tekrar yazılmasının önüne geçilir.

View Oluşturma:

Syntax:

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

Örnek:

Departman id’si 100 olan EMPLOYEE_ID,FIRST_NAME, LAST_NAME, SALARY bilgilerini içeren bir view oluşturalım.

CREATE VIEW EMP_VU_100 AS
SELECT EMPLOYEE_ID,FIRST_NAME, LAST_NAME, SALARY FROM EMPLOYEES
WHERE DEPARTMENT_ID=100;
oracle-sql-11-1

Görüntümüz oluştuğunda sol tarafta bulunan Views klasörünün altına eklendi.

Bir görüntüyü nasıl sorgularız, çalıştırırız?

SELECT * FROM EMP_VU_100;

Gördüğünüz gibi başka sorgu yazmadan bilgileri çektik.

oracle-sql-11-2

CREATE OR REPLACE VIEW

Oluşturduğumuz görüntünün yapısını değiştirmek istediğimizde bu komutu kullanırız.

Syntax:

CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

Örnek:

CREATE OR REPLACE VIEW EMP_VU_100 AS
SELECT EMPLOYEE_ID,FIRST_NAME, LAST_NAME,EMAIL, SALARY FROM EMPLOYEES
WHERE DEPARTMENT_ID=100;

emp_vu_100 isimli görüntümüze email sütununu ekledik.

DROP VIEW

Kullanmadığımız görüntüleri silmek isteyebiliriz bunun için DROP VIEW komutunu kullanırız.

Syntax:

DROP VIEW view_name

Örnek:

DROP VIEW EMP_VU_100;

SEQUENCES

Oracle veritabanında artan veya azalan sıralı numerik değerler oluşturmaya yarayan nesnelerdir. Bir tablonun primary_key (birincil anahtar) sütununa sıralı ve unique değerler insert etmek için kullanabiliriz.

Syntax:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

Örnek:

CREATE SEQUENCE SEQ_GOKHAN
START WITH 1
INCREMENT BY 1
MAXVALUE 10000
CACHE 10;
oracle-sql-11-3

SEQ_GOKHAN adında bir sekans oluşturdum. Sekansın detaylarını incelersek:

START WITH : Sekansın kaçtan başlamasını istiyorsak belirtiriz. Defaultu 1’dir.

INCREMENT BY : Sekansınızın kaçar kaçar artacağını ve azalacağını belirtir.
+1 değerini verirseniz Sekansınız birer birer artacaktır.
- 2 değerini verirseniz Sekansınız ikişer ikişer azalacaktır.

MINVALUE : Azalarak giden sekansın gidebileceği son değeri belirtir.

MAXVALUE : Artarak giden sekansın gidebileceği son değeri belirtir.

CYCLE : Sınıra ulaşan sekansın tekrar yeniden başlamasını belirtir.

NOCYCLE : Sekanslar default olarak NOCYCLE yaratılır.

CACHE : Sistemde bir hata olunca cachede tutulan ve kaybolan numaraları tekrar kullanmak istiyorsak.

NOCACHE : Sürekli güncel numarayı üretir,sekansın performansı düşüktür.Ama üretilen sayılar arasında
kopukluk yoktur.

NEXTVAL: Sekansın sıradaki değeri üretmesi sağlanır.Ve her select ettiğinizde değeri değişir.

CURRVAL: Sekansın sıradaki değerini gösterir. Select çektiğinizde değeri aynı kalır.

Örnek:

SELECT SEQ_GOKHAN.nextval FROM dual;
oracle-sql-11-4

SEQ_GOKHAN Sekansını 6 kez çalıştırdığımda dual tablosuna yazılan sonuç.

INDEX

Oracle Veritabanında tablo üzerinde yapılan sorgulamaların daha performanslı çalışması için oluşturulan nesnelerdir. Yüzeysel bir şekilde indexleri inceleyelim:

Syntax:

CREATE INDEX index_name
ON table_name (column_name)

Örnek:

CREATE INDEX emp_last_name_idx
ON employees(last_name);

[dt_tooltip title=”UYARI”]Bir kolon için index yaratıp aynı zamanda çift kayıt girilmesini istemiyorsak unique index yaratılmalı.[/dt_tooltip]

CREATE UNIQUE INDEX index_name
ON table_name (column_name)

İndex’i silmek:

DROP INDEX index_name_1

SYNONYMS

Oracle Veritabanında bulunan objelere takma isimler vermek için kullanılır. Kullanım amacı takma isimi yaratan kullanıcının objesine direk erişim ya da veri güvenliğinin sağlanmasıdır. Synonym’ler public ve private olmak üzere iki kısımdır. Public synonym’leri bütün veritabanı kullanıcıları okuyabilirken private synonym’leri sadece yaratan kullanıcı okuyabilir.

Syntax:

CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema.]synonym
FOR [schema.]object [@dblink]

Örnek:

CREATE SYNONYM offices
FOR hr.locations;

HR Veritabanında bulunan locations tablosu için offices isminde takma isim yarattık.

SELECT * FROM OFFICES;

Yaratmış olduğumuz takma ismi sorguladık. Gördüğünüz gibi kullanımı gayet basit.

Synonyms Silme:

DROP SYNONYM SYNONYM_NAME;

Oracle SQL makalelerimde, Başlangıç düzeyinden İleri düzeye kadar her konuya yer yerdim. Makalelerde sadeliğe özen gösterip, sizleri sıkmadan bu işi öğrenmek isteyenlerin keyifle öğrenmelerine yardımcı olacağını umuyorum. İlerleyen zamanlarda DBA’ler için Üst düzey SQL konularına değinmeyi, zamanım olursa PL/SQL programlama üzerine makaleler yazmayı planlıyorum.

İlerleyen günlerde görüşmek üzere. Sağlıklı kalın ;)