GENC YAZILIM

PROGRAMLAMA DİLLERİ
 
AnasayfaTakvimSSSAramaÜye ListesiKullanıcı GruplarıKayıt OlGiriş yap

Paylaş | 
 

 sql ders notları-2

Önceki başlık Sonraki başlık Aşağa gitmek 
YazarMesaj
Admin
Admin


Mesaj Sayısı: 45
Kayıt tarihi: 04/04/08

MesajKonu: sql ders notları-2   Cuma Mayıs 23, 2008 7:31 am

Fonskiyonunu bütün değerlere uygular.
MIN (T-SQL) FOnksiyonu
İfade içindeki minimum değeri döndürür.
Kullanım Biçimi:
MIN([ALL | DISTINCT] ifade)
Argümanları:
ALL
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 [Order Details]
GO
SUM Fonksiyonu
Değerlerin toplamlarını verir. SUM fonksiyonu sadece sayısal alanlarda
kullanılır.
Kullanım Biçimi:
SUM ([ALL | DISTINCT] ifade)
Argümanları:
ALL
Toplama (aggregate) fonksiyonunu bütün değerlere uygular. ALL seçeneği varsayım
olarak kullanılır.
DISTINCT
SUM fonksiyonunu tek değerlerin (unique) toplamını vermesini sağlar.
İfade
Bir sabit, bir kolon, fonksiyon ya da bir aritmetik işlem.
Örnek: USE pubs
GO
-- Satır toplamları
SELECT type, price, advance
FROM titles
ORDER BY type
COMPUTE SUM(price), SUM(advance) BY type
B. TARİH VE ZAMAN FONKSİYONLARI (T-SQL)
Bu fonksiyonlar tarih (date) ve zaman (time) üzerinde işlemler yapmayı sağlar.
Tarih ve zaman fonksiyonları şunlardır:
 DATEADD
 DATEDIFF
 DATENAME
 DATEPART
 DAY

 GETDATE
 MONTH
 YEAR
 CONVERT

DATEADD
Belli bir tarihin üzerine değer eklenerek yeni bir tarih değeri üretir.
Kullanım biçimi: DATEADD ( tarihkısmı, sayı, tarih)
Argümanları: Tarih kısmı
Tarih ParçasıKısaltması
Yearyy, yyyy
Quarterqq, q
Monthmm, m
Dayofyeardy, y
Daydd, d
Weekwk, ww
Hourhh
Minutemi, n
Secondss, s
Millisecondms

Sayı: Tarih kısmını artırmak için kullanılan değer.
Tarih: Tarih değerini döndüren tarih bilgidi.
Örnekler: Yayın tarihinin 30 gün sonrası:
USE pubs GOSELECT DATEADD(day, 30, pubdate) FROM titlesGOÖrnek: Son on gün içinde yapılan siparişler:
SELECT ord_num, ord_date
FROM sales
WHERE
(ord_date >=
DATEADD(day, -10, GETDATE()))
DATEDIFF
İki tarih arasındaki gün sayısını verir.
Kullanımı: DATEDIFF ( Tarih parçası, başlangıç tarihi, bitiş tarihi)
Argümanları: Tarih parçası
Tarih ParçasıKısaltması
Yearyy, yyyy
Quarterqq, q
Monthmm, m
Dayofyeardy, y
Daydd, d
Weekwk, ww
Hourhh
Minutemi, n
Secondss, s
millisecondMs




Örnek: Şu anki tarih ile yayın tarihi arasındaki fark:
USE pubsGOSELECT DATEDIFF(day, pubdate, getdate()) FROM titlesGODATEPART (T-SQL)
Belirtilen tarihin istenen parçasına karşılık olarak bir tamsayı döndürür.
Kullanım Biçimi: DATEPART(tarihparçası, tarih)
Argümanları: Tarih parçası: Tarih bilgisinin bir kısmını ifade eden bilgi.
Tarih bölümüKısaltma
yearyy, yyyy
quarterqq, q
monthmm, m
dayofyeardy, y
daydd, d
weekwk, ww
weekdayDw
hourHh
minutemi, n
secondss, s
millisecondMs

Ö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ı:
Tarih 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ı: Tarih 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ı: tarih
D. KARAKER FONKSİYONLARI
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:
1. ASCII
2. CHAR
3. CHARINDEX
4. DIFFERENCE
5. LEFT
6. LEN
7. LOWER
8. LTRIM
9. NCHAR
10. REPLICATE
11. REVERSE
12. SUBSTRING
13. QUOTENAME
14. STUFF
15. REPLACE
16. STR
17. SOUNDEX
18. PATINDEX
19. SPACE
20. RIGHT
21. RTRIM
22. UPPER
23. UNICODE
ASCII : Bir karakter ifadenin en soldaki değerinin ASCII kodunu döndürür.
Kullanımı: ASCII ( karakter ifade)
Karekter ifade char ya da varchar türündedir.
Döndürdüğü tür: Int
Örnek: Bizim Ev cümlesinin bütün karakterlerinin ASCII değerini döndürür:
SET TEXTSIZE 0SET NOCOUNT ON-- değişken oluştur.DECLARE @konum int, @karakter char(15)-- değişkenlere ilk değer ver.SET @konum= 1SET @karakter= 'Bizim Ev'WHILE @konum<= DATALENGTH(@karakter) BEGIN SELECT ASCII(SUBSTRING(@karakter, @konum, 1)), CHAR(ASCII(SUBSTRING(@karakter, @konum, 1))) SET @konum= @konum + 1 ENDSET NOCOUNT OFFGOCHARINDEX
Bir karakter dize içinde belirtilen bir ifadenin (karakterin) başlangıç konumunu
döndürür.
Kullanımı: CHARINDEX ( ifade1, ifade2[ , başlangıç konumu] )
İfade1: aranacak karakterleri belirtir.
İfade2: İfade1'deki karakterlerin aranacağı karakterleri belirtir.
Başlangıç konumu ise aramanın başlanacağı konumu belirtir.
Döndürdüğü tür: Int
İfadelerden birisi NULL ise CHARINDEX fonksiyonu NULL değerini döndürür. İfade1,
İfade2 içinde bulunamazda 0 değeri döner.
Örnek: ADI alanında BOYASI sözcüğünün başladığı konumu döndürür.
SELECT CHARINDEX('BOYASI', adi)FROM urun -- arama için başlangıkç konumu belirtmek istersekSELECT CHARINDEX('BOYASI', adi, 5)FROM urunYalnızca adlar listesi: select left (adi,charindex(' ', adi)) from cariana
LEFT
Bir karakter dizesinin sol taraftan belirtilen sayı kadar keser.
Kullanımı: LEFT ( karakter dize, tarmsayı)
Örnek: Adların soldan beş karakteri:
USE ornekGOSELECT LEFT(adi, 5) FROM carianaORDER BY koduGOLEN
Dize verinin uzunluğunu döndürür.
Kullanımı: LEN ( karakter dize)
Örnek: Adı alanının uzunluğu:
SELECT LEN(adi) AS 'Uzunluk'FROM carianause ornek
select substring (adi,charindex(' ',adi)+1,(len(adi)-charindex(' ',adi))) from
cariana
-- soyadını ayırmak
LTRIM
Önündeki boşlukları siler.
Kullanımı: LTRIM ( karakter dize)
RIGHT Belirtilen dizenin sağ tarafından keser.
Kullanımı: RIGHT ( karakter dizesi, tamsayı)
Arguments
Örnek: Adı alanını sağlan 10 karakteri:
SELECT RIGHT(adi, 10) FROM carianaRTRIM Karakter dizesinin arkasındaki boşlukları kaldırır.
Kullanımı: RTRIM ( karakter dize)
Örnek: Bir alan güncelleme: update deneme
set alan1 = rtrim(alan1) + rtrim('a')
STUFF Belirtilen uzunluktaki karakterleri siler ve yerine belirtilen diğer
karakterleri ekler.
Syntax : STUFF ( karaker dize, başlangıç, uzunluk, karakter dize)
Örnek: use ornekSELECT STUFF(tel, 7, 1, '8') from cariana-- telefon numarasında 7 karakteri 9 ile değiştirmekSUBSTRING Bir karakter dizesinin içinden belli karakterleri seçer.
Kullanımı: SUBSTRING ( karakter dize, başlangıç, uzunluk)
Örnek: Adı alanının içinde üçüncü karakter başlayım 4 tane karakteri döndürmek:

SELECT SUBSTRING(adi, 3, 4)FROM cariana Adı soyadı alanından soyadını çekmek: select substring (adi,charindex(' ',adi)+1,(len(adi)-charindex(' ',adi))) from carianaGÖZDEN GEÇİRME
1. SQL Dili fonksiyonlarının sınıflarını açıklayınız. 2. Bir alanın soldan üç
karakterini seçmek için hangi fonksiyonları kullanabiliriz.

I. SQL DEYİM BLOKLARI
SQL deyimlerini işletirden bir grup deyimi bir arada işletmek gerekebilir. Bu
olanak deyim bloklarıyla yapılır. Diğer bir olanak da IF, CASE ve WHILE gibi hem
blok olarak hem de blok olmadan işletilecek deyimleri belli koşullara
bağlamaktır.
A. BEGIN...END
BEGIN ve END deyimleri bir grup SQL deyimini bir blok içinde toplamayı sağlar.
Örneğin IF deyimi ile yalnızca bir deyimin işletilip işletilmemesi sınanırken,
BEGIN ve END bloğu ile bir grup deyimin çalıştırılıp çalıştırılmaması sağlanır.

Örnek: WHILE (SELECT AVG(adet) FROM titles) < 30
-- döngü başlat
BEGIN UPDATE siparis SET adet= adet* 2
END
BEGIN ve END deyimleri genellikle şu durumlarda kullanılır.
WHILE ile döngü yapıldığında.
Bir CASE fonksiyonunun blok deyimi içermesi durumunda.
IF ve ELSE deyiminde.
B. DENETİM DEYİMLERİ
SQL dilinde programlama dilleri kadar olmasa da program akışını kontrol etmek
için deyimler ve yapılar vardır. Bunların başında IF-ELSE, CASE ve WHILE yapısı
gelir.
IF...ELSE Bir deyimin işletilmesini belli bir koşula bağlar.
Kullanımı:
IF ifade
{ deyim }
[ ELSE
{ deyim} ]
Örnek: Adet ortalamasının 20'den küçük olması durumunda çalıştırılacak
deyimler:
IF (SELECT AVG(adet) FROM siparis) < 20
BEGIN
--işlemler
END
ELSE
BEGIN
--işlemler
END
CASE: Bir değere göre daha fazla alternatifi yerine getirmeyi sağlar.
Kullanım biçimi: CASE değer
WHEN değer THEN işlem
WHEN değer THEN işlem
ELSE işlem
END




Tablodan Aktarma: INSERT INTO yenitablo (alanlar..)
SELECT (alan1, alan2, alan3,
CASE alan4 WHEN 'A' THEN '1' WHEN 'B' THEN '2' ELSE '3' END,
alan5 FROM eskitablo
WHERE isdate (tarih) <> 0
Örnek: Tablolar arasında aktama:
İNSERT İNTO KAMİL1
(KODU, ADİ, GRUBU, ADRESİ)
SELECT KODU, ADİ,
(CASE GRUBU WHEN 'A' THEN 'EMEKLI' WHEN 'B' THEN 'TERHIS' END)
,ADRESİ FROM KAMİL2
WHILE
SQL deyimlerinin döngü içinde yinelenmesini sağlar. WHILE ile belirtilen döngü
koşulu yerine getirildiği sürece deyimler yerine getirilir.
Kullanımı: WHILE ifade
{ deyim ya da blok}
[ BREAK ]
{ deyim ya da blok}
[ CONTINUE ]
Örnek: Satış adetleri 50 oluncaya kadar adet alanının artır.
WHILE (SELECT AVG(adet) FROM siparis) < 50
BEGIN
UPDATE siparis
SET adet= adet* 2
SELECT MAX(adet) FROM siparis
IF (SELECT MAX(adet) FROM siparis) > 50
BREAK
ELSE
CONTINUE
END
PRINT 'adet değeri büyük'''

BREAK ve CONTINUE kullanmadan:
WHILE (SELECT AVG(adet) FROM siparis) < 50
BEGIN
UPDATE siparis
SET adet= adet* 2
END
PRINT 'adet değeri büyük'''
BREAK ve CONTINUE kullanmadan:
GÖZDEN GEÇİRME
1. SQL deyimlerini neden bir blok haline getiririz?

DERS 4: VIEW KULLANIMI

Amaçlar:
VIEW oluşturmayı ve kullanımını açıklamak.

I. VIEW NEDİR?
Tablolardaki verilere erişmenin bir diğer yolu da view'ler geliştirmektir.
View'ler tabloların belli kolonların listelendiği ayrıca hesaplama işlemlerinin
yapıldığı bir veri erişim yöntemidir.

View kullanmanın çok sayıda üsütünlüğü (kolaylığı) vardır. Bunların başında
database üzerindeki çok sayıdaki tablo üzerinde özel görünümler yaratması ve
kullanıcılara tablolar (görünümün altında yatan) üzerinde izin vermeden tablolar
üzerinde işlem yapmalarını sağlar. Örneğin kullanıcı, tablonun sadece belli
kolonlarını içeren bir View üzerinde çalışabilir.

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.

A. VİEW OLUŞTURMAK
CREATE deyimi ile yaratılır. İçinde genellikle SELECT gibi bir cümle bulunur.

Kullanım Biçimi:

CREATE VIEW view_adı
AS
select_deyimi

Aşağıdaki örnekte bir tablonun belli alanları üzerine bir View yaratılmaktadır.

CREATE VIEW musteri_view AS
SELECT Kodu, Adı, Soyadı, Grubu
FROM musteri

View'ların yaratılmasında SELECT deyimi kullanılır. Ancak bazı kısıtlamaları
vardır:

 ORDER BY, COMPUTE, ya da COMPUTE BY sözcükleri kullanılmaz.
 INTO kullanılmaz.


B. VİEW'LARI ÇALIŞTIRMAK
Bir view'dan veri almak için genellikle SELECT kullanılır.

Aşağıdaki deyim yukarıda hazırladığımız view içindeki verileri görüntüler:

SELECT * from musteri_view


GÖZDEN GEÇİRME
1. View'ların amacı nedir?

I. STORED PROCEDURE
SQL Server'daki Stored procedure'lar aynı diğer programlama dillerindeki
procedure'lara benzer. SQL deyimlerini içeren komut doayaları hazırlanır ve
sunucu üzerinde saklanır.
Stored procedure aracılığıyla şu işlemler yapılablir:
Input parametrelerini kabul ederek ve birçok değerin geri dönmesini sağlar.
Database içindeki işlemleri yapmak için programlama deyimleri içerir.
Stored procedure'lar genellikle rutin hale gelmiş işleri kolayca yapmak için
geliştirilirler. SQL deyimleriyle yazılan stored procedure'lar sadece ilk kez
çalıştırıldıklarında derlenirler. Daha sonraki çalıştırma işlemlerinde
derlenmezler ve böylece hızlı bir biçimde çalışma sağlanmış olur.
Örnek bir stored procedure tasarımı:
USE Northwind
GO
CREATE PROC pahali_kitaplar
AS
SELECT *
FROM products
WHERE unitprice > 30
GO
Stored procedure'ı Çalıştırma:
EXEC pahalı_kitaplar
A. CREATE PROCEDURE Deyimi
Bir SQL Server stored procedure'ı CREATE PROCEDURE deyimi ile oluşturulur.
İstenirse daha sonra ALTER PROCEDURE deyim ile değiştirilir. Bir stored
procedure yaratma deyimi tek bir batch olarak düzenlenir. Diğer bir deyişle
diğer SQL deyimleriyle aynı batch içinde yer alamaz.
Kullanım Biçimi: :

CREATE PROC[EDURE] procedure_adı[;sayı]
[
{@parameter data_tipi} [VARYING] [= varsayım] [OUTPUT]
]
[,...n]
[WITH
{
RECOMPILE
| ENCRYPTION
| RECOMPILE, ENCRYPTION
}
]
[FOR REPLICATION]
AS
sql_deyimleri [...n]
Örnekler: Aşağıdaki stored procedure ile sadece belirtilen yazarın bilgileri ve
kitapları listelenir.
USE pubs
GO
CREATE PROCEDURE yazar
@lastname varchar(40),
@firstname varchar(20)
AS
SELECT au_lname, au_fname, title, pub_name
FROM authors a INNER JOIN titleauthor ta
ON a.au_id = ta.au_id INNER JOIN titles t
ON t.title_id = ta.title_id INNER JOIN publishers p
ON t.pub_id = p.pub_id
WHERE au_fname = @firstname
AND au_lname = @lastname
GO
Sayfa başına dön Aşağa gitmek
Kullanıcı profilini gör http://gencyazilim.turkforumpro.com
 

sql ders notları-2

Önceki başlık Sonraki başlık Sayfa başına dön 
1 sayfadaki 1 sayfası

 Similar topics

-
» Arçelik-Beko Arıza Notları
» Ders-1 Ruh ile bağdaşma kapısı HAL duruşu.
» En İyi Ders Anlatan Hoca Hangisi?
» C ve C++ Ders Notları
» Termokimya

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
GENC YAZILIM :: içerikler :: PROGRAMLAMA :: SQL-