Vorbereitung: Erstellen einer Testtabelle
Bevor wir mit den Daten beginnen, erstellen wir eine einfache Tabelle für Beispiele:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
age INT,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
SELECT: Daten lesen
Der Befehl SELECT wird verwendet, um Daten aus einer Tabelle abzurufen. Dies ist die häufigste Operation bei der Arbeit mit Datenbanken.
Grundlegende Syntax
SELECT column1, column2 FROM table_name;Anwendungsbeispiele
Alle Spalten auswählen:
SELECT * FROM users;Auswahl bestimmter Spalten:
SELECT name, email FROM users;Verwenden von WHERE zum Filtern:
SELECT * FROM users WHERE age > 25;Sortieren der Ergebnisse mit ORDER BY:
SELECT * FROM users ORDER BY name ASC;
SELECT * FROM users ORDER BY created_at DESC;Begrenzung der Anzahl der Ergebnisse:
SELECT * FROM users LIMIT 10;
SELECT * FROM users LIMIT 10 OFFSET 20; -- пагинацияVerwenden von LIKE für die Vorlagensuche:
SELECT * FROM users WHERE email LIKE '%@gmail.com';
SELECT * FROM users WHERE name LIKE 'А%'; -- имена на букву АAggregatfunktionen:
SELECT COUNT(*) FROM users;
SELECT AVG(age) FROM users;
SELECT MAX(age), MIN(age) FROM users;Gruppierung mit GROUP BY:
SELECT age, COUNT(*) as count
FROM users
GROUP BY age
HAVING COUNT(*) > 1;
EINFÜGEN: Daten hinzufügen
Mit dem Befehl INSERT können Sie neue Datensätze zur Tabelle hinzufügen.
Grundlegende Syntax
INSERT INTO table_name (column1, column2) VALUES (value1, value2);Anwendungsbeispiele
Einfügen eines Eintrags:
INSERT INTO users (name, email, age)
VALUES ('Alexey', 'alexey@example.com', 28);Mehrere Einträge einfügen:
INSERT INTO users (name, email, age) VALUES
('Maria', 'maria@example.com', 25),
('Dmitry', 'dmitry@example.com', 32),
('Elena', 'elena@example.com', 29);Einfügen ohne Angabe aller Spalten:
INSERT INTO users (name, email)
VALUES ('Ivan', 'ivan@example.com');
-- age будет NULL, created_at заполнится автоматическиEinfügen mit ID-Rückgabe:
-- MySQL
INSERT INTO users (name, email, age)
VALUES ('Olga', 'olga@example.com', 27);
SELECT LAST_INSERT_ID();
-- PostgreSQL
INSERT INTO users (name, email, age)
VALUES ('Olga', 'olga@example.com', 27)
RETURNING id;UPDATE: Datenaktualisierung
Der UPDATE-Befehl ändert vorhandene Datensätze in der Tabelle.
Grundlegende Syntax
UPDATE table_name
SET column1 = value1, column2 = value2
WHERE condition;Anwendungsbeispiele
Aktualisierung eines Eintrags:
UPDATE users
SET age = 29
WHERE id = 1;Aktualisierung mehrerer Felder:
UPDATE users
SET name = 'Alexey Petrov', age = 30
WHERE id = 1;Aktualisierung mehrerer Einträge:
UPDATE users
SET age = age + 1
WHERE age < 30;Verwendung von Berechnungen:
UPDATE users
SET email = LOWER(email);Bedingte Aktualisierung mit mehreren Bedingungen:
UPDATE users
SET age = 25
WHERE name = 'Maria' AND email LIKE '%@example.com';Wichtiger Hinweis
Verwenden Sie immer WHERE bei UPDATE! Ohne diese Bedingung werden alle Datensätze in der Tabelle aktualisiert:
-- ОПАСНО! Обновит все записи
UPDATE users SET age = 25;
-- ПРАВИЛЬНО! Обновит только нужные записи
UPDATE users SET age = 25 WHERE id = 1;DELETE: Daten löschen
Der Befehl DELETE löscht Datensätze aus der Tabelle.
Grundlegende Syntax
DELETE FROM table_name WHERE condition;Anwendungsbeispiele
Löschen eines Eintrags:
DELETE FROM users WHERE id = 1;Löschen nach Bedingung:
DELETE FROM users WHERE age < 18;Löschen mit mehreren Bedingungen:
DELETE FROM users
WHERE created_at < '2024-01-01' AND age IS NULL;Alle Einträge löschen (Vorsicht!):
DELETE FROM users; -- удалит все записи
TRUNCATE TABLE users; -- быстрее, но нельзя откатить в транзакцииWichtiger Hinweis
Überprüfen Sie wie bei UPDATE immer, ob bei DELETE ein WHERE vorhanden ist:
-- ОПАСНО! Удалит все записи
DELETE FROM users;
-- ПРАВИЛЬНО! Удалит только нужные записи
DELETE FROM users WHERE id = 1;Transaktionen: Sichere Datenverarbeitung
Bei der Ausführung von INSERT-, UPDATE- und DELETE-Operationen wird empfohlen, Transaktionen zu verwenden, um die Datenintegrität sicherzustellen:
START TRANSACTION;
UPDATE users SET age = 30 WHERE id = 1;
UPDATE users SET age = 28 WHERE id = 2;
-- Если всё хорошо:
COMMIT;
-- Если нужно отменить изменения:
ROLLBACK;Praktische Tipps
Verwenden Sie SELECT vor UPDATE/DELETE
Führen Sie vor dem Ändern oder Löschen von Daten SELECT mit derselben Bedingung aus, um sicherzustellen, dass Sie mit den richtigen Datensätzen arbeiten:
-- Сначала проверяем
SELECT * FROM users WHERE age < 18;
-- Если всё верно, удаляем
DELETE FROM users WHERE age < 18;Leistungsindizes
Erstellen Sie Indizes für Spalten, die häufig in WHERE verwendet werden:
CREATE INDEX idx_email ON users(email);
CREATE INDEX idx_age ON users(age);Vermeiden Sie SELECT *
Geben Sie im Produktionscode bestimmte Spalten anstelle eines Sternchens an:
-- Плохо
SELECT * FROM users;
-- Хорошо
SELECT id, name, email FROM users;Verwenden Sie LIMIT
Begrenzen Sie bei der Arbeit mit großen Tabellen die Anzahl der zurückgegebenen Datensätze:
SELECT * FROM users LIMIT 100;Parametrisierte Anfragen
Verwenden Sie bei der Arbeit mit SQL aus dem Code immer parametrisierte Abfragen, um sich vor SQL-Injections zu schützen:
JavaScript (Node.js)
const userId = 1;
const query = 'SELECT * FROM users WHERE id = ?';
db.query(query, [userId]);Python
user_id = 1
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))PHP (PDO)
$userId = 1;
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$userId]);Teamzusammenführung: ein praktisches Beispiel
Erstellen wir eine kleine Anwendung zur Benutzerverwaltung:
-- Создание пользователя
INSERT INTO users (name, email, age)
VALUES ('Anna', 'anna@example.com', 26);
-- Получение ID нового пользователя
SET @user_id = LAST_INSERT_ID();
-- Чтение данных пользователя
SELECT * FROM users WHERE id = @user_id;
-- Обновление возраста
UPDATE users SET age = 27 WHERE id = @user_id;
-- Проверка обновления
SELECT name, age FROM users WHERE id = @user_id;
-- Удаление пользователя
DELETE FROM users WHERE id = @user_id;
-- Проверка удаления
SELECT COUNT(*) FROM users WHERE id = @user_id; -- должно вернуть 0Befund
Die Befehle SELECT, INSERT, UPDATE und DELETE sind die Grundlage für die Arbeit mit SQL. Nachdem Sie diese Operationen gemeistert haben, können Sie Daten in jeder relationalen Datenbank effektiv verwalten. Denken Sie beim Arbeiten mit UPDATE und DELETE an die Sicherheit, verwenden Sie immer parametrisierte Abfragen im Code und vergessen Sie Transaktionen für kritische Operationen nicht.
Treten Sie der Bildungsplattform bei Kodik - Hier finden Sie interaktive Kurse in Python, JavaScript, HTML, CSS, SQL und anderen Programmiersprachen. Alle Materialien wurden speziell für unerfahrene Entwickler mit praktischen Beispielen und Schritt-für-Schritt-Erklärungen erstellt.
Kodik hat auch ein aktives Telegram-Community, wo Entwickler kommunizieren, Erfahrungen austauschen und sich gegenseitig bei der Lösung von Problemen helfen.
Schließen Sie sich uns an zu uns und starten Sie Ihre Reise in die Programmierung!
