PHP View Oluşturma Ve Kullanma

Eğer karmaşık select sorguları kullanıyorsanız view kullanmak işinize çok yarayacaktır. Verileri daha düzenli halde görebilmemizi sağlayan view’ler Mysql 5.0’den sonra ortaya çıktı.View‘lar birer sanal tablodur. Yani bir tablo gibi davranırlar, bu yüzden oluşturduğumuz view‘lar üzerinde select işlmleri gerçekleştirebiliyoruz.

Bu güzel yeniliği basit bir örnekle kullanalım kullanalım. Karmaşık select sorguları için kullanıldığından örnek içinde iki tabloyu birleştirip verileri almaya yarayan bir view yaratacağız.

Öncelikle tablolarımızı oluşturup biraz veri ekleyelim. Örnekte kitaplar ve yazarlar tablosu olacak. Bir yazarın birden fazla kitabı olduğuna göre kitaplar tablosuna yazarlar tablosunun idnumarasını referans alan bir komşu anahtar sütünü ekleyeceğiz. Tabloların yapısı:

CREATE TABLE IF NOT EXISTS yazarlar (
id int(10) NOT NULL AUTO_INCREMENT,
isim varchar(25) COLLATE utf8_bin NOT NULL,
soyisim varchar(25) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (id)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;CREATE TABLE IF NOT EXISTS kitaplar (
id int(10) NOT NULL AUTO_INCREMENT,
yazar_id int(10) NOT NULL,
isbn bigint(11) NOT NULL,
kitap_ismi varchar(50) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (id),
KEY yazar_id (yazar_id) — Komşu anahtar sütünümüz
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin ;

 

Şimdi view yaratacak sql sorgumuzu yazalım:

CREATE VIEW kitap_bilgileri AS
SELECT kitaplar.kitap_ismi AS kitap_ismi,
kitaplar.isbn AS kitap_isbn,
yazarlar.isim AS kitap_yazar_ismi,
yazarlar.soyisim AS kitap_yazar_soyisim
FROM kitaplar INNER JOIN yazarlar ON (kitaplar.yazar_id = yazarlar.id)

Tablolara biraz veri girdikten sonra (kitab bilgilerini girerken yazar.id numarasına göre girmeliyiz) ve oluşturduğumuz View‘ı kullanalım:

Ve istenilen sonuç:

view-mysql

Sanal View tablomuzun yapısı:

view-mysql-2

View oluşturma bu şekilde yapılıyor. Kendi tablolarınızda daha karışık view‘lar yaratarakMysql sunucunuzdaki verileri daha rahat görebilirsiniz.

Not: Where ya da Join ifadesi ile birleştirilen tablo sütünların (alanların) indexlenmesi performans açısından daha iyidir.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.