SQL Nedir, Ne Demek? SQL Komutları, MySQL ve SQL Server
SQL'in nasıl çalıştığını, ISO/IEC 9075 standardını, DDL, DML, DCL ve TCL komutlarını, lehçelerini ve SQL injection'a karşı alınacak önlemleri anlattık.

Kısa cevap: SQL (Structured Query Language), ilişkisel veritabanlarında veriyi tanımlamak, sorgulamak ve değiştirmek için kullanılan standart dildir. Bildirimsel çalışır: hangi veriyi istediğinizi yazarsınız, ona hangi yoldan ulaşılacağına veritabanı karar verir. Standardın resmî adı ISO/IEC 9075, güncel sürümü SQL:2023. MySQL, PostgreSQL, SQL Server, Oracle ve SQLite bu dili konuşur ama her birinin kendi lehçesi var. Güvenlikte temel kural, kullanıcı girdisini sorgu metnine eklememek ve parametreli sorgu kullanmaktır.
SQL nedir, ne demek?
SQL, Structured Query Language (yapılandırılmış sorgu dili) ifadesinin kısaltması. IBM'in Db2 belgesi onu ilişkisel veritabanında veriyi tanımlamak ve değiştirmek için kullanılan standart dil olarak anlatıyor. Oracle'ın tanımıyla SQL bildirimsel bir dil: kullanıcı istediği sonucu belirtir, o sonuca nasıl varılacağını değil. Veriyi tek tek satırlarla değil, kümeler hâlinde işler; Oracle'ın başvuru belgesine göre en verimli erişim yolunu optimizer belirler.
IBM Research kaydına göre E. F. Codd, ilişkisel modeli 1 Haziran 1970'te Communications of the ACM'de yayımlanan "A Relational Model of Data for Large Shared Data Banks" makalesinde tanımladı. Makalenin ilk cümlesi SQL'in mantığını da özetliyor: büyük veri bankalarının kullanıcıları, verinin makinede nasıl düzenlendiğini bilmek zorunda kalmamalı. Donald D. Chamberlin ile Raymond F. Boyce, bu modele dayanan dili Mayıs 1974'te yayımladıkları makalede SEQUEL (Structured English Query Language) adıyla tanıttı. Oracle'ın SQL tarihçesine göre SEQUEL zamanla SQL adını aldı.
SQL standardı: ISO/IEC 9075
Oracle'ın belgesine göre ANSI ve ISO/IEC, SQL'i ilişkisel veritabanlarının standart dili olarak kabul ediyor. Standardın ilk ISO sürümü Haziran 1987'de ISO 9075:1987 adıyla çıktı. Güncel sürüm SQL:2023: çerçeveyi ISO/IEC 9075-1:2023, dilin çekirdeğini ISO/IEC 9075-2:2023 tanımlıyor ve ikisi de Haziran 2023 tarihli. ISO kataloğu, Haziran 2025'ten beri standardı "revize edilecek" aşamasında gösteriyor.
Ürünler standarda birebir uymaz. PostgreSQL'in uyumluluk belgesine göre proje, Core uyumu için gereken 177 zorunlu özelliğin en az 170'ini karşılıyor. Bir sistemde çalışan sorgunun ötekinde değişiklik istemesi bu yüzden olağan.
Temel kavramlar: tablo, anahtar, indeks ve transaction
PostgreSQL'in eğitim belgesine göre ilişkisel veritabanında veri tablolarda durur: her tablo adlandırılmış satırlardan oluşur, satırlar aynı adlı sütunları taşır ve her sütunun bir veri tipi vardır. SQL satırların sırasını garanti etmez; sıra gerekiyorsa ORDER BY yazılır. PostgreSQL sözlüğüne göre öteki temel kavramlar şunlar:
- Birincil anahtar (primary key): Satırı tekil olarak tanımlayan, NULL olamayan sütun ya da sütunlar; tabloda yalnızca bir tane olur.
- Yabancı anahtar (foreign key): Sütundaki değerin başka bir tablodaki satırı göstermesini zorunlu kılan kısıt.
- JOIN: Birden fazla tablodaki veriyi tek sorguda birleştiren işlem.
- İndeks: Satırlara hızlı erişim sağlayan yapı. Belgelere göre veri değiştiren işlemlere ek yük getirir; seyrek kullanılan indeks kaldırılmalıdır.
- Transaction: Ya hepsi uygulanan ya da hiçbiri uygulanmayan komut grubu. PostgreSQL'de BEGIN ile açılır, COMMIT ile kalıcı olur, ROLLBACK ile geri alınır.
Transaction'ın ACID güvencelerini VTYS yazımızda anlattık; veritabanı teriminin kısa tanımı sözlüğümüzde var. Aşağıdaki tanım, anahtarlı iki tablo oluşturur:
CREATE TABLE musteri (
id integer PRIMARY KEY,
ad text NOT NULL
);
CREATE TABLE siparis (
id integer PRIMARY KEY,
musteri_id integer NOT NULL REFERENCES musteri (id),
tarih date NOT NULL,
tutar numeric(12,2) NOT NULL
);SQL komutları: DDL, DML, DCL ve TCL
SQL ifadeleri işlevlerine göre dört grupta anılır. Sınırlar kesin değil: IBM DDL, DML ve DCL adlarının gayriresmî olduğunu belirtiyor, Oracle ise GRANT ve REVOKE'u DDL içinde sayıyor.
- DDL (Data Definition Language): Nesneleri tanımlar, değiştirir ve kaldırır (CREATE, ALTER, DROP).
- DML (Data Manipulation Language): Veriyi okur ve değiştirir (SELECT, INSERT, UPDATE, DELETE, MERGE).
- DCL (Data Control Language): Yetkiyi yönetir (GRANT, REVOKE).
- TCL (Transaction Control): DML değişikliklerini kalıcı kılar ya da geri alır (COMMIT, ROLLBACK, SAVEPOINT); Oracle bu gruba "transaction control statements" diyor.
SQL sorguları: SELECT, WHERE ve JOIN
Aşağıdaki PostgreSQL sorgusu, 2026 başından beri verilen siparişleri müşteri adlarıyla birleştirir, tutara göre sıralar ve ilk on satırı döndürür:
SELECT m.ad, s.tarih, s.tutar
FROM siparis AS s
JOIN musteri AS m ON m.id = s.musteri_id
WHERE s.tarih >= DATE '2026-01-01'
ORDER BY s.tutar DESC
FETCH FIRST 10 ROWS ONLY;JOIN, siparişteki musteri_id değerini müşterinin birincil anahtarıyla eşleştirir; eşleşmeyen sipariş sonuca girmez. LEFT JOIN ise soldaki tablonun her satırını getirir; sağdaki tabloda karşılığı yoksa o sütunlar NULL gelir.
Son satır bir lehçe farkı örneği. FETCH FIRST, SQL:2008'in standart sözdizimi; PostgreSQL bunu destekler, aynı işi LIMIT ile de yapar ve LIMIT'i MySQL de kullanır. SQL Server'da satır sayısını TOP ya da OFFSET ve FETCH sınırlar; Microsoft, TOP'u her zaman ORDER BY ile kullanmayı öneriyor.
SQL lehçeleri: MySQL, PostgreSQL, SQL Server, Oracle ve SQLite
Oracle'a göre IF, döngü ve hata yakalama gibi akış denetimi ifadeleri başlangıçta SQL'de yoktu; bugün ISO/IEC 9075-4 (SQL/PSM) içindeler. Başlıca sistemler şöyle ayrışıyor:
- MySQL: Oracle Corporation'ın geliştirdiği, GPL ile dağıtılan ilişkisel VTYS; ticari lisansı da var. SQL işlemlerini tablo türüne göre storage engine bileşenleri yürütür, varsayılanı InnoDB.
- PostgreSQL: Açık kaynak, nesne-ilişkisel VTYS; yordamsal dili PL/pgSQL varsayılan olarak kurulu gelir. Ayrıntısı PostgreSQL yazımızda.
- Microsoft SQL Server: Microsoft'un ilişkisel VTYS'si. Microsoft'un tanımıyla T-SQL (Transact-SQL), SQL'in tescilli bir uzantısı; değişken, hata yakalama ve transaction denetimi ekler.
- Oracle Database: PL/SQL, Oracle'ın tanımıyla SQL'in yordamsal uzantısı.
- SQLite: Ayrı sunucu süreci olmadan çalışan, veriyi sıradan disk dosyalarına yazan gömülü SQL motoru; kodu kamu malı (public domain).
SQL, VTYS ve NoSQL farkı
SQL bir dil; MySQL, PostgreSQL ya da SQL Server onu çalıştıran veritabanı yönetim sistemleri. AWS'nin karşılaştırmasına göre ilişkisel model veriyi tablolara normalize eder ve ACID özelliklerini sağlar. NoSQL veritabanları ise anahtar-değer, belge, graf ve sütun gibi modeller ve esnek şema kullanır; çoğu, ACID özelliklerinin bir kısmından ödün verir ve genellikle bölümlenebilir. Ayrıntısı NoSQL yazımızda.
SQL güvenliği: SQL injection, en az yetki ve denetim logu
OWASP'a göre SQL injection, kullanıcı girdisinin metin birleştirmeyle sorguya eklendiği dinamik sorgularda doğar. OWASP Top 10:2025'te Injection üçüncü sıradan beşinciye indi; listeye göre SQL injection için 14 binden fazla CVE kaydı var. Üç önlem öne çıkıyor:
- Parametreli sorgu: OWASP'ın ilk savunması prepared statement. Değer sorguya ayrı parametre olarak gider; veritabanı kodu veriden her durumda ayırır. Girdiyi kaçış karakterleriyle temizlemek ise OWASP'a göre "kesinlikle önerilmez".
- En az yetki: Uygulama hesabına DBA ya da yönetici yetkisi verilmez; yalnız okuyan hesap, yalnız gereken tablolarda okuma yetkisi alır (IAM yazımız).
- Denetim logu: PostgreSQL'de log_statement ayarı ddl değerinde CREATE, ALTER ve DROP'u, mod değerinde ayrıca INSERT, UPDATE ve DELETE'i kaydeder; varsayılanı none. SQL Server'da bu işi SQL Server Audit üstlenir (log yazımız).
Uygulamanın önündeki savunmayı WAF yazımızda anlattık.
Kurumda SQL: kim yazar, kim işletir?
Stack Overflow'un 2026 anketinde dil sorusunu cevaplayan 14.099 geliştiricinin %58,4'ü son bir yılda SQL ile yoğun geliştirme yaptığını söyledi; SQL bu listede JavaScript'in (%62,0) ardından ikinci sırada. AWS'ye göre yönetilen bir veritabanında bile sorgu ayarı (query tuning) müşterinin işi.
Veritabanını işleten rolü DBA yazımızda, yedek türlerini yedekleme yazımızda, verinin raporlama sistemlerine taşınmasını ETL yazımızda anlattık. Günlük işletimi veritabanı platformu ve operasyonları, yüksek erişilebilirlik tasarımını veritabanı platform mühendisliği, eski sistemden geçişi uygulama ve veritabanı modernizasyonu hizmetimizde ele alıyoruz.
Sık sorulan sorular
SQL ne demek? Structured Query Language, yani yapılandırılmış sorgu dili demek. İlişkisel veritabanlarının standart dilidir; resmî standardı ISO/IEC 9075.
MySQL nedir? Oracle Corporation'ın geliştirdiği, GPL lisanslı açık kaynak bir ilişkisel veritabanı yönetim sistemidir. Veriyi tablolarda tutar ve SQL ile sorgulanır.
SQL Server nedir? Microsoft'un ilişkisel veritabanı yönetim sistemidir. Uygulamalar onunla, SQL'in Microsoft uzantısı olan T-SQL üzerinden konuşur.
SQL ile MySQL arasındaki fark nedir? SQL bir dil, MySQL ise bu dili çalıştıran bir veritabanı yönetim sistemi. MySQL, standardın yanında LIMIT gibi kendi sözdizimini de kullanır.
SQL sorguları ve komutları nelerdir? Veriyi okuyan SELECT ile veriyi değiştiren INSERT, UPDATE ve DELETE, DML grubundadır. CREATE (DDL), GRANT (DCL) ve COMMIT (TCL) öteki grupların örnekleri.
SQL injection nedir? Kullanıcı girdisi sorgu metnine eklendiğinde saldırganın sorguyu değiştirebilmesidir. OWASP'ın ilk önerisi parametreli sorgu (prepared statement) kullanmaktır.
Kaynaklar
- IBM Research, A Relational Model of Data for Large Shared Data Banks: Codd'un ilişkisel model makalesi, Communications of the ACM (1 Haziran 1970)
- IBM Research, SEQUEL: A Structured English Query Language: Chamberlin ve Boyce'un SEQUEL makalesi, ACM SIGFIDET çalıştayı (Mayıs 1974)
- Oracle, Database Concepts: Introduction to Oracle AI Database: SQL'in küme tabanlı, bildirimsel bir dil olarak tanımı
- Oracle, History of SQL ve SQL Standards: SEQUEL'den SQL'e geçiş, ANSI ve ISO/IEC'in SQL'i standart kabul etmesi, kümeler hâlinde işleme, optimizer ve SQL/PSM
- IBM, SQL: The language of Db2: SQL tanımı ve DDL, DML, DCL adlarının gayriresmî kullanımı (Db2 13 for z/OS)
- ISO, ISO 9075:1987: standardın ilk ISO sürümü (Haziran 1987)
- ISO, ISO/IEC 9075-1:2023 ve ISO/IEC 9075-2:2023: güncel sürüm ve revizyon durumu (Haziran 2023)
- PostgreSQL, SQL Conformance: Core SQL:2023'ün 177 zorunlu özelliği ve PostgreSQL'in uyumu
- PostgreSQL, Concepts, Glossary, Indexes: Introduction, Transactions, Joins Between Tables ve SELECT: tablo, anahtar, indeks, transaction, LEFT JOIN, FETCH FIRST ve LIMIT (PostgreSQL 18 belgeleri)
- Oracle, Types of SQL Statements: DDL, DML ve transaction control ifadeleri
- Microsoft, TOP (Transact-SQL): TOP, ORDER BY ve OFFSET/FETCH
- MySQL, What is MySQL? ve Alternative Storage Engines: geliştirici, lisans, storage engine ve InnoDB (MySQL 9.7 belgeleri)
- PostgreSQL, PL/pgSQL Overview: PL/pgSQL ve varsayılan kurulumu
- Microsoft, What is SQL Server? ve Describe Transact-SQL for programming: SQL Server ve T-SQL tanımları
- Oracle, Overview of PL/SQL: PL/SQL tanımı
- SQLite, About SQLite: gömülü SQL motoru ve kamu malı lisans
- AWS, What is NoSQL?: ilişkisel ve NoSQL veritabanlarının karşılaştırması
- OWASP, SQL Injection Prevention Cheat Sheet: parametreli sorgu, kaçış karakteri ve en az yetki
- OWASP, A05:2025 Injection: Injection'ın sıralaması ve SQL injection CVE sayısı
- PostgreSQL, Error Reporting and Logging: log_statement ayarı
- Microsoft, SQL Server Audit (Database Engine): veritabanı motorunda denetim kaydı
- AWS, What is Amazon RDS?: yönetilen veritabanında sorgu ayarının sorumluluğu
- Stack Overflow, 2026 Developer Survey: Technology ve Methodology: dil kullanım oranları (anket 23 Haziran-5 Ağustos 2026, 30.903 geçerli cevap; dil sorusunda 14.099 cevap)
- Bu katmanı nasıl işlettiğimiz: veritabanı platformu ve operasyonları