SQL, İngilizce adıyla “Structured Query Language” (Yapılandırılmış Sorgulama Dili) bir veri tabanı sorgulama dilidir. SQL ile veri tabanına yeni tablolar, kayıtlar ekleyip silebilir, mevcut veriler üzerinde düzenlemeler ve sorgular yapılabilir. SQL ile ORACLE, db2, Sybase, Informix, MS SQL Server, MS Access gibi veri tabanı yönetim sistemlerinde çalışılabilir. SQL, standart bir veri tabanı sorgu dilidir, bütün gelişmiş veri tabanı uygulamalarında kullanılır.
Transact-SQL (T-SQL)
SQL, düzeltilmesi veya değiştirilmesi istenen bilgileri açıkça belirtmeye izin veren ve yerine getirilebilecek başlıca işlemleri tanımlamamızı sağlayan bir komut takımıdır. Bu komutların oluşturduğu yapıya T-SQL dili denir. T-SQL ile veri ve sorgulara erişebilir, güncelleyebilir ve ilişkisel veri tabanı sistemi yönetilebilir. T-SQL komutları kullanım amaçlarına göre üç genel kategoriye ayrılır.
Microsoft’un veri tabanı sorgulama dilidir. Transact-SQL, SQL Server ve istemci (client) arasında iletişimi sağlayan SQL sorgulama dilinin gelişmiş bir versiyonudur. Transact Structured Query Language kelimelerinin kısaltmasıdır. T-SQL kullanarak veri tabanına kayıt eklenebilir, silinebilir, güncellenebilir ya da sorgulama ve raporlama yapılabilir. T-SQL ile döngü veya mantıksal işlemler yapmak için bir derleyiciye gerek yoktur.
Bu komutlar, işlevlerine göre şu şekilde ayrılır; ** DDL (Data Definition Language): Veri tanımlama dili ** DML (Data Manipulation Language) : Veri işleme dili ** DCL (Data Control Language): Veri kontrol dili
SQL Veri Tanımlama Dili
(Data Definition Language – DDL)
SQL Veri tanımlama dili verilerin tutulduğu nesneler olan tabloların yaratılmasını, silinmesini ve bazı temel özelliklerinin düzenlenmesini sağlar. En sık kullanılan bazı DDL komutları ve kullanım amaçları aşağıdaki gibidir:
CREATE TABLE:Yeni bir tablo yaratmak
ALTER TABLE:Tabloda değişiklik yapmak
DROP TABLE:Tabloyu silmek
CREATE INDEX:Tabloda dizin oluşturmak
SQL Veri İşleme Dili
(Data Manipulation Language – DML)
SQL veri işleme dili veri girmek, değiştirmek, silmek ve verileri almak için kullanılan DML komutlarının tümüdür. En sık kullanılan DML komutları ve kullanım amaçları aşağıdaki gibidir:
SELECT:Veri seçmek
DELETE:Veri silmek
UPDATE:Veri güncellemek
INSERT:Veri girmek
SQL Veri Kontrol Dili
(Data Control Language – DCL)
SQL veri kontrol dili bir veri tabanı kulalnıcısı veya rolü ile ilgili izinlerin düzenlenmesini sağlar. DCL komuları ve fonksiyonları şöyledir:
GRANT:Kullanıcıya yetki verir.
DENY:Kullanıcı, grup veya rolü herhangi bir eylem için eneller.
REVOKE:Daha önce atanmış olan yetki veya engeli kaldırır.
SQL Kullanımı Hakkında
SQL dili veritabanlarındaki tablolara bağlanıp veri eklemek, daha önceden eklenen verileri okumak ve veriler üzerinde işlem yapmak (güncelleme, silme) için kullanılan bir dildir. Sorgulama yapabilmek için öncelikli olarak veritabanımızda ez azından bir tablo olması gerekmektedir. Birden fazla tablo da olabilir. Ancak ister bir tablo olsun isterse birden çok tablo olsun neticede üzerinde işlem yapmak istediğimiz tabloyu belirtmemiz gerekmektedir. Hangi tablo üzerinde çalışacağımız FROM ifadesi ile belirtiriz. Bu ifade SQL sorgulama dilinin temelidir ve hemen hemen bütün SQL sorgularında kullanılmaktadır. Hemen hemen dedik çünkü bazı sorgu ifadelerinde kullanılmaz. Mesela yeni bir veritabanı veya tablo oluştururken FROM ifadesi kullanılmaz. FROM ifadesi sadece var olan verilerde sorgulama yaparken kullanılır.
Tek başına FROM ifadesi tabiki yetmez. FROM ile hangi tablo üzerinde işlem yapacağımız belirtiriz ancak ilgili tabloda ekleme işlemi mi, silme işlemi mi veya güncelleme işlemi mi yaptığımızı da belirtmemiz gerekmektedir. Bunun için belli başlı işlemler için hangi özel komutun kullanıldığını aşağıdaki tabloda görebilirsiniz.

Derste Yapılan Örnek Veritabanı Tasarımı ve Örnek Sorgular;



Kod: Tümünü seç
SELECT *FROM müşteriler
SELECT meslek FROM musteriler
SELECT ad as ADI,soyad as SOYADI,meslek as MESLEĞİ,sehir
FROM musteriler
WHERE cinsiyet='Erkek'
SELECT ad,soyad,meslek,sehir
FROM musteriler
WHERE gelir>3000
SELECT ad,soyad,meslek,sehir
FROM musteriler
WHERE not Gelir<=2000
SELECT ad,soyad,meslek,sehir
FROM musteriler
WHERE sehir in ('İstanbul','İzmit','Ankara')
SELECT ad,soyad,meslek,sehir,gelir
FROM musteriler
WHERE gelir between 2000 and 5000
SELECT ad,soyad,meslek,sehir,gelir
FROM musteriler
WHERE ad Like '%A'
SELECT ad,soyad,meslek,sehir,gelir
FROM musteriler
WHERE soyad Like '___'
SELECT ad,soyad,meslek,sehir,gelir
FROM musteriler
WHERE soyad Like 's%' and gelir between 1000 and 3000 and cinsiyet='Erkek'
SELECT DISTINCT sehir FROM musteriler
SELECT DISTINCT yas,cinsiyet FROM musteriler
SELECT * FROM musteriler ORDER BY yas desc
SELECT * FROM musteriler ORDER BY gelir
SELECT * FROM musteriler ORDER BY yas asc,gelir desc
SELECT AVG(yas) FROM müşteriler
SELECT AVG(gelir) FROM musteriler
SELECT SUM(yas) FROM musteriler
SELECT MAX(yas) FROM müşteriler
SELECT MIN(yas) FROM musteriler
SELECT cinsiyet, COUNT(cinsiyet) as CinsiyetSayısı FROM musteriler
GROUP BY cinsiyet
SELECT sehir, COUNT(sehir)FROM musteriler
GROUP BY sehir
SELECT TOP 3 * FROM musteriler ORDER BY musteriNo desc
SELECT UPPER(ad),upper(soyad) FROM musteriler
SELECT LOWER(ad),upper(soyad) FROM musteriler
SELECT *from musteriler
WHERE gelir > (SELECT AVG(gelir) from musteriler where cinsiyet='Kadın')
INSERT INTO musteriler(ad,soyad,cinsiyet,gelir,meslek,sehir,yas)
VALUES ('Hasan','Yılmaz','Erkek',5000,'Tasarımcı','İstanbul',30)
UPDATE musteriler SET yas=55 WHERE musteriNo=1
UPDATE musteriler SET sehir='Ankara' WHERE sehir='İstanbul'
UPDATE musteriler SET sehir='Ankara' WHERE musteriNo=1
UPDATE musteriler SET sehir='İstanbul' WHERE musteriNo=2
UPDATE musteriler SET sehir='İstanbul' WHERE musteriNo=3
UPDATE musteriler SET sehir='Rize' WHERE musteriNo=4
UPDATE musteriler SET sehir='Muş' WHERE musteriNo=5
UPDATE musteriler SET sehir='Hakkari' WHERE musteriNo=6
UPDATE musteriler SET sehir='Diyarbakır' WHERE musteriNo=7
DELETE FROM musteriler WHERE musteriNo=7
Katalog isminde bir veri tabanı oluşturuldu. Oluşturulan veritabanı içerisine, Kategori ve Urunler adında iki tablo oluşturuldu. Tablolar birbirlerine bire çok ilişki modeliyle bağlandı.






Kod: Tümünü seç
SELECT *FROM Urunler
SELECT *FROM Kategori
SELECT UrunAdi,UrunFiyat FROM Urunler WHERE KategoriRefID=1
/*ÜRÜN FİYATI ORTALAMA ÜRÜN FİYATINDAN YÜKSEK OLAN ÜRÜNLER*/
SELECT *FROM Urunler
WHERE UrunFiyat>(SELECT AVG(UrunFiyat)FROM Urunler)
/*ÜRÜN FİYATI ORTALAMA ÜRÜN FİYATINDAN YÜKSEK OLAN ELEKTRONİK ÜRÜNLER*/
SELECT *FROM Urunler
WHERE UrunFiyat>(SELECT AVG(UrunFiyat)FROM Urunler) AND KategoriRefID=1
SELECT UrunAdi, UrunFiyat, UrunStokAdet,(UrunFiyat*UrunStokAdet) AS toplamTutar FROM Urunler
SELECT sum(UrunFiyat*UrunStokAdet) FROM Urunler

Kod: Tümünü seç
SELECT COUNT(*) FROM [Order Details]
SELECT * FROM [Order Details]
SELECT UnitPrice,Quantity, (UnitPrice*Quantity) AS ToplamfİYAT FROM [Order Details]
SELECT sum(UnitPrice*Quantity) AS TOTALGELIR FROM [Order Details]
SELECT avg(UnitPrice*Quantity) AS TOTALGELIR FROM [Order Details]
SELECT ProductName,UnitPrice
FROM Products
WHERE UnitPrice>10 ORDER BY UnitPrice ASC
SELECT ShipCity, ShipCountry, OrderDate
FROM Orders
WHERE YEAR(OrderDate) = 1997
ORDER BY ShipCity
SELECT Count(*)
FROM Orders
WHERE YEAR(OrderDate) = 1997