Wesentliche DDL- und DML-Befehle: Erstellen, Auswählen, Aktualisieren, Löschen
Die Arbeit mit Datenbanken, insbesondere relationalen wie MySQL, beinhaltet grundlegend die Definition der Struktur Ihrer Daten und anschließend die Interaktion mit diesen Daten. Dieser Prozess wird typischerweise in zwei Hauptkategorien von SQL-Befehlen unterteilt: Data Definition Language (DDL) und Data Manipulation Language (DML). DDL-Befehle werden verwendet, um Datenbankobjekte wie Tabellen zu definieren und zu verwalten, während DML-Befehle dazu dienen, Datensätze innerhalb dieser Tabellen einzufügen, abzurufen, zu ändern und zu löschen.
Dieser Leitfaden führt Sie durch die wichtigsten MySQL-DDL- und DML-Befehle: CREATE TABLE zum Definieren Ihrer Datenstrukturen und INSERT, SELECT, UPDATE und DELETE zur Manipulation der Daten selbst. Das Beherrschen dieser Befehle ist ein entscheidender Schritt für jeden, der eine MySQL-Datenbank effektiv verwalten und nutzen möchte.
Data Definition Language (DDL): Tabellen erstellen
DDL-Befehle betreffen das Schema und die Struktur Ihrer Datenbankobjekte. Der grundlegendste DDL-Befehl zur Datenspeicherung ist CREATE TABLE, mit dem Sie den Bauplan für Ihre Daten definieren können.
CREATE TABLE Syntax
Die grundlegende Syntax zum Erstellen einer Tabelle beinhaltet die Angabe des Tabellennamens und anschließend die Definition ihrer Spalten, einschließlich ihrer Datentypen und etwaiger Einschränkungen (Constraints).
CREATE TABLE table_name (
column1 datatype constraints,
column2 datatype constraints,
column3 datatype constraints,
...
);
table_name: Der Name, den Sie Ihrer Tabelle geben möchten. Er sollte innerhalb der Datenbank eindeutig sein.column_name: Der Name jedes einzelnen Feldes innerhalb der Tabelle.datatype: Gibt den Datentyp an, den die Spalte speichern wird (z.B.INTfür Ganzzahlen,VARCHAR(255)für Zeichenketten variabler Länge,DATEfür Daten,DECIMAL(10, 2)für präzise Dezimalzahlen).constraints: Regeln, die auf eine Spalte angewendet werden, um die Datenintegrität sicherzustellen. Gängige Einschränkungen (Constraints) umfassen:NOT NULL: Stellt sicher, dass eine Spalte keinen NULL-Wert haben kann.UNIQUE: Stellt sicher, dass alle Werte in einer Spalte eindeutig sind.PRIMARY KEY: Eine Kombination ausNOT NULLundUNIQUE. Jede Tabelle sollte einen Primärschlüssel haben, um jede Zeile eindeutig zu identifizieren.FOREIGN KEY: Verknüpft eine Spalte in einer Tabelle mit dem Primärschlüssel einer anderen Tabelle, wodurch die referentielle Integrität erzwungen wird.DEFAULT value: Legt einen Standardwert für eine Spalte fest, wenn bei der Einfügung kein Wert angegeben wird.
CREATE TABLE Beispiel
Erstellen wir eine einfache products-Tabelle, um Informationen über Artikel in einem Inventar zu speichern:
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
product_name VARCHAR(100) NOT NULL UNIQUE,
category VARCHAR(50),
price DECIMAL(10, 2) NOT NULL,
stock_quantity INT DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
In diesem Beispiel:
* product_id ist eine Ganzzahl, die automatisch inkrementiert wird und als Primärschlüssel dient.
* product_name ist eine Pflichtzeichenfolge, die eindeutig sein muss.
* price ist eine erforderliche Dezimalzahl.
* stock_quantity erhält den Standardwert 0, wenn nicht angegeben.
* created_at zeichnet den Zeitstempel der Zeilenerstellung auf.
Data Manipulation Language (DML): Arbeiten mit Daten
DML-Befehle werden verwendet, um die Datensätze (Zeilen) innerhalb Ihrer Datenbanktabellen zu verwalten. Sie sind die am häufigsten verwendeten Befehle für den täglichen Datenbankbetrieb.
INSERT Befehl: Neue Daten hinzufügen
Der INSERT-Befehl wird verwendet, um neue Datenzeilen in eine Tabelle einzufügen.
INSERT Syntax
Es gibt mehrere Möglichkeiten, INSERT zu verwenden:
-
Werte für alle Spalten angeben:
sql INSERT INTO table_name VALUES (value1, value2, value3, ...);
Die Reihenfolge der Werte muss der Reihenfolge der Spalten in der Tabellendefinition entsprechen. -
Werte für bestimmte Spalten angeben:
sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
Dies wird im Allgemeinen bevorzugt, da es lesbarer ist und weniger fehleranfällig, wenn sich die Tabellenstruktur ändert.
INSERT Beispiel
Verwenden unserer products-Tabelle:
-- Werte für alle Spalten einfügen (unter Annahme von AUTO_INCREMENT für product_id)
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES ('Laptop Pro', 'Electronics', 1200.50, 50);
-- Werte für bestimmte Spalten einfügen
INSERT INTO products (product_name, price)
VALUES ('Mechanical Keyboard', 75.99);
-- Mehrere Zeilen gleichzeitig einfügen
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES
('Ergonomic Mouse', 'Electronics', 25.00, 120),
('Desk Lamp', 'Home Goods', 45.00, 75);
SELECT Befehl: Daten abrufen
Der SELECT-Befehl ist der Eckpfeiler der Datenabfrage. Er ermöglicht es Ihnen, Ihre Datenbank abzufragen und spezifische Daten basierend auf verschiedenen Kriterien abzurufen.
SELECT Syntax
SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name [ASC|DESC]
LIMIT number;
column1, column2, ...: Die Spalten, die Sie abrufen möchten. Verwenden Sie*, um alle Spalten auszuwählen.FROM table_name: Die Tabelle, die Sie abfragen.WHERE condition: (Optional) Filtert die Zeilen basierend auf einer angegebenen Bedingung. Bedingungen können Vergleichsoperatoren (=,!=,>,<,>=,<=), logische Operatoren (AND,OR,NOT) und Mustervergleich (LIKE) umfassen.ORDER BY column_name [ASC|DESC]: (Optional) Sortiert das Ergebnisset nach einer oder mehreren Spalten.ASCfür aufsteigend (Standard),DESCfür absteigend.LIMIT number: (Optional) Begrenzt die Anzahl der zurückgegebenen Zeilen.
SELECT Beispiele
-- Alle Spalten für alle Produkte auswählen
SELECT *
FROM products;
-- Nur den Namen und den Preis von Produkten auswählen
SELECT product_name, price
FROM products;
-- Produkte in der Kategorie 'Elektronik' auswählen
SELECT *
FROM products
WHERE category = 'Electronics';
-- Produkte mit einem Preis über 100 auswählen, absteigend nach Preis sortiert
SELECT product_name, price
FROM products
WHERE price > 100
ORDER BY price DESC;
-- Die 5 teuersten Produkte auswählen
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;
-- Produkte auswählen, deren Name mit 'L' beginnt
SELECT *
FROM products
WHERE product_name LIKE 'L%';
UPDATE Befehl: Bestehende Daten ändern
Der UPDATE-Befehl ermöglicht es Ihnen, bestehende Datensätze in einer Tabelle zu ändern.
UPDATE Syntax
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
table_name: Die Tabelle, die die zu aktualisierenden Datensätze enthält.SET column1 = value1, ...: Gibt an, welche Spalten aktualisiert werden sollen und deren neue Werte.WHERE condition: Entscheidend! Diese Klausel bestimmt, welche Zeilen aktualisiert werden. Wird sie weggelassen, werden alle Zeilen in der Tabelle aktualisiert.
UPDATE Beispiele
-- Den Preis des 'Laptop Pro' um 50 erhöhen
UPDATE products
SET price = price + 50.00
WHERE product_name = 'Laptop Pro';
-- Kategorie und Lagerbestand für die 'Mechanische Tastatur' aktualisieren
UPDATE products
SET category = 'Accessories', stock_quantity = 100
WHERE product_name = 'Mechanical Keyboard';
-- **WARNUNG**: Dies würde den Preis ALLER Produkte auf 10.00 aktualisieren
-- UPDATE products
-- SET price = 10.00;
Tipp: Verwenden Sie beim Aktualisieren immer eine WHERE-Klausel, um sicherzustellen, dass Sie nur die beabsichtigten Datensätze ändern. Testen Sie Ihre WHERE-Klausel zuerst mit einer SELECT-Anweisung, um zu überprüfen, ob sie die richtigen Zeilen anspricht.
DELETE Befehl: Daten entfernen
Der DELETE-Befehl wird verwendet, um Zeilen aus einer Tabelle zu entfernen.
DELETE Syntax
DELETE FROM table_name
WHERE condition;
table_name: Die Tabelle, aus der Zeilen entfernt werden sollen.WHERE condition: Entscheidend! Diese Klausel gibt an, welche Zeilen gelöscht werden sollen. Wird sie weggelassen, werden alle Zeilen in der Tabelle gelöscht.
DELETE Beispiele
-- Das Produkt mit dem Namen 'Desk Lamp' löschen
DELETE FROM products
WHERE product_name = 'Desk Lamp';
-- Alle Produkte löschen, deren Lagerbestand aufgebraucht ist (stock_quantity ist 0)
DELETE FROM products
WHERE stock_quantity = 0;
-- **WARNUNG**: Dies würde ALLE Datensätze aus der `products`-Tabelle löschen!
-- DELETE FROM products;
Warnung: Ähnlich wie bei UPDATE ist das Weglassen der WHERE-Klausel in einer DELETE-Anweisung ein zerstörerischer Vorgang, der alle Daten aus der Tabelle entfernt. Mit äußerster Vorsicht verwenden.
Zusammenfassung
Das Verständnis und der effektive Einsatz von DDL- und DML-Befehlen ist grundlegend für die Datenbankverwaltung. CREATE TABLE ermöglicht es Ihnen, die Struktur Ihrer Daten zu definieren, während INSERT, SELECT, UPDATE und DELETE Ihnen ermöglichen, diese Daten zu befüllen, abzufragen, zu ändern und zu verwalten.
Durch das Üben dieser Befehle mit klaren WHERE-Klauseln, insbesondere für UPDATE und DELETE, können Sie eine solide Grundlage für die Arbeit mit MySQL-Datenbanken schaffen und die Integrität und Genauigkeit Ihrer Daten sicherstellen. Denken Sie immer daran, Ihre Daten zu sichern, bevor Sie potenziell destruktive Operationen durchführen.