SQL DERS NOTLARI 1

Gönderen Konu: SQL DERS NOTLARI 1  (Okunma sayısı 2364 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı admin

  • Uzman Kullanıcı
  • Logo Uzmanı
  • *****
  • Karma: 98
SQL DERS NOTLARI 1
« : 11.06.2006, 13:43 »
TEK TABLODAN SORGULAMALAR:

SELECT             SEÇ
FROM                 GELİŞ

ÖRNEK: 1) Bütün bilgileri personel tablosundan koşulsuz olarak listele.

SELECT *                       SEÇ *
FROM   personel             GELİŞ  personel

 ÖRNEK:2) Personel tablosundan SEÇ komutuyla istenen sütun adlarını belirt.

SELECT sicil,sosy_g_no,ad,soyad,dog_tar,         SEÇ  sicil,sosy_g_no,ad,soyad,dog_tar,            adres,cins,brüt,böl_no,yön_s_g_n                         adres,cins,brüt,böl_no,yön_s_g_n
FROM  personel;                                                   GELİŞ  personel;

ÖRNEK:3)Personel tablosundan istenen sütün başlıklarını listele.

SELECT sicil,ad,soyad,brüt                                  SEÇ    sicil,ad,soyad,brüt
FROM  personel;                                                   GELİŞ  personel;

DISTINCT           TEKRARSIZ

TANIM:SQL’de tablo  içinde  birbirinin  aynı  datalar  bulunabilir.Aynı satırların listeleme esnasında bir kez yazılması

ÖRNEK: 1)Par _sat dosyasından sat_no’ları tekrarsız olarak listelenecektir.
SELECT DISTINCT sat_no                                SEÇ TEKRARSIZ sat_no
FROM  par_sat;                                                  GELİŞ  par_sat;    

i)TABLO BİLGİLERİNİN SIRALANMIŞ OLARAK LİSTELENMESİ:

ORDER BY               SIRALA
TANIM:Tablodaki sütunlardan ,belirli bir sütuna göre listelemek için SEÇ komutuna ,SIRALA eklenir.

ÖRNEK: 1)Personel dosyasından,sicil,ad,soyad,brüt sütunlarını seç ve brüt(maaşa)göre büyükten küçüğe  sırala.

SELECT  sicil,ad,soyad,brüt                              SEÇ  sicil,ad,soyad,brüt
FROM  personel                                                 GELİŞ  personel  
ORDER BY brüt ASC;                                     SIRALA brüt  B-K;
DESC      Küçükten büyüğe sırala                                      ASC      Büyükten küçüğe sırala

İİ)BİRDEN ÇOK ALANA GÖRE SIRALAMA:

TANIM:Bir tablo içinde ,birden fazla sütundan aynı anda sıralamak için kullanılır.

ÖRNEK 1)Personel dosyasından seçilen sütunlarını aynı anda hem ad,hem de otomatik olarak sıralar.

SELECT sicil,ad,soyad,brüt                              SEÇ sicil,ad,soyad,brüt
FROM personel                                                 GELİŞ  personel
ORDER BY ad,brüt;                                         SIRALA ad,brüt;

ÖRNEK 2)Personel tablosundan seçili sütunları öncelik adda olmak üzere (B-K) adı bozmadan soyadı (K-B) sıralı listeler.

SELECT sicil,ad,soyad,brüt                            SEÇ sicil,ad,soyad,brüt
FROM  personel                                               GELİŞ  personel
ORDER BY ad ASC,soyad DESC,                  SIRALA ad B-K,soyad K-B,
brüt ASC;                                                          brüt B-K;

veya;

SELECT sicil,ad,soyad,brüt                            SEÇ  sicil,ad,soyad,brüt
FROM personel                                                GELİŞ  personel
ORDER BY ad,soyad DESC,brüt;                  SIRALA ad,soyad K-B,brüt;

DESC’li durumda yanına yazıp belirtilir,yazılmazsa ASC direct kabul edilir.

KOŞULA BAĞLI OLARAK LİSTELEME:

WHERE            OLAN

TANIM:Verilen koşulu sağlayanlar listelenir.İki veri birbiriyle karşılaştırılmaktadır. Karşılaştırılan verilerin türü aynı olmalıdır.

SELECT *                                                         SEÇ *
FROM  personel                                               GELİŞ personel
WHERE brüt  > 5000000;                                OLAN brüt  > 5000000;

KARŞILAŞTIRMA OPERATÖRLERİ:

OPERATÖR
 ANLAMI
 
<   ...den daha küçük
 
>  ...den daha büyük
 
=  Eşit
 
<= Küçük veya eşit
 
>= Büyük veya eşit
 
<> Eşit değil
 
!= Eşit değil
 
!< ...den küçük değil
 
!> ...den büyük değil

ÇEŞİTLİ VERİ TİPLERİ İÇİN BASİT SORGULAMALAR:

i)NÜMERİK VERİ TİPLERİ:

ÖRNEK: Maaşı 8000000TL’den fazla olmayan personeli listele.

SELECT *                                                         SEÇ  *
FROM   personel                                              GELİŞ   personel
WHERE   brüt  <= 8000000;                            OLAN  brüt  <= 8000000;

ii)KARAKTER VERİ TİPLERİ (CHAR):

Karakter çift veya tek tırnak ile gösterilir.

ÖRNEK: Adı Ali olmayan personele ait kayıtları listele.

SELECT  *                                                        SEÇ  *
FROM  personel                                               GELİŞ  personel
WHERE  ad <> “Ali”;                                     OLAN ad <> “Ali”;

İİİ)TARİH VERİ TİPİ:

Tarih veri tipleri { } sembolleri içinde yazılır.

ÖRNEK: Hangi personelin doğum tarihi 1960 yılından daha öncedir?

SELECT  *                                                        SEÇ  *
FROM   personel                                              GELİŞ   personel
WHERE  dog_tar <={12/31/59};                      OLAN dog_tar <={12/31/59};

MANTIKSAL (LOJİK) VERİ  TİPİ:

Mantıksal veriler için mümkün olabilen sadece iki değer sözkonusudur.DOĞRU  D(TRUE  T) , YANLIŞ  Y (FALSE F) ile simgelenir.

ÖRNEK: Personel  tablosunda  personelin cinsiyetini belirten cins adlı alan mantıksal(logical)  olarak  tanımlanmıştır.Cinsiyeti erkek olanları D,kadın olanları y ile tanımlarsak erkek olanları listele.

SELECT  *                                                        SEÇ  *
FROM  personel                                               GELİŞ  personel
WHERE cins  = .T.;                                          OLAN  cins =.D.;

BİRDEN  ÇOK KOŞULA DAYALI SORGULAMALAR: (NOT,AND,OR)

TANIM:Mantıksal operatörlerin yardımı ile birden  çok koşulun gerçekleştirmesine bağlı  olarak  ifade edilebilecek (karmaşık yada birleşik koşullu listelemeleri gerçekleştirilmektedir.)  

AND           VE

ÖRNEK:Maaşı 5000000’dan fazla olan ve cinsiyeti erkek olan personelin listelenmesi istenir yani iki koşul verilmektedir ve ikisininde olması istenir.

SELECT  *                                                        SEÇ  *
FROM personel                                                GELİŞ  personel
WHERE  brüt >5000000 AND cins =.T.;        OLAN brüt > 5000000 AND cins =.D.

NOT             DEĞİL
OR                 VEYA

ÖRNEKLER:

i)Doğum tarihi 1960’dan önce olan maaşı 6000000 – 10000000 arasındaki bayan personelin listele.

SELECT  *                                                        SEÇ  *
FROM dog_tar <  {01/01/60} AND                  GELİŞ dog_tar < {01/01/60} VE
brüt > = 6000000 AND brüt < =10000000      brüt > = 6000000 VE brüt < =10000000
AND cins = .F.;                                                VE cins =.Y.;

İİ)Satış bölümüyle muhasebe bölümündekiler kimlerdir?

(Satış bölümünün böl_no’sunun  1 ve muhasebe bölümünün  böl_no’sunun  2 olduğu varsayılmaktadır.)

SELECT  *                                                        SEÇ  *
FROM  personel                                               GELİŞ  personel
WHERE  bol_no =1 OR  bol_no = 2;              OLAN bol_no = 1  VEYA bol_no =2;

İİİ)Bölümü Satış  yada Muhasebe olamayan  1960’dan sonra doğmuş bayan personeli listele.

1.YAZILIM:
SELECT  *                                                        SEÇ  *
FROM  personel                                               GELİŞ  personel
WHERE  NOT (böl_no =1 OR                        OLAN DEĞİL (böl_no =1 VEYA
böl_no =2) AND dog_tar > ={01/01/60}          böl_no =2)VE dog_tar >={01/01/60}
AND cins =.F.;                                                 VE cins=.Y.;
 
2.YAZILIM:

SELECT  *                                                        SEÇ  *
FROM  personel                                               FROM  personel
WHERE  böl_no  <> 1 AND                            OLAN böl_no <> 1 VE
böl_no <> 2 AND dog_tar > ={01/01/60}        böl_no <> 2 AND dog_tar > = {01/01/60}
AND  cins =.F.;                                                VE cins =.Y.;
 
BİR VERİ KÜMESİNDE ARAMA –IN OPERATÖRÜ

IN        İÇİNDE
“IN”  operatörü  DEĞİL(NOT) ile  kullanılılabilir.

ÖRNEK:i) Bölümü 1,2,3 olmayan personel kimlerden oluşmaktadır?

SELECT  *                                                        SEÇ   *
FROM  personel                                               GELİŞ  personel
WHERE  bol_no  NOT IN (1,2,3);                  OLAN böl_no  DEĞİL İÇİNDE (1,2,3);

ÖRNEK:ii) Böl_no’su 1,2 yada 3 olan personeli listele.

SELECT   *                                                       SEÇ   *
FROM  personel                                               GELİŞ  personel
WHERE böl_no = 1  OR  böl_no= 2  OR       OLAN böl_no =1 VEYA böl_no =2 VEYA
böl_no = 3;                                                        böl_no = 3;

Bu örneğin IN ile yapılmış şekli daha kısadır.

SELECT  *                                                        SEÇ  *
FROM   personel                                              GELİŞ  personel
WHERE  NOT  böl_no  IN (1,2,3);                 OLAN DEĞİL böl_no İÇİNDE (1,2,3);

ARALIK SORGULAMA SÖZCÜĞÜ:

BETWEEN           ARASINDA

ÖRNEK:Maaşı 5- 10 milyon arasında olan personel kimlerdir?

SELECT   *                                                       SEÇ  *      
FROM  personel                                               GELİŞ  personel
WHERE  brüt  > =5000000  AND                   OLAN brüt > =5000000  VE
brüt < = 10000000;                                           brüt < = 10000000;

BETWEEN (ARASINDA)   komutu  ile  daha  kısa olacaktır.

SELECT  *                                                        SEÇ  *
FROM  personel                                               GELİŞ  personel
WHERE  brüt  BETWEEN 5000000              OLAN brüt ARASINDA 5000000
AND  10000000;                                               VE 10000000;

KARAKTER TÜRÜ BİLGİ İÇİNDE ARAMA YAPMA –LIKE SÖZCÜĞÜ:

TANIM ÖRNEĞİ: Adres sutunu içerisinde semt bölümüne ait ayrıca bir sutun  olmadığını varsayarak   semt  adı  adres   sutunu  içerisinde  yer alır ve buradan da  LIKE (BULUNAN) komutuyla adres sutunu içerisinde Taksim semtinde oturan personeli listele.

SELECT  *                                                        SEÇ  *
FROM  personel                                               GELİŞ personel
WHERE  adres LIKE  ‘% TAKSİM %’ ;         OLAN adres LIKE ‘% TAKSİM%’ ;

Adres LIKE ‘%TAKSİM%’ ifadesi   adres  içinde  her hangi bir yerde TAKSİM yazan yerde  oturan personeli listeleyecektir.

LIKE sözcüğünü ,alt çizgi (-) sembolü ile birlikte kullanmakta mümkündür.

SELECT  *                                                        SEÇ  *
FROM  personel                                               GELİŞ  personel
WHERE  ad LIKE  ‘Mehmet -----‘;                  OLAN  ad BULUNAN ‘Mehmet ----‘;

Şekildeki komut  ile ad alanı “Mehmet “ ile başlayan  ve ad alanı uzunluğu 10 karakter olan isimlere sahip personeli  listeleyecektir.”Mehmet Ali”,”Mehmet Can”- “Mehmetcik” gibi isimler

listeleyecektir.Anlaşılacağı gibi  - sembolü , tek karakterlik bir bilgiyi  temsil etmektedir.