InhaltsverzeichnisKlicke auf den Link, um zur gewünschten Stelle zu navigieren
Dieser Inhalt wurde automatisch aus dem Ukrainischen übersetzt.
DDL (Daten Definitions Language) und DML (Daten Manipulations Language) sind zwei Schlüsselbegriffe im Bereich der relationalen Datenbanken.
DDL (Data Definition Language)
DDL (Data Definition Language) ist eine Datenbeschreibungssprache. Diese Sprache wird verwendet, um die Struktur einer Datenbank zu beschreiben, Objekte in der Datenbank zu erstellen, zu ändern und zu löschen. Hier haben wir es mit Objekten wie Tabellen, Indizes, Schemata usw. zu tun.
Zum Beispiel kann man zum Erstellen einer neuen Tabelle in einer Datenbank in SQL den folgenden Code verwenden:
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
In diesem Beispiel haben wir die DDL-Operation CREATE TABLE verwendet, um eine neue Tabelle mit dem Namen "users" zu erstellen. Die Felder "id", "username" und "email" sind mit ihren Datentypen und Einschränkungen wie NOT NULL und UNIQUE beschrieben. Außerdem haben wir angegeben, dass der Wert für das Feld "created_at" standardmäßig der aktuelle Zeitpunkt (Zeitpunkt der Erstellung) sein wird.
In DDL gibt es mehrere grundlegende Operationen, die verwendet werden, um die Struktur der Datenbank zu definieren und zu ändern:
CREATE: Diese Operation wird verwendet, um neue Objekte in der Datenbank zu erstellen, wie Tabellen, Indizes usw.
ALTER: Mit der ALTER-Operation kann die Struktur bereits vorhandener Objekte in der Datenbank geändert werden, z. B. durch Hinzufügen, Ändern oder Löschen von Spalten in einer Tabelle.
DROP: Diese Operation wird verwendet, um vorhandene Objekte in der Datenbank zu löschen, wie Tabellen, Indizes usw.
TRUNCATE: Die TRUNCATE-Operation wird verwendet, um alle Datensätze aus einer Tabelle zu löschen, während die Tabelle selbst erhalten bleibt.
RENAME: wird verwendet, um den Namen bereits vorhandener Objekte in der Datenbank zu ändern, wie Tabellen, Spalten, Indizes usw.
DML (Data Manipulation Language)
DML (Data Manipulation Language) ist eine Datenmanipulationssprache. Sie wird verwendet, um mit dem Inhalt der Datenbank zu arbeiten, d. h. um Daten in Tabellen zu erstellen, zu aktualisieren, zu löschen und abzurufen (zu suchen).
Schauen wir uns ein Beispiel für die Verwendung von DML-Operationen in SQL an:
-- Hinzufügen eines neuen Benutzers
INSERT INTO users (username, email)
VALUES ('user_name', '[email protected]');
-- Aktualisierung der Benutzerdaten
UPDATE users
SET username = 'new_user_name'
WHERE id = 1;
-- Löschen eines Benutzers
DELETE FROM users
WHERE id = 1;
-- Abrufen von Daten aus der Tabelle
SELECT * FROM users;
In diesen Beispielen verwenden wir die DML-Operationen INSERT, UPDATE, DELETE und SELECT, um einen neuen Datensatz in der Tabelle zu erstellen, die Informationen über den Benutzer zu aktualisieren, den Benutzer zu löschen und alle Benutzer aus der Tabelle abzurufen.
Die grundlegenden DML-Operationen:
INSERT: Diese Operation wird verwendet, um neue Datensätze in der Datenbank hinzuzufügen (zu erstellen).
UPDATE: Die UPDATE-Operation ermöglicht es, die Daten bereits vorhandener Datensätze in der Tabelle zu ändern.
DELETE: Diese Operation wird verwendet, um Datensätze aus der Datenbanktabelle zu löschen.
SELECT: Wird verwendet, um Daten aus den Datenbanktabellen abzurufen (zu suchen).
Unterschied zwischen DML und DDL
Um das Material zu festigen, wiederholen wir den Unterschied zwischen diesen beiden Begriffen.
DDL (Data Definition Language) | DML (Data Manipulation Language)
Definition und Manipulation sind die Hauptunterschiede der Begriffe. Der erste (definition) bezieht sich auf Tabellen (Beschreibung, Erstellung, Anpassung von Tabellen). Der zweite (manipulation) bezieht sich auf Daten, nämlich auf Manipulationen an ihnen (Erstellung, Aktualisierung, Löschung und Suche nach Daten in der Tabelle).
DDL und DML in Migrationen in Ruby on Rails
Beispiel für eine DML-Migration in Ruby on Rails zum Hinzufügen einer neuen Spalte zur Tabelle:
class AddNameToUsers < ActiveRecord::Migration[7.0]
def change
add_column :users, :name, :string
end
end
In dieser Migration verwenden wir die Methode add_column, um eine neue Spalte mit dem Namen "name" und dem Typ "string" zur Tabelle "users" hinzuzufügen.
Beispiel für eine DDL-Migration in Ruby on Rails zur Erstellung einer neuen Tabelle:
class CreateProducts < ActiveRecord::Migration[7.0]
def change
create_table :products do |t|
t.string :name
t.decimal :price
t.timestamps
end
end
end
In dieser Migration verwenden wir die Methode create_table, um eine neue Tabelle "products" mit den Spalten "name", "price" und den Zeitstempelspalten "created_at" und "updated_at" zu erstellen.
Beispiel für eine Migration in Ruby on Rails mit disable_ddl_transaction!
class AddIndexesToProducts < ActiveRecord::Migration[7.0]
disable_ddl_transaction!
def change
add_index :products, :name
add_index :products, :price
end
end
In dieser Migration verwenden wir disable_ddl_transaction!, um die DDL-Transaktion zu deaktivieren, um Indizes in der Tabelle "products" zu erstellen. Dies kann in Situationen nützlich sein, in denen das Erstellen von Indizes viel Zeit in Anspruch nimmt und Sie diese Operation ohne Warten auf das Ende der Transaktion durchführen möchten. Aber was ist eine Transaktion und warum sollte sie deaktiviert werden?
DDL (Data Definition Language) Transaktionen sind Transaktionen, die Operationen umfassen, die die Struktur der Datenbank ändern. Solche Operationen können das Erstellen, Ändern oder Löschen von Tabellen, Spalten, Indizes und anderen Objekten der Datenbank umfassen.
Wenn Sie DDL-Operationen ausführen (z. B. das Erstellen einer Tabelle oder das Hinzufügen einer neuen Spalte), werden diese Operationen in der Regel im Rahmen eines transaktionalen Kontexts durchgeführt. Das bedeutet, dass sie als eine einzige atomare Operation ausgeführt werden - entweder sie wird vollständig ausgeführt oder gar nicht.
In einigen Fällen, insbesondere wenn Sie massive DDL-Operationen durchführen, wie das Hinzufügen von Indizes zu großen Tabellen, kann das Einbeziehen des transaktionalen Kontexts zu Leistungsproblemen führen (da die Tabelle während der Transaktion gesperrt ist, z. B. können Benutzer keine neuen Bestellungen erstellen). In solchen Fällen kann disable_ddl_transaction! in Ruby on Rails-Migrationen verwendet werden, um den transaktionalen Kontext für DDL-Operationen zu deaktivieren. Auf diese Weise werden diese Operationen ohne Warten auf das Ende der Transaktion ausgeführt.
disable_ddl_transaction! ist nützlich, wenn Sie Tabellen während großer Erstellungs- oder Schemaänderungsoperationen nicht sperren möchten. Aber Sie müssen sicherstellen, dass diese Operation tatsächlich sicher außerhalb einer Transaktion ausgeführt werden kann.
Dieser Beitrag hat noch keine Ergänzungen vom Autor.