SQL'e Giriş Bölüm 2

SQL komutları kullanılarak aşağıdaki işlemler yapılabilir:

 

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.

1. DDL (Data Definition Language - veri tanımlama dili)

2. 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İ

  1. Aritmetik operatörler
  2. Karşılaştırma operatörleri
  3. Mantıksal operatörler
  4. Küme operatörleri
  5. Karakter operatörleri
  6. Diğer operatörler
  7. 1. 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

    2. 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;

    3. 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;

    4. 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%’;

    5. 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İ

    1. 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));

    2. INDEX OLUŞTURMA (CREATE INDEX):

    CREATE INDEX (index adı ON tablo adı (alan adı))

    Örnek: CREATE INDEX PERSON_IDX ON PERSONEL (ADI,SOYADI);

    3. 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; à

     

    4. 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;

    5. 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));

    6. 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.

    1. Tablolara satır ekleme (INSERT):

    INSERT INTO BOLUM
    VALUES(‘80’, ‘ARASTIRMA’);

    2. 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;

    3. Tablo Satırlarının Silinmesi (DELETE):

    DELETE FROM BOLUM
    WHERE BOLUM_NO=’10’; //koşul olmazsa tüm kayıtlar silinir

    4. 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

    5. 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

    6. 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;

  8. İç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);

8. İ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;

bimeks borland component database delphi delphi.net delphi dersleri firebird help interbase makale oracle seminer software sybase veritabanı web