Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
MySQL View Kullanımları
#1
Merhabalar,

Son derece basit bir dille view'lerden bahsetmeye çalışacağım bu sefer,

View'ler Mysql 5.0'dan sonra gelen bir sanal tablo özelliğidir. Üzerinde sadece Select sorguları gerçekleştirilebilir, update delete gibi tablo üzerinde değişiklik yapacak cümleler kullanılamaz. bu gibi işlemler gerçek tablolardan yapılmalıdır.

Peki View'leri neden kullanırız ?
View'leri sürekli kullanılan karmaşık sorguları kolaylaştırmak için kullanılır desem yanlış olmaz, Özellikle joinler kullanarak birden fazla 3 - 5 tabloya kanca atarak yaptığımız sorgularda bize büyük fayda sağlar.  Aşağıdaki örneklerle daha anlaşılır olacağını düşünüyorum.


Örnek kurgumuzda kendi tablomdan bir örnek vereyim, kullanıcılar sistemdeki bir duayı okuduklarında kullanıcı adı dua'nın id'si yazdığım bir minik tablom var, Tablomun boyutunu küçük tutmak için integer id'ler tutuyorum ama tekrar bu beğenen kullanıcıları okumak istediğimde bu anlamsız id'ler değil bana bu id'lerin sahipleri lazım olacak
Eğer basit bir tablonuzda kullanmanız gerekiyor ise Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol 'da kullanabilirsiniz.

LZ6OYa.jpg


Peki ne yapacağız, Bu tablodan veri  sorgular iken user id ile user tabloma gidip bu userin adını, ve dua tabloma gidip bu duanın detayını almam gerekiyor iki Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol kulanmam gerekiyor.
SELECT ld.duaid,duas.konu, ld.user_id,user.username, ld.date  FROM like_dua as ld
INNER JOIN user ON (ld.user_id=user.id)
INNER JOIN duas ON (ld.duaid=duas.id)

Yani böyle bir sorgu kullanmam gerekiyor her defasında, Örnekte verilen tablo basit küçük bir tablo ama büyük projelerde bu cümle onlarca satıra ulaşabilir.
Sorgumuzun sonucu bu şekilde,

PnVO57.jpg

Peki doğru bana lazım olan sonuç bu ama her defasında bu kodları yazmak zorunda mıyım ? Değilsiniz işte tam burada devreye view'ler giriyor.

Bu Görüntülenen sonucu view tablo haline getiriyoruz, kullanımı çok kolay yukarıdaki Select sorgusunun başına Create cümlemizi yazıyoruz

CREATE  VIEW dua_okuyanlar AS
SELECT ld.duaid,duas.konu, ld.user_id,user.username, ld.date  FROM like_dua as ld
INNER JOIN user ON (ld.user_id=user.id)
INNER JOIN duas ON (ld.duaid=duas.id)

dua_okuyanlar  adında bir View tablo oluşturduk. artık yukarıdaki sonuca ulaşmak için uzun uzun cümle yazmak yerine,
SELECT * FROM dua_okuyanlar
cümlesi ile aynı veriye (Her defasında Güncel) olarak ulaşabiliriz. 

Asıl tabloda veri silindiğinde de , ana tabloya veri eklendiğinde de bu sanal tablomuz güncellenecektir.

Umarım anlaşılır her kesimin anlayabileceği şekilde anlatabilmişimdir.
İyi Forumlar.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
Merhaba,
Sade, anlaşılır ve son derece kaliteli makale niteliğinde bir anlatım olmuş. Teşekkür ederim.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
Emeğinize sağlık...
There's no place like 127.0.0.1
WWW
Cevapla
#4
Merhaba,
Örnek olarak 2 adet VIEW olsun..
A ve B

B nin içinde A yı kullanmış olalım..
Daha sonra A da değişiklik yapmış olalım..
MSSQL de B görünümünü için de "exec sp_refreshView B" yaparak yenilememiz gerekebiliyor..
MYSQL de böyle bir işleme ihtiyaç duyuluyor mu?
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#5
(19-01-2017, Saat: 11:30)barutali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Örnek olarak 2 adet VIEW olsun..
A ve B

B nin içinde A yı kullanmış olalım..
Daha sonra A da değişiklik yapmış olalım..
MSSQL de B görünümünü için de "exec sp_refreshView B" yaparak yenilememiz gerekebiliyor..
MYSQL de böyle bir işleme ihtiyaç duyuluyor mu?

Merhabalar , 
ilk view in ikinci viewden çağrılan alanlarının mevcudiyetinde bir değişiklik yoksa böyle bir gereksinim bulunmuyor.
Konuyla ilgili bir ek bilgi de ben paylaşmak isterim,
CREATE VIEW vwTest AS

SELECT * FROM tablom

şeklinde bir view oluşturduğunuzda view alanları fiziksel tablonun o anki tüm alanlarını içerek şekilde oluşturulur "tablom" isimli fizksel tabloya sonradan eklenecek alanlar oluşmuş view "*" ile seçmiş olsa dahi gelmez çünkü VIEW kaydedilirken "*" ile seçilen tablonun her bir alanını DDL içine kendi eklyerek yazar.

iyi çalışmalar.
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Soru : MySQL Veritabanı' nda Explode İşlemi Nasıl Yapılır mad85 9 285 22-03-2018, Saat: 21:48
Son Yorum: uparlayan
  MySQL SP recover.. mcuyan 6 216 06-01-2018, Saat: 17:07
Son Yorum: mcuyan
Question MySQL ve MsSQL Md5 Fonksiyon Sonuçları Eşleşmiyor frmman 6 260 22-12-2017, Saat: 09:25
Son Yorum: frmman
  MySQL & DLL (User Defined Function) yhackup 11 435 13-12-2017, Saat: 14:09
Son Yorum: yhackup
  MySQL Function Kullanımı yhackup 6 2.271 15-08-2017, Saat: 09:09
Son Yorum: yhackup



Konuyu Okuyanlar: 1 Ziyaretçi