SQL nedir ?
++ SQL in açılımı; Structured Query Language [ Yapısal Sorgu Dili ]
++ SQL sizi veritabanına erişmenizi saglar.
++ SQL, ANSI standardında bir bilgisayar dilidir.
++ SQL veritabanına karşı sorguları çalıştırabilir.
++ SQL veritabanındaki verileri tekrar ele alabilir.
++ SQL veritabanına yeni bir kayıt ekleyebilir.
++ SQL veritabanından bir kayıt silebilir.
++ SQL veritabanındaki bir kaydı guncelleyebilir.
++ SQL kolay öğrenilir
SQL standarttır, fakat ...
SQL, ANSI (American National Standards Institute - Amerikan Ulusal Standardları Enstitusü) standardında vertabanına ulasmak ve işlemek için kullanılan bir bilgisayar dilidir. SQL komutları veritabanındaki verileri guncellemek, tekrar ele almak için kullanılır. SQL in kullanıldıgı veritabanı programları MS Access, MS SQL Server, DB2, Informix, Oracle, Sybase vs. Fakat SQL dilinin birçok farklı versiyonları vardır, ama yinede önemli anahtarlar genelde aynıdır yada cok benzerdir (örnegin SELECT, UPDATE, DELETE, INSERT, WHERE, ve digerleri).
SQL Veritabanı tabloları
Veritabanı bir yada birden fazla tablodan olusur. Her tablonun bir adı vardır. Bu tablolardaki kayıtlar dizilerde (row) saklanır.
Örneğin "bilgi" tablosunda;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
necmi yakan sivas 19
yukardaki tablo üç kayıda sahiptir, her bir kişi için bir tane, yani 3 satıra (row) ve ayrıca 4 adet kolona (column) sahiptir.
SQL sorguları
SQL ile, veritabanı sorgulanabilir ve soncuları alınabilir.
Örnek bir sorgu;
SELECT soyad FROM bilgi
Sonucu;
soyad
-----
özgür
sözcü
yakan
SQL Veri işleme dili (DML - Data Manipulation Language)
SQL, sorguları calıstırmak için bir sözdizimidir. Fakat aynı zamanda kayıtları guncelleme, ekleme ve silmek içinde kullanılır.
Bu sorgu ve guncelleme komutları, birlikte SQL in bir bolumu olan Veri işleme dilinin olusturuyor:
++ SELECT - veritabanındaki tablodan veri alır
++ UPDATE - veritabanındaki tablodaki veriyi gunceller
++ DELETE - veritabanındaki tablodan veri siler
++ INSERT INTO - veritabanındaki tabloya yeni bir veri ekler
SQL Veri tanımlama dili (DDL - Data Definition Language)
SQL in bir bolumu olan veri tanımlama dili, veritabanı tablolarında işlem yapmaya izin veren, tabloları olusturmak yada silmek için kullanılır. Ayrıca index (arama anahtarı) belirlemedede kullanılan bir dildir. Tablolar arasında etkileşimi saglayabilir, aralarında bir bağ kurabilirsiniz.
En sık kulllanılan veri tanımlama sözdizimleri:
## CREATE TABLE - tablo yaratır
## ALTER TABLE - tabloyu degiştirir
## DROP TABLE - tabloyu siler
## CREATE INDEX - index (arama anahtarı) olusturur
## DROP INDEX - indexi siler
şimdi bu sözdizimlerini biraz daha ayrıntılı anlatalım...
SELECT ifadesi
Bu ifade tablodan veri secmek için kullanılır.
ifadenin kurulusu;
SELECT kolonAd(lar)i FROM tabloAdi
örnek veri tabanımızda "bilgi" tablomuzda
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
necmi yakan sivas 19
verileri var diyelim
SELECT yas FROM bilgi
dediğimizde
yas
---
15
20
19
sonucu alırız.
birden cok kolon secmek için ise;
SELECT ad,soyad FROM bilgi
dediğimzde
ad soyad
----- -------
ali özgür
veli sözcü
necmi yakan
sonucunu verir.
tum kolonları secmek içinde;
SELECT * FROM bilgi
dememiz yeterlidir.
SELECT DISTINCT ifadesi
Bu ifade sadece farklı ifadeleri secmek için kullanılır.
ifadenin kurulusu;
SELECT DISTINCT kolonAd(lar)i FROM tabloAdi
örnek veritabanımızda "veriler" tablomuzda
firma urunNo
----- --------
CS 4586278
CW 7894331
CL 456
CH 45689
CW 789666879
verileri var diyelim
SELECT firma FROM veriler
dediğimizde sonuc;
firma
-----
CS
CW
CL
CH
CW
olucaktır.
Ama ifadeye distinct eklersek, yani
SELECT DISTINCT firma FROM veriler
dersek sonuc;
firma
-----
CS
CW
CL
CH
seklinde olucaktır, yani tekrarlanan satır bilgileri alınmıyacaktır.
WHERE şartı
Bu şart, select ifadesi ile kullanılır.
şartın kurulusu;
SELECT kolonAdi FROM tabloAdi WHERE kolonAdi operator deger
Bu şartta kullanılabilir operatorler;
= eşit
<> eşit değil
> büyüktür
< kücüktür
>= büyük yada esittir
<= kücük yada esittir
BETWEEN belli bir aralık arasında
LIKE belli bir kalıpla arama
NOT: bazı SQL versiyonlarında <> yerine != de kullanılabiliyor.
örnek veritabanımızda "ipList" tablomuz olsun;
kullaniciAdi sifresi ipNumarasi
------------ --------- ----------
Admin bulamazsın 127.0.0.1
Ziyaretci bulsamdasoylemem 127.0.0.2
Backup op. guvenlisifre 127.0.0.1
MMx enguzelsifrebu 127.0.0.1
Haberci forerunner 127.0.0.3
SELECT * FROM ipList WHERE ipNumarasi=’127.0.0.1’
dediğimizde sonuc;
kullaniciAdi sifresi ipNumarasi
------------ --------- ----------
Admin bulamazsın 127.0.0.1
Backup op. guvenlisifre 127.0.0.1
MMx enguzelsifrebu 127.0.0.1
olucaktır.
Bu şartta kullandıgımız degeri tek tırnak (’) içine almamız onemlidir, aksi taktirde sorunlar cıkabilir.
SELECT * FROM ipList WHERE ipNumarasi=’127.0.0.1’ ---> Dogru
SELECT * FROM ipList WHERE ipNumarasi=127.0.0.1 ---> Yanlıs
SELECT * FROM ipList WHERE kullaniciAdi=’MMx’ ---> Dogru
SELECT * FROM ipList WHERE kullaniciAdi=MMx ---> Yanlıs
LIKE operatorunun kullanılısı
Bu operatorle belli bir kalıpta arama yapabilirsiniz.
ifadenin kurulusu;
SELECT kolonAdi FROM tabloAdi WHERE kolonAdi LIKE kalip
(%) işareti bilinmeyen yada eksik olan karakter için kullanılır.
Örnek SQL ifadeleri;
SELECT * FROM ipList WHERE kullaniciAdi LIKE ’A%’
SELECT * FROM ipList WHERE kullaniciAdi LIKE ’%x’
SELECT * FROM ipList WHERE kullaniciAdi LIKE ’%er%’
INSERT INTO ifadesi
Bu ifadeyi kullarak veritabanındaki bir tabloya bir satır ekleyebilirsiniz.
ifadenin kurulusu;
INSERT INTO tabloAdi (kolonBir,kolonIki,...) VALUES (kolonBir,kolonIki,...)
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
INSERT INTO bilgi VALUES (’veli’, ’sözcü’, ’trabzon’, ’20’)
dediğimizde sonucu;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
olucaktır.
Tüm satırdaki bilgileri doldurmak yerine, sadece belli yerlere veri girmek için ne yapmak gerek derseniz, bir ornekle acıklayalım..
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
INSERT INTO Persons (ad, il) VALUES (’necmi’, ’sivas’)
dediğimizde sonucu;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
necmi sivas
olucaktır.
UPDATE ifadesi
Bu ifadeyi kullanarak veritabanındaki bir veriyi guncelleyebilirsiniz.
ifadenin kurulusu;
UPDATE tabloAdi SET kolonAdi = Yenideger WHERE kolonAdi = tanimlayiciDeger
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
necmi yakan sivas 19
UPDATE bilgi SET ad = ’osman’ WHERE soyad = ’yakan’
dediğimizde sonucu;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
osman yakan sivas 19
olucaktır.
Birden fazla veriyi guncellemek isteyebiliriz, ohalde alttaki ornegi inceleyelim:
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
necmi yakan sivas 19
UPDATE bilgi SET il = ’hatay’, yas = ’13’ WHERE soyad = ’yakan’
dediğimizde sonucu;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
necmi yakan hatay 13
DELETE ifadesi
Bu ifadeyi kullanarak veritabanındaki bir satırı silebilirsiniz.
ifadenin kurulusu;
DELETE FROM tabloAdi WHERE kolonAdi = tanimlayiciDeger
veritabanımızda "bilgi" tablomuz olsun;
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
necmi yakan sivas 19
DELETE FROM bilgi WHERE yas = ’20’
dediğimizde sonuc
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
necmi yakan sivas 19
Tablodaki tüm bilgileri silmek için şu ifadeleri kullanabilirsiniz:
DELETE FROM tabloAdi
DELETE * FROM tabloAdi
ORDER BY ifadesi
bu ifade ile sonucları sıralamak mumkundur.
Satırları sıralamak için ifade şu şekilde kurulur;
SELECT kolonAd(lar)i FROM tabloAdi ORDER BY referansKolonu
örnek veri tabanımızda "bilgi" tablomuz olsun
ad soyad il yas
----- ------- ---- -----
ali özgür ankara 15
veli sözcü trabzon 20
necmi yakan sivas 19
SELECT ad,soyad FROM bilgi ORDER BY ad
dediğimizde sonuc
ad soyad
----- -------
ali özgür
necmi yakan
veli sözcü
eger sıralamayı tersine cevirmek istersek ifadenin sonuna DESC sözdizimini, sayıları kucukten buyuye sıralamak içinde ASC sözdizimini ekliyoruz.
SELECT ad,soyad FROM bilgi ORDER BY ad DESC
dediğimizde sonuc
ad soyad
----- -------
veli sözcü
necmi yakan
ali özgür
Ptsi 05 Ocak 2009, 20:05 tarafından Afacanhelboy