Neler yeni

Welcome to SATBİL FORUM PAYLAŞIM

Join us now to get access to all our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, and so, so much more. It's also quick and totally free, so what are you waiting for?

Bir Satbil Forum Efsanesi

Satbil Reklam Alanı

Satbil Forum Reklam

SQL deyimleri ve fonksiyonlari

mehmet_ozturk

New member
Local time
19:07
Katılım
23 Şubat 2006
Mesajlar
6
Tepkime puanı
16
Puanları
3
Konum
Hatay
[FONT=Verdana, sans-serif]SQL DEYİMLERİ[/FONT]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:
  • [FONT=Arial, sans-serif]DDL (Data [/FONT][FONT=Arial, sans-serif]Definition[/FONT][FONT=Arial, sans-serif]Language[/FONT][FONT=Arial, sans-serif]): Veri tanımlama deyimleri. [/FONT]
  • [FONT=Arial, sans-serif]DML (Data [/FONT][FONT=Arial, sans-serif]Manuplation[/FONT][FONT=Arial, sans-serif]Language[/FONT][FONT=Arial, sans-serif]) : Veri düzenleme dili. [/FONT]
  • [FONT=Arial, sans-serif]DCL (Data [/FONT][FONT=Arial, sans-serif]Control[/FONT][FONT=Arial, sans-serif]Language[/FONT][FONT=Arial, sans-serif]): Veri kontrol dili. [/FONT]
[FONT=Arial, sans-serif]A. DDL (DATA DEFİNİTİON LANGUAGE) DEYİMLERİ[/FONT]

DDL deyimleri veritabanı üzerinde nesne yaratmak için kullanılırlar. En yaygın kullanılan DDL deyimleri şunlardır:
  • [FONT=Arial, sans-serif]CREATE [/FONT]
  • [FONT=Arial, sans-serif]ALTER [/FONT]
  • [FONT=Arial, sans-serif]DROP [/FONT]
CREATE DEYİMİ
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ı:

[FONT=Courier New, monospace]CREATE <tablo adı>[/FONT]

Örnek:

[FONT=Courier New, monospace]CREATE TABLE [FONT=Courier New, monospace]Musteri[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]([/FONT][/FONT]
[FONT=Courier New, monospace]mus[FONT=Courier New, monospace]_id [/FONT]char[FONT=Courier New, monospace](4) NOT NULL [/FONT][/FONT]
[FONT=Courier New, monospace]mus[FONT=Courier New, monospace]_ad [/FONT]varchar[FONT=Courier New, monospace](40) NULL,[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]ili [/FONT]varchar[FONT=Courier New, monospace](20) NULL,[/FONT][/FONT]
[FONT=Courier New, monospace]ulkechar[FONT=Courier New, monospace](2) NULL,[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]adres [/FONT]varchar[FONT=Courier New, monospace](30) NULL[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace])[/FONT][/FONT]

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:

[FONT=Courier New, monospace]CREATE TABLE personel[/FONT]
[FONT=Courier New, monospace]([/FONT]
[FONT=Courier New, monospace]Sskno Integer,[/FONT]
[FONT=Courier New, monospace]Adi Varchar(20) not null,[/FONT]
[FONT=Courier New, monospace]Soyadi Varchar(20) not null,[/FONT]
[FONT=Courier New, monospace]Departman integer[/FONT]
[FONT=Courier New, monospace]) [/FONT]
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:

[FONT=Courier New, monospace]ALTER TABLE [FONT=Courier New, monospace]Musteri[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]ADD tel [/FONT]varchar[FONT=Courier New, monospace](20) NOT NULL[/FONT][/FONT]

Yukarıdaki deyimde musteri tablosunun alanlarına tel adlı bir alan daha eklenmiştir.
DROP DEYiMİ
Bir nesnesin silinmesini sağlar.

Örnek:
DROP TABLE MUSTERI
Müşteri tablosunun verilerini ve tabloyu siler.
[FONT=Arial, sans-serif]B. DML (DATA MANIPULATION LANGUAGE) DEYİMLERİ[/FONT]

Veritabanı içindeki verileri elde etmek ve değiştirmekle ilgili SQL deyimleridir.

 SELECT
 INSERT
 UPDATE
 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:
[FONT=Courier New, monospace]SELECT * [/FONT][FONT=Courier New, monospace]from[/FONT][FONT=Courier New, monospace]musteri[/FONT][FONT=Courier New, monospace] WHERE bakiye BETWEEN 100000 AND[/FONT]
[FONT=Courier New, monospace]3000000[/FONT]

Aynı anlamda:
[FONT=Courier New, monospace]SELECT * [/FONT][FONT=Courier New, monospace]from[/FONT][FONT=Courier New, monospace]musteri[/FONT][FONT=Courier New, monospace] WHERE bakiye <= 100000 AND[/FONT]
[FONT=Courier New, monospace]>= 3000000[/FONT]

Ö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
[FONT=Arial, sans-serif]VERİLERİ SIRALAMAK[/FONT]
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

[FONT=Verdana, sans-serif]ORDER BY sözcüğü ise verilerin istenilen alan göre sıralı olarak listelenmesini sağlar. [/FONT]

[FONT=Verdana, sans-serif]SELECT * FROM [/FONT][FONT=Verdana, sans-serif]musteri[/FONT]
[FONT=Verdana, sans-serif]ORDER BY ad[/FONT]

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:
[FONT=Verdana, sans-serif]SELECT grup, [/FONT][FONT=Verdana, sans-serif]sum[/FONT][FONT=Verdana, sans-serif](bakiye) FROM [/FONT][FONT=Verdana, sans-serif]musteri[/FONT]
[FONT=Verdana, sans-serif]GROUP BY grup[/FONT]

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.
[FONT=Verdana, sans-serif]SELECT grup, [/FONT][FONT=Verdana, sans-serif]sum[/FONT][FONT=Verdana, sans-serif](bakiye) FROM [/FONT][FONT=Verdana, sans-serif]musteri[/FONT]
[FONT=Verdana, sans-serif]GROUP BY grup[/FONT]
[FONT=Verdana, sans-serif]HAVING il = 'İZMİR'[/FONT]

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
[FONT=Arial, sans-serif]COMPUTE SÖZCÜĞÜ[/FONT]
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:
useornek
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 fromcariana)

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şul

Ö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 ;
[FONT=Courier New, monospace]UPDATE [/FONT][FONT=Courier New, monospace]Musteri[/FONT]
[FONT=Courier New, monospace]SET Ad = 'Nuri Yılmaz' [/FONT]
[FONT=Courier New, monospace]WHERE kod='1';[/FONT]

Örneğin tüm musterilerin bakiyesini %10 artırmak istediğimizde

[FONT=Courier New, monospace]UPDATE [/FONT][FONT=Courier New, monospace]Musteri[/FONT]
[FONT=Courier New, monospace]SET bakiye=bakiye*1.1; [/FONT]

DELETE DEYİMİ
Bir tablodaki verileri silmek için DELETE komutu kullanılır. Örneğin Öğrenci tablosundaki tüm verileri silmek için;
[FONT=Courier New, monospace]DELETE * [/FONT][FONT=Courier New, monospace]from[/FONT][FONT=Courier New, monospace]musteri[/FONT]

Tabloda, bakiyesi 1000'den küçük olan müşterilerin satırlarını silmek için:
[FONT=Courier New, monospace]DELETE * FROM [/FONT][FONT=Courier New, monospace]musteri[/FONT][FONT=Courier New, monospace] WHERE bakiye <=1000[/FONT]

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'


[FONT=Arial, sans-serif]C. DCL (DATA CONTROL LANGUAGE) DEYİMLERİ[/FONT]

Veritabanındaki kullanıcı haklarını düzenlemek için kullanılan deyimlerdir. Örneğin GRANT, DENY, REVOKE gibi.
Örnek:
[FONT=Courier New, monospace]USE Northwind[/FONT]
[FONT=Courier New, monospace]GRANT SELECT ON Stok TO PUBLIC[/FONT]

GRANT DEYİMİ
[FONT=Verdana, sans-serif]Aşağıdaki örnek Ayşe adlı kullanıcı veritabanı ve tablo oluşturma izni verilir: [/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]GRANT CREATE DATABASE, CREATE TABLE[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]TO [/FONT]ayşe[/FONT]

[FONT=Verdana, sans-serif]SQL FONKSİYONLARI[/FONT]

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.
[FONT=Arial, sans-serif]A. GRUPLAMA FONKSİYONLARI[/FONT]

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:
[FONT=Verdana, sans-serif]AVG[/FONT]
[FONT=Verdana, sans-serif]COUNT[/FONT]
[FONT=Verdana, sans-serif]GROUPING[/FONT]
[FONT=Verdana, sans-serif]MAX[/FONT]
[FONT=Verdana, sans-serif]MIN[/FONT]
[FONT=Verdana, sans-serif]SUM[/FONT]
[FONT=Verdana, sans-serif]STDEV[/FONT]
[FONT=Verdana, sans-serif]STDEVP[/FONT]
[FONT=Verdana, sans-serif]VAR[/FONT]
[FONT=Verdana, sans-serif]VARP[/FONT]

[FONT=Arial, sans-serif]AVG (T-SQL) Fonksiyonu[/FONT]
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ı:
[FONT=Verdana, sans-serif]ALL [/FONT]

Ortalama fonksiyonunu bütün değerlere uygular.
[FONT=Verdana, sans-serif]DISTINCT [/FONT]
İşlemin her tek değer için uygulanacağını belirtir. Diğer bir deyişle tekrar eden değerlerin yerine birisi kullanılır.
[FONT=Verdana, sans-serif]ifade[/FONT]

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
GO
SELECT AVG(quantity), SUM(quantity)
FROM [OrderDetails]
GO

[FONT=Arial, sans-serif]COUNT (T-SQL) Fonksiyonu[/FONT]
Bir grup içindeki eleman sayısını verir.
Kullanım Biçimi:
COUNT({[ALL | DISTINCT] ifade] | *})

Argümanları:

[FONT=Verdana, sans-serif]ALL [/FONT]

Fonksiyonunu bütün değerlere uygular.
[FONT=Verdana, sans-serif]DISTINCT [/FONT]
İşlemin her tek değer için uygulanacağını belirtir. Diğer bir deyişle tekrar eden değerlerin yerine birisi kullanılır.
[FONT=Verdana, sans-serif]ifade[/FONT]


Bir ifade ya da kolon adı.
[FONT=Verdana, sans-serif]* [/FONT]
Bir tablodaki bütün satırların sayısını döndürmek için kullanılır. COUNT(*) herhangi bir paratmetre ile kullanılmaz ve DISTINCT ile kullanılmaz.
COUNT(*) ile null ve tekrar eden değerler dahil bütün elemanlar sayılır.
Örnek:

Aşağıdaki örnekte ürünler tablosundaki ürünler sayılır. DISTINCT ile tekrara izin verilmez.
USE Northwind
GO
SELECT COUNT(DISTINCT productname)
FROM products
GO


[FONT=Arial, sans-serif]MAX (T-SQL) Fonksiyonu[/FONT]
İfade içindeki maksimum değeri döndürür.
Kullanım Biçimi:


MAX([ALL | DISTINCT] ifade)

Argümanları:


[FONT=Verdana, sans-serif]ALL [/FONT]

Fonskiyonunu bütün değerlere uygular.
[FONT=Arial, sans-serif]MIN (T-SQL) [/FONT]FOnksiyonu
İfade içindeki minimum değeri döndürür.
Kullanım Biçimi:


MIN([ALL | DISTINCT] ifade)


Argümanları:


[FONT=Verdana, sans-serif]ALL [/FONT]

Fonskiyonunu bütün değerlere uygular.
Örnek:

Aşağıdaki örnekte en küçük satış adedi elde edilmektedir:
USE Northwind
GO
SELECT MIN(quantity)
FROM [OrderDetails]
GO

[FONT=Arial, sans-serif]SUM Fonksiyonu[/FONT]

Değerlerin toplamlarını verir. SUM fonksiyonu sadece sayısal alanlarda kullanılır.
Kullanım Biçimi:
SUM ([ALL | DISTINCT] ifade)

Argümanları:
[FONT=Verdana, sans-serif]ALL [/FONT]
[FONT=Verdana, sans-serif]Toplama ([/FONT][FONT=Verdana, sans-serif]aggregate[/FONT][FONT=Verdana, sans-serif]) fonksiyonunu bütün değerlere uygular. ALL seçeneği varsayım olarak kullanılır. [/FONT]
[FONT=Verdana, sans-serif]DISTINCT [/FONT]
[FONT=Verdana, sans-serif]SUM fonksiyonunu tek değerlerin ([/FONT][FONT=Verdana, sans-serif]unique[/FONT][FONT=Verdana, sans-serif]) toplamını vermesini sağlar. [/FONT]
[FONT=Verdana, sans-serif]İfade[/FONT]
[FONT=Verdana, sans-serif]Bir sabit, bir kolon, fonksiyon [/FONT][FONT=Verdana, sans-serif]ya[/FONT][FONT=Verdana, sans-serif] da bir aritmetik işlem. [/FONT]
Örnek:


USE pubs
GO
-- Satır toplamları


SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type


[FONT=Arial, sans-serif]B. TARİH VE ZAMAN FONKSİYONLARI (T-SQL)[/FONT]

Bu fonksiyonlar tarih (date) ve zaman (time) üzerinde işlemler yapmayı sağlar. Tarih ve zaman fonksiyonları şunlardır:
[FONT=Verdana, sans-serif]DATEADD[/FONT]
[FONT=Verdana, sans-serif]DATEDIFF[/FONT]
[FONT=Verdana, sans-serif]DATENAME[/FONT]
[FONT=Verdana, sans-serif]DATEPART[/FONT]
[FONT=Verdana, sans-serif]DAY[/FONT]
[FONT=Verdana, sans-serif]GETDATE[/FONT]
[FONT=Verdana, sans-serif]MONTH[/FONT]
[FONT=Verdana, sans-serif]YEAR[/FONT]
[FONT=Verdana, sans-serif]CONVERT[/FONT]


[FONT=Verdana, sans-serif]DATEADD[/FONT]
[FONT=Verdana, sans-serif]Belli bir tarihin üzerine değer eklenerek yeni bir tarih değeri üretir. [/FONT]
[FONT=Verdana, sans-serif]Kullanım biçimi: [/FONT]
[FONT=Verdana, sans-serif]DATEADD ( [/FONT][FONT=Verdana, sans-serif]tarihkısmı[/FONT][FONT=Verdana, sans-serif], sayı, tarih) [/FONT]
[FONT=Verdana, sans-serif]Argümanları: [/FONT]

[FONT=Verdana, sans-serif]Tarih[/FONT][FONT=Verdana, sans-serif]kısmı[/FONT]
Tarih Parçası
Kısaltması
Year
yy, yyyy
Quarter
qq, q
Month
mm, m
Dayofyear
dy, y
Day
dd, d
Week
wk, ww
Hour
hh
Minute
mi, n
Second
ss, s
Millisecond
ms

[FONT=Verdana, sans-serif]sayı[/FONT]
[FONT=Verdana, sans-serif]Tarih kısmını artırmak için kullanılan değer. [/FONT]
[FONT=Verdana, sans-serif]tarih[/FONT]
[FONT=Verdana, sans-serif]Tarih değerini döndüren tarih [/FONT][FONT=Verdana, sans-serif]bilgidi[/FONT][FONT=Verdana, sans-serif]. [/FONT]
[FONT=Verdana, sans-serif]Örnekler: [/FONT]

[FONT=Verdana, sans-serif]Yayın tarihinin 30 gün sonrası: [/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]USE pubs[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]GO[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]DATEADD[FONT=Courier New, monospace](day, 30, [/FONT]pubdate[FONT=Courier New, monospace]) [/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]FROM titles[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]GO[/FONT][/FONT]


[FONT=Verdana, sans-serif]Örnek: Son on gün içinde yapılan siparişler: [/FONT]


[FONT=Courier New, monospace]SELECT [/FONT][FONT=Courier New, monospace]ord[/FONT][FONT=Courier New, monospace]_[/FONT][FONT=Courier New, monospace]num[/FONT][FONT=Courier New, monospace], [/FONT][FONT=Courier New, monospace]ord[/FONT][FONT=Courier New, monospace]_[/FONT][FONT=Courier New, monospace]date[/FONT][FONT=Courier New, monospace]
FROM [/FONT]
[FONT=Courier New, monospace]sales[/FONT][FONT=Courier New, monospace]
WHERE
([/FONT]
[FONT=Courier New, monospace]ord[/FONT][FONT=Courier New, monospace]_[/FONT][FONT=Courier New, monospace]date[/FONT][FONT=Courier New, monospace] >=
DATEADD([/FONT]
[FONT=Courier New, monospace]day[/FONT][FONT=Courier New, monospace], -10, GETDATE()))[/FONT]


DATEDIFF
İki tarih arasındaki gün sayısını verir.
[FONT=Verdana, sans-serif]Kullanımı: [/FONT]
[FONT=Verdana, sans-serif]DATEDIFF ( Tarih parçası, başlangıç tarihi, bitiş tarihi) [/FONT]
[FONT=Verdana, sans-serif]Argümanları: [/FONT]

[FONT=Verdana, sans-serif]Tarih[/FONT][FONT=Verdana, sans-serif]parçası[/FONT]

Örnek: Şu anki tarih ile yayın tarihi arasındaki fark:


[FONT=Courier New, monospace][FONT=Courier New, monospace]USE pubs[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]GO[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]DATEDIFF([FONT=Courier New, monospace]day, [/FONT]pubdate[FONT=Courier New, monospace], [/FONT]getdate[FONT=Courier New, monospace]()) [/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]FROM titles[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]GO[/FONT][/FONT]


DATEPART (T-SQL)
Belirtilen tarihin istenen parçasına karşılık olarak bir tamsayı döndürür.
[FONT=Verdana, sans-serif]Kullanım Biçimi: [/FONT]


DATEPART(tarihparçası, tarih)


Argümanları:
[FONT=Verdana, sans-serif]Tarih parçası[/FONT]


Tarih bilgisinin bir kısmını ifade eden bilgi.
Örnek:

Aşağıdaki örnekte şu anki tarihin karşılık geldiği ay adı ve ay numarası bulunmaktadır:
SELECT GETDATE()


Tarihi verir:
SELECT DATEPART(month, GETDATE())


Ayı verir:
DAY (T-SQL)
Bir tarih bilgisinin gün kısmını verir.
Kullanım Biçimi:

DAY(tarih)

Argümanları:

[FONT=Verdana, sans-serif]tarih[/FONT]


datetime ya da smalldatetime tarih bilgisi.

Aşağıdaki örnekte verilen tarihin gün kısmı verilmektedir:

SELECT DAY('26/03/1999') AS 'Gün'
GO

Sonuç:
Gün
------------
26

MONTH (T-SQL)
Bir tarih bilgisinin ay kısmını verir.

Kullanım Biçimi:

MONTH(tarih)

Argümanları:

[FONT=Verdana, sans-serif]tarih[/FONT]

datetime ya da smalldatetime tarih bilgisi.
Aşağıdaki örnekte verilen tarihin ay kısmı verilmektedir:
SELECT MONTH('26/03/1999') AS 'Ay'
GO

Sonuç:
Ay
------------
03
YEAR (T-SQL)
Bir tarih bilgisinin yıl kısmını verir.
Kullanım Biçimi:


YEAR(tarih)


Argümanları:

[FONT=Verdana, sans-serif]tarih[/FONT]

[FONT=Verdana, sans-serif]D. KARAKER FONKSİYONLARI[/FONT]

String (karakter) alanları işlemek için yaygın kullandığımız fonksiyonlar bu alana girer. Transact-SQL dilinde kullanılan bazı karakter fonksiyonları şunlardır:


[FONT=Arial, sans-serif]ASCII [/FONT]
  • [FONT=Arial, sans-serif]CHAR [/FONT]
  • [FONT=Arial, sans-serif]CHARINDEX [/FONT]
  • [FONT=Arial, sans-serif]DIFFERENCE [/FONT]
  • [FONT=Arial, sans-serif]LEFT [/FONT]
  • [FONT=Arial, sans-serif]LEN [/FONT]
  • [FONT=Arial, sans-serif]LOWER [/FONT]
  • [FONT=Arial, sans-serif]LTRIM [/FONT]
  • [FONT=Arial, sans-serif]NCHAR [/FONT]
  • [FONT=Arial, sans-serif]REPLICATE [/FONT]
  • [FONT=Arial, sans-serif]REVERSE [/FONT]
  • [FONT=Arial, sans-serif]SUBSTRING [/FONT]
  • [FONT=Arial, sans-serif]QUOTENAME [/FONT]
  • [FONT=Arial, sans-serif]STUFF [/FONT]
  • [FONT=Arial, sans-serif]REPLACE [/FONT]
  • [FONT=Arial, sans-serif]STR [/FONT]
  • [FONT=Arial, sans-serif]SOUNDEX [/FONT]
  • [FONT=Arial, sans-serif]PATINDEX [/FONT]
  • [FONT=Arial, sans-serif]SPACE [/FONT]
  • [FONT=Arial, sans-serif]RIGHT [/FONT]
  • [FONT=Arial, sans-serif]RTRIM [/FONT]
  • [FONT=Arial, sans-serif]UPPER [/FONT]
  • [FONT=Arial, sans-serif]UNICODE [/FONT]
ASCII
Bir karakter ifadenin en soldaki değerinin ASCII kodunu döndürür.
Kullanımı:
[FONT=Verdana, sans-serif]ASCII ( [/FONT][FONT=Verdana, sans-serif]karakter[/FONT][FONT=Verdana, sans-serif]ifade[/FONT][FONT=Verdana, sans-serif]) [/FONT]
[FONT=Verdana, sans-serif]Karekter[/FONT][FONT=Verdana, sans-serif] ifade [/FONT][FONT=Verdana, sans-serif]char[/FONT][FONT=Verdana, sans-serif]ya[/FONT][FONT=Verdana, sans-serif] da [/FONT][FONT=Verdana, sans-serif]varchar[/FONT][FONT=Verdana, sans-serif] türündedir.[/FONT]
[FONT=Verdana, sans-serif]Döndürdüğü tür: [/FONT][FONT=Verdana, sans-serif]Int[/FONT]
Örnek:
[FONT=Verdana, sans-serif]Bizim Ev cümlesinin bütün karakterlerinin ASCII değerini döndürür: [/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SET TEXTSIZE 0[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SET NOCOUNT ON[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]-- [/FONT]değişkenoluştur[FONT=Courier New, monospace].[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]DECLARE @[/FONT]konumint[FONT=Courier New, monospace], @[/FONT]karakterchar([FONT=Courier New, monospace]15)[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]-- [/FONT]değişkenlere[FONT=Courier New, monospace] ilk [/FONT]değerver[FONT=Courier New, monospace].[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SET @[/FONT]konum[FONT=Courier New, monospace]= 1[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SET @[/FONT]karakter[FONT=Courier New, monospace]= '[/FONT]BizimEv[FONT=Courier New, monospace]'[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]WHILE @[/FONT]konum[FONT=Courier New, monospace]<= [/FONT]DATALENGTH([FONT=Courier New, monospace]@[/FONT]karakter[FONT=Courier New, monospace])[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]BEGIN[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]ASCII([FONT=Courier New, monospace]SUBSTRING(@[/FONT]karakter[FONT=Courier New, monospace], @[/FONT]konum[FONT=Courier New, monospace], 1)),[/FONT][/FONT]
[FONT=Courier New, monospace]CHAR([FONT=Courier New, monospace]ASCII(SUBSTRING(@[/FONT]karakter[FONT=Courier New, monospace], @[/FONT]konum[FONT=Courier New, monospace], 1)))[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SET @[/FONT]konum[FONT=Courier New, monospace]= @[/FONT]konum[FONT=Courier New, monospace] + 1[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]END[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SET NOCOUNT OFF[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]GO[/FONT][/FONT]


CHARINDEX
Bir karakter dize içinde belirtilen bir ifadenin (karakterin) başlangıç konumunu döndürür.
[FONT=Verdana, sans-serif]Kullanımı: [/FONT]

[FONT=Verdana, sans-serif]CHARINDEX ( ifade1, ifade2[ , başlangıç konumu] ) [/FONT]
[FONT=Verdana, sans-serif]İfade1: aranacak karakterleri belirtir. [/FONT]
[FONT=Verdana, sans-serif]İfade2: İfade1'deki karakterlerin aranacağı karakterleri belirtir. [/FONT]
[FONT=Verdana, sans-serif]Başlangıç konumu ise aramanın başlanacağı konumu belirtir. [/FONT]
Döndürdüğü tür: Int
[FONT=Verdana, sans-serif]İfadelerden birisi NULL ise CHARINDEX fonksiyonu NULL değerini döndürür. İfade1, İfade2 içinde bulunamazda 0 değeri döner. [/FONT]
[FONT=Verdana, sans-serif]Örnek: ADI alanında BOYASI sözcüğünün başladığı konumu döndürür. [/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]CHARINDEX[FONT=Courier New, monospace]('BOYASI', [/FONT]adi[FONT=Courier New, monospace])[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]FROM urun[/FONT][/FONT]


[FONT=Courier New, monospace][FONT=Courier New, monospace]-- [/FONT]aramaiçinbaşlangıkçkonumubelirtmekistersek[/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]CHARINDEX[FONT=Courier New, monospace]('BOYASI', [/FONT]adi[FONT=Courier New, monospace], 5)[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]FROM urun[/FONT][/FONT]

Yalnızca adlar listesi:


select left (adi,charindex(' ', adi)) from cariana
LEFT
Bir karakter dizesinin sol taraftan belirtilen sayı kadar keser.
[FONT=Verdana, sans-serif]Kullanımı: [/FONT]

[FONT=Verdana, sans-serif]LEFT [/FONT][FONT=Verdana, sans-serif]( [/FONT][FONT=Verdana, sans-serif]karakter[/FONT][FONT=Verdana, sans-serif]dize[/FONT][FONT=Verdana, sans-serif], [/FONT][FONT=Verdana, sans-serif]tarmsayı[/FONT][FONT=Verdana, sans-serif]) [/FONT]
[FONT=Verdana, sans-serif]Örnek[/FONT][FONT=Verdana, sans-serif]: [/FONT][FONT=Verdana, sans-serif]Adların[/FONT][FONT=Verdana, sans-serif]soldan[/FONT][FONT=Verdana, sans-serif]beş[/FONT][FONT=Verdana, sans-serif]karakteri[/FONT][FONT=Verdana, sans-serif]: [/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]USE [/FONT]ornek[/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]GO[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]LEFT(adi[FONT=Courier New, monospace], 5) [/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]FROM [/FONT]cariana[/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]ORDER BY [/FONT]kodu[/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]GO[/FONT][/FONT]


LEN
[FONT=Verdana, sans-serif]Dize verinin uzunluğunu döndürür. [/FONT]
[FONT=Verdana, sans-serif]Kullanımı: [/FONT]

[FONT=Verdana, sans-serif]LEN ( karakter dize) [/FONT]
Örnek: Adı alanının uzunluğu:


[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]LEN(adi[FONT=Courier New, monospace]) AS '[/FONT]Uzunluk[FONT=Courier New, monospace]'[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]FROM [/FONT]cariana[/FONT]

use ornek
select substring (adi,charindex(' ',adi)+1,(len(adi)-charindex(' ',adi))) from cariana
-- soyadını ayırmak
LTRIM
[FONT=Verdana, sans-serif]Önündeki boşlukları siler. [/FONT]
[FONT=Verdana, sans-serif]Kullanımı: [/FONT]

[FONT=Verdana, sans-serif]LTRIM ( karakter dize) [/FONT]


RIGHT
Belirtilen dizenin sağ tarafından keser.
[FONT=Verdana, sans-serif]Kullanımı: [/FONT]

[FONT=Verdana, sans-serif]RIGHT [/FONT][FONT=Verdana, sans-serif]( [/FONT][FONT=Verdana, sans-serif]karakter[/FONT][FONT=Verdana, sans-serif]dizesi[/FONT][FONT=Verdana, sans-serif], [/FONT][FONT=Verdana, sans-serif]tamsayı[/FONT][FONT=Verdana, sans-serif]) [/FONT]
[FONT=Verdana, sans-serif]Arguments[/FONT]

[FONT=Verdana, sans-serif]Örnek: [/FONT]

[FONT=Verdana, sans-serif]Adı [/FONT][FONT=Verdana, sans-serif]alanını[/FONT][FONT=Verdana, sans-serif]sağlan[/FONT][FONT=Verdana, sans-serif] 10 [/FONT][FONT=Verdana, sans-serif]karakteri[/FONT][FONT=Verdana, sans-serif]: [/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]RIGHT(adi[FONT=Courier New, monospace], 10) [/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]FROM [/FONT]cariana[/FONT]

RTRIM
[FONT=Verdana, sans-serif]Karakter dizesinin arkasındaki boşlukları kaldırır. [/FONT]
[FONT=Verdana, sans-serif]Kullanımı:[/FONT]

[FONT=Verdana, sans-serif]RTRIM ( [/FONT][FONT=Verdana, sans-serif]karakter[/FONT][FONT=Verdana, sans-serif]dize[/FONT][FONT=Verdana, sans-serif]) [/FONT]
Örnek: Bir alan güncelleme:

update deneme
set alan1 = rtrim(alan1) + rtrim('a')

STUFF
[FONT=Verdana, sans-serif]Belirtilen uzunluktaki karakterleri siler ve yerine belirtilen diğer karakterleri ekler. [/FONT]
[FONT=Verdana, sans-serif]Syntax[/FONT]

[FONT=Verdana, sans-serif]STUFF ( [/FONT][FONT=Verdana, sans-serif]karaker[/FONT][FONT=Verdana, sans-serif] dize, başlangıç, uzunluk, karakter dize) [/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]Örnek: [/FONT][/FONT]


[FONT=Courier New, monospace][FONT=Courier New, monospace]use [/FONT]ornek[/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]STUFF(tel[FONT=Courier New, monospace], 7, 1, '8') from [/FONT]cariana[/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]-- [/FONT]telefonnumarasında[FONT=Courier New, monospace] 7 [/FONT]karakteri[FONT=Courier New, monospace] 9 [/FONT]iledeğiştirmek[/FONT]




SUBSTRING
[FONT=Verdana, sans-serif]Bir[/FONT][FONT=Verdana, sans-serif]karakter[/FONT][FONT=Verdana, sans-serif]dizesinin[/FONT][FONT=Verdana, sans-serif]içinden[/FONT][FONT=Verdana, sans-serif]belli[/FONT][FONT=Verdana, sans-serif]karakterleri[/FONT][FONT=Verdana, sans-serif]seçer[/FONT][FONT=Verdana, sans-serif]. [/FONT]
[FONT=Verdana, sans-serif]Kullanımı:[/FONT]

[FONT=Verdana, sans-serif]SUBSTRING ( [/FONT][FONT=Verdana, sans-serif]karakter[/FONT][FONT=Verdana, sans-serif]dize[/FONT][FONT=Verdana, sans-serif], [/FONT][FONT=Verdana, sans-serif]başlangıç[/FONT][FONT=Verdana, sans-serif], [/FONT][FONT=Verdana, sans-serif]uzunluk[/FONT][FONT=Verdana, sans-serif]) [/FONT]


[FONT=Verdana, sans-serif]Örnek: [/FONT]

Adı alanının içinde üçüncü karakter başlayım 4 tane karakteri döndürmek:



[FONT=Courier New, monospace][FONT=Courier New, monospace]SELECT [/FONT]SUBSTRING(adi[FONT=Courier New, monospace], 3, 4)[/FONT][/FONT]
[FONT=Courier New, monospace][FONT=Courier New, monospace]FROM [/FONT]cariana[/FONT]


[FONT=Courier New, monospace][FONT=Courier New, monospace]Adı [/FONT]soyadıalanındansoyadınıçekmek[FONT=Courier New, monospace]: [/FONT][/FONT]


[FONT=Courier New, monospace][FONT=Courier New, monospace]select substring ([/FONT]adi,charindex[FONT=Courier New, monospace](' ',[/FONT]adi[FONT=Courier New, monospace])+1,([/FONT]len[FONT=Courier New, monospace]([/FONT]adi[FONT=Courier New, monospace])-[/FONT]charindex[FONT=Courier New, monospace](' ',[/FONT]adi[FONT=Courier New, monospace]))) from [/FONT]cariana[/FONT]
 
shape1
shape2
shape3
shape4
shape7
shape8
Üst