SQL deyimleri veritabanları üzerinde çeşitli
işlemleri yerine getirirler. Veritabanından sorgulama yapmak için SELECT,
ekleme yapmak için INSERT güncelleme
yapmak için UPDATE, silme yapmak için DELETE, yeni tablo oluşturmak için
CREATE TABLE gibi komutlara sahiptir. Bu komutlar işlevlerine göre şu şekilde kategorilendirilir:
DDL deyimleri veritabanı üzerinde nesne yaratmak için
kullanılırlar. En yaygın kullanılan DDL deyimleri şunlardır: CREATE ,ALTER,DROP
CREATE deyimi tablo ve view gibi bir veritabanı nesnesi yaratmayı sağlar.
Tablo Yaratmak:
Veritabanı üzerinde bir tablo yaratmak için CREATE
deyimi kullanılır.
Yapısı:
CREATE <tablo adı>
Örnek: CREATE TABLE
Musteri
(mus_idchar(4) NOT NULL
mus_advarchar(40) NULL,
ilivarchar(20) NULL,
ulkechar(2) NULL,
adresvarchar(30) NULL
)
NOT: Char, varchar, integer,
numeric gibi sözcükler
tablo alanlarındaki temsil edilecek verinin türünü belirtir. SQL'de SMALLINT,
VARCHAR, DECIMAL(x,y), FLOAT(x;y), DATE, LOGICAL, TIME, TIMESTAMP, GRAPHIC(n)
gibi alan veri türleri vardır.
Örnek: CREATE
TABLE personel
(Sskno Integer,
Adi Varchar(20) not null,Soyadi Varchar(20) not null,
Departman integer)
NOT: Bu
dokümanlar Faruk Çubukçu tarafından hazırlanmıştır. Bütün hakları saklıdır.
Ticari olarak kullanılamaz. Bakınız: www.farukcubukcu.com
Adı geçen
ve telif haklı olan ürünler bilgi amaçlı olarak kullanılmıştır.
ALTER
DEYİMİ
Daha önce yaratılmış nesnenin
değiştirilmesini sağlar. Örneği bir tablonun tasarımını değiştirmek gibi.
Örnek: ALTER TABLE Musteri
ADD telvarchar(20) NOT NULL
Yukarıdaki
deyimde müşteri tablosunun alanlarına tel adlı bir
alan daha eklenmiştir.
DROP
DEYİMİ
Bir nesnesin silinmesini sağlar.
Örnek: DROP TABLE MUSTERI
Müşteri
tablosunun verilerini ve tabloyu siler.
Veritabanı
içindeki verileri elde etmek ve değiştirmekle ilgili SQL deyimleridir.
1.
SELECT
2.
INSERT
3.
UPDATE
4.
DELETE
SELECT DEYİMİ
Veritabanındaki
verilere erişmenin, diğer bir deyişle onları görmenin ya
da onları elde etmenin en sık kullanılan yöntemidir. Genellikle bir ya da daha çok tablonun bütün alanları ya
da belli alanları için SELECT deyimi yazılır.
Temel
Yapısı: SELECT [ALL] [DISTINCT] liste [INTO yeni tablo] FROM
[tablo]
[WHERE
ifade]
[GROUP BY
ifade]
[HAVING
ifade]
[ORDER BY
ifade]
[COMPUTE
ifade]
Seçeneklerin
Anlamları:
ALL sözcüğü
bütün satırların sonuç listesinde görünmesini sağlar.
DISTINCT sözcüğü
sadece tek olan (unique)
kayıtların sonuç listesinde yer almasını sağlar.
liste
parametresi veriden seçilecek kolonu (sütunu) belirtir.
INTO sözcüğü
yeni bir tablo yaratmayı sağlar.
yeni tablo
parametresi sorgu sonucu yaratılacak tabloyu belirtir.
FROM sözcüğü
belli bir tablonun seçilmesini sağlar.
tablo
parametresi ise sorgulanacak olan tablo ya da tabloları, görünümleri belirtir.
WHERE bir koşulu belirterek sadece o kuşula uyan kayıtların
seçilmesini sağlar.
GROUP BY Kayıtların gruplanmasını sağlar. HAVING
deyimiyle de ara toplamların alınmasını sağlar.
HAVING sözcüğü de
kayıtlarda kısıtlama yapar ancak hesaplamayı etkilemez.
ORDER BY
sözcüğü ise belirtilen kolona göre listelenen kayıtları sıralamayı sağlar.
Sıralama artan (ASC) ya da azalan (DESC) olabilir
COMPUTE sözcüğü ise
hesaplama yapar. Tipik olarak SUM, AVG, MIN, MAX, COUNT gibi fonksiyonları
kullanarak hesaplama yapar.
Örnek: SELECT * FROM musteri
Yukarıdaki
deyim ile musteri
tablosundaki bütün bilgiler elde edilir. SELECT deyiminin ardından kullanılan *
(asterisk) işareti bütün
kayıtlar anlamına gelir. Bu deyimin aynısı (aynı sonucu vereni) şu şekilde de
yapılabilir:
Örnek: SELECT kod, ad, soyad, grup, il,
bakiye FROM musteri
Müşteri
tablosu:
|
kodu |
Ad |
Soyad |
grup |
il |
bakiye |
|
1 |
Ahmet |
Uzun |
ithal |
İZMİR |
300000 |
|
2 |
Ayşe |
Yılmaz |
ithal |
ANKARA |
400000 |
|
3 |
Mehmet |
Yılmaz |
ihraç |
ANKARA |
100000 |
|
4 |
Hüseyin |
Uzun |
ihraç |
İZMİR |
600000 |
|
5 |
Nuri |
Gezer |
ithal |
İZMİR |
900000 |
|
6 |
Fatma |
Örnek |
ihraç |
İSTANBUL |
300000 |
Sorgunun
sonucu:
|
1 |
Ahmet |
Uzun |
ithal |
İZMİR |
300000 |
|
2 |
Ayşe |
Yılmaz |
ithal |
ANKARA |
400000 |
|
3 |
Mehmet |
Yılmaz |
ihraç |
ANKARA |
100000 |
|
4 |
Hüseyin |
Uzun |
ihraç |
İZMİR |
600000 |
|
5 |
Nuri |
Gezer |
ithal |
İZMİR |
900000 |
|
6 |
Fatma |
Örnek |
ihraç |
İSTANBUL |
300000 |
SELECT
deyimi ile sadece belli kolonlar (alanlar) da seçilebilir:
ARAMA : Tablo: Arama Kriterleri:
|
Karşılaştırma operatörleri |
(=, >, <, >=, <>, !=, !<, !> |
|
Aralık belirtme |
BETWEEN ve NOT BETWEEN |
|
Liste |
IN ve NOT IN |
|
String
karşılaştırma |
LIKE ve NOT LIKE |
|
Bilinmeyen değerler |
IS NULL ve IS NOT NULL |
|
Koşulların birleştirilmesi |
AND, OR |
|
Olumsuzlaştırma |
NOT |
ÖRNEK: SELECT * from musteri
WHERE bakiye BETWEEN 100000 AND 3000000
Aynı
anlamda: SELECT * from musteri
WHERE bakiye <= 100000 AND>= 3000000
ÖRNEKLER: SELECT * FROM MUSTERI WHERE borcu BETWEEN 100 AND 2000 AND
grup='özel'
Yukarıdaki
sorgulamada grubu 'özel' olan ve ayrıca da borcu değerinin 100 ile 200 arasında
olanı listelenir.
ARİTMETİK
İŞLEMLER
Aritmetik
işlemleri gerçekleştirmek için belli operatörler kullanılır:
OPERATÖRLER AÇIKLAMALARI
+ Toplama
,
- Çıkarma
/ Bölme ,
* Çarpma
SELECT
borcu, borcu*2 FROM MUSTERI
SELECT
deyimi ile elde edilen veriler istenirse sıralanabilir. Sıralama belirtilen bir
ya da daha fazla kolona göre yapılır. Bunun dışında
sıralama ASC (ascending-artan)
ya da DESC (descending-azalan)
olarak belirtilebilir.
Kullanım
Biçimi: SELECT
kolon_listesi
ORDER BY kolon adı ASC ya
da DESC
ORDER BY
sözcüğü ise verilerin istenilen alan göre sıralı olarak listelenmesini sağlar.
SELECT *
FROM musteri ORDER BY ad
Yukarıdaki
deyim ile müşteri tablosundaki bütün kayıtlar ad alanına göre sıralı olarak
listelenirler.
GRUPLANDIRMA
İŞLEMLERİ
Gruplama
seçenekleri tablo satırlarının belli alanlarına göre gruplandırılmasını sağlar.
GROUP BY
sözcüğü ise yapılan bir gruplandırma işlemine göre listeleme sağlar.
Örnek: SELECT
grup, sum(bakiye) FROM musteri
GROUP BY
grup
Yukarıdaki
örnekte müsteri
tablosundaki bakiye alanı grup kodu bazında toplanır.
GROUP BY
ile yapılan gruplandırma (alt toplamlar) işlemi içinde ayrıca HAVING sözcüğü
kullanılarak bir koşul da verilebilir.
SELECT
grup, sum(bakiye) FROM musteri
GROUP BY
grup
HAVING il =
'İZMİR'
Yukarıdaki
deyim ile müşteri tablosundaki bütün kayıtların bakiye bilgiler gruplarına göre
ara toplam alınır, bir de il bilgisine göre filtrelenir.
NOT:
Gruplama yapılmayan he
sütun GROUP BY deyiminde kullanılması gerekir:
Örnek: SELECT PRODUCTID, CATEGORYID, SUM (UNITPRICE)
FROM PRODUCTS
GROUP BY
PRODUCTID, CATEGORYID
COMPUTE
sözcüğü toplama fonksiyonunun kullanarak query
sonucunda bir toplam satırı üretir. COMPUTE BY sözcüğü ise ek toplam satırları
yaratır.
Kullanım
Biçimi: COMPUTE fonksiyon (kolon_adı)
Örnek: Sipariş tablosu:
|
tarih |
Mkodu |
ürün |
adet |
fiyatı |
|
1/1/1999 |
1 |
X-TV |
10 |
100000 |
|
2/1/1999 |
1 |
X-TR |
10 |
100000 |
|
2/1/1999 |
2 |
X-TV |
15 |
100000 |
|
2/1/1999 |
3 |
X-KT |
10 |
200000 |
|
3/1/1999 |
3 |
X-KT |
20 |
150000 |
|
2/2/1999 |
1 |
X-TV |
22 |