Özet: Temel DML sorgularının tanımı ve kullanımı anlatılıyor.

 

SQL(Structured Query Language), veritabanlarında verileri yönetmek için geliştirilmiş bir dildir. SQL standart bir dildir fakat farklı çeşit veritabanlarında yapısal farklılıklar olabilir. Bunlar PL/SQL (Oracle veritabanının sorgulama dilidir) ve T-SQL (Microsoft’un veritabanı sorgulama dilidir) olabilir.

SQL komutları ile neler yapabiliriz?
Bir veritabanında; veri çekebilir, veri güncelleyebilir (silebilir, ekleyebilir), yeni bir tablo oluşturabilir, SP(stored procedures) oluşturabilir, veri tabanında yetkiler verebilir, gibi birçok veritabanı işlemi bu sorgulama dili ile yapılabilmektedir.

SQL komutlarını

  • DML (Data Manipulation Language )
  • DDL (Data Definition Language)
  • DCL (Data Control Language)
  •  TCL (Transaction Control Language)

olarak ayırabiliriz. Bu yazımızda DML komutlarına bakacağız.

DML komutlarını veri tabanındaki verileri yönetmek için kullanırız. Başlıca olarak

  • SELECT  –  Veritabanından veri çekmek için
  • INSERT –  Tablolara yeni veri eklemek için
  • UPDATE – Tablodaki verileri düzenlemek için
  • DELETE – Tablodaki verileri silmek için

Üzerinde çalışacağımız örnek bir tane “personel” ve “bölüm” tabloları oluşturalım

create table department  
( departmentid number,
  deparmentname varchar2(40 byte)  
);

Insert into DEPARTMENT
 (DEPARTMENTID, DEPARTMENTNAME)
 Values
 (1, 'Human Resources');
Insert into DEPARTMENT
 (DEPARTMENTID, DEPARTMENTNAME)
 Values
 (3, 'Accounting Department');
Insert into DEPARTMENT
 (DEPARTMENTID, DEPARTMENTNAME)
 Values
 (2, 'Information Technologies');
commit;
create table personnel
 ( personnelid number, name varchar2(10 byte),
   last_name varchar2(10 byte), departmentid number
 );

Insert into PERSONNEL
 (PERSONNELID, NAME, LAST_NAME, DEPARTMENTID)
 Values
 ('50', 'John', 'Ally', '2');
Insert into PERSONNEL
 (PERSONNELID, NAME, LAST_NAME, DEPARTMENTID)
 Values
 ('904', 'Ahmet', 'Gezgin', '1');
Insert into PERSONNEL
 (PERSONNELID, NAME, LAST_NAME, DEPARTMENTID)
 Values
 ('120', 'Salih', 'Atan', '3');
Insert into PERSONNEL
 (PERSONNELID, NAME, LAST_NAME, DEPARTMENTID)
 Values
 ('485', 'Sinem', 'Keskin', '1');
commit;
DEPARTMENTID DEPARTMENTNAME
1 Human Resources
3 Accounting Department
2 Information Technologies
PERSONNELID NAME LAST_NAME DEPARTMENTID
904 Ahmet Gezgin 2
120 Salih Atan 3
50 John Ally 2
485 Sinem Keskin 1
  • SELECT

Alttaki sorgu tablodaki bütün verileri getirir.

select * from department; 

Tüm tablo’ya select çekmek, veritabanı için çok maliyetli bir işlemdir. Bunun yerine yerine sadece bize gerekli olan IT çalışanlarının kayıtlarını getirmek için “where” koşulları ile alttaki sorguyu kullanıyoruz.

select * from personnel where departmentid = 2;

Select” komutuyla birlikte kullanacağımız “where” kısıtları ile şemadaki bütün verileri değil de bize lazım olan verilere ulaşmamız daha kolay olacaktır. Bir müşteri tablosunu düşündüğümüzde milyonlarca kayıt olabilir. Ama her müşteri için “unique“(ayırt edici) olan bir müşteri numarası ile direk istediğimiz kayıta erişebiliriz.  Aynı şekilde önceden eklenmiş bir kayıtın düzenlenmesinde de büyük kolaylık sağlar.

  • INSERT

Veritabanındaki bir tabloya yeni veriler eklemek için kullanılır. Örneğin, yeni bir kişi “İnsan Kaynakları”nda işe başladı. Bu kişinin verilerini “personel” tablosuna ekleyelim:

insert into personnel values (567, 'Bengi', 'Akın',1);

**Karakter tipli(char, varchar) veriler tek tırnak içine alınır, number tipli veriler tırnaksız girilir.

  • UPDATE

Mevcut olan bir datayı değiştirmek için kullanılır. Örneğin, bir personelin bölümü değişti. Mevcut datayı silmeden güncelleyelim:

update personnel set departmentid=1 where personnelid=904;
  • DELETE

Tablodan silmemiz gereken bir veri(data) olduğunda kullanılır. Bir personel işten ayrıldı ve artık personel tablosunda olmaması gerekiyor:

 delete from personnel where personnelid=50;