programowanieBackend developer

Wyjaśnij różnicę między poleceniami DDL a DML w SQL, podaj przykłady i opisz, jak wpływa to na prawa dostępu i transakcje w praktyce.

Zdaj rozmowy kwalifikacyjne z asystentem AI Hintsage

Odpowiedź

DDL (Data Definition Language) — to język definicji danych, przeznaczony do określania struktury bazy danych (tworzenie, modyfikowanie, usuwanie tabel, schematów, indeksów itp.):

  • Przykłady poleceń: CREATE TABLE, ALTER TABLE, DROP TABLE.
  • Polecenia DDL są zazwyczaj automatycznie zapisywane w bazie danych (autocommit), więc anulowanie zmian jest trudne.

DML (Data Manipulation Language) — to język manipulacji danymi, który działa z zawartością tabel (dodawanie, modyfikowanie, usuwanie, wybieranie wierszy):

  • Przykłady poleceń: INSERT, UPDATE, DELETE, SELECT.
  • Polecenia DML mogą być zazwyczaj owinięte w transakcję i można je cofnąć przed zatwierdzeniem.

Na przykład, różni użytkownicy mogą mieć różne prawa tylko do DML lub tylko do DDL:

  • Zwykłym aplikacjom często zabrania się DDL, aby nie zmieniać przypadkowo struktury bazy danych;
  • DML jest dozwolone do pracy z danymi.

Przykład:

-- DDL: tworzenie tabeli CREATE TABLE users ( id INT PRIMARY KEY, name VARCHAR(100) ); -- DML: wstawianie danych INSERT INTO users (id, name) VALUES (1, 'Ivan');

Pytanie z pułapką

"Czy można cofnąć polecenie DDL (na przykład, DROP TABLE), jeśli zostało wykonane w jawnej transakcji?"

Większość systemów zarządzania bazą danych (np. PostgreSQL, Oracle) obsługuje transakcje dla DDL, ale wiele z nich nie pozwala na cofnięcie poleceń DDL, nawet jeśli są one wyraźnie owinięte w transakcję. W MySQL polecenia DDL zawsze są natychmiast zapisywane.

Przykład:
BEGIN; DROP TABLE employees; ROLLBACK;

W większości przypadków tabela zostanie na zawsze usunięta, nawet pomimo cofnięcia.

Przykłady rzeczywistych błędów z powodu nieznajomości tematu


Historia

Utrata tabeli w środowisku deweloperskim po przypadkowym wykonaniu DROP TABLE — polecenie jest nieodwracalne, pomimo cofnięcia transakcji.


Historia

Organizacja przyznała administracyjne prawa projektowi, który w wyniku błędu spowodował masową zmianę schematu bazy danych przez ALTER, co doprowadziło do długiego przestoju usługi i utraty zamówień.


Historia

Odmówienie praw do DDL nowicjuszom, zespół zapomniał, że procedury do wdrożenia migracji wymagają dostępu do DDL — wydanie nie powiodło się po kilku godzinach śledztwa i pilnego podniesienia ról.