TRANSACT SQL QUERY LANGUAGE
SELECT
SQL dilinin en temel deyimidir. Tablolarda yer alan verilerden istenilen satırlara erişmek ve onları listelemek için kullanılır.
SELECT deyiminin temel yapısı :
SELECT [ALL] liste [INTO yeni tablo] FROM [tablo]
[WHERE ifade]
[GROUP BY ifade]
[HAVING ifade]
[ORDER BY ifade]
[COMPUTE ifade]
SELECT [DISTINCT] liste [INTO yeni tablo] FROM [tablo]
[WHERE ifade]
[GROUP BY ifade]
[HAVING ifade]
[ORDER BY ifade]
[COMPUTE ifade]
ALL : Bütün satırların sonuç listesinde görünmesini sağlar.
DISTINCT : Sadece tek olan (unique) kayıtların sonuç listesinde yeralmasını sağlar.
liste : Veriden seçilecek kolonu belirtir.
INTO : Yeni tablo yaratmayı sağlar.
yeni tablo : Sorgu sonucunda yaratılacak olan yeni tablonun adını belirtir.
FROM : Belli bir tablonun seçilmesini sağlar.
tablo : Sorgulanacak olan tablo ya da tabloları, görünümleri belirtir.
WHERE : Bir koşulu belirterek sadece o koş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 : Kayıtlarda yapar ancak hesaplamayı etkilemez.
ORDER BY : Belirtilen kolona göre listelenen kayıtları sıralamayı sağlar. Sırlama artan (ASC) ya da azalan (DESC) olabilir.
COMPUTE : Hesaplama yapar. Tipik olarak SUM, AVG, MIN, MAX, COUNT gibi fonksiyonları kullanarak hesaplama yapar.
Örnek 1
LG_001_STCARD tablosunun tüm kolonlarının ve verilerinin listelenmesi.
SELECT * FROM LG_001_STCARD
Sonuç :
LOGICALREF ACTIVE CARDTYPE CODE DEFINITION_
———– —— ——– ————————- ————————————————-
2 0 1 ST001 Kursun Kalem
3 0 1 ST002 Kirmizi kalem
4 0 1 ST003 Kokulu silgi
5 0 1 ST004 Kokusuz silgi
6 0 1 ST005 05 kursun kalem
7 0 1 ST006 07 kursun kalem
8 0 1 ST007 05 kursun kalem ucu
9 0 1 ST008 Aydinger kagidi
10 0 1 ST009 Karton
11 0 1 ST010 Aydinger kagidi 2
Örn2 :
LG_001_STCARD tablosundaki belli kolonların seçilmesi, verilerinin listelenmesi.
SELECT CODE, DEFINITION_ FROM LG_001_STCARD
Sonuç :
CODE DEFINITION_
————— ———————————————-
ST001 Kursun Kalem
ST002 Kirmizi kalem
ST003 Kokulu silgi
ST004 Kokusuz silgi
ST005 05 kursun kalem
ST006 07 kursun kalem
ST007 05 kursun kalem ucu
ST008 Aydinger kagidi
ST009 Karton
ST010 Aydinger kagidi 2
Örn3 :
LG_001_STCARD tablosundaki CODE kolonun değeri ‘ST007’ olan satırın listelenmesi.
SELECT * FROM LG_001_STCARD WHERE CODE = ‘ST007’
Sonuç :
LOGICALREF ACTIVE CARDTYPE CODE DEFINITION_
———– —— ——– ————————- ————————————————-
8 0 1 ST007 05 kursun kalem ucu
Örn4 :
LG_001_STCARD tablosundaki CODE ve DEFINITION_ kolonlarının DEFINITION_ kolonuna göre sıralı olarak listelenmesi.
SELECT CODE, DEFINITION_ FROM LG_001_STCARD ORDER BY DEFINITION_
Sonuç :
CODE DEFINITION_
————— ———————————————-
ST005 05 kursun kalem
ST007 05 kursun kalem ucu
ST006 07 kursun kalem
ST008 Aydinger kagidi
ST010 Aydinger kagidi 2
ST009 Karton
ST002 Kirmizi kalem
ST003 Kokulu silgi
ST004 Kokusuz silgi
ST001 Kursun Kalem
Örn5 :
Stok fiyatlarının tutulduğu LG_001_PRCLIST tablosundaki PRICE kolonunun değerinin 1.17 ile çarpılarak ek bir kolona sonucunun yansıtılması. Kolon isminden sonra tırnak içerisinde yazılan text o kolonun , yazılan text ile görüntülenmesini sağlar.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , PRICE * 1.17 “KDV DAHIL” FROM LG_001_PRCLIST
Sonuç :
STOK KODU FIYATI KDV DAHIL
ST001 777377.0 909531.08999999997
ST002 34233.0 40052.610000000001
ST003 342142.0 400306.13999999996
ST004 32423.0 37934.909999999996
ST005 243322.0 284686.73999999999
ST006 55363.0 64774.709999999999
ST007 1000.0 1170.0
ST008 2000.0 2340.0
ST009 25000.0 29250.0
ST010 80000.0 93600.0
Örn6 :
Cari hesap bilgilerinin tutulduğu LG_001_CLCARD tablosundaki ADDR1 ve CITY kolonlarını “ “ / ” işaretiyle ayırarak tek kolon gibi görünmesini sağlar.
SELECT CODE “CARI KODU”, DEFINITION_ “Cari Unvani”, ADDR1+” / “+CITY “ILCE / SEHIR” FROM LG_001_CLCARD
Sonuç :
CARI KODU Cari Unvani ILCE / SEHIR
—————– ————————————————— ———————————————-
C001 Polatoglu Kirtasiye LTD STI KADIKOY / ISTANBUL
C002 Parlak Kirtasiye FERHATPASA / ISTANBUL
Örn7 :
Sadece tek olan kayıtların görüntülenmesi.
SELECT DISTINCT * FROM LG_001_STCARD
Örn8 :
İlk harfi “K” harfi ile başlayan stok kartı açıklamalarının listelenmesi.
SELECT * FROM LG_001_STCARD WHERE DEFINITION_ LIKE ‘K%’
Örn9 :
Stok kartı açıklamasının içerisinde “K” harfi geçen satırların listelenmesi.
SELECT * FROM LG_001_STCARD WHERE DEFINITION_ LIKE ‘%K%’
Örn10 :
Stok kartı açıklamasının ikinci harfi U ile başlayanlarının listelenmesi.
SELECT * FROM LG_001_STCARD WHERE DEFINITION_ LIKE ‘_U%‘
Örn11 :
Stok kartı açılamasının ilk harfi “A” ile “H” arasındaki harflerden biri olan satırların listelenmesi.
SELECT * FROM LG_001_STCARD WHERE DEFINITION_ LIKE ‘[A-H]%‘
Örn12 :
Stok kartı açılamasının ilk harfi “A” ile “H” arasındaki harflerden biri ile başlamayan satırların listelenmesi.
SELECT * FROM LG_001_STCARD WHERE DEFINITION_ LIKE ‘[^A-H]%‘
Örn13 :
İlk harfi “K” harfi ile başlamayan stok kartı açıklamalarının listelenmesi.
SELECT * FROM LG_001_STCARD WHERE DEFINITION_ NOT LIKE ‘K%’
Örn14 :
Stok kartları listesinin DEFINITION_ (açıklama) kolonuna göre sıralı olarak küçükten büyüğe listelenmesi.
SELECT * FROM LG_001_STCARD ORDER BY DEFINITION_ ASC
Örn15 :
Stok kartları listesinin DEFINITION_ (açıklama) kolonuna göre sıralı olarak büyükten küçüğe listelenmesi.
SELECT * FROM LG_001_STCARD ORDER BY DEFINITION_ DESC
Örn16 :
Stok fiyatı 1000 ila 50000 arasında olan satırların listelenmesi.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , PRICE * 1.17 “KDV DAHIL” FROM LG_001_PRCLIST WHERE PRICE BETWEEN 1000 AND 50000
Örn17 :
Stok fiyatı 50000’ den büyük olan satırların listelenmesi.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , PRICE * 1.17 “KDV DAHIL” FROM LG_001_PRCLIST WHERE PRICE > 50000
Örn18:
Stok fiyatı 50000’ den küçük olan satırların listelenmesi.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , PRICE * 1.17 “KDV DAHIL” FROM LG_001_PRCLIST WHERE PRICE <50000
Örn19:
Stok fiyatı 50000’ den küçük veya eşit olan satırların listelenmesi.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , PRICE * 1.17 “KDV DAHIL” FROM LG_001_PRCLIST WHERE PRICE <=50000
Örn20:
Stok fiyatı 50000’ den büyük veya eşit olan satırların listelenmesi.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , PRICE * 1.17 “KDV DAHIL” FROM LG_001_PRCLIST WHERE PRICE =>50000
Örn21:
Stok fiyatı 50000’ den büyük veya eşit olan satırların listelenmesi.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , PRICE * 1.17 “KDV DAHIL” FROM LG_001_PRCLIST WHERE PRICE =>50000
Örn22:
Stok kodları, “ST001”, “ST003”, “ST006” olan satırların listelenmesi.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , PRICE * 1.17 “KDV DAHIL” FROM LG_001_PRCLIST WHERE STCODE IN (‘ST001’, ‘ST003’, ‘ST006’)
Örn23:
PRICE kolonunun 1.17 ile çarpımının sonucunun mutlak değerinin alınması.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , ABS(PRICE * 1.17) “KDV DAHIL” FROM LG_001_PRCLIST
Örn24:
PRICE kolonunun 1.17 ile çarpımının sonucunun mutlak değerinin alınması.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , ABS(PRICE * 1.17) “KDV DAHIL” FROM LG_001_PRCLIST
Örn25:
PRICE kolonunun 1.17 ile çarpımının sonucunun tamsayıya yuvarlanmış eşit ya da daha küçük değerinin alınması.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , FLOOR(PRICE * 1.17) “KDV DAHIL” FROM LG_001_PRCLIST
Örn26:
PRICE kolonunun 1.17 ile çarpımının sonucunun tamsayıya yuvarlanmış eşit ya da daha büyük değerinin alınması.
SELECT STCODE “STOK KODU”, PRICE “FIYATI” , CEILING(PRICE * 1.17) “KDV DAHIL” FROM LG_001_PRCLIST
Örn27:
Stok kodu açıklamasının küçük harfe çevirilmesi.
SELECT CODE, LOWER(DEFINITION_) FROM LG_001_STCARD
Örn28:
Stok kodu açıklamasının büyük harfe çevirilmesi.
SELECT CODE, UPPER(DEFINITION_) FROM LG_001_STCARD
Örn29:
Stok kodu açıklamasının tersten yazdırılması.
SELECT CODE, REVERSE(DEFINITION_) FROM LG_001_STCARD
Örn30:
Stok kodu açıklamasının üçüncü karakterinden başlayarak iki karakter silinecek ve yerine ‘LBS’ yazılarak görüntülenecek.
SELECT CODE, STUFF( DEFINITION_, 3, 2, ‘LBS’ ) FROM LG_001_STCARD
Örn31:
Stok kodu açıklamasının 4.karakterinden başlayarak 3 karakterini alacak ve öyle görüntüleyecek.
SELECT CODE, SUBSTRING( DEFINITION_, 4, 3) FROM LG_001_STCARD
Örn32:
LG_001_STCARD isimli tablonun aynısı, STCARD isimli başka bir tablo yaratmak.
SELECT * INTO STCARD FROM LG_001_STCARD
UPDATE komutu
Tablo satırlarındaki verilerin değiştirilmesi için kullanılır.
Temel yapısı :
UPDATE
tablo_adı veya viev adı
SET
kolon_adı = {expression | DEFAULT | NULL}
| @variable = expression
| @variable = column = expression } [,…n]
{{[FROM {<table_source>} [,…n] ]
[WHERE
<search_condition>] }
Örn1 :
Stok kartları tablosunda, stok kodu ST001 olan stok kartının açıklamasının değiştirilmesi.
UPDATE LG_001_STCARD SET DEFINITION_=’Turuncu Kalem’ WHERE CODE=’ST001′
DELETE komutu
Tablo satırlarınının silinmesini sağlar.
Temel yapısı :
DELETE
[FROM ]
{
tablo_adı veya view_adı
[ FROM {<table_source>} [,…n] ]
[WHERE
{ <search_condition>
Örn1:
Stok kartları tablosunda, stok kodu ST003 olan stok kartının silinmesi.
DELETE FROM LG_001_STCARD WHERE CODE=’ST003′
Örn2:
Stok kartları tablosundaki tüm verilerin tümünün silinmesi.
DELETE LG_001_STCARD
VIEW ‘ lar
Tabloların belli kolonlarının listelendiği ayrıca hesaplama işlemlerinin yapıldığı bir veri erişim yöntemidir.
Temel yapısı :
CREATE VIEW view_adı
kolon_adı
[WITH ENCRYPTION]
AS select _deyimi
Not : SELECT cümlelerinin içerisinde ORDER BY, COMPUTE ve INTO kullanılamaz. Ayrıca TEMPORARY tablolarda kullanılamaz.
Örn1:
Stok kartları listesini döken view
CREATE VIEW stk_list AS
SELECT CODE “Stok Kodu” , DEFINITION_ “Aciklamasi” FROM LG_001_STCARD
Örn2:
“stk_list” VIEW ‘ inin isminin değiştirilmesi.
sp_rename stk_list, stok_list
Örn3:
“stok_list” VIEW’ inin silinmesi.
drop view stok_list
TRIGGER‘ lar
Temel yapısı :
CREATE TRIGGER triger_adi
ON tablo_adi
[WITH ENCRYPTION]
{FOR { [DELETE] [,] [INSERT] [,] [UPDATE]}
AS
sql_deyimi
Örn1:
CREATE TRIGGER stk_trg
ON LG_001_STCARD
FOR INSERT
AS
Print ‘Stok kartlari tablosuna veri girisi yapildi..!’
Örn2:
CREATE TRIGGER stk_trg
ON LG_001_STCARD
FOR DELETE
AS
Print ‘Stok kartlari tablosundan veri silindi ..!’
STORED PROCEDUR’ lar
Belli işlemleri gerçekleştiren kod parçalarıdır. Rutin hale gelen işleri kolayca gerçekleştirmek için kullanılırlar. Pek çok avantajı vardır.
Modüler programlamayı destekler. Bir kere yaratılır, istenildiği kadar kullanılabilir.
Hızlı işletilir. Tekrar tekrar derlenmez.
Network trafiğini azaltır.
Temel yapısı:
CREATE PROC[EDURE] procedur_adı [;sayı]
[ {@parametre data_tipi} [VARYING] [=varsayım] [OUTPUT] ]
[,….n]
[WITH {RECOMPAILE | ENCRYPTION | RECOMPILE, ENCRYPTION} ]
[FOR REPLICATION]
AS
sql_deyimleri […n]
Örn1:
CREATE PROCEDURE test
@stok_adi varchar(255)
AS
SELECT CODE “Stok kodu”, DEFINITION_ “Açıklaması” FROM LG_001_STCARD
WHERE CODE = @stok_adi
Kullanımı :
EXEC test ST005
Sonuç:
Stok kodu Açıklaması
————————- —————————————————
ST005 05 kursun kalem