Tuesday, June 2, 2009

kısa kısa SQL hatırlatmaları

Askerde olduğum 12 aylık süre zarfinda bu konulardan uzak kaldiğim için kaynaklara bakmaya ihtiyaç duyuyorum. Bu ihtiyacı en azından burada yayınlayarak hem kendim hemde takip edenler için kolay bir hızlı erişim kaynaği olur.

SQL INNER JOIN sözdizilimi

SELECT column_name(s)
FROM table_name1
INNER JOIN table_name2
ON table_name1.column_name=table_name2.column_name

basit bir örneğide arkasından patlatalim

bu personel tablosu olsun.

P_Id ad soyad adres sehir

buda gorev tablosu olsun içerisindeki verileri siz hayal edin.

G_Id Gorev_No P_Id
SELECT Personel.soyad, Personel.ad, Gorev.Gorev_No
FROM Personnel
INNER JOIN Gorev
ON Personel.P_Id=Gorev.P_Id
ORDER BY Personel.Soyad;
sayadadGorev_No
şeklinde çıktı verecektir.
SQL LEFT JOIN sözdizimi
SELECT column_name(s)
FROM table_name1
LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name

burada tablo1 deki bütün sanuçlar dönuyor tablo2 de eşi olmasa dahi.
bir başa örnekde burada

select
i.integer_value as day_of_week ,
t.val
from
integers i
left outer join t on
( i.integer_value = t.day_of_week )
where
i.integer_value between 0 and 6
order by
i.integer_value
;
DAY_OF_WEEK        VAL
----------- ----------
0
1 100
2
3 300
4 400
5 500
6
SQL> select * from t;

DAY_OF_WEEK VAL
----------- ----------
1 100
3 300
4 400
5 500

select * from integer;

INTEGER_VALUE
-------------
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
7
8
9
10
ilişkisel cebir işlemlerinin resimli anlatımı (salahlı hocamın sunularından alıntıdır.)
 Resim1
 
Resim2
 
 
//////////////////////////////////////////////////////////////////////////////////////
 

LIKE, ‘_’ , ‘%’ karakterleri ve ESCAPE

SQL cümlelerinde LIKE ifadesi sık
sık kullanırız.Örneğin all_objects tablosunda adı ‘STMT’ ile başlayan satirlari
getir sorgusu aşağıdaki gibi olacaktır:

select * from all_objects where
object_name like ‘STMT%’

Sonu ’MAP’ ile biten objeleri
getirmek için :
select * from
all_objects where object_name like ‘%MAP’

İçersinde ‘PRIVILEGE’ geçen
objeleri getirmek için :
select * from
all_objects where object_name like ‘%PRIVILEGE%’

3.karaketeri ‘$’ olanları getirmek
için :
select * from all_objects where
object_name like ‘__$%’

Ancak bazen
içersinde

‘_’ ya da ‘%’ gecen ifadeleri de sorgulamak isteyebiliriz.Ama bu durumda ‘_’
karakteri ‘herhangi tek bi rkarakter’ manasına, ‘%’ karakteri de herhangi
karakter kümesi varlığı anlamında kullanılan tanımlanmış karakterler oldugundan
normal LIKE kullanımı ile yapamayız.Çözüm LIKE içeren sorgularımızda ESCAPE
anahtar kelimesini kullanmaktır.

Örneğin içersinde ‘_’ gecen
objeleri bulmak için :
select
object_name from all_objects where object_name like ‘%\_%’ ESCAPE
‘\’

‘_’ ile başlayan objeleri getirmek
için :
select object_name from
all_objects where object_name like ‘\_%’ ESCAPE ‘\’

‘TEM_’ geçen objeleri bumak için
:
select object_name from all_objects
where object_name like ‘%TEM\_%’ ESCAPE ‘\’

Aynı örnek ‘%’ karakteri aramak
içinde geçerlidir

LIKE, ‘_’ , ‘%’ karakterleri ve ESCAPE KISMININ TAMAMI ALINTIDIR KAYNAK http://hakkioktay.wordpress.com/2007/03/15/kisa-kisa-6/

////////////////////////////////////////////////////////////////////////////////////////////

trunc traşlama fonksiyonudur zamanda su şekilde kullanabiliriz.

No comments: