Oracle PL/SQL Ekleme, Güncelleme, Silme ve İçine Seçme [Örnek]

⚡ Akıllı Özet

SQL ifadeleri içinde Oracle PL/SQL, veri işleme işlemlerinin her birini tek bir blok halinde gerçekleştirerek, doğrudan satır ekleme, güncelleme, silme ve seçme işlemlerini mümkün kılar. INSERT, UPDATE, DELETE ve SELECT INTO komutları, veritabanı içinde veri taşır ve veri alır.

  • ⚙️ DML Komutları: INSERT, UPDATE, DELETE ve SELECT INTO komutları, PL/SQL bloğu içinde her türlü veri işleme görevini gerçekleştirir.
  • ➕ Veri Ekleme: INSERT INTO komutu, açıkça belirtilen DEĞERLERDEN veya SELECT sorgusu kullanılarak doğrudan başka bir tablodan satır ekler.
  • 🔄 Veri güncellemesi: SET ile birlikte kullanılan UPDATE komutu sütun değerlerini değiştirirken, isteğe bağlı WHERE koşulu etkilenen satır sayısını sınırlandırır.
  • 🗑️ Veri Silme: DELETE komutu eşleşen kayıtları siler ve WHERE koşulunun atlanması tüm tabloyu temizler.
  • 🎯 Şuraya Seçin: SELECT INTO sorgusu tam olarak bir satır döndürmelidir, veya Oracle NO_DATA_FOUND veya TOO_MANY_ROWS hatası verir.
  • 🤖 Yapay Zeka Yardımı: GitHub Copilot gibi yapay zeka asistanları, DML bloklarını taslak haline getirir ve eksik bir WHERE veya COMMIT ifadesini işaretler.

Oracle PL/SQL Ekle Güncelleme Sil Seç İçine

PL/SQL'de DML İşlemleri

DML, Veri İşleme Dili anlamına gelir ve bir dil grubudur. SQL Bir tabloda saklanan verileri değiştiren komutlar. PL/SQL bloğuBu komutlar manipülasyon işini gerçekleştirirken, PL/SQL çevreleyen mantığı sağlar. DML ise aşağıdaki işlemleri yürütür.

  • Veri Ekleme
  • Veri Güncelleme
  • Veri Silme
  • Veri Seçimi

PL/SQL'de veri işleme yalnızca SQL komutları aracılığıyla gerçekleştirilir.

Veri Ekleme

PL/SQL'de, INSERT INTO SQL komutu ile bir tabloya satırlar eklenir. Bu komut, girdi olarak tablo adını, hedef sütunları ve sütun değerlerini alır ve ardından değeri temel tabloya ekler.

INSERT komutu, her sütun için değerleri tek tek vermek yerine, SELECT sorgusu kullanarak değerleri doğrudan başka bir tablodan da alabilir. SELECT sorgusu aracılığıyla, kaynak tabloda bulunan satır sayısı kadar satır aynı anda eklenebilir.

Sözdizimi:

BEGIN
INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>)
VALUES(<value1>,<value2>,...,<value_n>);
END;

Yukarıdaki sözdizimi, INSERT INTO komutunu göstermektedir. Tablo adı ve değerler zorunlu alanlardır, oysa INSERT ifadesi tablonun her sütunu için değerler sağladığında sütun adları isteğe bağlıdır. Yukarıda gösterildiği gibi, değerler ayrı ayrı verildiğinde VALUES anahtar kelimesi zorunludur.

Sözdizimi:

BEGIN
INSERT INTO <table_name>(<column1>,<column2>,...,<column_n>)
SELECT <column1>,<column2>,...,<column_n> FROM <table_name2>;
END;

INSERT INTO komutunun bu ikinci biçimi, değerleri doğrudan şuradan alır: SELECT komutu kullanılarak. Değerler ayrı olarak sağlanmadığı için VALUES anahtar kelimesi burada bulunmamalıdır.

Veri Güncelleme

Veri güncelleme, mevcut bir satırdaki bir sütunun değerini değiştirmek anlamına gelir. Bu işlem, tablo adını, sütun adını ve yeni değeri girdi olarak alan ve veriyi güncelleyen UPDATE ifadesiyle yapılır.

Sözdizimi:

BEGIN
UPDATE <table_name>
SET <column1>=<value1>,<column2>=<value2>,<column_n>=<value_n>
WHERE <condition that uniquely identifies the record that needs to be updated>;
END;

Yukarıdaki sözdizimi UPDATE ifadesini göstermektedir. SET anahtar kelimesi, PL/SQL motoruna sütunu verilen değerle güncellemesini söyler. WHERE yan tümcesi isteğe bağlıdır; verilmezse, belirtilen sütunun değeri tüm tabloda güncellenir.

Veri Silme

Veri silme, veritabanı tablosundan tek bir kaydı tamamen kaldırmak anlamına gelir. Bu amaçla DELETE komutu kullanılır.

Sözdizimi:

BEGIN
DELETE FROM <table_name>
WHERE <condition that uniquely identifies the record that needs to be deleted>;
END;

Yukarıdaki sözdizimi DELETE komutunu göstermektedir. FROM anahtar kelimesi isteğe bağlıdır ve FROM yan tümcesi olsun veya olmasın komut aynı şekilde davranır. WHERE yan tümcesi de isteğe bağlıdır; verilmezse, tablonun tamamı boşaltılır.

Veri Seçimi

Veri projeksiyonu veya veri çekme, veritabanı tablosundan gerekli verilerin alınması anlamına gelir. Bu, SELECT komutu ve INTO yan tümcesi birlikte kullanılarak gerçekleştirilir. SELECT komutu veritabanından değerleri çeker ve INTO yan tümcesi bu değerleri PL/SQL bloğunun yerel değişkenlerine atar.

SELECT ifadesini INTO ile birlikte kullanırken aşağıdaki noktalara dikkat edilmelidir:

  • INTO yan tümcesi kullanılırken SELECT sorgusu yalnızca bir kayıt döndürmelidir, çünkü bir değişken yalnızca bir değer tutabilir. SELECT sorgusu birden fazla satır döndürürse, ÇOK_ÇOK_SATIR istisnası yükseltildi.
  • SELECT ifadesi, INTO yan tümcesindeki değişkene değer atar; bu nedenle, değeri doldurmak için en az bir kayda ihtiyaç duyar. Herhangi bir kayıt bulamazsa, NO_DATA_FOUND istisnası fırlatılır.
  • SELECT yan tümcesindeki sütun sayısı ve veri tipleri, INTO yan tümcesindeki değişken sayısı ve veri tipleriyle eşleşmelidir.
  • Değerler, açıklamada belirtildiği gibi aynı sırayla alınır ve doldurulur.
  • WHERE koşulu isteğe bağlıdır ve getirilen kayıtlara daha fazla kısıtlama getirmenizi sağlar.
  • SELECT ifadesi, diğer DML ifadelerinin WHERE koşulunda koşulların değerlerini tanımlamak için kullanılabilir.
  • INSERT, UPDATE veya DELETE ifadelerinin içinde kullanılan bir SELECT ifadesi, bu durumlarda herhangi bir değişkeni doldurmadığı için INTO yan tümcesi içermemelidir.

Sözdizimi:

BEGIN
SELECT <column1>,...,<column_n> INTO <variable1>,...,<variable_n>
FROM <table_name>
WHERE <condition to fetch the required records>;
END;

Yukarıdaki sözdizimi, SELECT-INTO komutunu göstermektedir. FROM anahtar kelimesi zorunludur ve verilerin hangi tablodan alınması gerektiğini belirtir. WHERE yan tümcesi isteğe bağlıdır; belirtilmezse, tablonun tamamından veri alınır.

Örnek 1: Bu örnekte, PL/SQL'de DML işlemlerinin nasıl gerçekleştirileceğini göreceğiz. Aşağıdaki dört kaydı emp tablosuna ekleyeceğiz.

EMP_NAME EMP_NO MAAŞ MÜDÜRÜ
BBB 1000 25000 AAA
XXX 1001 10000 BBB
YYY 1002 10000 BBB
ZZZ 1003 7500 BBB

Ardından 'XXX' çalışanının maaşını 15000 olarak güncelleyeceğiz, 'ZZZ' çalışan kaydını sileceğiz ve son olarak 'XXX' çalışanının bilgilerini yansıtacağız.

Aşağıdaki ekran görüntüsü, bu örnek için kullanılan PL/SQL bloğunun tamamını göstermektedir.

Oracle PL/SQL kod bloğu, emp tablosunda ekleme, güncelleme, silme ve seçme işlemlerini gerçekleştiriyor.

DECLARE
l_emp_name VARCHAR2(250);
l_emp_no NUMBER;
l_salary NUMBER;
l_manager VARCHAR2(250);
BEGIN
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('BBB',1000,25000,'AAA');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('XXX',1001,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('YYY',1002,10000,'BBB');
INSERT INTO emp(emp_name,emp_no,salary,manager)
VALUES('ZZZ',1003,7500,'BBB');
COMMIT;
Dbms_output.put_line('Values Inserted');
UPDATE EMP
SET salary=15000
WHERE emp_name='XXX';
COMMIT;
Dbms_output.put_line('Values Updated');
DELETE emp WHERE emp_name='ZZZ';
COMMIT;
Dbms_output.put_line('Values Deleted');
SELECT emp_name,emp_no,salary,manager INTO l_emp_name,l_emp_no,l_salary,l_manager FROM emp WHERE emp_name='XXX';
Dbms_output.put_line('Employee Detail');
Dbms_output.put_line('Employee Name:'||l_emp_name);
Dbms_output.put_line('Employee Number:'||l_emp_no);
Dbms_output.put_line('Employee Salary:'||l_salary);
Dbms_output.put_line('Employee Manager Name:'||l_manager);
END;
/

Çıktı:

Values Inserted
Values Updated
Values Deleted
Employee Detail
Employee Name:XXX
Employee Number:1001
Employee Salary:15000
Employee Manager Name:BBB

Code Açıklama:

  • Code 2-5. satırlar: Değişkenleri tanımlama.
  • Code 7-14. satırlar: Kayıtlar emp tablosuna ekleniyor.
  • Code 15 hattı: Ekleme işlemleri onaylanıyor.
  • Code 17-19. satırlar: 'XXX' çalışanının maaşı 15000 olarak güncelleniyor.
  • Code 20 hattı: Güncelleme işlemini onaylama.
  • Code 22 hattı: 'ZZZ' kaydı siliniyor.
  • Code 23 hattı: Silme işlemi onaylanıyor.
  • Code 25 hattı: 'XXX' kaydını seçin ve l_emp_name, l_emp_no, l_salary ve l_manager değişkenlerini doldurun.
  • Code 26-30. satırlar: Getirilen kayıt değerleri görüntüleniyor.

SSS

Hayır. Statik PL/SQL, DDL'yi doğrudan çalıştıramaz. İfadeyi bir dize olarak oluşturun ve ardından şu şekilde çalıştırın: HEMEN UYGULABu, çalışma zamanında CREATE, ALTER ve DROP işlemlerini gerçekleştirir.

SELECT INTO sorgusu tam olarak bir satır döndürmelidir. Birden fazla satır okumak için açık bir SELECT INTO sorgusu kullanın. imleç Bir FETCH döngüsüyle veya BULK COLLECT INTO ile bir koleksiyona aktarın.

DELETE, DML işlemidir: WHERE koşuluyla seçili satırları siler ve geri alınabilir. TRUNCATE, DDL işlemidir: tüm satırları anında temizler, otomatik olarak onaylar ve geri alınamaz.

Evet. INSERT, UPDATE ve DELETE değişiklikleri siz onu silene kadar oturumunuzda kalır. KOMİTEPL/SQL otomatik commit işlemi yapmaz. Kaydetmek için COMMIT, iptal etmek için ROLLBACK kullanın.

MERGE işlemi, ayrı UPDATE ve INSERT geçişleri yerine tek bir ifadede upsert işlemi gerçekleştirir; yani bir birleştirme koşuluna uyan satırları günceller ve uymayanları ekler.

RETURNING INTO, INSERT, UPDATE veya DELETE işlemlerinin etkilediği satırlardaki sütun değerlerini yakalar ve değişkenlerde saklar; böylece değişen verileri okumak için fazladan bir SELECT sorgusuna gerek kalmaz.

Evet. GitHub Yardımcı Pilotu Kısa bir yorumdan INSERT, UPDATE, DELETE ve SELECT INTO bloklarının taslaklarını oluşturur, bağlama değişkenleri önerir ve sütun listelerini tamamlar; ancak öncelikle mantığı gözden geçirmeniz gerekir.

Yapay zekâ asistanları, DML kodlarında eksik WHERE koşullarını, eksik COMMIT'leri ve güvenli olmayan birleştirmeleri tarar, ardından düzeltmeler önerir ve hataları açıklar. Bu makine öğrenimi tabanlı inceleme, riskli değişiklikleri üretime geçmeden önce yakalar.

Bu yazıyı şu şekilde özetleyin: