10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255...

11
10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II 1 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi Bu Derste Öğrenecekleriniz: 1- Birden Fazla Tablodan Sorgulama 2- Tablo Birleştirme işlemleri (JOIN) a. INNER JOIN b. OUTER JOIN i. LEFT OUTER JOIN ii. RIGHT OUTER JOIN iii. FULL OUTER JOIN 3- Tablo Ekleme işlemleri (UNION) 4- Sorgulamaları VIEW (sanal tablo) olarak kaydetme Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız. Aşağıdaki sorgulama örneğine dikkat edin: SELECT B.[BÖLÜM KODU], S.[DERS KODU], D.[DERS ADI], AVG(S.VİZE) AS [VİZE SINIF ORTALAMASI] FROM SINAVLAR AS S, ÖĞRENCİLER AS O, BÖLÜMLER AS B, DERSLER AS D WHERE S.[ÖĞRENCİ NO] = O.NUMARA AND S.[DERS KODU] = D.[DERS KODU] AND B.[BÖLÜM KODU] = O.BÖLÜM GROUP BY S.[DERS KODU], D.[DERS ADI], B.[BÖLÜM KODU] HAVING AVG(S.VİZE)>=60 ORDER BY [DERS KODU] DESC Bu sorgunun ne anlama geldiği şimdilik sizin için bir şey ifade etmiyor olabilir. Ama bu karışık sorgulamanın ne anlama geldiğini hep beraber öğreneceğiz.

Transcript of 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255...

Page 1: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

1 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

Bu Derste Öğrenecekleriniz: 1- Birden Fazla Tablodan Sorgulama

2- Tablo Birleştirme işlemleri (JOIN)

a. INNER JOIN

b. OUTER JOIN

i. LEFT OUTER JOIN

ii. RIGHT OUTER JOIN

iii. FULL OUTER JOIN

3- Tablo Ekleme işlemleri (UNION)

4- Sorgulamaları VIEW (sanal tablo) olarak kaydetme

Aşağıdaki şemaya dikkat edin. Sorgulamalarımızı genellikle bu şemaya göre yapacağız.

Aşağıdaki sorgulama örneğine dikkat edin:

SELECT B.[BÖLÜM KODU], S.[DERS KODU], D.[DERS ADI],

AVG(S.VİZE) AS [VİZE SINIF ORTALAMASI]

FROM SINAVLAR AS S, ÖĞRENCİLER AS O, BÖLÜMLER AS B, DERSLER AS D

WHERE S.[ÖĞRENCİ NO] = O.NUMARA AND S.[DERS KODU] = D.[DERS KODU]

AND B.[BÖLÜM KODU] = O.BÖLÜM

GROUP BY S.[DERS KODU], D.[DERS ADI], B.[BÖLÜM KODU]

HAVING AVG(S.VİZE)>=60

ORDER BY [DERS KODU] DESC

Bu sorgunun ne anlama geldiği şimdilik sizin için bir şey ifade etmiyor olabilir. Ama bu karışık sorgulamanın

ne anlama geldiğini hep beraber öğreneceğiz.

Page 2: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

2 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

1. Birden Fazla Tablodan Sorgulama Yapma

Birden fazla tablodan sorgulama yapmak Kartezyen çarpım yapmak gibidir. Örneğin normalde öğrenciler

tablosunda 100 öğrenci bölümler tablosunda da 15 bölüm olduğunu düşünürsek aşağıdaki sorgulama

sonucu 100*15=1500 satır olacaktır.

SELECT *

FROM ÖĞRENCİLER, BÖLÜMLER

Sorgu Sonuçlarından bazıları:

Dikkat ederseniz tabloda bölüm kodu iki defa görüntülenmiştir. Bunların birisi öğrenciler

tablosundan, diğeri ise bölümler tablosundan gelmektedir. Ve yine dikkat ederseniz bazı kayıtlar

tekrarlanmış gibidir. Çünkü iki tablo Kartezyen olarak çarpılmıştır.

Aslında bu tür bir sorgudan öğrenmek isteyeceğimiz öğrencilerin bölüm adıdır. Bu durumda

öğrenciler tablosundaki öğrencinin hangi bölümün öğrencisi olduğunu gösteren bir referans anahtarımızı

Page 3: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

3 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

kullanacağız. Öğrenciler tablosundaki öğrencinin hangi bölümün öğrencisi olduğunu gösteren referans

anahtar BÖLÜM alanıdır. Öyle ise referans anahtarımız ile kendisinden referans alınan alanın eşit olduğu

durumlar gerçek kayıtlar olacaktır.

Bu durumda tablodaki iki bölüm kodu bir birine eşit olan alanlara dikkat edin. Bizim sadece bu

satırları seçmemiz gerekir. Bunu yapmak için koşul olarak öğrenciler tablosundaki bölüm kodunun bölümler

tablosundaki bölüm koduna eşit olma şartını arayacağız. Buna tablo birleştirme diyoruz. Bunun sorgusu

aşağıdaki gibi yazılır.

SELECT *

FROM ÖĞRENCİLER, BÖLÜMLER

WHERE ÖĞRENCİLER.BÖLÜM = BÖLÜMLER.[BÖLÜM KODU]

Sorgulama Sonucu:

Hala tabloda bölüm kodu iki defa var! Bundan kurtulmak için * yerine direk olarak görmek istediğimiz alan

isimlerini yazmamız gerekiyor.

SELECT NUMARA, ADI, SOYADI, [BÖLÜM KODU], [BÖLÜM ADI]

FROM ÖĞRENCİLER, BÖLÜMLER

WHERE ÖĞRENCİLER.BÖLÜM = BÖLÜMLER.[BÖLÜM KODU]

Böyle bir sorgu yazdığımız zaman hata verebilir. Çünkü SELECT ile seçeceğimiz alanlardan bazıları iki tabloda

da olabilir. Böyle durumlarda hangi tablonun alanını seçmek istediğimizi belirtmemiz gerekiyor. Bunun

yerine sorguyu aşağıdaki gibi yapmamız gerekecektir.

SELECT ÖĞRENCİLER.NUMARA, ÖĞRENCİLER.ADI, ÖĞRENCİLER.SOYADI,

BÖLÜMLER.[BÖLÜM KODU], BÖLÜMLER.[BÖLÜM ADI]

FROM ÖĞRENCİLER, BÖLÜMLER

WHERE ÖĞRENCİLER.BÖLÜM = BÖLÜMLER.[BÖLÜM KODU]

Page 4: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

4 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

Yukarıdaki örnekte aslında hangi alanın hangi tabloya ait olduğunu sistem biliyor. Dolayısıyla yukarıdaki

örnek için tablo isimlerini alanların önünde belirtmek zorunda değiliz. Fakat aynı isimde farklı tablolara ait

alanlar olsaydı bunu belirtmemiz zorunlu olacaktı. Aslında sisteme hangi alanın hangi tabloya ait olduğunu

sürekli biz bildirirsek hem sistemde daha az iş yükü oluşacak, hem de yazdığımız sorgu anlaşılır olacaktır.

Bu sefer de her alan için uzun uzun tablo adını yazmak zor gelebiliyor. Bunun yerine kısaltmaları

kullanabiliriz. Uzun uzun tabloların ismini yazmaktansa tablo isimlerini AS ile takma isimlerini oluşturarak

kullanabiliriz. Aşağıdaki örnekte öğrenciler için O, bölümler için B takma ismi kullanılmıştır.

SELECT O.NUMARA, O.ADI, O.SOYADI, B.[BÖLÜM KODU], B.[BÖLÜM ADI]

FROM ÖĞRENCİLER AS O, BÖLÜMLER AS B

WHERE O.BÖLÜM = B.[BÖLÜM KODU]

Örneğin Öğrenciler, Dersler ve Sınavlar tablosunu birleştirelim. Öğrenciler tablosunda 100, Dersler

tablosunda 6, Sınavlar tablosunda ise 500 kayıt varsa aşağıdaki sorgu sonucu 6*100*500 = 300000 satır

olacaktır.

SELECT *

FROM ÖĞRENCİLER, DERSLER, SINAVLAR

Fakat biz bunu düzeltmek için tablolardaki referans anahtarları kendisinden referans alınmış anahtarlar ile

eşitleyerek sorguyu oluşturduğumuzda gerçek sonuçları alacağız.

SELECT *

FROM ÖĞRENCİLER AS O, DERSLER AS D, SINAVLAR AS S

WHERE O.NUMARA = S.[ÖĞRENCİ NO] AND D.[DERS KODU] = S.[DERS KODU]

Page 5: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

5 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

Sorgu sonucunda görüldüğü gibi ders kodu, öğrenci numarası tekrar etmiş, istemediğimiz alanlar tabloda

bulunuyor. Tüm alanları sorgulamak yerine sorgumuzu şekildeki gibi yaparsak daha anlamlı olacaktır.

SELECT O.NUMARA, O.ADI, O.SOYADI, D.[DERS KODU], D.[DERS ADI],

S.VİZE, S.FİNAL, S.ORTALAMA

FROM ÖĞRENCİLER AS O, DERSLER AS D, SINAVLAR AS S

WHERE O.NUMARA = S.[ÖĞRENCİ NO] AND D.[DERS KODU] = S.[DERS KODU]

Sorgu Sonucu:

Şimdi artık aşağıdaki sorgunun ne anlama geldiğini biliyoruz:

SELECT B.[BÖLÜM KODU], S.[DERS KODU], D.[DERS ADI],

AVG(S.VİZE) AS [VİZE SINIF ORTALAMASI]

FROM SINAVLAR AS S, ÖĞRENCİLER AS O, BÖLÜMLER AS B, DERSLER AS D

WHERE S.[ÖĞRENCİ NO] = O.NUMARA AND S.[DERS KODU] = D.[DERS KODU]

AND B.[BÖLÜM KODU] = O.BÖLÜM

GROUP BY S.[DERS KODU], D.[DERS ADI], B.[BÖLÜM KODU]

HAVING AVG(S.VİZE)>=60

ORDER BY [DERS KODU] DESC

Yukarıdaki sorgulamanın sonucu aşağıdaki gibi olacaktır.

Page 6: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

6 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

2. Tablo Birleştirme İşlemleri (JOIN)

JOIN (birleştir, eşleştir) bir veri tabanında iki veya daha fazla veri tabanı tablosunu ortak bir paydada bir

araya getirmek amacıyla kullanılan SQL sorgu işlemidir. Örneğin bir tablonuzda Kişiler var, diğer iki

tablomuzda ise bu kişilerin telefonları ve mail adresleri olmuş olsun. Bazı kişilerin telefon veya mail

adreslerini sorgulamak istediğimizde önce kişinin numarasını daha sonrada bu numaraya göre kişinin mail

veya telefon numarasını sorgulayabiliriz. Bunun için en az iki veya üç sorgu yazmamız gerekecektir. Böyle

durumlarda JOIN işlemi bunu tek sorguda yapabilmenizi sağlar.

Aşağıdaki örnek veri tabanının tabloları arasındaki ilişkilere dikkat edelim. JOIN işlemlerini bu tablolara

göre yapacağız.

Bu tablolara göre bir kişinin sonsuz telefon numarası veya sonsuz mail adresi olabilmektedir. Örneğin

kişilere ait telefon numaralarını sorgulamak istersek şimdiye kadar öğrendiğimiz yöntem ile aşağıdaki gibi

bir sorgulama yapabiliriz.

SELECT K.NUMARA, ADI, SOYADI, TELEFON

FROM KISILER K , TELEFONLAR T

WHERE K.NUMARA = T.NUMARA

Bu sorgulama sonucu ile kişilere ait varsa bütün telefon numaraları gelecektir. Fakat telefon numarası

olmayan kişi kayıtları gelmeyecektir.

Kişiler

tablosundaki

tüm kayıtlar .

Page 7: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

7 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

Yukarıdaki sorgunun aynısını JOIN komutu ile aşağıdaki gibi yapabiliriz.

SELECT K.NUMARA, ADI, SOYADI, TELEFON

FROM KISILER K INNER JOIN TELEFONLAR T

ON K.NUMARA = T.NUMARA

JOIN komutları INNER JOIN ve OUTER JOIN olmak üzere iki temel gruba ayrılır. OUTER JOIN de kendi

içinde LEFT OUTER JOIN, RIGHT OUTER JOIN ve FULL OUTER JOIN olmak üzere üçe ayrılır. INNER JOIN

komutu ile birleştirilmek istenen her iki tabloda sadece eşleşen kayıtlar gösterilir. Örneğin kişilerin mail

adreslerine yönelik bir sorgulama yapılacağı zaman aşağıdaki gibi bir sorgulama yapılabilir.

SELECT K.NUMARA, ADI, SOYADI, MAIL

FROM KISILER K INNER JOIN MAILLER M

ON K.NUMARA = M.NUMARA

Bu sorgunun sonucunda sadece numarası eşleşen kayıtlar gelecektir.

Eğer mail tablosunda olmayan kişilerin de sorguda görünmesi isteniyorsa bu durumda aşağıdaki gibi bir

sorgu yazılabilir.

SELECT K.NUMARA, ADI, SOYADI, MAIL

FROM KISILER K LEFT OUTER JOIN MAILLER M

ON K.NUMARA = M.NUMARA

Bu sorgulama sonucuna dikkat edilirse sol

tarafa yazılan tablo esas tablo olarak kabul

edilmektedir.

Bu sorgulama ile sol tablodaki tüm kayıtlar

getirilir. Buna karşılık sağ tarafa yazılan

tablodan kayıtlar getirilerek sol taraftaki

kayıtlar ile eşleştirilir. Eşleştirme bu

sorgulamada ON K.NUMARA = M.NUMARA

şeklinde yapılmıştır. Eğer sol tablodaki kayda

karşılık sağ tarafta eşleşen kayıt yoksa karşısı

NULL olarak kalmaktadır.

Bir başka örnek olarak telefonlar tablosu ile mailler tablosunu birleştirelim:

Page 8: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

8 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

SELECT T.NUMARA, TUR, TELEFON, MAIL

FROM TELEFONLAR T LEFT OUTER JOIN MAILLER M

ON T.NUMARA = M.NUMARA

Şimdi de sol tarafa mailler tablosunu yazalım.

SELECT M.NUMARA, MAIL, TUR, TELEFON

FROM MAILLER M LEFT OUTER JOIN TELEFONLAR T

ON M.NUMARA = T.NUMARA

RIGHT JOIN; LEFT JOIN birleştirmesinin tam tersi olarak davranmaktadır. RIGHT JOIN birleştirmesinde ana

tablo sağdaki tablo olmaktadır.

FULL OUTER JOIN birleştirmelerinde ise her iki tabloda da olan tüm kayıtlar birleştirilir. Varsa eşleşen

kayıtlar eşleştirilir. Yoksa karşıları NULL olarak kalır.

SELECT T.NUMARA, TUR, TELEFON, MAIL

FROM TELEFONLAR T FULL OUTER JOIN MAILLER M

ON T.NUMARA = M.NUMARA

Bu sorgulama ile hem telefonlar tablosundaki tüm kayıtlar hem de mailler tablosundaki tüm kayıtlar

eşleştirilerek görüntülenmiştir. Telefonu olup maili olmayan veya maili olup telefonu olmayan kayıtların

karşılıkları NULL olarak bırakılmıştır.

LEFT JOIN birleştirmesinde ana

tablo sol tarafta yazılan tablo

olduğundan sol taraftaki

telefonlar tablosundaki tüm

kayıtlar getirilmiş, karşılığında

varsa mailler tablosundan

kayıtlar getirilmiştir. Karşılığı

yoksa NULL bırakılmıştır.

LEFT JOIN birleştirmesinde ana

tablo sol tarafta yazılan tablo

olduğundan sol taraftaki

mailler tablosundaki tüm

kayıtlar getirilmiş, karşılığında

varsa telefonlar tablosundan

kayıtlar getirilmiştir. Karşılığı

yoksa NULL bırakılmıştır.

Page 9: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

9 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

Not: LEFT OUTER JOIN, RIGHT OUTER JOIN veya FULL OUTER JOIN birleştirmelerinde OUTER anahtar

sözcüğünü yazmak isteğe bağlıdır. Yazılmasa da işlem gerçekleştirilir.

Aynı şekilde INNER JOIN birleşimlerinde de INNER anahtar sözcüğünü yazmak isteğe bağlıdır. Eğer sadece

JOIN yazılsa INNER JOIN anlamına gelmektedir.

JOIN veya INNER JOIN

LEFT JOIN veya LEFT OUTER JOIN

RIGHT JOIN veya RIGHT OUTER JOIN

FULL JOIN veya FULL OUTER JOIN

JOIN işlemleri ile ikiden fazla tablo birleştirilebilir.

SELECT K.NUMARA, ADI, SOYADI, TUR, TELEFON, MAIL

FROM KISILER K FULL JOIN TELEFONLAR T

ON K.NUMARA = T.NUMARA FULL JOIN MAILLER M ON K.NUMARA = M.NUMARA

Page 10: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

10 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

3. Tablo Ekleme İşlemleri (UNION)

JOIN birleştirmede tablolar sütun bazlı olarak birleştirilmekteydi. UNION işlemlerinde ise tablolar satır bazlı

olarak birleştirilmektedir.

UNION birden fazla sorgu cümlesinin sonucunu tek tabloda birleştirir. Kullanımı:

SELECT alan1,alan2,[,…n] FROM tablo_adı1

UNION

SELECT alan1,alan2,[,…n] FROM tablo_adı2

Not: varsayılanda UNION küme işlemleri gibi birleştirme yapar. Yani tekrarlayan kayıtlara izin vermez. Eğer

tekrarlayan kayıtlara izin verilsin isteniyorsa UNION ALL şeklinde yazılmalıdır.

SELECT K.NUMARA, ADI, SOYADI, TUR , TELEFON

FROM KISILER K, TELEFONLAR T WHERE K.NUMARA = T.NUMARA

UNION

SELECT K.NUMARA, ADI, SOYADI, 'e-mail', MAIL

FROM KISILER K, MAILLER M WHERE K.NUMARA = M.NUMARA

Not 1: UNION ile birleştirilen sorgu sonuçlarındaki alan isimleri her zaman ilk sorgudaki alan isimleri olur.

Yukarıdaki sorgu birleştirilmesinde telefonlar ile mailler birleştirilmiş ve telefon alanında maillerde

yazılmıştır.

Not 2: UNION ile sorgulamalar birleştirilmek isteniyorsa her iki sorgulamada da eşit sayıda alan olmalıdır.

Yukarıdaki ikinci sorguda mail için tür olmamasına rağmen eşit sayıda alan oluşması için tür için sabit olarak

‘e-mail’ bilgisi eklenmiştir.

Not 3: Aynı alana eklenmek istenen veriler bir birleri ile uyuşmalıdır. Örneğin sayısal veriye sahip bir alana

metinsel bir alan gelmemelidir.

Page 11: 10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 ...myo.bartin.edu.tr/akgul/dersler/veritabani/10-CokluTablodanSorgulama.pdf · Yönetim Sistemleri-II 9 Bartın MYO – Bilgisayar

10. Hafta Çoklu Tablolardan Sorgulama Yapma BPR255 Veritabanı Yönetim Sistemleri-II

11 Bartın MYO – Bilgisayar Programcılığı | Öğr. Gör. Bayram AKGÜL | 2013-2014 Güz Dönemi

4. Sorgulamaları VIEW (Sanal Tablo) olarak kaydetme

Sorgulamalar view (sanal tablo) olarak kaydedilip daha sonra bu sanal tablolardan sorgulama yapılabiliyor.

View oluşturmak için CREATE VIEW view_adı AS sorgu şeklinde tanımlama yapılıyor.

CREATE VIEW [SINAV SONUCLARI]

AS

SELECT O.NUMARA, O.ADI, O.SOYADI, D.[DERS KODU],

D.[DERS ADI], S.VİZE, S.FİNAL, S.ORTALAMA

FROM ÖĞRENCİLER AS O, DERSLER AS D, SINAVLAR AS S

WHERE O.NUMARA = S.[ÖĞRENCİ NO] AND D.[DERS KODU] = S.[DERS KODU]

Daha sonra sanki SINAV SONUCLARI diye bir tablomuz varmış gibi istediğimiz şekilde sorgulama yapabiliriz.

Aşağıdaki sorgulama sonucu ile BPR251 dersinin sınav sonuçları listelenecektir.

SELECT * FROM [SINAV SONUCLARI] WHERE [DERS KODU] = 'BPR251'

Aşağıdaki sorgulama ile bir öğrencinin sınav sonuçları alınmıştır.

SELECT * FROM [SINAV SONUCLARI]

WHERE NUMARA = 1001001

View i sistemden silmek için DROP VIEW view_adı şeklinde komut yazılır. View silinince sistemdeki gerçek tablolara bir zarar gelmez.

DROP VIEW [SINAV SONUCLARI]