SQL - Görünümleri Kullanma

Görünüm, veritabanında ilişkili bir adla depolanan bir SQL ifadesinden başka bir şey değildir. Görünüm, aslında önceden tanımlanmış bir SQL sorgusu biçimindeki bir tablonun bileşimidir.

Görünüm, bir tablonun tüm satırlarını içerebilir veya bir tablodan satırları seçebilir. Bir görünüm oluşturmak için yazılı SQL sorgusuna bağlı olan bir veya daha fazla tablodan bir görünüm oluşturulabilir.

Bir tür sanal tablo olan görünümler, kullanıcıların aşağıdakileri yapmasına izin verir -

  • Verileri, kullanıcıların veya kullanıcı sınıflarının doğal veya sezgisel bulacağı şekilde yapılandırın.

  • Verilere erişimi, bir kullanıcının tam olarak ihtiyaç duyduklarını görebileceği ve (bazen) değiştirebileceği ve daha fazlasını olmayacak şekilde kısıtlayın.

  • Rapor oluşturmak için kullanılabilecek çeşitli tablolardan verileri özetleyin.

Görünümler Oluşturma

Veritabanı görünümleri, CREATE VIEWBeyan. Görünümler tek bir tablodan, birden çok tablodan veya başka bir görünümden oluşturulabilir.

Bir görünüm oluşturmak için, kullanıcının belirli uygulamaya göre uygun sistem ayrıcalığına sahip olması gerekir.

Basit CREATE VIEW sözdizimi aşağıdaki gibidir -

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

Normal bir SQL SELECT sorgusunda kullandığınız gibi, SELECT deyiminize birden çok tabloyu dahil edebilirsiniz.

Misal

Aşağıdaki kayıtlara sahip MÜŞTERİLER tablosunu düşünün -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Aşağıda, MÜŞTERİLER tablosundan bir görünüm oluşturmak için bir örnek verilmiştir. Bu görünüm, MÜŞTERİLER tablosundan müşteri adını ve yaşını almak için kullanılır.

SQL > CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS;

Şimdi, gerçek bir tabloyu sorgularken CUSTOMERS_VIEW'ı benzer şekilde sorgulayabilirsiniz. Aşağıdakiler bunun bir örneğidir.

SQL > SELECT * FROM CUSTOMERS_VIEW;

Bu, aşağıdaki sonucu verecektir.

+----------+-----+
| name     | age |
+----------+-----+
| Ramesh   |  32 |
| Khilan   |  25 |
| kaushik  |  23 |
| Chaitali |  25 |
| Hardik   |  27 |
| Komal    |  22 |
| Muffy    |  24 |
+----------+-----+

İLE KONTROL SEÇENEĞİ

WITH CHECK OPTION bir CREATE VIEW deyimi seçeneğidir. İLE KONTROL SEÇENEĞİNİN amacı, tüm GÜNCELLEME ve INSERT'lerin görünüm tanımındaki koşul (lar) ı karşılamasını sağlamaktır.

Koşul (lar) ı karşılamazlarsa, UPDATE veya INSERT bir hata verir.

Aşağıdaki kod bloğu, WITH CHECK OPTION ile aynı CUSTOMERS_VIEW görünümü oluşturmanın bir örneğini içerir.

CREATE VIEW CUSTOMERS_VIEW AS
SELECT name, age
FROM  CUSTOMERS
WHERE age IS NOT NULL
WITH CHECK OPTION;

Bu durumda WITH CHECK OPTION, görünümün AGE sütunundaki herhangi bir NULL değerin girişini reddetmelidir, çünkü görünüm, AGE sütununda NULL değeri olmayan veriler tarafından tanımlanır.

Bir Görünümü Güncelleme

Bir görünüm, aşağıda verilen belirli koşullar altında güncellenebilir -

  • SELECT yan tümcesi DISTINCT anahtar sözcüğünü içermeyebilir.

  • SELECT yan tümcesi özet işlevler içermeyebilir.

  • SELECT yan tümcesi set işlevlerini içermeyebilir.

  • SELECT yan tümcesi set operatörleri içeremez.

  • SELECT yan tümcesi ORDER BY yan tümcesi içermeyebilir.

  • FROM yan tümcesi birden çok tablo içeremez.

  • WHERE yan tümcesi alt sorgular içeremez.

  • Sorgu GROUP BY veya HAVING içeremez.

  • Hesaplanan sütunlar güncellenemez.

  • INSERT sorgusunun çalışması için temel tablodaki tüm NOT NULL sütunları görünüme dahil edilmelidir.

Dolayısıyla, bir görünüm yukarıda belirtilen tüm kuralları karşılıyorsa, o görünümü güncelleyebilirsiniz. Aşağıdaki kod bloğunun Ramesh'in yaşını güncellemek için bir örneği vardır.

SQL > UPDATE CUSTOMERS_VIEW
   SET AGE = 35
   WHERE name = 'Ramesh';

Bu, nihayetinde temel tablo MÜŞTERİLER'i güncelleyecektir ve aynısı görünümün kendisine de yansıyacaktır. Şimdi, temel tabloyu sorgulamayı deneyin, SELECT deyimi aşağıdaki sonucu verecektir.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Görünüme Satır Ekleme

Bir görünüme veri satırları eklenebilir. UPDATE komutu için geçerli olan aynı kurallar INSERT komutu için de geçerlidir.

Burada, CUSTOMERS_VIEW'a satır ekleyemiyoruz çünkü bu görünüme tüm NOT NULL sütunlarını dahil etmedik, aksi takdirde bir görünümdeki satırları bir tabloya eklediğiniz gibi benzer şekilde ekleyebilirsiniz.

Satırları Görünümde Silme

Bir görünümden veri satırları silinebilir. UPDATE ve INSERT komutları için geçerli olan kurallar DELETE komutu için de geçerlidir.

Aşağıda, AGE = 22 olan bir kaydın silinmesine bir örnek verilmiştir.

SQL > DELETE FROM CUSTOMERS_VIEW
   WHERE age = 22;

Bu, sonuçta CUSTOMERS temel tablodan bir satırı siler ve aynısı görünümün kendisine de yansır. Şimdi, temel tabloyu sorgulamayı deneyin, SELECT deyimi aşağıdaki sonucu verecektir.

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  35 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Görünümleri Bırakma

Açıktır ki, bir görünüme sahip olduğunuz yerde, artık gerekmiyorsa görünümü düşürmenin bir yolunu bulmanız gerekir. Sözdizimi çok basittir ve aşağıda verilmiştir -

DROP VIEW view_name;

Aşağıda, CUSTOMERS_VIEW’i MÜŞTERİLER tablosundan çıkarmak için bir örnek verilmiştir.

DROP VIEW CUSTOMERS_VIEW;