Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Veritabanları & SQL

Cevapla
 
LinkBack Seçenekler
Eski 08/05/2007, 16:33   #1 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan SQL'e Yeni Başlayan Arkadaşlar İçin Döküman

Merhaba Arkadaşlar...

Bu konu başlığının altında SQL e yeni başlayan arkadaşlar için işlerine yarayacak bazı bilgiler vereceğim. Umarım işinize yarayacaktır.
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Eski 08/05/2007, 16:34   #2 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan SQL Komutlarının Sınıflandırılması

SQL Komutlarının Sınıflandırılması

Sorgulama ve Veri manipülasyonu (Data Manipulation Language - DML): Sorgulama ve değiştirme için kullanılır. (SELECT, INSERT, DELETE, UPDATE)

Veri Tanımı (Data Definition Language - DDL) : Veriyapılarını yaratmak, değiştirmek ve silmek için kullanılır. (CREATE,ALTER,DROP,RENAME,TRUNCATE)
Transaction Kontrolü veGüvenlik (Data Control Language - DCL) :Veriye ulaşımı kontrol etmek için kullanılır (COMMIT, ROLLBACK, SAVEPOINT,GRANT, REVOKE).
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Eski 08/05/2007, 16:34   #3 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan Select

SELECT

SELECT cümlesi bir veri tabanından verileri seçmek ve çıkarmak (“retrieve”) için kullanılır.
SELECT [DISTINCT] *, sütun [alias] {, sütun [alias] }
FROM tablo|view|SELECT_komutu [alias] {, tablo|view|SELECT_komutu [alias] }
[WHERE satır_seçme_şartı { and|or satır_seçme_şartı}]
[GROUP BY sütun {, sütun }
[HAVING grup_seçme_şartı { and|or grup_seçme_şartı}]]
[ORDER BY sütun [ASC|DESC] {, sütun [ASC|DESC] }]

Her SELECT komutunda mutlaka olması gereken iki kısım vardır; SELECT ve FROM. Bunlar dışındakiler gerekirse kullanılabilir. Sütun kullanılan her yerde tek başına veya iç içe geçmiş single row (tek satır) fonksiyonları kullanılabilir. Örneğin upper(rtrim(rname)) Group By komutu kullanılmadan Having komutunun kullanılmaması gerekir.

Satır seçme veya grup seçme şartlarında SELECT cümleleri kullanılabilir. Bu şekilde yazılan SELECT cümlelerine NESTED Queries (İç içe geçmiş sorgu cümlecikleri) denir. SQL komutları genel olarak büyük harf küçük harf ayrımı yapmaz.

SELECT cümleciğinde yıldız (*) kullanıldığında tüm sütunlar seçilmiş olur. WHERE cümleciği kullanılmazsa tablodaki tüm satırlar seçilmiş olur ve ekrana gönderilir. Aşağıdaki SQL ifadesi, hasta tablosundaki tüm satır ve sütunları ekranda listeler.
SELECT *
FROM hasta
HS_KEY
HS_AD
HS_SOYAD
CINSIYET
ISLEMSAYI
1
İLKAY
FINTIK
E
4
2
SERDAL
GÜZEL
E
3
3
SERAP
ATIŞ
K
8


Sadece tablodaki bazı sütunların görünmesi gerekiyorsa, SELECT cümleciğinde bu sütunlar listelenir.
SELECT hs_key, hs_ad, hs_soyad
FROM hasta
HS_KEY
HS_AD
HS_SOYAD
1
İLKAY
ÇALIŞKAN
2
SERDAL
GÜZEL
3
SERAP
ATIŞ

İstenir ise, aliaslar kullanılarak sütun başlıkları değiştirilebilir.
SELECT hs_key AS dosyano, hs_ad AS hastad, hs_soyad AS hastasoyad
FROM hasta
DOSYANO
HASTAAD
HASTASOYAD
1
İLKAY
ÇALIŞKAN
2
SERDAL
GÜZEL
3
SERAP
ATIŞ

Sütunlar, sabit değerler, aritmetik işlemler veya diğer sütunlar ile birleştirilerek tek bir string haline getirilebilir.
SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS hastaad
FROM hasta
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Eski 08/05/2007, 16:35   #4 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan Karşılaştırma Operatörleri

Karşılaştırma Operatörleri

Değişken veya değerleri doğrudan aritmetiksel büyüklük kıyaslama işaretlerini kullanarak karşılaştırma yapan operatörlerdir. Bunlar, !=, <>, ^=, =, >=, >, <=, <
!=, <>, ^=
Karşılaştırılan sütun ile değerin birbirinden farklı olan kayıtları listeler.
=
Karşılaştırılan sütun ile değer eşit olan kayıtları listelenir.
>=
Karşılaştırılan sütun ile değer eşit ve büyük olan kayıtları listelenir.
>
Karşılaştırılan sütunun verilen değerden büyük olan kayıtlar listelenir.
<=
Karşılaştırılan sütun ile değer eşit ve küçük olan kayıtları listelenir.
<
Karşılaştırılan sütunun verilen değerden küçük olan kayıtlar listelenir.

SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE hs_key = 1
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
1
İLKAY ÇALIŞKAN
E
4

SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE hs_key >= 2
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
2
SERDAL GÜZEL
E
3
3
SERAP ATIŞ
K
8
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Eski 08/05/2007, 16:36   #5 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan SQL Karşılaştırma Operatörleri

SQL Karşılaştırma Operatörleri

SQL ifadelerde IS NULL, IS NOT NULL, LIKE, NOT LIKE, IN ( değerler), NOT IN ( değerler), BETWEEN ... AND ..., NOT BETWEEN ... AND .... operatörleri, karşılaştırma operatörleri olarak kullanılır.
· IS NULL : karşılaştırma yapılan sütunun içeri boş olanlarını listeler.
SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE babaad IS NULL
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
1
İLKAY ÇALIŞKAN
E
4


· IS NOT NULL : karşılaştırma yapılan sütunun, değeri boş olmayanlarını listeler.
SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE babaad IS NOT NULL
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
2
SERDAL GÜZEL
E
3
3
SERAP ATIŞ
K
8

· LIKE : String alanlarda karşılaştırma operatörleri kullanıldığında, koşula uyan tüm kayıtlar listelenir. LIKE opretoründe ise, belirtilen değer sütun içinde kullanılan % parametresine göre konum belirlemeksizin aranır. % Parametresi sayesinde, aranan değerin başlangıç ve bitiş noktaları serbest bırakılır.
WHERE hs_ad LIKE ‘İLK’ hs_ad sütun değeri ‘İLK’ olan tüm kayıtları listeler. WHERE hs_ad = ’İLK’ karşılaştırma ifadesi ile aynı anlamı taşır.
WHERE hs_ad LIKE ‘İLK%’ hs_ad sütunu içine ilk 3 karekteri ‘İLK’ olan tüm kayıtları listeler.
WHERE hs_ad LIKE ‘%İLK%’ hs_ad sütunu değerinin başlangıç ve bitiş değerlerine bakılmaksızın, içinde ‘İLK’ olan tüm kayıtları listeler.
LIKE operatörü başına NOT eklenirse yukarıdaki tüm koşulların olumsuzu çalışır.
SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE hs_ad LIKE ‘S%’
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
2
SERDAL GÜZEL
E
3
3
SERAP ATIŞ
K
8

SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE hs_ad NOT LIKE ‘S%’
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
1
İLKAY ÇALIŞKAN
E
4


· IN : Karşılaştırma operatörleri ile karşılaştırma yapıldığında, yalnızca bir değer için karşılaştırma yapılabilir. IN operatörü ise, bir sütunun birden fazla eşitliği kontrol edilebilir.

WHERE hs_key IN (1,3) hs_key sütunun değeri 1 ve 3 olan kayıtlar listelenir. IN operatörünün başına NOT eklenir ise belirtilen koşulun olumsuzu çalışır. Böyle bir durumda, hs_key sütun değeri 1 ve 3 dışında olan kayıtlar listelenir. String alanlarda kullanıldığında koşul tırnak içinde yazılması gerekir. WHERE hs_ad in (‘İLKAY’) gibi.
SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE hs_key IN (1,3)
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
1
İLKAY ÇALIŞKAN
E
4
3
SERAP ATIŞ
K
8

SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE hs_key NOT IN (1,3)
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
2
SERDAL GÜZEL
E
3


· BETWEEN ... AND ... : BETWEEN ’den önce belirtilen değer ile BETWEEN’den sonra belirtilmiş olan değerin arasında ve bu iki değere eşit olup olmadığını sorgulamak için kullanılır.
SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE acistarih BETWEEN '10.10.2002' AND '11.10.2002'
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
1
İLKAY ÇALIŞKAN
E
4

SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE hs_key BETWEEN 1 AND 2
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
1
İLKAY ÇALIŞKAN
E
4
2
SERDAL GÜZEL
E
3

“hs_key BETWEEN 1 AND 2”=”hs_key>=1 AND hs_key<=2”
sorgu ifadesi de aynı sorgu sonuçlarını üretir.
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Eski 08/05/2007, 16:38   #6 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan Mantık Karşılaştırma Operatörleri

SQL karşılaştırma veya karşılaştırma operatörleri arasına koşuları birbirine bağlamak için kullanılır. AND, OR ve NOT bu gruba giren operatörlerdir.
1. Koşul
Mantık Operatörü
2. Koşul
SONUÇ
NOT
Doğru
AND
Doğru
Doğru
Yanlış
Doğru
AND
Yanlış
Yanlış
Doğru
Yanlış
AND
Doğru
Yanlış
Doğru
Yanlış
AND
Yanlış
Yanlış
Doğru
Doğru
OR
Doğru
Doğru
Yanlış
Doğru
OR
Yanlış
Doğru
Yanlış
Yanlış
OR
Doğru
Doğru
Yanlış
Yanlış
OR
Yanlış
Yanlış
Doğru
Tabloda da görüldüğü gibi, NOT operatörü ifadeye olumsuzluk katarak sonucun tam tersini türetir.
SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE (hs_key BETWEEN 1 AND 2) AND (islemsayi = 4)
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
1
İLKAY ÇALIŞKAN
E
4


SELECT hs_key AS dosyano, hs_ad || ’ ‘ || hs_soyad AS HASTA, cinsiyet, islemsayi
FROM hasta
WHERE NOT ((hs_key BETWEEN 1 AND 2) AND (ISLEMSAYI =4))
DOSYANO
HASTA
CINSIYET
ISLEMSAYI
2
SERDAL GÜZEL
E
3
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Eski 08/05/2007, 16:45   #7 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan group by

<H2 style="MARGIN: 12pt 0cm 6pt 28.8pt">GROUP BY</H2>

Belirtilen kolon veya kolonlardaki tüm satırları bir araya toplar ve bu kolonlar üzerinde Kümeleme Fonksiyonlarının (“Aggregate Functions”) çalıştırılmasına izin verir.
Kümeleme Fonksiyonları :
MIN
Seçilen kolonun en küçük değerini verir.
MAX
Seçilen kolonun en büyük değerini verir.
SUM
Seçilen kolonun sayısal toplamını verir.
AVG
Seçilen kolonun ortalamasını alır.
COUNT
Grup yapılan satır sayısını verir.

SELECT cinsiyet, count(*) AS hasta
FROM hasta
GROUP BY cinsiyet
CINSIYET
HASTA
E
2
K
1

SELECT MAX(hs_key) AS hastasayi hasta
FROM hasta
hastasayi
3
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Eski 08/05/2007, 16:45   #8 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan Having

HAVING

HAVING yan tümcesi, GROUP BY grup ifadesi kullanılan sorgularda kullanılır. Yapılan grupların belirli bir koşula göre oluşturulmasını sağlar. Bu bakımdan HAVING , GROUP BY ifadesinden sonra yer almalıdır.
SELECT cinsiyet, COUNT(*) AS hasta
FROM hasta
GROUP BY cinsiyet HAVING COUNT(*)>1
CINSIYET
HASTA
E
2
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Eski 08/05/2007, 16:46   #9 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan TABLE JOINS (Tablo Birleştirme)

TABLE JOINS (Tablo Birleştirme)

Şu ana kadar yazılan tüm sorgularda tek bir tablo kullanıldı. Şimdi, ilişkisel veri tabanlarının ve SQL’in çok önemli ve yararlı bir özelliğini göreceğiz: Birleştirme (“join”) işlemi. İlişkisel veri tabanlarına “ilişkisel” denmesinin nedeni olan işlem. Birleştirme işlemi iki veya daha çok tablo arasında bağlantı (“link”) kurarak tek bir tablo oluşturur ve sorgu bu tablo üzerinde çalışır. Genellikle her n tablo için (n-1) join koşulu kullanmak gerekiyor.
· Inner Join

İki tabloyu birbirine eşitleyerek birleştirmeye Inner Join veya Equijoin denir.
SELECT a.hs_key,a. hs_ad, a.hs_soyad, b.girtarih, b.islemno
FROM hasta a, hpislem b
WHERE a.hs_key = b.pi_hs_key
HS_KEY
HS_AD
HS_SOYAD
GIRTARIH
ISLEMNO
1
İLKAY
ÇALIŞKAN
02.10.2002 14:20:38
1
2
SERDAL
GÜZEL
02.10.2002 14:30:18
1
1
İLKAY
ÇALIŞKAN
03.10.2002 10:11:15
2
3
SERAP
ATIŞ
03.10.2002 10:15:22
1
1
İLKAY
ÇALIŞKAN
04.10.2002 13:45:41
3

· Non Equijoin
Tabloları ilişkilendirmek için, her zaman eşitlik kullanılmaz. Bazı durumlarda tablolarda birbirleriyle doğrudan ilgili olan sütunlar olmaz. Bu durumlarda kullanılır.
SELECT a.pi_hs_key, a.girtarih, a.islemno
FROM hpislem a, htanim b
WHERE TO_CHAR(a.girtarih, 'HH24:MI') BETWEEN b.mesaibas AND b.mesaibit
PI_HS_KEY
GIRTARIH
ISLEMNO
1
02.10.2002 14:20:38
1
2
02.10.2002 14:30:18
1
1
03.10.2002 10:11:15
2

· Self join
Bazı problemlerde bir tabloyu kendi kendisiyle birleştirmek gerekebilir. Bu durumlarda mutlaka alias (tablo için ikinci isim) kullanılmalıdır.
SELECT a.servisad, b.servisad AS bagservis
FROM servis a, servis b
WHERE a.sr_key = b.bagservis
SERVISAD
BAGSERVIS
Çocuk Hastalıkları
ÇOCUK 1
Çocuk Hastalıkları
ÇOCUK 2
Çocuk Hastalıkları
ÇOCUK 3

· Outer join
Inner join yapıldığında join koşuluna uymayan kayıtların listelenmediği görülür. Nedeni ise, join koşulundaki sütunları NULL olan satırların değerlendirilmemesidir. Eğer NULL olan kayıtlar da görmek isteniyorsa outer join kullanılmalıdır. Outer Join yapmak için, join koşulunda birleşecek değeri bulunmayan tablonun tarafına (+) eklenir. Bir koşulun yalnızca bir tarafında outer join operatörü kullanılabilir.
SELECT a.servisad, b.servisad AS bagservis
FROM servis a, servis b
WHERE a.sr_key = b.bagservis (+)
SERVISAD
BAGSERVIS
Çocuk Hastalıkları
ÇOCUK 1
Çocuk Hastalıkları
ÇOCUK 2
Çocuk Hastalıkları
ÇOCUK 3
Acil
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Eski 08/05/2007, 16:46   #10 (permalink)
Üye
 
Mustapha Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 05/2007
Yer: Antalya
Mesaj: 56
Varsayılan Subquery (İç veya Alt Sorgular)

Subquery (İç veya Alt Sorgular)

İçiçe geçmiş sorgular birden fazla tablonun kullanılmasını gerektiren problemlerde kullanılır. Subqueriler daha fazla satır veya grup seçme gibi işlemlerde kullanılırlar. Bazı problemler hem join, hem de Subquery ile çözülebilir. Performans açısından subquery tercih edilmelidir. Subquery parantez arasında yazılır. Subquery bir kez çalıştırılır ve sonucu dış query tarafından kullanılır.

SELECT <select list>
FROM <tablo>
WHERE <expression> <operatör>
(SELECT <sub select list> FROM <tablo>)
Subquery’lerin kullanıldıkları yerler :
· Where cümleciği

· Having cümleciği

· Update komutu

· INSERT komutunun INTO cümleciği

· UPDATE komutunun SET cümleciği

· SELECT veya DELETE komutlarının FROM cümleciği

Subquery Kuralları :
· Subqueri karşılaştırma operatörünün sağında olur.

· Subquerilerde ORDER BY kullanılamaz

· Subquerinin seçeceği satır sayısına göre kullanılan karşılaştırma operatörleri değişir.

Subquery Karşılaştırma Operatörleri :
Tek satır döndüren subquery

Birden fazla satır döndürebilen subquery

Operatör

İşlev

Operatör

İşlev

=

Eşitlik

IN

İçinde

!=, <>, ^=

Eşitsizlik

NOT IN

İçinde değil

<

Küçük

< ALL, < ANY

Tümünden Küçük

<=

Küçük ve Eşit

<= ALL, <= ANY

Tümünden Küçük ve Eşit

>

Büyük

> ALL, > ANY

Tümünden Büyük

>=

Büyük ve Eşit

>= ALL, >= ANY

Tümünden Büyük ve Eşit


SELECT servisad
FROM servis
WHERE sr_key in
(SELECT bagservis FROM servis WHERE bagservis IS NOT NULL)
SERVISAD
Dermatoloji
Çocuk Hastalıkları
İç Hastalıkları
Diş
Mustapha hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
Yeni Başlayanlar İçin Minik Projeler II hasanyasin Python / Zope 4 22/05/2007 07:54
Yeni Başlanyanlar İçin İllustrator LordVoldemort Photoshop / Corel / PSP 5 26/12/2005 12:18
Arkadaşlar Java Komponentlerini Anlatan Türkçe Döküman ayhankiraz Java / JSP 1 08/12/2005 02:14
Yeni Başlayanlar İçin Ücretsiz Kitap Önerisi Grafik Hayata Dair 10 07/09/2005 12:02
Yeni Site İçin Fikirlerinizi Bekliyorum ejderatesi Site Yorum 9 22/04/2003 01:15


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 07:55.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv | Malta |


Forum Yazılımı: vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net