Merhabalar Bu yazımda temel sql komutlarından başlayarak sql de sıklıkla kullanılan çoğu komut hakkında kısa ve açıklayıcı bilgilere değineceğim , uzun bir yazı olacak kısa kısa ama fazla bilgiler olan bir not alma yazısı gibi olacak , faydalı olması dileğiyle .

SQL SELECT 

Veri tabanındaki tablolardan verileri okumaya yarar .

SELECT FROM tablo_adi  – Yıldız (*) ile tablodaki tüm sütunları görüntüleriz.

1

Sadece belirli sütunları listelemek için istenen sütunların adları yazılır.

 

2

SQL DISTINCT 

DISTINCT ifadesi tablodaki belirtilen alanda bulunan kayıtlardan birer örnek alır.  Çiftleyen satır varsa sadece 1 tanesini ekrana yazdırır.

 

SQL WHERE 

Sql cümlemizde şart belirlememize yarar Örn :

Email i ‘salihseker35@gmail.com olanları listele .

3

 

SQL AND ve OR

AND operatörü birinci durumla beraber ikinci durumunda olduğu zaman kullanılır. OR operatörü ise birinci durum veya ikinci durumun gerçekleşmesi durumunda kullanılır . (AND = VE , OR = VEYA)

Email = ‘salihseker35@gmail.com’ ve OgrenciNo = 11111 olan listeyi getirir.

4

 

Email = ‘salihseker35@gmail.com’ VEYA OgrenciNo = 33333 olan listeyi getirir.

5

SQL ORDER BY 

ORDER BY   ifadesi kayıtları belirtilen alanda büyükten küçüğe veya küçükten büyüğe göre sıralar. ASC (ascending) parametresi ile küçükten büyüğe, DESC (descending) parametresi ile büyükten küçüğe göre sıralar.

6

7

SQL INSERT INTO 

Birinci yöntem: Bu yöntemde direk tablo adı belirterek sadece değerleri yazmak surtiyle kayıt ekleyebiliriz. Ancak burada dikkat edeceğimiz nokta eklenecek değer tablomuzdaki alan sırasına göre olmalıdır

INSERT INTO [tablo adı](alan adları) VALUES (veriler)

8

Ogrenci İd si otomatik artan olduğu için insert ederken ekleyemeyiz.

İkinci yöntem: Bu yöntemde ise eklenecek alanları ve değerleri kendimiz belirtiriz. Burada dikkat edilmesi gereken şey; yazdığımız alan adının sırasına göre değerleri eklememiz olacaktır , insert işlemlerinde tavsiye edilen şlem buduru , ileride tablolara eklenecek yeni bir alan olursa bu şekilde kullanılan insertlerde problem yaşamazsınız.

Burada göreceğiniz gibi tabloya ekleme işleminde insert komutunda verdiğim sıra ile değerlerin eklemesini yaptım.

SQL INSERT INTO SELECT KULLANIMI

Bu yöntem ile tek tek insert eklemek yerine bir tabloya select çekerek birden fazla satırı tek seferde insert edeceğiz , select ten gelen tabloyu insert edeceğiz.

Örnek için :  Yeni_Ogrenciler adında bir tablo oluşturdum , Ogrenciler tablomdan tek farkı Kayit_Tarihi adında yeni bir sütunum var , Ogrenciler tablosundaki verilerin tamamını  Yeni_Ogrenciler Tablosuna tek seferde insert edeceğim , kayıt tarihi bilgisinide GETDATE() fonksyonu ile şu anki tarihi eklemesini sağlayacağım.

Öncelik olarak ekleme yapacağım select ifadesini yazıyorum.

9

 

10

Select sorgumuzdan gelen tablomuzu toplu olarak insert ettik

 SQL UPDATE

Güncelleme işlemi içiin update komutunu kullanıyoruz.

11

SQL DELETE

Tablodan satır silmek için Delete komutu kullanılır.

TRUNCATE TABLE Kullanım Biçimi
Eğer tablomuzu değil de sadece içindeki kayıtları silmek istiyorsak yani tablomuzun içini boşaltmak istiyorsak aşağıdaki kodu kullanabiliriz:

SQL SELECT TOP 

SELECT TOP ile belirtilen kadar kayıt seçilir.

 

12

YÜZDE OLARAK

13

 

 SQL LIKE

Where koşulu ile birlikte kullanılan bir koşul ifadesidir , ‘%’ yüzde işareti ile birlikte kullanılır .

Örneklerle açıklayacak olursak :

SQL IN Kullanımı

IN operatörü belirtilen tek bir alanda birden fazla değeri aramak için kullanılır.

SQL BETWEEN Kullanımı

Between operatörü ile bir alanda belirtilen aralıktaki değerleri aramak için kullanılır.

Bu kod ile Sehir alanındaki kayıtlardan A ile K harfi arasındaki harflerden herhangi bir harf ile başlamayan kayıtlar seçilmektedir. NOT kelimesi yapılan işlemin olumsuz yani şartlara uymayan halini işler.

SQL AS Alias Kullanımı

AS ifedesi ile uzun ve kullanımı zor olan tablo veya alan adlarına geçici olarak kısa isimler vererek bunları kodlamalarımızda kullanabiliriz

Köşeli PARANTEZ [ ]

Verilecek olan geçici ad eğer boşluk içeriyorsa köşeli parantez içinde yazılır. Tablodaki alan adlarında Türkçe karakter kullanımına izin verilmemektedir. Bu tip durumlarda AS ifadesi ile geçici bir isim verip yazdığımız uygulamada kullanabiliriz.

Tabloların ve verilerin arasına As koymadan sadece boşluk bıraktığımız dada AS Gibi çalışır.

SQL INNER JOIN 

İki adet tablomuzdaki kayıtları belli bir kritere göre birleştirmek için INNER JOIN komutu kullanılır.

NOT: INNER JOIN yerine sadece JOIN kullanılabilir.

14

 

SQL LEFT JOIN

Burada asıl olan birinci tablodaki kayıtlardır. İkinci tablodan sadece birinci tabloda olan kayıtlar alınır. İkinci tabloda olupta birinci tabloda olmayan alanların değeri boş (NULL) olarak gelecektir.

15

SQL RIGHT JOIN

16

SQL FULL JOIN

FULL JOIN ile iki adet tablomuzdaki kayıtları belli bir kritere göre birleştirebiliriz.

17

SQL UNION

UNION ile iki adet tablomuzdaki seçeceğimiz alanları birleştirerek tek bir tablo alanıymış gibi kullanabiliriz.

 

İki tablodaki şehirleri birleştirerek tek tabloada gösterir çift kayıtlar tekrarlanmaz

Eğer tekrarlayan kayıtların alınması isteniyorsa UNION ALL kullanılmalıdır.

Dikkat edilmesi gerekenler , birleştirilen alanların sütun sayısı ve data_tipleri aynı olmalıdır.

SQL SELECT INTO 

Tablo kopyalayıp yeni bir tablo oluşturur

SELECT INTO ifadesi ile bir tablodaki verileri alıp yeni bir tablo oluşturup içine kopyalayabiliriz. Sonuçta veritabanında yeni bir tablo oluşturulacağı için veritabanı üzerinde işlem yapan kullanıcının yeni bir tablo oluşturma yetkisine sahip olması gerekmektedir.

SELECT alan_ad(lari) INTO yeni_tablo_adi [IN hedef_database] FROM tablo1

NOT 1: Eğer yeni oluşturacağımız tablo aynı veritabanı içindeyse [IN hedef_database] ifadesi kullanılmaz. Eğer farklı bir veritabanı içine kopyasını alacaksak o zaman IN operatörü ile hedef veritabanını belirtmemiz gerekir.

NOT 2: Select Into yapısı ile yeni oluşturulacak olan tabloya, mevcut tablomuzdaki alanlar veri tipleri ve içindeki verilerle birlikte aynen kopyalanır. Eğer alan adını mevcut isminden farklı bir isimle oluşturmak istersek o zaman AS yapısı kullanabiliriz.

NOT 3: Eğer tablo içindeki verileri hariç tutup, sadece alan adları ve veri tiplerini almak istersek WHERE 1=0 eklememiz gerekir.

CREATE DATABASE 

CREATE DATABASE veritabani_adi

CREATE TABLE

CREATE TABLE

(

alan_adi1 veri_tipi(boyut),

alan_adi2 veri_tipi(boyut),

alan_adi3 veri_tipi(boyut),

….

)

Mssql de tablonun create scriptini otomatik oluşturmak için tablo üzerine sağ tıklayıp Script Table as –> Create To –> New query diyerek creat scripti otomatik alınabilir.

18

 

CAST ve CONVERT

veri tipleri dönüşümünde SQL’de kullanabileceğimiz iki deyim var, CAST ve CONVERT. Kullanımları oldukça basit :

 

Person.Person tablosunda BusinessEntityID alanını Nvarchar tipinde CAST ettim ve bunu sırası ile -, FirstName, boşluk ve LastName ile toplayıp Kimlik Bilgileri kolonu altında listeledim.

Genelde tercih edilen CAST’tır çünkü ANSI SQL-99 standardı ile uyumludur.

GO KOMUTU

GO komutu öncesinde yazilmis olan tüm sql ifadelerini veya bir önceki GO ifadesine kadar olan tüm sql ifadelerini tek bir execution plan dahilinde SQL Servera gönderir. SQL Server GO komutunu scriptiservera göndermek için bir isaret olarak algilar.

 GO komutundan sonra bir sayi belirterek birden fazla ayni sorguyu çalistirabiliriz.

 

Dikkat edilmesi gereken noktalar:

  • GO komutu diger T-SQL komutlari ile ayni asatirdakullanilamaz
  • GO komutundan önce tanimlanan bir degisken GO komutundan sonra kullanilamaz. Çünkü daha önceki kod yigininin sona erdigini belirtmektedir.
  • Kodun sonunda GO kullanilmadiği veya tüm sorgu bitmediği sürece komutlar sunucuya gönderilmez.

SQL DEĞİŞKEN TANIMLAMA

BEGIN…END BLOK KULLANIMI :

BEGIN…END blokları: BEGIN ve END arasında yazılan SQL ifadelerinin bir bütün olarak algılanmasını sağlar. BEGIN…END arasına yazılan SQL kodlarını bir blok olarak çalıştırır.

IF…ELSE KULLANIMI :

IF…ELSE blokları: Eğer o anki durum için ilk alternatif doğruysa SQL Server ilk ifadeyi çalıştırır, ikinci ifade doğruysa ikinci ifade çalıştırır.

EXISTS ve NOT EXISTS ifadeleride alt sorgudan getirilen değerlerin içerisinde bir değerin olması veya olmaması durumunda işlem yapılmasını sağlar.

Kodun açıkllaması şu şekildedir , IF EXISTS ten sonreki parantezin içinde yazılan select sorgusundan eğer sonuç döner ise işlemi yap dönmez ise ELSE blogundaki işlemi yap demektir.

SELECT TOP 1 dememizin sebebi birden fazla kayıt varsa sadece 1 tanesini getirsin maksat sorgunun daha hızlı çalışmasını sağlamak.

STORED PROCEDURE KULLANIMI

Store Procedure ler kısacası sql de birden fazla işlemin tanımlandığı ve yazılma amacına göre geriye değer döndüren veya döndürmeyen SQL objeleridir . SP ler giriş parametresi alabilir veya almayabilir , eğer giriş parametrelerine ilk değer ataması yapılmaz ise SP kullanıldığında giriş değerlerine değer atanması zorunlu olacaktır , yoksa hata alınır.

SP lerin içerisinde İNSERT , UPDATE ,  SELECT işlermler yapılabilir , farklı SP ler çalıştırılabilir , bu işlemlerin hepsi veya 1 tanesini yapmak mümkündür geriye birden fazla Dataset döndürebilir (birden fazla tablo döndürebilir).

SP oluşturmak için CREATE PROCEDURE prosedür_adı , düzenlemek için ALTER PROCEDURE prosedür_adı , silmek için DROP PROCEDURE prosedür_adı şeklinde kullanılır.

 

Örnek bir SP tanımı yapalım :

 

Yukarıda yazılı sp de Ogrenciler tablosuna insert etme işlemi yapan bir SP tanımladık . burada göreceğiniz gibi ADI , SOYADI ve OGRENCI_NO  parametreleri ne ilk değer ataması yapılmadığı için OGRENCI_EKLE SP sini kullanmak istediğimizde bu alanlar kesinlikle gönderilmelidir , EMAIL ve SEHIR parametreleri ilk değer atamaları ‘’ olarak yapılmıştır bu alanlara değer göndermez isek insert işleminde boşluk olarak insert edilecektir.

Tanımladığımız Store procedure ü kullanmak için EXEC komutu ile parametreler gönderilir.

Örn :

 

1

 

VİEW KULLANIMI

View‘ler sorguları basitleştirmek, erişim izinlerini düzenlemek, farklı sunuculardaki eşdeğer verileri karşılaştırmak veya bazı durumlarda sorgu süresini kısaltmak için kullanılan, gerçekte olmayan Select ifadeleri ile tanımlanmış sanal tablolardır. İçerisinde veri bulunmaz. Sadece tabloların görünümleridir. Kullanıcıların bazı kritik tabloların sadece belli sütunlarını veya satırlarını göstermesi gerektiği durumlarda kullanılabilir.

CREATE VIEW view_adi

AS

SELECT sütun_adları  FROM base _tablo_adı

2

VİEW LARDA NE YAPILMAZ

Yukarıda söylediğim gibi aslında viewlerin yapamadıkları daha fazla.

  • Order  By kullanamazsınız.
  • İsimsiz kolon bırakamazsınız. Örneğin Sumfonsiyonunu kullanacaksınız As ile kesin bir isim vermek zorundasınız.
  • Birden fazla sorgu yazamazsınız yani sadece bir select ile başlayan bir cümle yapabilirsiniz.
  • T-SQL kullanamazsınız
  • Insert, Update veya Delete kullanamazsınız
  • Herhangi bir parametre yollayamazsınız.

FUNCTİON KULLANIMI

Fonksyonlar Sql işlemlerimiz kolaylaştırmak için ve sürekli olarak yapılan işlemleri tekrar tekrar kod yazmamak için kullanılır . Örnek olarak toplama yapan bir fuction oluşturalım , iki adet sayı giriş parametresi olarak tanımlayacağız ve toplamını sonuç olarak vereceğiz.

Örn :

SONUÇ :

3

Tablo sütunlarını Düzenleme , Değiştirme :

SQL CURSOR KULLANIMI

 

Cursor’lar bir veri grubu (tablo) üzerinde satır satır işlem yapabilmeyi sağlar . birnevi for döngüsü gibi çalışır , belirtilen select sorgusundan gelen verileri satır satır döndürür ve cursor içinde tanımlanan işlemi yapar . satır satır işlem yapıldığı için yapılan işlemlerde yavaşlığa neden olabilir bu nedenle nerede ve ne zaman kullanılacağına dikkat edilmelidir.

 

Örnek bir cursor tanımlayalım :

Yapacağımız işlemler :

  1. Cursor için kullanacağımız paramatreleri ve data tiplerini tanımlayacağız (@AD_SOYAD_C, @OGRENCI_NO_C v.s.)
  2. Cursorde işlem yapacağımız verileri select sorgusu ile getiriyoruz ve cursur a giriş yapılacak sütunlar belirtiliyor.
  3. Cursor açılır ve yapılıcak işlemler tanımlanır.

Cursor kapatılır ve DEALLOCATE ile sistemeden temizlernir.

 

 

Sonuç :

Tanımladığımız cursorda işlem olarak gelen veriyi print ile yazdırdık , bu alanda gelen veriler ile farklı işlemler yaptırabiliriz. UPDATE ,INSERT ,SELECT v.s. işlemler yapılabilir.

 

Evet , bu yazımızında sonuna geldik , yazının başında da bahsettiğim gibi not , hatırlatma olarak   kullanılabilecek bir yazı oldu , faydalı olması dileğiyle 🙂

Herkese Kolay Gelsin. — Salih ŞEKER —

Print Friendly, PDF & Email
Bu alana reklam verebilirsiniz!