Oracle Database — SQL Temelleri 9 — Veri İşleme Dili (DML)

Merhaba,

Veritabanına yeni veri ekleme, var olanları güncelleme, silme işlemleri DML kullanarak yapılır. DML(Data Manipulation Language) Veri İşleme Dili anlamına gelmektedir.

DML cümlelerini kullanarak veri üstünde değişiklik yaptığınızda kalıcı olması için COMMIT komutunun çalıştırılması gerekir. Aksi taktirde eklediğiniz verilerinizi bir sonraki oturumda göremezsiniz. Yapılan değişiklikleri geri almak içinse ROLLBACK komutunu kullanırız. Gelin şimdi bunları daha detaylı bir biçimde inceleyelim.

Insert

Bir veya daha fazla tabloya kayıt eklemek için kullanılır.

Syntax:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

Şimdi insert syntax tan yararlanarak bir insert yazalım:

INSERT INTO EMPLOYEES
(EMPLOYEE_ID, FIRST_NAME, LAST_NAME, EMAIL, HIRE_DATE, JOB_ID, SALARY)
VALUES (500,'Gökhan','YAVAS','YVSGKHN',SYSDATE,'IT_PROG',7500);
--ÇIKTI: 1 row inserted.
Employees tablosuna kendi bilgilerimi ekledim. Bazı alanları boş geçtim. Görsele bakın lütfen.
oracle-sql-9-1
insert cümlesi yazarken tablonun bütün sütunlarına veri eklemek zorunda değiliz ancak sütunda  Not Null ya da Primary Key kısıtlayısı (constraint) varsa o sütuna veri girişi yapmak zorundayız. Peki nerden bileceğiz not null olduğunu veya olmadığını? Bunun için DESC komutunu kullanırız.
desc EMPLOYEES;
Çıktı :
Name           Null     Type
-------------- -------- ------------
EMPLOYEE_ID NOT NULL NUMBER(6)
FIRST_NAME VARCHAR2(20)
LAST_NAME NOT NULL VARCHAR2(25)
EMAIL NOT NULL VARCHAR2(25)
PHONE_NUMBER VARCHAR2(20)
HIRE_DATE NOT NULL DATE
JOB_ID NOT NULL VARCHAR2(10)
SALARY NUMBER(8,2)
COMMISSION_PCT NUMBER(2,2)
MANAGER_ID NUMBER(6)
DEPARTMENT_ID NUMBER(4)
Update
Update komutu ile tablolardaki verileri güncelleyebiliriz.
Syntax:
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
İnsert ettiğim veri üstünde update işlemini gerçekleştirelim. 7500 olan maaşa %10 zam yapacağım.
UPDATE employees SET salary=salary*110/100 WHERE first_name like 'Gökhan';
oracle-sql-9-2

Delete

Tablodaki kayıtları silmek için kullanılır. where koşul ifadesi kullanılmazsa tüm tablo silinir.
Syntax:
DELETE FROM table_name
WHERE some_column=some_value;
DELETE FROM EMPLOYEES WHERE EMPLOYEE_ID = 500;
-Çıktı:
1 row deleted.
Eklediğimiz veriyi sildik.

Merge

Girdiğimiz kayıt tabloda varsa güncelleştirir yoksa tabloya kayıt ekler.
Syntax:
MERGE INTO TableAdi U1
USING (Sorgu Cümlesi (Select * from Tablo2)U2
ON (U1.sutunAdi = U2.sutunAdi)
when matched then
UPDATE SET U1.alanAdi2 = deger
when NOT matched then
INSERT(alanlar)
VALUES(degerler)
  • INTO : Kaydın ekleneceği ya da güncelleneceği tabloyu belirtir.
  • USING : Eklenecek ya da güncellenecek kayıtların bulunduğu kaynağı belirtir.
  • ON : MERGE işleminin güncelleme ya da kayıt ekleme işlemini nasıl yapacagı koşulu belirtilir.
  • WHEN MATCHED : Kaydın ilgili MERGE koduna uyması durumunda yapılacak işlemi belirtir.
  • WHEN NOT MATCHED : Kaydın ilgili MERGE koduna uymaması durumunda yapılacak işlemi belirtir.
merge ile ilgili örneği oracle docs üzerinden inceleyebilirsiniz.
Veri Modifikasyonları (DML) konusunun sonuna geldik. Bir sonraki konumuz SQL DML(Data Defination Language). Görüşmek üzere :)