folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder T-SQL Dilinde Select, Insert, Update, Delete Komutları



T-SQL Dilinde Select, Insert, Update, Delete Komutları

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    WarHead
    WarHead's avatar
    Kayıt Tarihi: 15/Mart/2003
    Erkek
    SQL Dilinde Select, Insert, Update, Delete Komutları Yazdır E-posta
    Yazar Sinan   
    Pazartesi, 30 Mart 2009

     Veri Düzenleme Komutları DML(Data Manuplation Language)

    DML komutları var olan kayıtlar üzerinde işlem yapılmasını sağlar. Veri listeleme , yeni kayıt ekleme , var olan kaydı değiştirme veya silme işlemleri yapmak için kullanılır.

    SELECT ifadesi :  Tablolarda bulunan bilgileri elde etmenin en sık kullanılan biçimidir. Select ifadesi diğer ek ifadeler ile birlikte veriyi filtrelemeyi yada daha anlamlı kılmayı sağlar.

    SELECT [DISTINCT][ALL]  FROM Tablo_Adi
    [WHERE Kosul]
    [GROUP BY Kosul]
    [HAVING Kosul]
    [UNION Kosul]
    [ ORDER BY Alanlar [ASC] [DESC]]

    Sorgu sonucunda tablonun bütün alanlarındaki verilerin elde edilmesi isteniyorsa  * karakteri kullanılmalı. Eğer tabloda belli kolonlardaki bilgiler isteniyorsa, istenilen alanlar aralarına virgül konularak sıralanır.

    SELECET  Alan1,  Alana2,  Alan3  FROM    Tablo_Adi

    Örnek : SQL cümlesinde bütün alanların görüntülenmesi ve sadece istenilen alanların gösterilmesi.

     

    Where (Koşul) İfadesi :  Select cümlelerinde veriyi çeşitli koşullar sonucunda filtrelemek için kullanılır.

    SELECT * FROM Tablo_Adi WHERE Koşul

    Örnek : Personel tablosunda maaşı 1200’den büyük olan personeller.

    SQL’ de Operatörler:

    Mantıksal Operatörler : İki yada daha fazla ifade arasında mantıksal sorgu yapılır. 

    ()      işlemleri gruplandırma ve öncelik belirleme
    AND   VE her iki ifade doğru ise işlem gerçekleşir
    OR     VEYA ifadelerden biri doğru ise işlem gerçekleşir
    NOT   DEĞİL ifadenin yanlış olması durumunda işlem yapılır

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

    <      ..’ den daha küçük
    >      ..’ den daha büyük
    >=    Büyük veya eşit
    <=    Küçük veya eşit
    =      Eşit
    <>    Eşit degil
    !=     Eşit degil
    !<     ..’ den küçük değil
    !>     ..’ den büyük değil

    Örnek : Maaşı 1200 den büyük ve DepartmanId si 1 olmayan ve Adi Feryat olan personelin bilgileri.

    Matematiksel Operatörleri: SQL cümlelerinde matematiksel operatörler normal işlevlerini gerçekleştirirler.

    +   Toplama
    -   Çıkarma
    *   Çarpma
    /    Bölme

    Örnek : Personel tablosundan DepartmanId ’si 2 den farklı olan personellerin id, adı, soyadı, maaşı ve maaşının 25 ile toplamının listelenmesi. 

    IN  (İçinde) Operatörü : Bir koşulun başka bir veri kümesi içinde olup olmaması durumu.

    Örnek: Personel tablosunda PersonleId si 2 ,3 ve ya 5 olan personeller. Burda (2, 3 ,5 ) bir kümesi olarak görebiliriz.

    In ifadesi sabit bir veri kümesini sorguladığı gibi başka bir sql cümlesi sonucu dönen değerler içinde de arama yapabilir. Özellikle iç içe select ifadelerinde bu yapı kullanılır.

    Örnek : Başka bir tablodan sorgu sonucu elde edilin veri kümesi içinde sorgulama. Departmanın kuruluş tarihi 01.01.1999 dan büyük olan departmanlarda bulunan personellerin listesi.

     

    BETWEEN (Arasında) İfadesi :  Koşulun belirtilen iki değer arasında olup olmaması için kullanılır. Between ifadesi  >= ve <= ifadesi yerinde kullanılabilir.

    Örnek : Personle tablosunda maaşları 1000 ve 1300 arasındaki personellerin  adı ve soyad ve maaşlarının gösterilmesi. Bu örnekte AS ifadesi ile Ad ve Soyad alanlarını birleştirip tek olarak gösterdik.

    LIKE (Benzer) İfadesi : Bir veri kümesi içerisinde belirtiğimiz değere benzeyen verilerin olup olmadığını kontrol etmek için kullanılır. Bu ifade genellikle karakter içeren bilgilerde yani char, varchar, binary vb. tipli alanlar için kullanılır.

    %                 0 veya daha fazla karakter
    _                  Sadece tek bir karakter 
    []                 Belirtilen karakterler arasında sadece tek bir karakter
    [^]               Belirtilen karakterler arasında olmayan tek bir karakter

    Örneğin SELECT * FROM  Personel WHERE Adi  +   aşağıdaki like ifadeleri ile kullanılabilir. Adi alanı

    LIKE ‘Al%’           Al ile başlayan tüm isimler
    LIKE ‘%n’            en ile biten tüm isimler
    LIKE ‘%y%’         y karakterlerini içeren tüm isimler
    LIKE ‘____n’        en ile biten tüm 5 karakterli isimler
    LIKE ‘[FH]%’        F veya H ile başlayan tüm isimler
    LIKE ‘[^U]%’       Başharfi U olmayan tüm isimler

    Örnek : Adresi Barbaros içeren personellerin PeronelId leri.

    SQL Fonksiyonları : SQL bulunan standart fonksiyonlar.

    AVG          Verilen alanın aritmetik ortalamasını alır .
    SUM          Verilen alanların toplamını alır.
    MAX          Verilen alanın kayıtlar arasındaki en büyük değerini verir
    MIN           Verilen alanın kayıtlar arasındaki en küçük değerini verir.
    ROUND       Verilen alanın virgülden sonraki değerini yuvarlarlar
    COUNT       Verilen alanın kayıtlar arasında kaç defa yazıldığını bulur. 

    GROUP BY İfadesi : Elde edilen verilerin belli kriterlere göre gruplandırılması. Group by da dikkat edilmesi gereken durum select ifadesinden sonra yazdığımız ve fomksiyonlar dışındaki bütün kolonların group by ifadesinden sonra sıralanması gerekir.

    Örnek : Personel Tablosundan departmana göre ortalama maaş . Ortalaması alınan maaşı ROUND fonksiyonu ile virgülden sonraki iki rakamına göre yuvarladık. Bu örnekte select te PDepartmanId ve Round fonksiyonunu kullandık. Round fon ksiyon olduğu için GROUP BY ifaseinde sonra sadece PDepartmanId yi ekledik.

    HAVING (Sahiplik) İfadesi : Gruplandırılmış verilerin var olan koşula sahip olup olmadı kontrolu yapılır. Bu ifade genellikle sum(), avg, min(), max() , vs. gibi ifadeler ile kullanılır.

    Örnek : PersonelMal taplosunda mal toplamı 40 tan büyük olanlar

    UNION (Birleşim) ifadesi  :Veri kümelerinde birleştirme işlemi yapar. Ancak veri kümelerinde aynı sayıda kolon bulunmalı ve birbirine karşılıklı gelen kolonların veri tipleri ve uzunlukları aynı olmalıdır. Union ALL ifadesi ile de kullanılır. ALL ifadesi ile kullanıldığında birleştime sonucunda çift kayıt oluşursa hepsini getirir. Union yanlız kullanıldığında çift kayıtları göz ardı eder.

    Örnek : Emlak vergisi için bina ve arsa için ayrı ayrı tabloların oluşturalım.Tablo yapısı aşağıdaki gibi olsun.Bu iki tablo arasında birleştime işlemi yapacağız. 2005 yılındaki bina ve arsaların sahiplerId lerine göre raiç bedellerini bulacağız

               

    ORDER BY (Sırala) İfadesi: Sql sorgusu sonucunda elde edilen veriyi verilen kritere göre sıralar. ASC ek ifadesi ile küçükten büyüğe DESC ile de büyükten küçüğe sıralar

    Örnek : PersonelMal Tablosunda PPersonleId si  1 olan personelin mal varlığını küçükten büyüğe ve büyükten küçüğe sıralama

    DISTINCT İfadesi : Sql sorgu sonucunda veri tekrarı oluşabilir.Bu durumlarda veri tekrarını önlemek için  DISTINCT ifadesi kullanılır.

    JOIN (İlişkilendir)İfadesi :  Tablolar arasında mantıksal olarak ilişki kurmayı sağlar.Join ifadesi ek ifadelerler daha kullanışlı hale getirilmiştir

    SELECT Tablo1.*, Tablo2.*  FROM Tablo1 , Tablo2 WHERE Tablo1.Alan = Tablo2.Alan

    Örnek : Personel ve PersonelMal tablolarını birleştirme işlemi yapıldı ve Personel Tablosundan PersonelId, Adi ,Soyadi; PersonelMal Tablosundan da Malın Adını ve Bedelini aldık. Burda dikkat edilmesi gereken önemli bir nokta Personel Tablosunda da Adi isimli bir alan var PersonelMal tablosunda da bu durumda TabloAdi.AlanAdi şeklinde yapılır. Yada tabloya daha kısa isim verilim kısa ismi ile de kullanılabilir.Biz aşağıda Personel’e P PersonelMal ’ da PM adı verdik.

    INNER JOIN İfadesi : T-SQL de var olan bir ifadedir. Tabloların bire bir ilikkilendirilmesini sağlar. Inner joinde join yapılan tabloda ilgili kayıt yok ise boş kayıt geri döner.

    Örnek : Yukardaki örneği inner joinle yapalım; PersonelId si 4 olan personel ait bilgiler gelsin.

    LEFT JOIN İfadesi : Bu ilişki biçimi de inner joindeki gibi sadece T-SQL de bulunmaktadır. Bu ifadede sol taraf değeri NULL yada boş olması durumunda da; sql cümlesinin istediği veri kümesini geri döndürür.

    RIGHT JOIN İfadesi :Right joinde sağ taraf değeri NULL yada boş olması durumunda da sql cümlesinin istediği veri kümesini geri döndürür.

    Örnek :Tablo yapısı aşağıdaki gibi olan tablolardan  left join ve right joinle sql cümlesi yazılacak. Bina tablosundan CaddeId ile Cadde isimlerine ulaşılacak. Ve hangi binanın hangi caddede olduğunu bulunacak. EmlakBina tablosundaki CaddeId alanı boş geçilebilir. Ve Cadde tablosuyla arasında ikincil (foreing key) olmadığı için mantıklı kayıtlarda girilmemiş olabilir.

            

     Şekil - Tablonun yapısı                                          Şekil - Tablodaki kayıtlar                           

    Left joinde sadece 2 kayıtta mantıklı veri olmasına rağmen EmlakBina tablosunda bulunan kayıt sayısı kadar kayıt geri döndü.Right joinde de bu durum sağ tarataki tablo için geçerlidir.Sağ taraftaki yani Cadde tablosundaki kayıt sayısı kadar kayıt geri döndürdü.

    T-SQL CASE İfadesi: Var olan alanlarda bir alanda bir değeri sorgulayacak ve dönecek olan değere göre işlem yapılacaksa case ifadesi kullanılır.

    SELECT Alanlar  CASE Kosul WHEN VarolabilecekDeğer THEN  ELSE OlamayacakDeğer END

    Örnek : Personel Tablosunda çocuk sayısına göre maaşını belli katsayılarla hesaplanması.

    INSERT komutu:  Tabloya veri eklemek için kullanılır.

    INSERT INTO Tablo veya View([Kolon listesi]) VALUES(Değerler)

    Örnek : Tabloda bulunun bütün kolonların teker teker yazılması ve değerlerinin atanması.

    Örnek : İkinci insert ifadesi ise tablodaki bütün alanlara kayıt yapılacağı için kolon isimlerini yazmaya gerek kalmıyor. Ama dikkat edilmesi gereken durum atanacak değerlerin doğru sırada yazılması.

    INSERT INTO Departman VALUES (3, ’Genel Müdürlük’, ’01.01.2000’)

    Örnek : Başka bir tablodan select ifadesi ile bilgi alıp tablomuza ekleme. BinaId si 5 olan EmlakBina tablosundaki bilgilerin bir kısmı EmlakArsa tablosuna eklenmesi .

    INSERT INTO EmlakArsa(ArsaId, SahipId, Ada, Pafta, Parsel, IslemYili, RaicBedel)  SELECT BinaId, SahipSicil, Ada, Pafta, Parsel, IslemYili, RaicBedel FROM EmlakBina WHERE BinaId = 5

    UPDATE komutu: Tablo veya viewde bulunan kayıt yada kayıtların değiştirilmesi için kullanılır. Değiştirilmesi istenen kolonların teker teker yazılıp değerlerin atanması gerekmekte.

    UPDATE TabloAdi veya ViewAdi SET (Kolonlar = Değerleri ,...)  [WHERE Kosul ] 

    Örnek :Departman tablosunda DepartmanId 4 olan departmanın bütün alanlarının değiştirilmesi.

    UPDATE Departman SET DepartmanId = 5,DAdi = ’Halkla İlişkiler’,  KurulusTarihi=’01.01.2001’  WHERE  DepartmanId = 4

    Örnek : EmlakArsa tablosunda işlem yılı 2005 olan kayıtlarda Raic bedeli 0.02 oranında artılılması.

    UPDATE EmlakArsa SET RaicBedel = RaicBedel + RaicBedel * 0.02  WHERE IslemYili = 2005

    Örnek :Koşulsuz update işlemi. EmlakArsa tablosundaki bütün ArsaId değerlerinin 1 artırılması.

    UPDATE EmlakArsa SET ArsaId = ArsaId + 1

    Delete Komutu:  Tablo veya viewde bulunan kayıt yada kayıtların silinmesi amacı ile kullanılır.

    DELETE  FROM TabloAdi [WHERE Koşul ]

    Örnek : Cadde tablosundaki bütün kayıtların silinmesi.

    DELETE FROM Cadde

    DELETE FROM EmlakBina WHERE BinaId = 1

    Örnek :EmlakBina tablosunda BinaId si 1 olan kaydın silinmesi.burda where koşulu daha kompleks de yazılabilir.

     

     

    INSERT INTO EmlakArsa(ArsaId, SahipId, Ada, Pafta, Parsel, IslemYili, RaicBedel) VALUES (9, 2,’150-52’,’45821-hb’,’15’, 2005, 2000)

    Not: Alıntı

    Emekli
Toplam Hit: 3934 Toplam Mesaj: 1