SQL komutları kullanılarak aşağıdaki işlemler yapılabilir:
Veritabanı nesnelerinin oluşturulması ve bu nesnelerle ilgili işlemlerin yapılması
Bilgilerin istenilen koşullara göre görüntülenmesi ve sorgulama işlemleri
Tablolara veri girişi yapılması
Bilgilerin güncelleştirilmesi
Tabloların veya tablolardaki verilerin silinmesi
Kullanıcı ve rollerin oluşturulması, yetkilerin düzenlenmesi.
SELECT Deyimi
SELECT kolon isimleri
FROM tablo adı
WHERE koşul ifadesi;
SELECT NO,ADI,SOYADI
FROM PERSONEL
WHERE SOYADI=’KARA’;
SQL Komutları
SQL komutlarını ikiye ayırabiliriz.
- DDL (Data Definition Language – veri tanımlama dili)
- DML (Data ManipulationLanguage – veri işleme dili)
Yardımcı Deyimler
FROM | Sorgulamanın yapılacağı tabloyu tanımlar. |
WHERE | Sorgulamada kullanılacak koşul ifadesini tanımlar. |
GROUP BY | Bilgilerin belirlenen alanlara göre gruplandırılmasını sağlar. |
HAVING | Her bir grup için uyulması gereken koşul tanımlanır. |
ORDER BY | Seçilen kayıtların belirli alan veya alanlara göre sıralanmasını sağlar. |
SQL Veri Tipleri
NUMBER | SQL deyimleri içinde tüm sayısal verileri tanımlamak üzere NUMBER veri türü kullanılır. Sayısal veriler en fazla 38 haneye kadar olabilir.MIKTAR NUMBER(8): 8 hanelik yer ayrılır.
MIKTAR NUMBER(7,2):virgülden önce 7 hane, virgülden sonra 2 hane |
CHAR | Sabit uzunluklu karakter dizgilerini tanımlamak için yapılabilir. En fazla 255 karakter olabilir. Uzunluk tanımlanmazsa 1 olarak alınır. ADI CHAR(10) |
VARCHAR2 | Değişken uzunluklu karakter dizgilerini tanımlamak için kullanılır. Verinin uzunluğu en büyük değeri verecek şekilde tanımlanır. Uzunluk en fazla 2000 karakter olabilir.ADRES VARCHAR2(100) |
LONG | Değişken uzunluklu karakter dizgilerini tanımlamak için kullanılır. En fazla 2 Gigebyte veri içerebilir. Long veri türünü içeren kolonlar index kolonu olarak kullanılamaz ve bir tabloda en fazla bir kolon LONG olabilir. |
RAW/LONG RAW | İkili yada byte dizgiler biçimindeki verileri saklamak için kullanılabilir. RAW ile tanımlanan veriler sadece okunabilir veya saklanabilir. Üzerinde değişiklik yapılamaz. |
DATE | Her DATE veri türü ile belirtilen kolon yüzyıl, yıl, ay, gün, saat, dakika, saniye verilerini içerecek biçimde saklanır. |
ROWID | Her tablonun satırlarını simgeleyen bir satır tanımlayıcısı bulunmaktadır. Bu tanımlayıcı satırların adreslerini içermektedir. Bu bilgilere dayanarak bazı işlemlerle ilgili satırlara çok hızlı erişme olanağı elde edilebilir. 00000029.0000.0002 (blok.satır.dosya) |
SQL OPERATÖRLERİ
- Aritmetik operatörler
- Karşılaştırma operatörleri
- Mantıksal operatörler
- Küme operatörleri
- Karakter operatörleri
- Diğer operatörler
- Aritmetik Operatörler
( ) | İşlemleri gruplandırma ve işlem önceliği belirleme |
+ | Toplama |
– | Çıkarma |
* | Çarpma |
/ | Bölme |
Örnek1: personelin maaşının %10’unu bir kolon halinde görmek için;
SELECT NO, ADI, SOYADI, MAAS*0.1 FROM PERSONEL
Örnek2: Yukarıdaki örnekte kolonun başlığı ‘MAAS*0.1’ olur. Kendi başlığımızı görüntülemek için;
SELECT NO, ADI, SOYADI, MAAS*1.5 “ZAMLI ÜCRET” FROM PERSONEL
- Karşılaştırma Operatörleri
( ) | İşlemleri gruplandırma ve işlem önceliği belirleme |
= | Belirtilen değere eşit olanlar |
> | Belirtilen değerden büyük olanlar |
< | Belirtilen değerden küçük olanlar |
!=,^=,<> | Belirtilen değere eşit olmayanlar |
>= | Belirtilen değerden büyük veya eşit olanlar |
<= | Belirtilen değerden küçük veya eşit olanlar |
IN | Bir grup değer içinde olanlar |
NOT IN | Bir grup değer içinde olmayanlar |
ANY | Verilen bir koşula uygun olarak, bir grup içindeki değerlerden birini belirler |
ALL | Verilen bir değeri bir liste içindeki tüm değerlerle karşılaştırır. |
BETWEEN x AND y | x ve y değeri arasındaki değerleri belirler |
NOT BETWEEN x AND y | x ve y değeri arasında olmayan değerleri belirler. Yani x’den küçük, y’den büyük değerler. |
IS NULL | Null (yokluk) değerine sahip olanları tanımlar |
IS NOT NULL | Null değerine sahip olmayanları tanımlar |
EXISTS | Kendisine bağlı sorgulama sonucunda en az bir satır bulunabilirse TRUE değerini alır. |
LIKE | Belirli bir kalıba uygun olan bilgileri tanımlar |
Örnek1: personel içinde adı “S” ile başlayanlar
SELECT NO,ADI,SOYADI FROM PERSONEL
WHERE ADI LIKE ‘S%’;
Örnek2: maaşı 70 ile 120 milyon arası olanlar
SELECT NO,ADI,SOYADI FROM PERSONEL
WHERE MAAS BETWEEN 70000000 AND 120000000;
- Mantıksal Operatörler
İki yada daha fazla ifade arasında kullanılırlar. Sonucun doğru yada yanlış olmasına göre işlemler yapılır.
( ) | İşlemleri gruplandırma ve işlem önceliği belirleme |
AND | Her iki kıstasta doğru ise işlem yapılır |
OR | Kıstaslardan biri doğru ise işlem yapılır |
NOT | Kıstasın yanlış olması durumunda işlem yapılır |
Örnek : Maaşı 100 milyondan büyük olanlar ve 10 numaralı bölümde çalışanlar
SELECT NO,ADI,SOYADI FROM PERSONEL
WHERE CALISTIGI_BOLUM=’10’ AND MAAS>100000000;
- Küme Operatörleri
UNION | Verilen koşul ifadesine uygun olarak, çift kayıtları gözardı ederek her iki kümedeki tüm kayıtları seçer |
UNION ALL | Verilen koşul ifadesine uygun olarak, çift kayıtlarda dahil tüm kayıtları seçer |
INTERSECT | Sadece her iki koşulada uyan kayıtları seçer |
MINUS | Birinci kümede olan, ikinci kümede olmayan kayıtları seçer |
Örnek1: Soyadı “D”, adı “E” ile başlayan personel
SELECT NO,ADI,SOYADI FROM PERSONEL
WHERE ADI LIKE ‘E%’
UNION
SELECT NO,ADI,SOYADI FROM PERSONEL
WHERE SOYADI LIKE ‘D%’;
Örnek2: Soyadı “D ile başlayan, ancak adı “E” ile başlamayan personel
SELECT NO,ADI,SOYADI FROM PERSONEL
WHERE ADI LIKE ‘E%’
MINUS
SELECT NO,ADI,SOYADI FROM PERSONEL
WHERE SOYADI LIKE ‘D%’;
- Karakter Operatörleri
!! | Tanımlanmış olan iki alanın tek bir alan bilgisi şeklinde birleştirerek işlem yapılmasını sağlar |
Örnek : SELECT ADI!!SOYADI “ADI SOYADI” FROM PERSONEL;
SQL Fonksiyonları
AVG | Belirlenen bir alan içerisindeki verilerin aritmetik ortalamasını alır. |
SUM | Belirlenen alandaki verilerin toplanmasını sağlar. |
MAX | Belirlenen alandaki en büyük değerin bulunmasını sağlar |
MIN | Belirlenen alandaki en küçük değerin bulunmasını sağlar |
ROUND | Belirlenen alandaki sayının virgülden sonraki kısmının yuvarlatılmasını sağlar |
SQRT | Belirlenen alandaki değerin karakökünün alınmasını sağlar |
SUBSTR | Belirlenen alandaki değerin istenilen karakterleri seçilebilir |
Örnek1: En düşük maaş
SELECT MIN(MAAS) FROM PERSONEL;
Örnek2: Ortalama maaş
SELECT AVG(MAAS) FROM PERSONEL;
VERİ TANIMLAMA (DDL) İŞLEMLERİ
- TABLOLARIN OLUŞTURULMASI (CREATE TABLE):
CREATE TABLE tabloadı (kolon isimleri ve veri türleri)
Örnek: CREATE TABLE BOLUM
(BOLUM_NO NUMBER(2), BOLUM_ADI CHAR(10));
- INDEX OLUŞTURMA (CREATE INDEX):
CREATE INDEX (index adı ON tablo adı (alan adı))
Örnek: CREATE INDEX PERSON_IDX ON PERSONEL (ADI,SOYADI);
- EŞTANIMLARIN OLUŞTURULMASI (CREATE SYNONYM):
CREATE SYNONYM tablo adı FOR kullanıcı adı.tablo adı;
CREATE SYNONYM PER FOR PERSONEL;
* Eştanımlar çoğunlukla başka kullanıcıların tablolarına erişilmesinde kullanılır. Böyle bir amaç için eştanım oluşturma
CREATE SYNONYM kullanıcı adı.tablo adı
FOR kullanıcı adı.tablo adı;
Örnek : CREATE SYNONYM USTA.PER
FOR SYSTEM.PERSONEL;
* Ancak USTA kullanıcısının bu eştanımı kullanabilmesi için :
GRANT SELECT ON MUSTAFA TO USTA à MUSTAFA kullanıcısı USTA kullanıcısına SELECT yetkisi veriyor.
* Eştanımların tüm kullanıcılar için oluşturulması:
CREATE PUBLIC SYNONYM tablo adı
FOR kullanıcı adı.tablo adı;
Örnek: CREATE PUBLIC SYNONYM ABONE
FOR USTA.ABONE; à
- GÖRÜNÜMLERİN OLUŞTURULMASI (CREATE VIEW):
CREATE VIEW view adı AS
SELECT alan adı
FROM tablo adı
WHERE koşul ifadesi;
Örnek1: Personel tablosundan 30 numaralı bölümde çalışan personelin bulunduğu bir görünüm oluşturmak için
CREATE VIEW PER_30 AS
SELECT NO, ADI, SOYADI
FROM PERSONEL
WHERE CALISTIGI_BOLUM=’30’;
Örnek2: İki tablo kullanılarak görünüm
CREATE VIEW PER_30_2 AS
SELECT NO, ADI, SOYADI,BOLUM_ADI
FROM PERSONEL,BOLUM
WHERE CALISTIGI_BOLUM=BOLUM_NO;
* Görünümlerin ortak kullanımı için yetki verilmesi :
GRANT SELECT ON PER_30_2 TO PUBLIC;
- TABLO TANIMLARINDA DEĞİŞİKLİK YAPILMASI (ALTER TABLE):
Daha önce oluşturulmuş bir tabloya yeni alan ekleme yada daha önce tanımlanmış alan boyutunu değiştirmek için kullanılır.
ALTER TABLE tablo adı ADD|MODIFY kolon adı;
Örnek1: Personel tablosuna ADRES adlı yeni bir alan ilave etmek için
ALTER TABLE PERSONEL
ADD ADRES CHAR(50);
Örnek2: ADI isimli kolonun boyutunu değiştirip 20 karakter yapmak için
ALTER TABLE PERSONEL
MODIFY (ADI CHAR(20));
- VERİ TABANI NESNELERİNİN SİLİNMESİ (DROP):
DROP TABLE tablo adı;
DROP INDEX indeks adı;
DROP SYNONYM eştanım adı;
DROP VIEW görünüm adı;
SQL’DE VERİ İŞLEME (DML) DEYİMLERİ
DML komutları yardımıyla veritabanındaki bilgilerin sorgulanması, kayıt ekleme, kayıt silme, bilgilerin güncellenmesi, süzme ve sıralama işlemleri yapılabilir.
- Tablolara satır ekleme (INSERT):
INSERT INTO BOLUM
VALUES(‘80’, ‘ARASTIRMA’);
- Bilgilerin Güncellenmesi (UPDATE):
Örnek1: 80 nolu bölümün adını ARASTIRMAà HALKLA İLİŞKİLER
UPDATE BOLUM
SET BOLUM_ADI=’HALKLA İLİŞKİLER’
WHERE BOLUM_NO=’80’;
Örnek2: maaşlara %45 oranında zam yapıyoruz
UPDATE PERSONEL
SET MAAS=1.45*MAAS;
- Tablo Satırlarının Silinmesi (DELETE):
DELETE FROM BOLUM
WHERE BOLUM_NO=’10’; //koşul olmazsa tüm kayıtlar silinir
- Verilerin Sıralanması (ORDER BY):
SELECT NO,ADI,SOYADI
FROM PERSONEL
ORDER BY NO,ADI
ASC //küçükten büyüğe doğru sırala
- Verilerin Gruplandırılması (GROUP BY):
Örnek:Tüm personelin bölümlere göre toplam maaşını bulmak için
SELECT CALISTIGI_BOLUM,SUM(MAAS)
FROM PERSONEL
GROUP BY CALISTIGI_BOLUM;
HAVING SUM(MAAS)<1000000000; //koşul
- Parametrik Sorgulama: Parametrik sorgulama yapmak için & işareti ile başlayan bir değişken tanımlanmalıdır. SQL çalıştırıldığında, bu değişken için değer girilmesi beklenir. Değer girilince sorgu ona göre çalışır ve sonuçlar listelenir.
SELECT NO,ADI,SOYADI FROM PERSONEL
WHERE CALISTIGI_BOLUM=&B;
- İçiçe Sorgular: Bir sorgu altında bir başka sorgu tanımlanabilir.
SELECT NO,ADI,SOYADI,MAAS
FROM PERSONEL
WHERE NO IN
(SELECT NO
FROM AVANS
WHERE AVANS_MIK>100000000);
- İlişkisel Sorgulama: İki tabloyu belirli bir kolona göre ilişkilendirerek, her iki tablonun kolonları bir sonuç olarak listelenebilir.
SELECT NO,ADI,SOYADI,CALISTIGI_BOLUM, BOLUM_ADI
FROM PERSONEL ,BOLUM
WHERE CALISTIGI_BOLUM=BOLUM_NO;