SQL etiketine sahip kayıtlar gösteriliyor.
SQL etiketine sahip kayıtlar gösteriliyor.

SQL'de LIKE ve JOKER Karakterlerin Kullanımı

  • LIKE Belirttiğiniz şeye benzeyenleri seçer. 
  • Sütundaki değerlerin, joker karakterler ile bir arama koşulu ile karşılaştırılmasını sağlar.      
  • Belirli aralıklardaki belli harflerle başlayan veya biten değerler için joker karakterler kullanılır.
  • Like filitreleme sırasında kullanılırken sadece metin alanlarında kullanılabilmektedir. Sayısal ve tarih değerindeki alanların filitrelenmesinde kullanılamaz.
  • Ayrıca yine Like komutundan sonra gelen filtre değeri ( ' ) tek tırnak içerisinde yazılması gerekmektedir.
NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu

Örnek Sorgu 1 : SELECT ProductName FROM Products WHERE ProductName LIKE 'R%'
('Products' (Ürünler) tablosunda 'R' harfi ile başlayan ürünlerin listesini alalım.)

Örnek Sorgu 2 : SELECT ProductName FROM Products WHERE ProductName LIKE '%cha%'
('Products' (Ürünler) tablosunda içinde 'cha' geçen ürün isimlerinin listesini alalım.)


Örnek Sorgu 3 : SELECT ProductName FROM Products WHERE ProductName LIKE '____ost'
('Products' (Ürünler) tablosunda 7 harfli bir ürün adı var, son üç harfi 'ost'. Bu ürünü bulalım.)


Örnek Arama Koşulları : 

SQL'de Karşılaştırma Operatörlerinin Kullanımı

  • SQL kriterlerle sorgular yapmamıza izin verir.
  • SQL içinde verileri çeşitli açılardan karşılaştırmak için karşılaştırma operatörleri kullanılmaktadır.  
  • Karşılaştırma operatörlerinde karşılaştırdığımız veri tiplerine dikkat etmemiz gerekmektedir.     
  • Karakter veri türü ile ancak karakter türünde başka bir veri; bir sayısal veri ile ancak sayısal olan başka bir veri karşılaştırılabilir.
  • Karşılaştırma ifadesinde karşılaştırılan verilerin türü aynı olmalıdır.

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu

Örnek Sorgu 1 : SELECT * FROM Products WHERE UnitPrice =15
('Products' (Ürünler) tablosunda UnitPrice (Birim Fiyatı ) '15' olan ürünler



Örnek Sorgu 2 : SELECT * FROM Products WHERE UnitPrice < >15
('Products' (Ürünler) tablosunda UnitPrice (Birim Fiyatı ) '15' olmayan diğer bütün ürünler



Örnek Sorgu 3 : SELECT ProductName,UnitPrice FROM Products WHERE UnitPrice>60
('Products' (Ürünler) tablosunda UnitPrice (Birim Fiyatı ) '60''dan büyük olan ürünler


WHERE Komutunun Kullanımı

WHERE :  Görüntülemek istediğimiz verileri belirli bir kritere göre seçebilmemizi sağlar. Bir koşulu belirterek sadece o koşula uyan kayıtların seçilmesini sağlar. WHERE kullanımı zorunlu olmamakla birlikte koşullu veri seçmek istediğimizde FROM ifadesinden sonra eklenir.

WHERE ile birlikte kullanılan Operatörler




 
Kullanımı :  
SELECT <sütun adı>
FROM <tablo adı>
WHERE <koşullar>





NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu

Örnek Sorgu 1 : SELECT * FROM Orders WHERE ShipName ='Island Trading'
('Orders' tablosundaki ShipName değeri 'Island Trading' olan bütün veriler)


Örnek Sorgu 2 : SELECT ProductName, UnitPrice FROM Products WHERE UnitPrice >= 40
('Products' tablosundaki fiyatı 40 liradan büyük ve eşit olan veriler)


Örnek Sorgu 3 : SELECT ProductName, UnitPrice FROM Products WHERE UnitPrice BETWEEN 17 and 20
('Products' tablosundaki fiyatı 17 ve 20 arasında değişen veriler)

SELECT Komutunun Kullanımı

SELECT :  En sık kullanılan komutlardan birisidir. Veri tabanından bir alan seçmemizi sağlar. Seçilen alanı bir sonuç tablosunda saklar. Genellikle bir ya da daha çok tablonun bütün alanları ya da belli alanları için SELECT komutu yazılır. 

Kullanımı :  SELECT <sütun adı> FROM <tablo adı>

NOT : Örnek sorgulamalarda Northwind Database'i kullanacağım. bk: Nortwind Database Kurulumu

SELECT ile Tablodaki Bütün Sütunları Seçmek
Bir tablodaki tüm alanları görüntülemek için tek tek bütün sütun adlarını belirtmekten daha kolay bir yöntem vardır. SELECT ifadesinden sonra "*" işaretini yazdığınızda SQL bunu ‘tablodaki tüm sütunlar’ olarak yorumlayacaktır. 

SQL Server'ımızda 'New Query' (Yeni Sorgu) diyerek boş bir sorgu sayfası açalım.

Sorgumuz: SELECT * FROM Region 
('Region' tablosundaki bütün verileri göster diyoruz.Sonuçları Results Tablosunda görebiliriz.)  


SELECT ile Tablodaki Belirli Sütunların Görüntülenmesi   
Sorgulamalarımızda çoğu zaman bir tablodaki tüm veriler yerine sadece bir kısmına ihtiyaç duyarız. Bu durumlarda sorgulamada "*"  işareti ihtiyacımızı karşılamayacaktır. Bu nedenle "*" işareti yerine ihtiyacımız olan sütun isimlerini SELECT ifadesinin ardından yazarak gerekli verilerin görüntülenmesini sağlayabiliriz. 

Sorgumuz: SELECT RegionDescription FROM Region
('Region' tablomuzdaki 'RegionDescription' sütununu seçip görüntülenmesini sağlıyoruz.











SQL DML, DDL ve DCL Komutları

SQL DML (Data Manipulation Language) Veri İşleme Dili 

Veri girmek, değiştirmek, silmek ve verileri almak için kullanılan DML komutlarının tümü olarak tanımlanır. Kısaca veritabanında bilgi üzerinde çalışmayı sağlar. Bilgiyi çağırma, bilgiye yeni bir şeyler ekleme, bilgiden bir şeyler silme, bilgiyi güncelleştirme işlemlerini yapar. 

Temel dört komutu vardır:
  • SELECT : Veritabanındaki nesneden alan çağırmayı ve gereken bilgiyi görebilmeyi sağlar.
  • UPDATE : Nesnede bilgi güncellemeyi sağlar.
  • INSERT : Nesneye alan eklemeyi sağlar.
  • DELETE : Nesneden alan silmeyi sağlar.
SQL DDL (Data Definition Language) Veri Tanımlama Dili

Verilerin tutulduğu nesneler olan tabloların yaratılmasını, silinmesini ve bazı temel özelliklerinin düzenlenmesini sağlar. 

En yaygın kullanılan DDL komutları şunlardır: 
  • CREATE TABLE : Veritabanı üzerinde bir tablo yaratmak için kullanılır.
  • ALTER TABLE : Tabloda değişiklik yapmak, yeni bir sütun eklemek, sütunun tipini veya uzunluğunu değiştirmek gibi yapısal değişiklikler yapılması için kullanılır.
  • DROP TABLE :  Tabloyu fiziksel olarak siler. (verilerle birlikte)
  • TRUNCATE TABLE : Tablodaki verileri siler fakat tablo yapısı kalır.
  • CREATE INDEX : Index oluşturmak için, tablonun sütun adı üzerinde indeks oluşturur.
  • CREATE VIEW : Görüntü oluşturmak için kullanılır.
  • DROP VIEW : Görüntüyü siler.

SQL DCL (Data Control Language) Veri Kontrol Dili 

Veri Kontrol Dili bir veritabanı kullanıcısı veya rolü ile ilgili izinlerin düzenlenmesini sağlar. DCL komutlarını kullanabilmek için SQL Server'da varsayılan değer (default) olarak yetki sahibi olan gruplar: sysadmin , dbcreator , db_owner , db_securityadmin 'dir. Sunucuya dışarıdan bir erişim sağlamak için bir giriş (login) oluşturulmalıdır.

Temel DCL komutları şunlardır:
  • GRANT  : Veritabanı kullanıcısına, veri tabanı rolüne veya uygulama rolüne izinler vermek için kullanılan komuttur.
  • DENY : Kullanıcıların haklarını kısıtlayan komuttur.
  • REVOKE : Daha önce yapılan tüm kısıtlama ve izinleri iptal eden komuttur. Bir nesneyi oluşturan kullanıcının REVOKE ile nesne üzerindeki yetkilendirme ve kullanma hakkı yok edilemez. REVOKE komutunu, sys_admin rolüne veya db_owner, db_securityadmin sabit veri tabanı rollerine sahip kullanıcılar ve nesne için dbo olan kullanıcı çalıştırabilir.

Command Prompt İle SQL Sorguları Çalıştırma

Command Prompt (Komut İstemcisi) ile Microsoft SQL Server'dan sorgulama nasıl ?

Öncelikle klasik başlat / çalıştır'a cmd yazarak yada  Accessories (Donatılar) yoluyla komut istemcisini açıyoruz. Komut satırında SqlCmd yazarak SQL sorgumuzu yazacağımız işlem satırına geçiyoruz.


Örnek sorgulamada bir önceki makalemde kurulumunu yaptığımız Northwind Database'i kullanacağım.
bk: Nortwind Database Kurulumu

İlk olarak Use Northwind komutuyla işlem yapacağımız database seçimini yapıyoruz.


Her işlem satırından sonra SQL Server Management Studio da Execute karşılığı olan Go komutuyla işlemi gerçekleştiriyoruz.

Örnek: Northwind Veritabanımızda kaç adet müşteri kayıtlı ?
SELECT  COUNT(*) AS 'MÜŞTERİ SAYISI' FROM Customers



SQL Server 2012 Northwind Database Yükleme

Nortwind Database SQL öğrenenlerin kendini geliştirebilmek adına sorgulama yapabileceği hazır bir veritabanıdır. Yeni öğrenenlerin dışında kendini geliştirmek isteyenler ya da kritik sorguları denemek amacıyla da bu veritabanını kullanabilirsiniz. Bu yazımda Northwind veritabanını SQL SERVER'ımıza nasıl yükleyeceğimizi anlatacağım.  

SQL Server'a Northwind örnek veritabanını yüklemek : 

Microsoft Download Center üzerinden Northwind ve Pubs Örnek Veritabanları dosyasını bilgisayarınıza indirmek için tıklayınız. 





Download butonuna tıklayarak yükleyin ve yükleyiciyi çalıştırın. Yükleyici, bilgisayarınızın kök klasörüne SQL Server 2000 Sample Databases adlı bir klasör ekler. (Örneğin: C:\SQL Server 2000 Örnek Veritabanları). 

Kurulum sonras bilgisayarımızın kök klasöründe oluşacak SQL Server 2000 Sample Databases içeriği resimdeki gibi olacaktır.

Kurulum sonrası C:SQL Server 2000 Sample Databases dizininde yüklenen örnek databaseleri göreceksiniz. Şimdi SQL Management Server'ı açalım.  Object Explore menüsünde yer alan Databases sekmesine sağ tıklayıp Attach sekmesine tıklıyoruz;


Sonrasında açılan Attach Databases menüsünden ADD butonuna tıklıyoruz; Açılan Pencerede database'in yolunu buluyoruz. Yani C:SQL Server 2000 Sample Databases bu dizin. Buranın içerisinden NORTWIND.MDF 'i seçiyoruz.

SQL Server 2012 Kurulumu


Bu makalemde SQL Server 2012 kurulumunu ele alacağız. Bunun için öncelikle tamamen legal olarak sunulan linkten SQL Server 2012′yi download ediyoruz. İşletim Sisteminize bağlı olarak x86 ya da x64 bit olanı indirebilirsiniz. 


Download edilecek dosya .iso uzantılı olacaktır. .iso uzantılı dosyayı dilerseniz bir dvd medyaya yazdırabilir, winrar ile açabilir yada sanal bir sürücü üzerinden kullanabilirsiniz. Daha sonra setup.exe üzerinde çift tıklayarak SQL Server 2012 kurulumunu başlatabilirsiniz.
 

Biz yeni bir kurulum yapacağımız için “New SQL Server stand-alone installation or add features to an existing installation” seçeneğine tıklayalım. Diğer seçenekler, cluster yapı oluşturmak, cluster yapıya yeni bir birim eklemek veya daha eski bir versiyondan SQL Server 2012′e yükseltme yapmak için kullanılabilir.


Bu esnada SQL Server kurulum işlemi için ayarlar yapacaktır. Bekleyiniz…Daha sonraki pencerede kurulum ön taraması sonucu detaylı bilgileri alırız. Herhangi bir adımda hata alınırsa “Failed”, yada uyarılar için “Warning” yazacaktır. İlgili uyarının üzerine tıklandığında detayları görülebilir. Düzeltebileceğimiz bir durum söz konusu ise düzelterek kurulumu devam edebiliriz. “Failed” bir durum varsa kuruluma devam edilemez. “Warning” durumlarında devam edebiliriz.Tüm gereksinimler karşılanmışsa eğer OK basıp bir sonraki adıma geçebiliriz.

SQL (Structured Query Language)

SQL (Structured Query Language)


Veritabanı (Database) 
Biribirinden farklı tipteki verileri düzenli bir şekilde saklayarak, verilere hızlı ve güvenli bir şekilde erişim imkanı sağlayan düzenli bilgiler topluluğuna veritabanı (database) adı verilir. Veritabanı veriler arasında ilişkiler kurmaya ve verileri muhafaza etmeye olanak sağlar. Böylece veritabanı erişilebilir, yönetilebilir, güncellenebilir ve taşınabilir.

Yazılım uygulamalarında ister Windows tabanlı ister Linux/Unix tabanlı veya web tabanlı olsun kullanılan tüm veriler veritabanında saklanırlar. Veriler bu depoda belirli bir hiyerarşi ve indexleme formatında tutulurlar.

Kısaca veritabanı ile verilerimize hükmedebiliriz…

SQL (Structured Query Language - Yapısal Sorgulama Dili)

Veritabanlarındaki veriler sıradan dosyalar gibi değildirler. Belirli bir hiyerarşik yapıya göre saklanırlar, bu nedenle bu verilere yapısal verile denir.
SQL :
  • Yapısal Sorgulama Dili'dir.
  • SQL bir programlama dili değildir, sorgulama dilidir.
  • Satırlarca kodun yapacağı işlemi SQL ile tek bir sorguda yapabilirsiniz.
  • SQL ile veri tabanına yeni tablolar, yeni kayıtlar ekleyip silinebilir ve var olan alanlar üzerinde düzenlemeler ve sorgulamalar yapılabilir.
  • SQL bir standarttır.
Veritabanı Yönetim Sistemleri (VTYS)

DataBase Management Systems (DBMS) olarak bilinen programlardır. Veritabanındaki verilere direk ulaşamayız, bu nedenle verilere hızlı, güvenli ve etkili bir şekilde erişilmesi, verilerin saklanması ve yedeklenmesi için SQL kuralları çerçevesinde işlemler yapılır. İşte bu kurallar ve kullanıcı etkileşimini sağlayan sistem DBMS'dir. Veritabanındaki verilere ulaşıp, veriler üzerinde işlem yapmamızı sağlayan araçlara VTYS denir. VTYS veritabanı ile kullanıcı arasında kurulan bir köprüye benzetebiliriz…

Örneğin SQL Server 2008 ve ORACLE  bir database değil birer Veritabanı Yönetim Sistemidirler.

Veritabanı Yönetim Sistemleri ile Neler Yapabiliriz?
  • Veritabanı oluşturabilir.
  • Veritabanına yeni alanlar ekleyebilir.
  • Verileri Okuyabilir.
  • Verileri Silebilir.
  • Verileri arası ilişkiler sağlayabilir.
  • Verileri güncelleyebilir.
  • Verilere erişim hakkı tanıyabilir veya kısıtlamalar eklenebilir.
  • Verileri yedekleyebilir.
  • Yedeklenen veriler gerektiğinde geri yüklenebilir.
Kısacası Veritabanı Yönetim Sistemleri veriler üzerinde yapılabilecek tüm işlemleri yapmamızı sağlayan sistemlerdir.

Popüler Veritabanları : Oracle, Microsoft SQL Server, Microsoft Access, MySQL, IBM DB2, Informix, Interbase, Postgre SQL…vb.

İlişkisel Veritabanı Kavramı 

İlişkisel veritabanı günümüzde en çok kullanılan veritabanı yönetim biçimidir. Veriler arasında ilişkilendirme yapılmasına olanak tanıyan yapılara İlişkisel Veritabanı Yönetim Sistemi (Relational Database Management System - RDBMS) adı verilir. Günümüzde veritabanları mimari yapı olarak RDBMS kullanmaktadırlar. Bu modelde veriler birbirleriyle ilişkilendirilerek veriler arası bağlar oluşturulur. İlişkilendirilmiş verile RDBMS üzerinde tablolar ve sütunlar içerisinde tutulurlar. Veriler arasındaki ilişkisel bağlar oluşturulurken gerçek hayatta olan ilişkiler baz alınmalıdır. 

İlişkisel Veritabanı Temel Kavramlar

Tablo (Table) : Tablolar verilerin tutulduğu alanlardır. Tabloları excel dosyalarına benzetebiliriz. Fakat unutmamak gerektirki veritabanının sunduğu avantajları excel dosyaları sunamazlar. 

Satır (Row) : Satırlar tablolarda bulunan belirli bir kayda ait veriler bütünüdür. Tablolardaki satırlar birbirlerinden  farklı olmalıdır. 

Sütun (Column) : Satırlara ait farklı bilgileri tutan özelliklerdir. Bir satırda birden fazla sütun bulunabilir.  Bir tabloda tanımlanabilecek sütun sayısı VTYS'ne göre farklılık gösterebilir.

Primary Key (Birincil Anahtar) : Her satırı tekil bir şekilde tanımlayan benzersiz anahtardır. Primary Key sayesinde tablolarda bulunan satırlar birbirlerinden farklı olur ve her satırın Primary Key değeri farklı atanır. Primary Key tek bir sütun olduğu gibi birden fazla sütundan da oluşabilir.

NOT : Bazı VTYS'ler tabloda Primary Key olmadığında INSERT, UPDATE, DELETE işlemlerine izin vermezler.

Primary Key olacak sütun asla boş değer almamalıdır.
Primary Key olacak sütun tekrarı olmayan kayıtlarda oluşmalıdır…Örneğin TC Kimlik No, Öğrenci No vb…
Primary Key sütunu olabildiğince küçük ve basit veri tipinde tanımlanmalıdır.

Foreign Key (Yabancı Anahtar)

Bir tablodaki sütunun başka tablodaki anahtara olan referansını belirler. Primary Key'den farklı olarak bir tabloda birden fazla Foreign Key olabilir.

Indexler : Az sayıda kaydın bulunduğu tablolarda kayıt aramak oldukca kolaydır. Ne varki yüzlerce, milyonlarca kaydın tutulduğu bir tabloda aradığımız veriye ulaşmak zorlaşır ve performans oldukca düşer. Bu nedenle tablolardaki sütünlarda bir arama indexi tanımlanır. Indexler verileri belirli bir sıralama dahilinde sorgulamalarda hızlı ve etkin sonuç almamıza olanak sağlarlar.

Oracle wm_concat fonksiyonundaki , karakterini değiştirmek.

d.t_detayadi alanlarını birleştirir araya , atar.
select to_char(wm_concat((d.t_detayadi)) as "Kolon"
          from hst_hasta_hiz_hareket q, hst_islem_detay d
         where d.t_detaykodu = q.t_hizmetkodu
         and q.t_hizmetkodu like '6%'
           and q.t_basvuruno = '441370' 
 
d.t_detayadi alanlarını wm_concat gibi birleştirir fakat araya istenilen karakteri atar. 
select LISTAGG(d.t_detayadi, ' + ') WITHIN GROUP (ORDER BY d.t_detayadi) as "Kolon"
          from hst_hasta_hiz_hareket q, hst_islem_detay d
         where d.t_detaykodu = q.t_hizmetkodu
         and q.t_hizmetkodu like '6%'
           and q.t_basvuruno = '441370'

eğer birleştirmek istenilen alanlarda , varsa wm_concat fonksiyonu karıştırıyor.
LISTAGG ile daha verimli çalışıyor. 
Daha Yeni Kayıtlar Önceki Kayıtlar