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
( ) |
İş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;
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