Cała oryginalna treść jest tworzona po ukraińsku. Nie wszystkie treści zostały jeszcze przetłumaczone. Niektóre posty mogą być dostępne tylko po ukraińsku.Dowiedz się więcej

Co to jest DDL (Data Definition Language) i DML (Data Manipulation Language)? Kiedy i do czego są używane?

Okładka posta: Co to jest DDL (Data Definition Language) i DML (Data Manipulation Language)? Kiedy i do czego są używane?
Ta treść została automatycznie przetłumaczona z ukraińskiego.
DDL (Definicja Danych Language) oraz DML (Dane Manipulacyjne Language) - to dwa kluczowe pojęcia w dziedzinie relacyjnych baz danych. 

DDL (Definicja Danych)

DDL (Definicja Danych) - język opisu danych. Język ten jest używany do opisu struktury bazy danych, tworzenia, modyfikowania i usuwania obiektów bazy danych. Tutaj mamy do czynienia z takimi obiektami, jak tabele, indeksy, schematy itp.
Na przykład, aby stworzyć nową tabelę w bazie danych w SQL, można użyć następującego kodu:
CREATE TABLE users (
    id INT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
W tym przykładzie użyliśmy operacji DDL CREATE TABLE, aby stworzyć nową tabelę o nazwie "users". Pola "id", "username" oraz "email" są opisane z ich typami danych i ograniczeniami, takimi jak NOT NULL oraz UNIQUE. Ponadto, określiliśmy, że wartość dla pola "created_at" będzie domyślnie aktualnym czasem (czas w momencie tworzenia).
W DDL istnieje kilka podstawowych operacji, które są używane do definiowania i zmiany struktury bazy danych:
CREATE: Ta operacja jest używana do tworzenia nowych obiektów bazy danych, takich jak tabele, indeksy itp.
ALTER: Za pomocą operacji ALTER można zmieniać strukturę już istniejących obiektów bazy danych, na przykład dodawać, zmieniać lub usuwać kolumny w tabeli.
DROP: Ta operacja jest używana do usuwania istniejących obiektów bazy danych, takich jak tabele, indeksy itp.
TRUNCATE: Operacja TRUNCATE jest używana do usuwania wszystkich rekordów z tabeli, zachowując samą tabelę.
RENAME: jest używana do zmiany nazw już istniejących obiektów bazy danych, takich jak tabele, kolumny, indeksy itp.

DML (Manipulacja Danymi)

DML (Manipulacja Danymi) - język manipulacji danymi. Jest używany do pracy z zawartością bazy danych, czyli do tworzenia, aktualizacji, usuwania i wybierania (wyszukiwania) danych z tabel.
Przyjrzyjmy się przykładom użycia operacji DML w SQL:
-- Dodanie nowego użytkownika
INSERT INTO users (username, email)
VALUES ('user_name', '[email protected]');

-- Aktualizacja danych użytkownika
UPDATE users
SET username = 'new_user_name'
WHERE id = 1;

-- Usunięcie użytkownika
DELETE FROM users
WHERE id = 1;

-- Wybór danych z tabeli
SELECT * FROM users;
W tych przykładach używamy operacji DML INSERT, UPDATE, DELETE oraz SELECT do tworzenia nowego rekordu w tabeli, aktualizacji informacji o użytkowniku, usunięcia użytkownika oraz uzyskania wszystkich użytkowników z tabeli odpowiednio.
Podstawowe operacje DML:
INSERT: Ta operacja jest używana do dodawania (tworzenia) nowych rekordów w bazie danych.
UPDATE: Operacja UPDATE pozwala na zmianę danych już istniejących rekordów w tabeli.
DELETE: Ta operacja jest używana do usuwania rekordów z tabeli bazy danych.
SELECT: Używana do wybierania (wyszukiwania) danych z tabel bazy danych.

Różnica między DML a DDL

Aby utrwalić materiał, powtórzmy różnicę między tymi dwoma terminami. 
DDL (Definicja Danych) | DML (Manipulacja Danymi)
Definicja i Manipulacja - główne różnice terminów. Pierwszy (definicja) dotyczy tabel (opisu, tworzenia, konfiguracji tabel). Drugi (manipulacja) dotyczy danych, a konkretnie manipulacji nimi (tworzenie, aktualizacja, usuwanie i wyszukiwanie danych w tabeli). 

DDL i DML w migracjach w Ruby on Rails

Przykład migracji DML w Ruby on Rails do dodania nowej kolumny do tabeli:
class AddNameToUsers < ActiveRecord::Migration[7.0]
  def change
    add_column :users, :name, :string
  end
end
W tej migracji używamy metody add_column, aby dodać nową kolumnę o nazwie "name" i typie "string" do tabeli "users".
Przykład migracji DDL w Ruby on Rails do stworzenia nowej tabeli:
class CreateProducts < ActiveRecord::Migration[7.0]
  def change
    create_table :products do |t|
      t.string :name
      t.decimal :price

      t.timestamps
    end
  end
end
W tej migracji używamy metody create_table, aby stworzyć nową tabelę "products" z kolumnami "name", "price" oraz znacznikami czasu "created_at" i "updated_at".
Przykład migracji w Ruby on Rails z disable_ddl_transaction!
class AddIndexesToProducts < ActiveRecord::Migration[7.0]
  disable_ddl_transaction!

  def change
    add_index :products, :name
    add_index :products, :price
  end
end
W tej migracji używamy disable_ddl_transaction!, aby wyłączyć transakcję DDL dla tworzenia indeksów na tabeli "products". Może to być przydatne w sytuacjach, gdy tworzenie indeksów zajmuje dużo czasu i chcesz wykonać tę operację bez oczekiwania na zakończenie transakcji. Ale co to jest transakcja i dlaczego należy ją wyłączyć?
Transakcje DDL (Definicja Danych) - to transakcje, które obejmują operacje zmieniające strukturę bazy danych. Takie operacje mogą obejmować tworzenie, modyfikowanie lub usuwanie tabel, kolumn, indeksów i innych obiektów bazy danych.
Kiedy wykonujesz operacje DDL (na przykład tworzenie tabeli lub dodawanie nowej kolumny), te operacje zazwyczaj są wykonywane w ramach kontekstu transakcyjnego. Oznacza to, że będą one realizowane jako jedna atomowa operacja - albo zostaną wykonane w całości, albo nie zostaną wykonane wcale.
Jednak w niektórych przypadkach, szczególnie gdy wykonujesz masowe operacje DDL, takie jak dodawanie indeksów do dużych tabel, włączenie kontekstu transakcyjnego może prowadzić do problemów z wydajnością (ponieważ tabela będzie zablokowana na czas transakcji, na przykład użytkownicy nie będą mogli składać nowych zamówień).
 
W takich przypadkach można używać disable_ddl_transaction! w migracjach Ruby on Rails, aby wyłączyć kontekst transakcyjny dla operacji DDL. W ten sposób te operacje będą wykonywane bez oczekiwania na zakończenie transakcji.
disable_ddl_transaction! jest wygodne do używania, gdy chcesz uniknąć blokowania tabel podczas dużych operacji tworzenia lub zmiany schematu bazy danych. Ale musisz być pewny, że tę operację naprawdę można bezpiecznie wykonać poza transakcją.

Ten post nie ma jeszcze żadnych dodatków od autora.

5 mar 19:18

Co oznacza HA (Wysoka Dostępność)?

meme code
meme code@memecode
5 mar 19:29

Czym różni się High Availability od Scalability?

meme code
meme code@memecode
5 mar 19:38

Czym jest Service Discovery w IT?

meme code
meme code@memecode
7 mar 18:36

Czym jest klasteryzacja / clustering w IT?

meme code
meme code@memecode
7 mar 18:41

Czym jest odporność na awarie / Fault Tolerance w IT?

meme code
meme code@memecode
22 mar 11:24

Czym jest CI/CD w rozwoju oprogramowania?

meme code
meme code@memecode
27 mar 18:47

Co to jest transakcja atomowa (atomic transaction)?

meme code
meme code@memecode
Co to jest TCL (Transaction Control Language), DCL (Data Control Language) i DQL (Data Query Language)
27 mar 19:04

Co to jest TCL (Transaction Control Language), DCL (Data Control Language) i DQL (Data Query Language)

meme code
meme code@memecode
2 kwi 07:17

Czym jest współbieżność w IT?

meme code
meme code@memecode
3 kwi 06:17

Czym jest zarządzanie procesami (Process Management) w tworzeniu oprogramowania?

meme code
meme code@memecode
Czym są zmienne środowiskowe w rozwoju oprogramowania?
3 kwi 06:31

Czym są zmienne środowiskowe w rozwoju oprogramowania?

meme code
meme code@memecode
3 kwi 06:49

Co to jest SSR (Renderowanie po stronie serwera)?

meme code
meme code@memecode