PostgreSQL Nedir?
EXISTS operatörü, bir alt sorguda satır (lar) olup olmadığını test eder. Bu, operatörün bir alt sorgu ile birlikte kullanıldığı anlamına gelir. Var operatörünün, alt sorguda en az bir satır bulunduğunda karşılandığı söylenir. Bu işlemi SELECT, UPDATE, INSERT ve DELETE deyimleriyle birlikte kullanabilirsiniz.
Bu PostgreSQL Eğitiminde aşağıdakileri öğreneceksiniz:
- Sözdizimi
- SELECT İfadesi ile
- INSERT İfadesi ile
- GÜNCELLEME İfadesi ile
- DELETE İfadesi ile
- PgAdmin ile
Sözdizimi
PostgreSQL EXISTS deyiminin sözdizimi şöyledir:
WHERE EXISTS (subquery);
Yukarıdaki sözdizimi, EXISTS operatörünün bir alt sorgu olan bir bağımsız değişken aldığını gösterir. Alt sorgu, sütun adları veya ifadeler listesi yerine SELECT * ile başlaması gereken bir SELECT ifadesidir.
SELECT İfadesi ile
EXISTS operatörüyle bir SELECT ifadesinin nasıl kullanılacağını görelim. Aşağıdaki tablolarımız var:
Kitap:
Fiyat:
Aşağıdaki ifadeyi çalıştırın:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Bu, aşağıdakileri döndürür:
Yukarıdaki komut, kimliği alt sorguya göre herhangi bir kaydın kimliğiyle eşleşen Kitap tablosundaki tüm kayıtları döndürmelidir. Yalnızca bir kimlik eşleşti. Bu nedenle, yalnızca bir kayıt iade edildi.
INSERT İfadesi ile
EXISTS operatörünü bir INSERT deyiminde kullanabiliriz. Aşağıdaki 3 tablomuz var:
Kitap:
Fiyat:
Fiyat2:
Daha sonra aşağıdaki ifadeyi çalıştırabiliriz:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Fiyat tablosu artık aşağıdaki gibidir:
Fiyat2 adlı tablodaki 5 kimliğine sahip satır eşleşti. Bu kayıt daha sonra Fiyat tablosuna eklendi.
GÜNCELLEME İfadesi ile
EXISTS operatörünü bir UPDATE deyiminde kullanabiliriz.
Aşağıdaki sorguyu çalıştırın:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Fiyat tablosunun fiyat sütununu güncelliyoruz. Amacımız, bir kimliği paylaşan öğelerin fiyatlarının aynı olmasını sağlamaktır. Yalnızca bir satır eşleşti, yani 5.
Ancak fiyatlar eşit olduğu için yani 205 güncelleme yapılmadı. Bir fark olsaydı, bir güncelleme yapılmış olurdu.
DELETE İfadesi ile
Bir PostgreSQL DELETE ifadesi, EXISTS operatörünü kullanabilir. İşte bir örnek:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Fiyat tablosu artık aşağıdaki gibidir:
Kimliği 5 olan satır silindi.
PgAdmin ile
Şimdi bu eylemlerin pgAdmin kullanılarak nasıl gerçekleştirilebileceğini görelim.
SELECT İfadesi ile
Aynısını pgAdmin aracılığıyla gerçekleştirmek için şunu yapın:
Adım 1) pgAdmin hesabınıza giriş yapın.
Adım 2)
- Soldaki gezinme çubuğundan Veritabanları'nı tıklayın.
- Demo 'yu tıklayın.
Adım 3) Sorguyu sorgu düzenleyicisine yazın:
SELECT *FROM BookWHERE EXISTS (SELECT *FROM PriceWHERE Book.id = Price.id);
Adım 4) Yürüt düğmesini tıklayın.
Aşağıdakileri döndürmelidir:
INSERT İfadesi ile
Aynısını pgAdmin aracılığıyla gerçekleştirmek için şunu yapın:
Adım 1) pgAdmin hesabınıza giriş yapın.
Adım 2)
- Soldaki gezinme çubuğundan Veritabanları'nı tıklayın.
- Demo 'yu tıklayın.
Adım 3) Sorguyu sorgu düzenleyicisine yazın:
INSERT INTO PriceSELECT id, priceFROM Price2WHERE EXISTS (SELECT idFROM BookWHERE Book.id = Price2.id);
Adım 4) Yürüt düğmesini tıklayın.
Fiyat tablosu artık aşağıdaki gibi olmalıdır:
GÜNCELLEME İfadesi ile
Aynısını pgAdmin aracılığıyla gerçekleştirmek için şunu yapın:
Adım 1) pgAdmin hesabınıza giriş yapın.
Adım 2)
- Soldaki gezinme çubuğundan Veritabanları'nı tıklayın.
- Demo 'yu tıklayın.
Adım 3) Sorguyu sorgu düzenleyicisine yazın:
UPDATE PriceSET price = (SELECT priceFROM Price2WHERE Price2.id = Price.id)WHERE EXISTS (SELECT id, priceFROM Price2WHERE Price2.id = Price.id);
Adım 4) Yürüt düğmesini tıklayın.
Fiyat tablosu artık aşağıdaki gibi olmalıdır:
DELETE İfadesi ile
Aynısını pgAdmin aracılığıyla gerçekleştirmek için şunu yapın:
Adım 1) pgAdmin hesabınıza giriş yapın.
Adım 2)
- Soldaki gezinme çubuğundan Veritabanları'nı tıklayın.
- Demo 'yu tıklayın.
Adım 3) Sorguyu sorgu düzenleyicisine yazın:
DELETE FROM PriceWHERE EXISTS (SELECT *FROM Price2WHERE Price.id = Price2.id);
Adım 4) Yürüt düğmesini tıklayın.
Fiyat tablosu artık aşağıdaki gibi olmalıdır:
Özet
- EXISTS operatörü, bir alt sorguda satır (lar) olup olmadığını test eder.
- Bir alt sorgu ile kullanılır ve alt sorgu en az bir satır döndürdüğünde karşılandığı söylenir.
- SELECT, UPDATE, INSERT ve DELETE deyimleriyle birlikte kullanılır.
Bu Eğitimde kullanılan Veritabanını indirin