logo

SQL Görünümleri

SQL'deki görünüm, sanal tablo görevi gören kaydedilmiş bir SQL sorgusudur. Normal tablo görünümlerinden farklı olarak, görünümler verileri kendileri saklamaz. Bunun yerine, görünümde tanımlanan SQL sorgusunu her erişildiğinde çalıştırarak dinamik olarak veri üretirler.

Bir veya daha fazla tablodan veri alabilir ve bunu özelleştirilmiş bir formatta sunarak geliştiricilerin şunları yapmasına olanak tanır:

  • Karmaşık Sorguları Basitleştirin: Karmaşık birleştirmeleri ve koşulları tek bir nesnede kapsülleyin.
  • Güvenliği Artırın: Belirli sütunlara veya satırlara erişimi kısıtlayın.
  • Verileri Esnek Bir Şekilde Sunun: Farklı kullanıcılar için özelleştirilmiş veri görünümleri sağlayın.

Örnek olarak bu iki SQL tablosunu kullanacağız.



Öğrenci Detayları:

-- Create StudentDetails table  
CREATE TABLE StudentDetails (
S_ID INT PRIMARY KEY
NAME VARCHAR(255)
ADDRESS VARCHAR(255)
);

INSERT INTO StudentDetails (S_ID NAME ADDRESS)
VALUES
(1 'Harsh' 'Kolkata')
(2 'Ashish' 'Durgapur')
(3 'Pratik' 'Delhi')
(4 'Dhanraj' 'Bihar')
(5 'Ram' 'Rajasthan');

Çıkış:

S_ID

İsim

Adres

1

Sert

Kalküta

2

Ashish

Durgapur

3

Pratik

Delhi

4

Dhanraj

Bihar

5

Veri deposu

Racastan

Öğrenci İşaretleri:

-- Create StudentMarks table  
CREATE TABLE StudentMarks (
ID INT PRIMARY KEY
NAME VARCHAR(255)
Marks INT
Age INT
);

INSERT INTO StudentMarks (ID NAME Marks Age)
VALUES
(1 'Harsh' 90 19)
(2 'Suresh' 50 20)
(3 'Pratik' 80 19)
(4 'Dhanraj' 95 21)
(5 'Ram' 85 18);

Çıkış:

İD

İsim

İşaretler

Yaş

1

Sert

90

19

2

Sureş

50

20

3

Pratik

80

19

4

Dhanraj

95

21

5

Veri deposu

85

18

SQL'de GÖRÜNÜMLER OLUŞTURUN

CREATE VIEW ifadesini kullanarak bir görünüm oluşturabiliriz. Görünüm tek bir tablodan veya birden fazla tablodan oluşturulabilir.

Sözdizimi:

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

Anahtar Terimler:

  • görünüm_adı : Görünümün Adı
  • tablo_adı : Tablonun adı
  • durum : Satırları seçme koşulu

Örnek 1: Tek Tablodan Basit Görünüm Oluşturma

Örnek 1.1: Bu örnekte, Detay Görünümü adında bir Görünüm oluşturacağız. ÖğrenciDetayları tablosundan.

Sorgu:

CREATE VIEW DetailsView AS  
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;

Bu görünümden veri almak için aşağıdaki sorguyu kullanın

SELECT * FROM DetailsView;

Çıkış: 

İsim

Adres

Sert

Kalküta

Ashish

Durgapur

Pratik

Delhi

Dhanraj

Bihar

Örnek 1.2: Burada ÖğrenciDetayları tablosundan ÖğrenciAdları isimli bir görünüm oluşturacağız.

Sorgu:

CREATE VIEW StudentNames AS  
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;

Şimdi görünümü şu şekilde sorgularsak

    SELECT    *     FROM    StudentNames;

Çıkış: 

S_ID

İsim

2

Ashish

4

Dhanraj

1

Sert

3

Pratik

5

Veri deposu

Java'da nesne eşitliği

Örnek 2: Birden Çok Tablodan Görünüm Oluşturma

Bu örnekte, hem ÖğrenciDetayları hem de ÖğrenciMarks tablolarından verileri birleştiren bir View MarksView oluşturacağız. Birden çok tablodan bir Görünüm oluşturmak için, birden çok tabloyu tabloya dahil edebiliriz. SEÇME ifade.

Sorgu:

CREATE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

View MarksView verilerini görüntülemek için:

SELECT * FROM MarksView;

Çıkış:

İsim

Adres

İşaretler

Sert

Kalküta

90

Pratik

Delhi

80

Dhanraj

Bihar

95

Veri deposu

Racastan

85

Görünümleri Yönetme: Listeleme Güncelleme ve Silme

1. Veritabanındaki Tüm Görünümleri Listeleme

SHOW FULL TABLES deyimini kullanarak veya information_schema tablolarını sorgulayarak bir veritabanındaki tüm görünümleri listeleyebiliriz.

USE 'database_name';  
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';

information_schema'yı kullanma

SELECT table_name  
FROM information_schema.views
WHERE table_schema = 'database_name';

OR

SELECT table_schema table_name view_definition
FROM information_schema.views
WHERE table_schema = 'database_name';

2. Görünümü Silme

SQL, mevcut bir Görünümü silmemize olanak tanır. Yapabiliriz silmek veya DROP ifadesini kullanarak Görünüm'ü bırakın.

Sözdizimi:

DROP VIEW view_name;

Örnek: Bu örnekte View MarksView'ı siliyoruz.

DROP VIEW MarksView;

3. Görünüm Tanımını Güncelleme

Görünümdeki mevcut verileri güncellemek istiyorsak  GÜNCELLEME  ifade.

UPDATE view_name  
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];

Verileri etkilemeden görünüm tanımını güncellemek istiyorsanız CREATE OR REPLACE VIEW deyimini kullanın. Örneğin şunu ekleyelimAgesütunuMarksView:

CREATE OR REPLACE VIEW view_name AS  
SELECT column1 column2 ...
FROM table_name
WHERE condition;

Not: UPDATE deyimi kullanılarak tüm görünümler güncellenemez.

SQL'de Görünümleri Güncelleme Kuralları:

Bir görünümü güncellemek için belirli koşulların yerine getirilmesi gerekir. Bu koşullardan herhangi biri varsa Olumsuz görünüm güncellenemiyor.

  1. Görünümü oluşturmak için kullanılan SELECT ifadesi GROUP BY yan tümcesini veya SİPARİŞ VEREN cümle.
  2. SELECT deyimi şu özelliklere sahip olmamalıdır: BELİRGİN anahtar kelime.
  3. Görünümün tüm NOT NULL değerlerine sahip olması gerekir.
  4. Görünüm, iç içe geçmiş sorgular veya karmaşık sorgular kullanılarak oluşturulmamalıdır.
  5. Görünüm tek bir tablodan oluşturulmalıdır. Görünüm birden fazla tablo kullanılarak oluşturulmuşsa görünümü güncellememize izin verilmeyecektir.

Görünümlerle İleri Teknikler

1. Verileri Görünümler Aracılığıyla Güncelleme

Bir görünümdeki alanları eklemek veya değiştirmek için CREATE OR REPLACE VIEW deyimini kullanabiliriz. MarksView görünümünü güncellemek ve AGE alanını bu Görünüme ÖğrenciMarks Tablosundan eklemek istiyorsak bunu şu şekilde yapabiliriz:

Örnek:

CREATE OR REPLACE VIEW MarksView AS  
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS StudentMarks.AGE
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;

Şimdi MarksView'den tüm verileri şu şekilde alırsak:

SELECT * FROM MarksView;

Çıkış:

İsim

Adres

İşaretler

Yaş

Sert

Kalküta

90

19

Pratik

Delhi

80

19

Dhanraj

Bihar

Java'yı diziye listele

95

21

Veri deposu

Racastan

85

18

Tabloya yaptığımız gibi View'a da satır ekleyebiliriz. Şunu kullanabiliriz: İÇİNE EKLE Görünüme satır eklemek için SQL ifadesi. Aşağıdaki örnekte, 'tek tablodan görünüm oluşturma' örneğinde yukarıda oluşturduğumuz View Detay Görünümü'ne yeni bir satır ekleyeceğiz.

Örnek:

INSERT INTO DetailsView(NAME ADDRESS)  
VALUES('Suresh''Gurgaon');

Şimdi Ayrıntılar Görünümü'nden tüm verileri şu şekilde alırsak:

SELECT * FROM DetailsView;

Çıkış:

İsim

Adres

Sert

Kalküta

Ashish

Durgapur

Pratik

Delhi

Dhanraj

Bihar

Sureş

Gurgaon

3. Görünümden bir satırı silmek

Bir görünümden satırları silmek aynı zamanda bir tablodan satırları silmek kadar basittir. Bir görünümdeki satırları silmek için SQL'in DELETE deyimini kullanabiliriz. Ayrıca bir görünümden bir satır silindiğinde, önce satır gerçek tablodan silinir ve değişiklik daha sonra görünüme yansıtılır. Bu örnekte, yukarıdaki satır ekleme örneğinde az önce eklediğimiz Detay Görünümü görünümünden son satırı sileceğiz.

Örnek:

DELETE FROM DetailsView  
WHERE NAME='Suresh';

Şimdi Ayrıntılar Görünümü'nden tüm verileri şu şekilde alırsak:

SELECT * FROM DetailsView;

Çıkış: 

İsim

Adres

Sert

Kalküta

Ashish

Durgapur

Pratik

Delhi

Dhanraj

Bihar

4. KONTROL SEÇENEĞİ Maddesi İLE

SQL'deki With CHECK OPTION yan tümcesi görünümler için çok kullanışlı bir yan tümcedir. Güncellenebilir bir görünüm için geçerlidir. CREATE VIEW deyimindeki WHERE yan tümcesindeki koşul karşılanmazsa, veri değişikliğini (INSERT veya UPDATE kullanarak) önlemek için kullanılır.

Eğer CREATE VIEW deyiminde With CHECK OPTION deyimini kullanmışsak ve UPDATE ya da INSERT deyimi koşulları sağlamıyorsa hata döndürecektir. Aşağıdaki örnekte, YOU CHECK OPTION cümleciğiyle ÖğrenciDetayları Tablosundan bir View SampleView oluşturuyoruz.

Örnek:

CREATE VIEW SampleView AS  
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;

Bu görünümde, şimdi NAME sütununa boş değere sahip yeni bir satır eklemeye çalışırsak, görünüm NAME sütununun NOT NULL koşuluyla oluşturulduğu için hata verecektir. Örneğin, Görünüm güncellenebilir olsa da bu Görünüm için aşağıdaki sorgu da geçerli değildir:

INSERT INTO SampleView(S_ID)  
VALUES(6);
Test Oluştur