20 Ekim 2015 Salı

Oracle View Nedir? Simple view nedir ? Complex View nedir?

Oracle view Nedir?

view kullanımını bir örnekle kafamızda canlandırmaya çalışalım. Bir veritabanını yönetiyorsunuz farklı departmandaki arkadaşınıza maaş kolonunu, tablolardaki kolonların isimlerini direkt olarak göstermek istemiyorsunuz işte tam burada view karşımıza çıkıyor. View kelime anlamı olarak görünüm, görüntü demektir ve database de yer tutmazlar ilgili tablonun sorgusunu tutarlar.

View oluşturma 

Viewlerin genel hali aşağıdaki şekildedir.

CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];

Simple View

  Basit Select sorguları ile oluşturulan viewe simple view diyebiliriz.
Evet bizde bir simple view oluşturup bu viewden select çekelim.

CREATE VIEW empview
AS SELECT employee_id, last_name, salary
FROM
employees
WHERE
department_id = 80;

view EMPVIEW created. uyarısını aldıysak işlem tamamdır.
 select * from empview; diyerek oluşturulan kısıtlamaları görebilirsiniz.
Evet View'ler üzerinden tablo bilgisi alabilir miyiz?
desc empview;

çalıştırdığımızda
Name        Null     Type        
----------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)   
LAST_NAME   NOT NULL VARCHAR2(25)
SALARY               NUMBER(8,2) 
sonucu karşımıza çıkıyor bu da demek oluyorki oracle hiç çaktırmadan ben viewim demiyor veya senin erişebileceğin kolonlar sadece bunlar demiyor. Direkt olarak tablo bu kardeşim diyor. Harikulade değil mi ? :)

evet şimdide departmanı 50 olan kışilerin
employee_id, last_name,salary*12 kolonlarını birer alias ekleyerek salview adında bir view oluşturalım.

create view salview
as select employee_id ID_NUMARA, last_name SOYAD,
salary*12 MAAS from employees where department_id=50;

bu viewe select çektiğimizde artık oluşturduğumuz şartları ekranda göreceksiniz.


Complex view

Simple viewde demiştikki sadece select ifadelerini çekeriz complex viewde fonksiyonlar, tablo birleştirmeleri yapabiliriz.Ayrıca belirtmeliyimki simple viewde DML işlemleri yapabilirsiniz (Yapmayın kesinlikle tavsiye etmem )fakat Complex viewde bu mümkün değildir.


dept_top_vi adında bir view oluşturalım
departmanlara göre gruplandırdığımız departman isminin olduğu minimum maaş kolonunu, maksimum maaş kolonunu ve ortalama maaş kolonunun olduğu bir view oluşturalım ve hatta her kolonun aliası olsun.





create view dept_top_vi
as select d.department_name Departman, MIN(e.salary) "Minimum Maaş",
MAX( e.salary) " Maksimum Maaş", AVG(e.salary) " Ortalama Maaş"
from employees e join departments d
using ( department_id)
group by d.department_name;

Oluşturduğumuz view üzerinden insert komutunu çalıştırmaya kalkarsanız
SQL Error: ORA-01733: virtual column not allowed here
01733. 00000 – “virtual column not allowed here”

hatasını alıcaksınız. ve yine aynı şekilde update komutunu çalıştırdığınızda da aynı hatayı alıcaksınız.


select view_name from user_views; sorgusuyla oluşturduğunuz veya oluşturulan viewleri görebilirsiniz.

SELECT text FROM user_views where view_name ='DEPT_TOP_VI';

Sorgusunu çalıştırdığımızdada oluşturduğumuz viewin içinde hangi sorguyu sakladığını görebilirsiniz.

View'de DML işlemleri gerçekleştirme kuralları

  • Simple view de DML işlemleri gerçekleştirilebilir
  •  View içeriyorsa ve aşağıdaki 4 maddeden biri varsa satır silme işlemi yapamazsınız:
  1. Grup Fonksiyonları
  2. Group by 
  3. Distinc keywordu
  4. Rownum keywordu
  • Aşağıdakileri içeriyorsa verileri düzenleyemezsiniz
  1.  Grup fonksiyonları
  2. Group by
  3. Distinct
  4. rownum
  5. ifadeler
  • Aşağıdakileri içeriyorsa veri ekleyemezsiniz.
  1. Grup fonksiyonları
  2. Group by 
  3. Distinct
  4. Rownum
  5. ifadeler tarafından tanımlanan koşullar
  6. NOT NULL
Tavsiye: Her ne olursa olsun viewler üzerinden DML operasyonunda bulunmamaya çalışınız!!!





Hiç yorum yok:

Yorum Gönder