DDL (Veri Tanım Dili) — veritabanı yapısını tanımlamak için kullanılan bir dildir (tabloların, şemaların, dizinlerin vb. oluşturulması, değiştirilmesi ve silinmesi):
CREATE TABLE, ALTER TABLE, DROP TABLE.DML (Veri Manipülasyon Dili) — tablo içerikleri ile çalışan veri manipülasyon dilidir (satır ekleme, değiştirme, silme, sorgulama):
INSERT, UPDATE, DELETE, SELECT.Örneğin, farklı kullanıcıların sadece DML veya sadece DDL üzerinde farklı hakları olabilir:
-- DDL: tablo oluşturma CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- DML: veri ekleme INSERT INTO users (id, name) VALUES (1, 'Ivan');
"DDL komutunu (örneğin, DROP TABLE) açık bir işlem içinde çalıştırdıysanız geri alınabilir mi?"
Çoğu DBMS (örneğin, PostgreSQL, Oracle), DDL için işlemleri desteklemektedir, ancak birçokları, DDL komutlarının açıkça bir işlem içinde sarmalanmış olsalar bile geri alınmasına izin vermez. MySQL'de DDL komutları her zaman derhal kaydedilir.
BEGIN; DROP TABLE employees; ROLLBACK;
Çoğu durumda, tablo kalıcı olarak silinecektir, geri alma işlemi olsa bile.
Hikaye
Geliştirme ortamında DROP TABLE komutunun yanlışlıkla çalıştırılması sonucu tablo kaybı — işlem geri alınamaz, geri alma işlemi olsa bile.
Hikaye
Bir organizasyon, bir projeye yönetici hakları verdi ve bu, bir hata sonucunda ALTER komutuyla veritabanı şemasında kitlesel değişiklik yapılmasına neden oldu; bu da servis kesintisine ve sipariş kaybına yol açtı.
Hikaye
Yeni başlayanlara DDL haklarını reddeden ekip, dağıtım göçleri için prosedürlerin DDL erişimi gerektirdiğini unuttu — birkaç saatlik soruşturmadan ve acil rol yükseltmelerinden sonra sürüm iptal oldu.