SEO (Arama Motoru Optimizasyonu) Mikro İnteraktif ÜCRETSİZ - Google Play'den İndirin

Oracle Update ve Delete İşlemlerinde Join Kullanım Örneği

Oracle veritabanında bir tablo ile ilişkili diğer tabloda update (güncelleme) ve delete (silme) işlemlerini birkaç örnek ile anlamaya çalışalım.

Örneğimizi şehir, ilçe ve mahalle tablo yapısı üzerinde oluşturalım.
Şehirler Tablosu
CREATE TABLE TBLSEHIRLER (
ID NUMBER(10) GENERATED BY DEFAULT AS IDENTITY,
SEHIR_AD VARCHAR2(100) NULL,
CONSTRAINT PK_TBLSEHIRLER PRIMARY KEY(ID)
)

Şehirler tablosu oluştu. Birkaç şehir ekleyelim.
Şehirler Tablosu Kayıt Ekle
INSERT INTO TBLSEHIRLER (SEHIR_AD) VALUES ('ISTANBUL')
INSERT INTO TBLSEHIRLER (SEHIR_AD) VALUES ('ANKARA')
INSERT INTO TBLSEHIRLER (SEHIR_AD) VALUES ('ADANA')

Oluşan şehirler tablosunu ve içerisindeki verilere ait ekran görüntüsünü paylaşalım.
Şehirler Tablosu Görünümü
Oracle Update ve Delete İşlemlerinde Join Kullanım Örneği

Şehirler tablosuna veriler eklendi. Ardından ilçeler tablosunu oluşturalım.
İlçeler Tablosu
CREATE TABLE TBLILCELER (
ID NUMBER(10) GENERATED BY DEFAULT AS IDENTITY,
SEHIR_ID NUMBER(10),
ILCE_AD VARCHAR2(100) NULL,
CONSTRAINT PK_TBLILCELER PRIMARY KEY(ID),
CONSTRAINT FK_TBLILCELER_SEHIR_ID FOREIGN KEY (SEHIR_ID) REFERENCES TBLSEHIRLER(ID)
)

İlçeler tablosu oluştu. Birkaç ilçe ekleyelim.
İlçeler Tablosu Kayıt Ekle
INSERT INTO TBLILCELER (ILCE_AD, SEHIR_ID) VALUES ('ŞİŞLİ', 1)
INSERT INTO TBLILCELER (ILCE_AD, SEHIR_ID) VALUES ('BEYLİKDÜZÜ', 1)
INSERT INTO TBLILCELER (ILCE_AD, SEHIR_ID) VALUES ('ARNAVUTKÖY', 1)
INSERT INTO TBLILCELER (ILCE_AD, SEHIR_ID) VALUES ('AVCILAR', 1)
INSERT INTO TBLILCELER (ILCE_AD, SEHIR_ID) VALUES ('ÇANKAYA', 2)
INSERT INTO TBLILCELER (ILCE_AD, SEHIR_ID) VALUES ('KEÇİÖREN', 2)
INSERT INTO TBLILCELER (ILCE_AD, SEHIR_ID) VALUES ('YENİMAHELLE', 2)
INSERT INTO TBLILCELER (ILCE_AD, SEHIR_ID) VALUES ('ÇUKUROVA', 3)
INSERT INTO TBLILCELER (ILCE_AD, SEHIR_ID) VALUES ('SEYHAN', 3)

Oluşan ilçeler tablosunu ve içerisindeki verilere ait ekran görüntüsünü paylaşalım.
İlçeler Tablosu Görünümü
Oracle Update ve Delete İşlemlerinde Join Kullanım Örneği

İlçeler tablosuna veriler eklendi. Ardından mahalleler tablosunu oluşturalım.
Mahalleler Tablosu
CREATE TABLE TBLMAHALLELER (
ID NUMBER(10) GENERATED BY DEFAULT AS IDENTITY,
SEHIR_ID NUMBER(10),
ILCE_ID NUMBER(10),
MAHALLE_AD VARCHAR2(100) NULL,
CONSTRAINT PK_TBLMAHALLELER PRIMARY KEY(ID),
CONSTRAINT FK_TBLMAHALLELER_SEHIR_ID FOREIGN KEY (SEHIR_ID) REFERENCES TBLSEHIRLER(ID),
CONSTRAINT FK_TBLMAHALLELER_ILCE_ID FOREIGN KEY (ILCE_ID) REFERENCES TBLILCELER(ID)
)

Mahalleler tablosu oluştu. Birkaç mahalle ekleyelim.
Mahalleler Tablosu Kayıt Ekle
INSERT INTO TBLMAHALLELER (ILCE_ID, MAHALLE_AD) VALUES (1, 'ŞİŞLİ MAHALLE 1')
INSERT INTO TBLMAHALLELER (ILCE_ID, MAHALLE_AD) VALUES (1, 'ŞİŞLİ MAHALLE 2')
INSERT INTO TBLMAHALLELER (ILCE_ID, MAHALLE_AD) VALUES (2, 'BEYLİKDÜZÜ MAHALLE 1')
INSERT INTO TBLMAHALLELER (ILCE_ID, MAHALLE_AD) VALUES (6, 'KEÇİÖREN MAHALLE 1')
INSERT INTO TBLMAHALLELER (ILCE_ID, MAHALLE_AD) VALUES (6, 'KEÇİÖREN MAHALLE 2')
INSERT INTO TBLMAHALLELER (ILCE_ID, MAHALLE_AD) VALUES (8, 'ÇUKUROVA MAHALLE 1')
INSERT INTO TBLMAHALLELER (ILCE_ID, MAHALLE_AD) VALUES (9, 'SEYHAN MAHALLE 1')

Oluşan mahalleler tablosunu ve içerisindeki verilere ait ekran görüntüsünü paylaşalım.
Mahalleler Tablosu Görünümü
Oracle Update ve Delete İşlemlerinde Join Kullanım Örneği

Görüldüğü üzere, mahalleler tablosundaki SEHIR_ID sütununun değerleri bulunmamakta. Bu değerleri bulmak için ILCELER tablosunu MAHALLELER tablosu ile birleştirip SEHIR_ID sütununa ilgili şehrin ID değeriyle güncelleme yapmak olacaktır.
Örneğin; "BEYLİKDÜZÜ MAHALLE 1" adlı mahallenin ILCE_ID değeri "2", o ilçenin SEHIR_ID değeri ise "1". Bu iki tablo verilerini birleştirip MAHALLELER tablosunda SEHIR_ID değerlerini güncellemiş olacağız.
Update Join Örneği
MERGE INTO TBLMAHALLELER X
USING
(
   SELECT A.ID SEHIR_ID, B.ID ILCE_ID, B.ILCE_AD FROM TBLSEHIRLER A
   INNER JOIN TBLILCELER B ON A.ID = B.SEHIR_ID
) Y ON (X.ILCE_ID = Y.ILCE_ID)
WHEN MATCHED THEN
UPDATE SET X.SEHIR_ID = Y.SEHIR_ID

Kodda daha sonradan farkettiğim bir şey, SEHIRLER tablosunu bağlamadan da mahallenin SEHIR_ID değerini sadece ILCELER tablosu üzerinden de yapabildiğimizdir. Kodu biraz daha kısaltırsak.
Update Join Örneği (Kısaltılmış)
MERGE INTO TBLMAHALLELER X
USING
(
   SELECT ID, SEHIR_ID FROM TBLILCELER
) Y ON (X.ILCE_ID = Y.ID)
WHEN MATCHED THEN
UPDATE SET X.SEHIR_ID = Y.SEHIR_ID

Update işlemini tabloları birleştirerek (join) sağlamış olduk. Sonucun ekran görüntüsünü paylaşalım.
Mahalleler Tablosu Görünümü
Oracle Update ve Delete İşlemlerinde Join Kullanım Örneği

Şimdiki örneğimiz ise delete işlemi için yapalım. İlçesi "KEÇİÖREN" olan mahalleleri join işlemiyle silme işlemini gerçekleştirelim.
Delete Join Örneği
MERGE INTO TBLMAHALLELER X
USING
(
   SELECT ID, ILCE_AD FROM TBLILCELER
) Y ON (X.ILCE_ID = Y.ID)
WHEN MATCHED THEN 
UPDATE SET X.SEHIR_ID = X.SEHIR_ID
DELETE WHERE Y.ILCE_AD = 'KEÇİÖREN';

Sorgumuzu hazırladık ve çalıştırdık. Sonucun ekran görüntüsünü paylaştığımızda "KEÇİÖREN MAHALLE 1" ve "KEÇİÖREN MAHALLE 2" adlı kayıtların silindiğini görmüş oluyoruz.
Örnek
Oracle Update ve Delete İşlemlerinde Join Kullanım Örneği

Yorumlar

Yorum Yaz

Avatar

REKLAM

DDos Koruma, Botnet Koruma, Layer 7 Saldırı koruması, Sanal sunucu, Vds sunucu

REKLAM

Çizgi Filmler

REKLAM

Çocuk Etkinlikleri Uygulaması

EN

  • Popüler
  • Yeni
  • Son Yorum