ProgramlamaBackend geliştirici

SQL'deki DDL ve DML komutları arasındaki farkı açıklayın, örnekler verin ve bunun pratikte erişim hakları ve işlemler üzerindeki etkisini anlatın.

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

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):

  • Örnek komutlar: CREATE TABLE, ALTER TABLE, DROP TABLE.
  • DDL komutları genellikle otomatik olarak veritabanında kaydedilir (autocommit), yani değişiklikleri geri almak zordur.

DML (Veri Manipülasyon Dili) — tablo içerikleri ile çalışan veri manipülasyon dilidir (satır ekleme, değiştirme, silme, sorgulama):

  • Örnek komutlar: INSERT, UPDATE, DELETE, SELECT.
  • DML komutları genellikle bir işlem içinde sarılabilir ve commit öncesinde geri alınması mümkündür.

Örneğin, farklı kullanıcıların sadece DML veya sadece DDL üzerinde farklı hakları olabilir:

  • Sıra dışı uygulamalara genellikle DDL yasaklanır, böylece veritabanı yapısını yanlışlıkla değiştirmeleri engellenir;
  • DML, veri ile çalışmak için izin verilir.

Örnek:

-- 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');

Kandırmaca Soru

"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.

Örnek:
BEGIN; DROP TABLE employees; ROLLBACK;

Çoğu durumda, tablo kalıcı olarak silinecektir, geri alma işlemi olsa bile.

Konu hakkında bilgi eksikliğinden kaynaklanan gerçek hata örnekleri


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.