Ana içeriğe atla

SQL DDL Komutları: Kapsamlı Rehber

SQL DDL komutlarını ve veritabanı nesnelerinin yapısını tanımlayıp yönetmeye nasıl yardımcı olduklarını öğrenin.
Güncel 3 Eki 2026  · 11 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

SQL, veri bilimciler ve veri mühendisleri için veritabanlarından içgörü elde etmenin vazgeçilmez aracıdır. Bir veritabanı birden çok tablodan oluşur ve PostgreSQL’den Snowflake’e kadar farklı SQL türleri vardır.

SQL’deki Veri Tanımlama Dili (DDL) komutları, veritabanı nesnelerinin yapısını tanımlamak ve yönetmek için kullanılır. Bu yazıda, bir Filmler Veritabanı kullanarak örneklerle SQL’deki DDL komutlarını açıklayacağım. Haydi başlayalım!

SQL’de DDL Komutları Nelerdir?

Veri Tanımlama Dili (DDL) komutları, SQL’de bir şemayı tanımlayıp yönetmeme olanak tanır. Kısaca, SQL’de bir şema; verilerin bir veritabanında nasıl düzenlendiğini ve veritabanındaki farklı tablolar arasındaki ilişkilerin nasıl yönetildiğini tanımlayan bir plandır.

DDL, farklı işlevlere sahip çeşitli komutlardan oluşur; aşağıdaki sırayla ele alacağım:

DDL Komutu

AÇIKLAMA

SÖZDİZİMİ

CREATE

Bir tabloyu ve sütunlarını veri tipleriyle birlikte oluşturur.

CREATE TABLE

ALTER

Sütun adlarını değiştirir ve bir sütun ekler ya da siler.

ALTER TABLE

RENAME

Tablonun adını değiştirir.

RENAME TABLE

COMMENT

Diğer ekip üyelerinin gözden geçirmesi için SQL koduna bir açıklama ekler.

--

/* …

…*/

TRUNCATE

Tabloyu silmeden tablodaki verileri kaldırır.

TRUNCATE TABLE

DROP

Tabloyu verileriyle birlikte siler.

DROP TABLE

Örneklerle SQL’de DDL Komutları

Artık DDL komutlarının temelini ve amaçlarını bildiğimize göre, Filmler veritabanını kullanarak bazı pratik örneklere bakalım.

SQL’de CREATE komutu

Yeni bir tablo oluşturmam gerektiğinde, aşağıda görüldüğü gibi CREATE TABLE komutunu kullanırım:

CREATE TABLE table_name (
    column_1 datatype,
    column_2 datatype,
    ...,
    column_n datatype
);

Yukarıdaki örnekte, farklı veri tiplerinde sütunlar tanımlarım. SQL çeşitli veri tiplerini destekler; en yaygın olanları genellikle STRING (metin), INT (tam sayılar), FLOAT (ondalıklı sayılar) ve DATE (tarih) tipleridir.

Örneğin, actor tablosunu oluşturmak isteseydim, CREATE TABLE’ı şu şekilde kullanırım:

CREATE TABLE actor (
    actor_id String(32767),
    first_name String(32767),
    last_name String(32767),
    last_update String(32767)
);

Burada:

  • actor tablo adıdır
  • actor_id, içeriğinin metin formatında (String) olması ve 32767 karakteri geçmemesi beklenen bir sütun adıdır.
  • first_name, içeriğinin metin formatında (String) olması ve 32767 karakteri geçmemesi beklenen bir sütun adıdır.
  • last_name, içeriğinin metin formatında (String) olması ve 32767 karakteri geçmemesi beklenen bir sütun adıdır.
  • last_update, içeriğinin metin formatında (String) olması ve 32767 karakteri geçmemesi beklenen bir sütun adıdır.

Sorguyu çalıştırdığımda, yeni tablo diğer tablolarla birlikte görünür; böylece istediğim zaman ondan sorgu çekebilirim.

SQL’de ALTER komutu

SQL’de ALTER kullanarak, başka bir tablo oluşturup eskisini silmeye gerek kalmadan bir tabloyu güncelleyebilirim. Kurumların binlerce tablosu olabilir ve verileri kayıp riski olmadan güncel tutmayı bilmek kritik önemdedir.

ALTER komutunun farklı şekillerde kullanılabildiğini unutmamak gerekir; örneğin:

  • Bir tabloya yeni sütun eklemek
  • Bir tablodaki sütunları yeniden adlandırmak
  • Bir tablodaki sütunları değiştirmek
  • Bir tablodan sütun silmek

ALTER içinde ADD komutu

Bir sütun eklemek için, aşağıda görüldüğü gibi ALTER komutunu ADD ile birleştiririz:

ALTER TABLE table_name ADD column_name datatype;

Burada, aktör tablosuna STRING veri tipinde yeni bir nationality sütunu ekliyoruz.

ALTER TABLE actor ADD nationality String(32767);

SQL’deki tüm ALTER komutları benzer bir yapıyı izler; bu da SQL’i öğrenmesi ve ustalaşması doğal bir dil haline getirir.

ALTER içinde RENAME komutu

Bir sütun adını değiştirmem gerektiğinde, ALTER içinde RENAME komutunu şu şekilde kullanırım:

ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name;

Örneğin, last_name sütun adını, orta ad mı soyad mı olduğu konusundaki olası karışıklığı gidermek için family_name olarak değiştirelim. Bu durumda şu sorguyu çalıştırırım:

ALTER TABLE actor RENAME COLUMN last_name TO family_name;

ALTER içinde MODIFY komutu

Veri tipleri sütun özelliklerini tanımlar ve verinin kalitesini etkiler. Örneğin, last_update bir String(metin) olarak ayarlanmıştı; ancak veriler bunun tarih ve zamanı temsil ettiğini açıkça gösteriyor.

Farklı veri tiplerine bakıp sütundaki veriye döndüğümüzde, uygun veri tipi TIMESTAMP olur.

Bir sütunun veri tipini uygun şekilde güncellemek, diğer SQL komutlarıyla tarihe göre birleştirme ve filtrelemeyi kolaylaştırır. SQL’de MODIFY şu şekilde kullanılır:

ALTER TABLE table_name ALTER COLUMN column_name datatype;

Bunu last_update sütununa uygulamak için şu sorguyu kullanırım:

ALTER TABLE actor ALTER COLUMN last_update TIMESTAMP;

ALTER içinde DROP komutu

ALTER’ın sunduğu son seçenek bir sütunu kaldırmaktır. Bir sütunu DROP etmem için pek çok neden olabilir; bunlarla sınırlı olmamak üzere:

  • Artık geçerli olmayan bilgiler,
  • Aynı sütunun başka bir tabloda da bulunduğu yinelenen bilgiler,
  • Veri kalitesi sorunları,
  • Depolama alanını optimize etmek.

SQL’de sütun silmek kolaydır; ancak bu işlemi dikkatli kullanın, çünkü her zaman geri almak mümkün olmayabilir.

ALTER TABLE table_name DROP COLUMN column_name;

Bir sütunu silme komutu, sütun yeniden adlandırma komutuna benzer görünse de ikisi aynı değildir. Sütunu yeniden adlandırmak veriyi yerinde bırakır, yalnızca başlığı değiştirir. Öte yandan DROP komutu hem veriyi hem de başlığı kaldırır; sanki sütun hiç var olmamış gibi.

last_update sütununun, veritabanının yenilenip yenilenmediği dışında pek bilgi sunmadığını fark ettikten sonra, aşağıdaki sorguyla onu sildim:

ALTER TABLE actor DROP COLUMN last_update; 

SQL’de RENAME komutu

RENAME komutu yalnızca tablonun adını değiştirmek için kullanılır ve ALTER’ın RENAME yetenekleriyle karıştırılmamalıdır. Nitekim, bir tablonun adını değiştirmek için sorgu basitçe şöyledir:

RENAME TABLE old_table_name TO new_table_name;

actor tablosu yalnızca isimleri içeriyor ve aktörler hakkında başka bilgi barındırmıyor. Bu yüzden tablo adını aşağıdaki gibi netleştirmek mantıklıdır:

RENAME TABLE actor TO actor_names;

SQL’de COMMENT

SQL’de yorum yazmak, sorgularınızı anlaşılır ve sürdürülebilir kılmak için kritik önemdedir. Karmaşık mantığı açıklamaya, değişiklikleri belgelendirmeye ve belirli tercihleri gerekçelendirmeye yardımcı olur. SQL’de iki şekilde yorum ekleyebilirsiniz:

  • Tek satırlık yorumlar
  • Çok satırlı yorumlar

Şimdi bunları uygulamada görelim.

SQL’de tek satırlık yorum

Tek satırlık yorumlar genellikle aşağıda olduğu gibi kodun yanında yer alır. Böylece kodu okurken bir meslektaşımın yorumunu da okuyabilirim.

actor tablosunda, actor_id ve last_update sezgisel değildir ve bir yorumla açıklama gerektirir.

CREATE TABLE actor (
 actor_id String(32767), --unique identifier
 first_name String(32767),
 last_name String(32767),
 last_update String(32767)--datetime of last update
);

SQL’de yorum yazmak, bu yazıdaki diğer komutlardan farklıdır; çünkü COMMENT adlı bir fonksiyon çağırmaz. Arada boşluk olmayan iki kısa çizgi ‘--’, bir yorumun başladığını gösterir. Sonrasında yazılan her şey kodun parçası sayılmaz.

SQL’de çok satırlı yorum

Açıklama daha uzunsa, çok satırlı yorum kullanın. Bir fonksiyonu açıklamak veya ayrıntılı bağlam sağlamak için tercih edilir. SQL’de çok satırlı yorum eklemek için /* ile başlayıp */ ile bitirin. SQL motoru, /* ile */ arasına yazılan her şeyi yok sayar ve sorgunun parçası olarak çalıştırmaz.

/* Create a table `actor` with the actors’ names. Store first and last name, and keep track of any updates*/
CREATE TABLE actor (
 actor_id String(32767), --unique internal identifier
 first_name String(32767),
 last_name String(32767),
 last_update String(32767)--datetime of last update
);

SQL’de TRUNCATE komutu

Bir tabloyu budamak (truncate) onu silmekle aynı şey değildir. Truncate tüm verileri kaldırır ama tablonun yapısını korur; silmek ise yapısı dahil tüm tabloyu kaldırır. Amaca uygun doğru komutu seçerken dikkatli olmak gerekir.

TRUNCATE’ın Excel’deki karşılığı, sütun adının altındaki tüm verileri seçip delete tuşuna basmaktır. SQL’de şöyle yazarım:

TRUNCATE TABLE table_name;

actor tablosunu budamak gerekirse, şu komutu çalıştırırım:

TRUNCATE TABLE actor;

Sonuç, yalnızca sütun adlarının kaldığı ve hiç değer bulunmayan bir tablo olur.

SQL’de DROP komutu

TRUNCATE’ın aksine, DROP DDL komutu tabloyu ve tüm değerlerini bütünüyle siler. Bu tür komutları çalıştırırken dikkatli olmak gerekir; çünkü bu işlem her zaman geri alınamayabilir. DROP komutunun yapısı TRUNCATE sorgusuna benzer:

DROP TABLE table_name;

Dolayısıyla actor tablosunu silmek de şu kadar basittir:

DROP TABLE actor;

Farklı SQL türleri sözdiziminde küçük değişiklikler gerektirebilir; ancak yukarıdaki DDL komutları, hangi SQL sürümünü kullanırsanız kullanın büyük ölçüde aynıdır.

DDL Komutları ve Diğer Komut Türleri

Önceki bölümde, DDL komutlarının tabloların yapısını nasıl tanımladığını ve gerektiğinde içeriklerini veya özelliklerini nasıl güncellediğini açıkladım. Diğer SQL komutu türleri, verileri farklı bir bakışla görmek için seçme, toplama, güncelleme ve hatta tabloları birleştirme olanağı tanır ve her komut setinin belirli bir amacı vardır.

Komut

Tanım

Amaç

DQL

Data Query Language

Belirli bir kritere göre veritabanından veri çekmek

DML

Data Manipulation Language

ALTER’dan daha fazla işlevle veritabanındaki tabloları değiştirmek.

DCL

Data Control Language

Erişim ve yetki üzerinde izin kontrolleri.

TCL

Transaction Control Language

DML komutlarıyla yapılan değişiklikleri veritabanına uygular

DataCamp ile SQL Becerilerinizi Geliştirin

İyi veri kalitesi, veriler iyi tanımlanıp yapılandırıldığında elde edilir. SQL’deki DDL komutları, veri profesyonellerinin yapılandırılmış bir veritabanı kurup sürdürmesine yardımcı olur. DML komutları gibi diğer SQL komutları ise verileri görüntüleme, toplama, ekleme, filtreleme ve birleştirme olanağı tanır. Aşağıdaki kaynakları inceleyerek SQL hakkında daha fazla bilgi edinin ve becerilerinizi geliştirin:


Deandra Cutajar's photo
Author
Deandra Cutajar
LinkedIn

İstatistiksel tekniklerin yanı sıra zaman serileri, LLM, Sinir Ağı ve Grafik Teorisi gibi ileri modelleri kullanarak özel veri bilimi modelleri geliştirme konusunda kapsamlı deneyime sahip veri ve yapay zekâ profesyoneli.

Konular
SQL

SQL Yolculuğunuza Bugün Devam Edin!

Kurs

SQL’e Giriş

2 sa
1.6M
Sadece iki saat içinde SQL kullanarak ilişkisel veritabanlarını nasıl oluşturacağınızı ve sorgulayacağınızı öğrenin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını GörDevamını Gör