SQL, ilişkisel veritabanı yönetim sistemleri (RDBMS) üzerinde veri yönetimi için kullanılan bir dildir. SQL ile veritabanına veri ekleyebilir, veriyi güncelleyebilir, silebilir ve çeşitli sorgularla bu verileri raporlayabilirsiniz. SQL’in en önemli avantajı, birçok farklı veritabanı yönetim sistemiyle (MySQL, PostgreSQL, SQL Server, Oracle) uyumlu çalışmasıdır.
2. Temel SQL Komutları ve Anlatım
SQL'deki temel komutlar, veritabanındaki verilerle çalışma biçimimize göre gruplandırılır:
› DDL (Data Definition Language): Veri tanımlama dili, veritabanı yapısını tanımlar. (CREATE, ALTER, DROP)
› DML (Data Manipulation Language): Veri işleme dili, veriler üzerinde işlem yapar. (SELECT, INSERT, UPDATE, DELETE)
› DCL (Data Control Language): Veri kontrol dili, veri erişimlerini kontrol eder. (GRANT, REVOKE)
› TCL (Transaction Control Language): Veri işlemlerini yönetir. (COMMIT, ROLLBACK, SAVEPOINT)
Temel SQL Örnekleri
a) CREATE TABLE: Yeni bir tablo oluşturur.
Kod:
CREATE TABLE Oyuncular (
ID INT PRIMARY KEY,
Isim VARCHAR(100),
Soyisim VARCHAR(100),
Sehir VARCHAR(100)
);
b) INSERT INTO: Tabloya yeni bir veri ekler.
Kod:
INSERT INTO Oyuncular (ID, Isim, Soyisim, Sehir)
VALUES (1, 'Mert', 'Yılmaz', 'Ankara');
c) SELECT: Tabloya kayıtlı verileri sorgular.
Kod:
SELECT Isim, Soyisim FROM Oyuncular WHERE Sehir = 'İstanbul';
d) UPDATE: Var olan bir veriyi günceller.
Kod:
UPDATE Oyuncular
SET Sehir = 'Adana'
WHERE ID = 1;
e) DELETE: Veriyi tablodan siler.
Kod:
DELETE FROM Oyuncular WHERE ID = 1;
Veri Sorgulama Örnekleri
a) WHERE: Belirli koşullara uyan verileri sorgulamak için kullanılır.
Kod:
SELECT * FROM Oyuncular WHERE Sehir = 'Ankara';
b) ORDER BY: Verileri belirli bir sütuna göre sıralar.
Kod:
SELECT * FROM Oyuncular ORDER BY Isim ASC;
c) LIMIT: Getirilen veri sayısını sınırlar.
Kod:
SELECT * FROM Musteriler LIMIT 5;
d) JOIN: İki tabloyu birleştirir.
Kod:
SELECT Oyuncular.Isim, Skinler.Skin
FROM Oyuncular
JOIN Skinler ON Oyuncular.ID = Skinler.ID;
Veritabanı Yönetimi
a) CREATE DATABASE: Yeni bir veritabanı oluşturur.
Kod:
CREATE DATABASE YeniDB;
b) DROP DATABASE: Var olan bir veritabanını siler.
Kod:
DROP DATABASE YeniDB;
c) ALTER TABLE: Bir tabloyu değiştirmek için kullanılır. Örneğin, yeni bir sütun eklemek için:
Kod:
ALTER TABLE Oyuncular ADD Sifre VARCHAR(32);
Gruplama ve İstatistiksel Fonksiyonlar
a) GROUP BY: Verileri belirli bir sütuna göre gruplandırır.
Kod:
SELECT Sehir, COUNT(*) FROM Oyuncular GROUP BY Sehir;
b) HAVING: GROUP BY ile kullanılan koşul belirleme komutudur.
Kod:
SELECT Sehir, COUNT(*) FROM Oyuncular GROUP BY Sehir HAVING COUNT(*) > 1;
Veritabanı İlişkileri ve Kısıtlamalar
SQL'de veri güvenliği ve tutarlılığı sağlamak için kısıtlamalar (constraints) kullanılır. Bu kısıtlamalar, veritabanı tablolarında verilerin doğru ve tutarlı olmasını sağlar. Kısıtlamalar, tablo veya sütun oluşturulurken tanımlanabilir ve verilerin belirli kurallara uymasını zorunlu kılar.› PRIMARY KEY (Birincil Anahtar)
› Bir tablodaki her satırı benzersiz olarak tanımlayan sütun veya sütun setidir. Bir tablodaki PRIMARY KEY değerleri benzersizdir ve boş (NULL) olamaz.
› Benzersizlik: Her satırın benzersiz bir kimliğe sahip olmasını sağlar.
› Kullanım Örneği;
Kod:
CREATE TABLE Ogrenciler (
OgrenciID INT PRIMARY KEY,
Isim VARCHAR(50),
Soyisim VARCHAR(50)
);
› FOREIGN KEY (Yabancı Anahtar)
› Bir tabloyu başka bir tabloya bağlayan bir kısıtlamadır. Bir tablodaki bir sütun, başka bir tablodaki bir sütuna referans verir. FOREIGN KEY kısıtlaması, iki tablo arasındaki ilişkileri tanımlar ve referans bütünlüğünü sağlar. Bu, veri tutarlılığını korur çünkü bir tabloda var olmayan bir değeri referans gösteremezsiniz.
› Referans Bütünlüğü: Yabancı anahtar, bir tabloya başka bir tablodaki bir satırı işaret eder.
› Zincirleme Silme/Güncelleme: Bir satır silindiğinde veya güncellendiğinde, bağlı yabancı anahtarlar da silinebilir ya da güncellenebilir.
› Kullanım Örneği;
Kod:
CREATE TABLE Siparisler (
SiparisID INT PRIMARY KEY,
MusteriID INT,
SiparisTarihi DATE,
FOREIGN KEY (MusteriID) REFERENCES Musteriler(MusteriID)
);
› UNIQUE (Benzersiz)
› Bir sütundaki veya sütun grubundaki tüm değerlerin benzersiz olmasını sağlar. UNIQUE kısıtlaması, bir sütuna aynı değerin birden fazla girilmesini engeller. Ancak, bu sütundaki değerlerin NULL olmasına izin verir (ancak birden fazla NULL değeri eklenemez).
› Kullanım Örneği:
Kod:
CREATE TABLE Personel (
PersonelID INT PRIMARY KEY,
Email VARCHAR(100) UNIQUE,
Telefon VARCHAR(20)
);
› NOT NULL (Boş Olamaz)
› Bir sütundaki verilerin boş (NULL) olamayacağını belirtir. Bu kısıtlama, bir satır eklenirken veya güncellenirken bu sütunun kesinlikle bir değer içermesini zorunlu kılar.
› Kullanım Örneği;
Kod:
CREATE TABLE Urunler (
UrunID INT PRIMARY KEY,
UrunAdi VARCHAR(100) NOT NULL,
Fiyat DECIMAL(10, 2)
);
› CHECK (Koşul Kontrolü)
› Belirli bir sütundaki değerlerin belirli bir koşula uymasını sağlar. CHECK kısıtlaması, bir sütundaki değerlerin geçerli olup olmadığını kontrol eder.
› Kullanım Örneği;
Kod:
CREATE TABLE Calisanlar (
CalisanID INT PRIMARY KEY,
Yas INT CHECK (Yas >= 18)
);
› DEFAULT (Varsayılan Değer)
› Bir sütuna veri girilmediğinde otomatik olarak belirlenen bir değeri kullanır. DEFAULT kısıtlaması, bir sütunun boş bırakılması durumunda, bu sütunun varsayılan bir değer almasını sağlar.
› Kullanım Örneği;
Kod:
CREATE TABLE Musteriler (
MusteriID INT PRIMARY KEY,
Isim VARCHAR(100),
Sehir VARCHAR(100) DEFAULT 'Yok'
);
› AUTO_INCREMENT (Otomatik Artan)
› Bir sütundaki değerlerin otomatik olarak artmasını sağlar. Genellikle birincil anahtarlarla birlikte kullanılır ve her yeni kayıt için bu sütun değeri otomatik olarak artırılır.
› Kullanım Örneği;
Kod:
CREATE TABLE Ogrenciler (
OgrenciID INT PRIMARY KEY AUTO_INCREMENT,
Isim VARCHAR(50),
Soyisim VARCHAR(50)
);