->
SQL DERS NOTLARI
I. SQL DEYİMLERİ
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 (Data Definition Language): Veri tanımlama deyimleri.
- DML (Data Manuplation Language) : Veri düzenleme dili.
- DCL (Data Control Language): Veri kontrol dili.
-
CREATE DEYİMİ İON LANGUAGE) DEYİMLERİ
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.
B. DML (DATA MANIPULATION LANGUAGE) DEYİMLERİ
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 |
Ö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 |
400000 |
SELECT ürün, adet
FROM siparis
ORDER BY ürün
COMPUTE SUM(adet)
Yukarıdaki örnekte adet kolonunun toplamıalınır.
Sonucu:
ürün adet
X-KT 10
X-KT 20
X-TR 10
X-TV 10
X-TV 15
X-TV 22
Sum
===================
87
INSERT DEYİMİ
Tabloya veri girmek için kullanılır.
INSERT INTO <tablo adı>
(sütunlar listesi) VALUES (değerler listesi)
ÖRNEK: INSERT INTO CARIANA
(kodu, adi, grubu, adresi)
VALUES (’600′, ‘FARUK’, ‘A’, ‘76 sokak no 5′)
Örnek: INSER INTO deyimi ile bir tabloyu diğer bir tablodan doldurmak:
use ornek
INSERT INTO cariyedekf
(kodu, adi, grubu, adresi)
(SELECT kodu, adi,
case grubu
when ‘A’ THEN ‘ITHAL’
when ‘B’ THEN ‘YERLİ’
ELSE ‘DİĞER’
end,
adresi from cariana)
UPDATE DEYİMİ:
Tablodaki verileri güncellemek için kullanılır. Genellikle güncelleştirilecek satırıbelirtmek için WHERE sözcüğüyle kullanılır.
Mevcut bir tablodaki satırlarıdeğiştirmek için UPDATE deyimi kullanılır. UPDATE deyimi sadece bir tablo üzerinde kullanılmalıdır. UPDATE deyimi ile SET ve WHERE sözcüğü kullanılır.
SET sözcüğü değiştirilecek kolonlarıve değerleri belirtir. WHERE sözcüğü ise değiştirilecek satırıbelirtir.
Kullanım biçimi:
UPDATE tablo
SET kolon = ifade
WHERE arama_koşulu
Örnek: Aşağıdaki örnekte fiyat değerini %10 artırır.
UPDATE siparis
SET fiyatı= fiyatı* 1.1
Örneğin bir kaydıdüzeltmek istersek ;
UPDATE Musteri
SET Ad = ‘Nuri Yılmaz’
WHERE kod=’1′;
Örneğin tüm musterilerin bakiyesini %10 artırmak istediğimizde;
UPDATE Musteri
SET bakiye=bakiye*1.1;
DELETE DEYİMİ
Bir tablodaki verileri silmek için DELETE komutu kullanılır. Örneğin Öğrenci tablosundaki tüm verileri silmek için;
DELETE * from musteri;
Tabloda, bakiyesi 1000′den küçük olan müşterilerin satırlarınısilmek için:
DELETE * FROM musteri WHERE bakiye <=1000
Kullanım biçimi:
DELETE tablo
WHERE arama_koşulu
Örnek: Tablodan satır silmek
Aşağıdaki örnekte müşteri tablosundan ‘B’ grubuna sahip olan müşteriler silinir.
DELETE musteri
WHERE grubu = ‘B’
C. DCL (DATA CONTROL LANGUAGE) DEYİMLERİ
Veritabanındaki kullanıcıhaklarınıdüzenlemek için kullanılan deyimlerdir. Örneğin GRANT, DENY, REVOKE gibi.
Örnek: USE Northwind
GRANT SELECT ON Stok TO PUBLIC
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.
GRANT DEYİMİ
Aşağıdaki örnek Ayşe adlıkullanıcıveritabanıve tablo oluşturma izni verilir:
GRANT CREATE DATABASE, CREATE TABLE TOAYşE
GÖZDEN GEÇİRME
1. SQL deyimleri hangi gruplara ayrılır.
2. SELECT deyiminin kullanım şekillerini açıklayınız?
3. INSERT deyiminin amacınedir?
4. UPDATE deyiminin amaçlarınelerdir?
I. SQL FONKSİYONLARI
SQL Server’da Fonksiyonlar, hesaplamalarda ve özellikle sistem hakkında bilgi almada yaygın olarak kullanılan araçlardır. Transact-SQL (T-SQL) programlama dilinde değişik kategorilerle adlandırılan fonksiyonlar vardır. Bunlardan en yaygınıveriler üzerinde işlem yapan toplama ya da gruplama olarak adlandırabileceğimiz aggregate fonksiyonlarıdır.
A. GRUPLAMA FONKSİYONLARI
Gruplama (aggregate) fonksiyonlarıbir dizi değer üzerinde hesaplama yaparlar ve bir sonuç değer döndürürler. Toplama ya da gruplama fonksiyonlarıolarak adlandırabileceğimiz bu fonksiyonlar genellikle GROUP BY deyimi ile kullanılırlar.
Gruplama fonksiyonlarıaşağıdaki ifadeler içinde kullanılabilirler.
ï‚· SELECT deyiminin listesinden (bir subquery olarak)
ï‚· Bir COMPUTE ya da COMPUTE BY sözcüğü ile.
ï‚· Bir HAVING sözcüğü ile.
Transact-SQL programlama dilinde şu aggregate fonksiyonlarıkullanılır:
ï‚· AVG
ï‚· COUNT
ï‚· GROUPING
ï‚· MAX
ï‚· MIN
ï‚· SUM
ï‚· STDEV
ï‚· STDEVP
ï‚· VAR
ï‚· VARP
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.
AVG (T-SQL) Fonksiyonu
Bir grup içindeki değerlerin ortalamasınıdöndürür. Null değerler dikkate alınmaz.
Kullanım Biçimi: AVG([ALL | DISTINCT] ifade)
Argümanları: ALL
Ortalama fonksiyonunu bütün değerlere uygular.
DISTINCT
İşlemin her tek değer için uygulanacağınıbelirtir. Diğer bir deyişle tekrar eden değerlerin yerine birisi kullanılır.
İfade : Sayısal bir değeri olan ifade ya da kolon adı.
Örnek: Aşağıdaki örnekte satış miktarlarıtoplanmakta ve ortalamasıalınarak iki ayrısonuç değeri verilmektedir:
USE Northwind