SQL (MySQL) Grundlagen
Grundlagen für SQL(MySQL)
1. Datenbank und Tabelle erstellen:
-- Datenbank erstellen
CREATE DATABASE IF NOT EXISTS meine_datenbank;
-- Tabelle erstellen
USE meine_datenbank;
CREATE TABLE IF NOT EXISTS meine_tabelle (
id INT PRIMARY KEY,
name VARCHAR(255),
alter INT
);
2. Datensatz einfügen:
INSERT INTO meine_tabelle (id, name, alter)
VALUES (1, 'Max Mustermann', 30);
3. Daten abfragen:
SELECT * FROM meine_tabelle;
4. Bedingte Abfrage (WHERE-Klausel):
SELECT * FROM meine_tabelle WHERE alter > 25;
5. Daten aktualisieren:
UPDATE meine_tabelle SET alter = 31 WHERE id = 1;
6. Daten löschen:
DELETE FROM meine_tabelle WHERE id = 1;
7. Join (INNER JOIN):
SELECT t1.id, t1.name, t2.adresse
FROM tabelle1 t1
INNER JOIN tabelle2 t2 ON t1.id = t2.id;
8. Join (LEFT JOIN):
SELECT t1.id, t1.name, t2.adresse
FROM tabelle1 t1
LEFT JOIN tabelle2 t2 ON t1.id = t2.id;
9. Unterabfrage (Subquery):
SELECT spalte1, spalte2
FROM tabelle1
WHERE spalte1 IN (SELECT spalte1 FROM tabelle2);
10. Aggregatfunktion (COUNT):
SELECT COUNT(*) FROM meine_tabelle;
11. Transaktionen:
-- Transaktion starten
START TRANSACTION;
-- SQL-Befehle hier ausführen
-- Transaktion beenden (Commit)
COMMIT;
-- Transaktion rückgängig machen (Rollback)
ROLLBACK;
12. Index erstellen:
CREATE INDEX index_name ON meine_tabelle(spalte);
13. Datenbank löschen:
-- Datenbank löschen
DROP DATABASE IF EXISTS meine_datenbank;
14. Tabelle löschen:
-- Tabelle löschen
DROP TABLE IF EXISTS meine_tabelle;
15. Bedingte Abfrage (AND, OR):
SELECT * FROM meine_tabelle WHERE alter > 25 AND geschlecht = 'weiblich';
SELECT * FROM meine_tabelle WHERE ort = 'Berlin' OR ort = 'Hamburg';
16. Bedingte Abfrage (LIKE):
-- Alle Namen, die mit "M" beginnen
SELECT * FROM meine_tabelle WHERE name LIKE 'M%';
-- Alle Namen, die "e" als dritten Buchstaben haben
SELECT * FROM meine_tabelle WHERE name LIKE '__e%';
17. Sortieren (ORDER BY):
-- Aufsteigend nach Alter sortieren
SELECT * FROM meine_tabelle ORDER BY alter ASC;
-- Absteigend nach Namen sortieren
SELECT * FROM meine_tabelle ORDER BY name DESC;
18. Datensätze gruppieren (GROUP BY):
-- Anzahl der Personen pro Ort ermitteln
SELECT ort, COUNT(*) as anzahl_personen FROM meine_tabelle GROUP BY ort;
19. Aggregatfunktionen (SUM, AVG, MIN, MAX):
-- Summe der Gehälter berechnen
SELECT SUM(gehalt) FROM mitarbeiter;
-- Durchschnittsalter berechnen
SELECT AVG(alter) FROM meine_tabelle;
-- Älteste Person finden
SELECT MAX(alter) FROM meine_tabelle;
20. Daten aktualisieren (CASE-Anweisung):
-- Alter basierend auf einer Bedingung aktualisieren
UPDATE meine_tabelle
SET alter = CASE
WHEN geschlecht = 'weiblich' THEN alter + 1
ELSE alter
END;
21. Benutzer und Berechtigungen erstellen (für Administratoren):
-- Benutzer erstellen
CREATE USER 'neuer_benutzer'@'localhost' IDENTIFIED BY 'passwort';
-- Berechtigungen zuweisen
GRANT SELECT, INSERT, UPDATE ON meine_datenbank.meine_tabelle TO 'neuer_benutzer'@'localhost';
-- Berechtigungen widerrufen
REVOKE INSERT ON meine_datenbank.meine_tabelle FROM 'neuer_benutzer'@'localhost';
-- Benutzer löschen
DROP USER 'neuer_benutzer'@'localhost';
22. Datenbankverbindung herstellen:
-- Verbindung zur Datenbank herstellen
mysql -u benutzername -p passwort -h host -D datenbankname
23. Zeichenkodierung festlegen:
-- Zeichenkodierung in der Datenbank setzen
ALTER DATABASE meine_datenbank CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- Zeichenkodierung in der Tabelle setzen
ALTER TABLE meine_tabelle CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
24. Sichere Passwörter verwenden:
-- Ein sicheres Passwort setzen
ALTER USER 'benutzer'@'localhost' IDENTIFIED WITH mysql_native_password BY 'sicheres_passwort';
25. Backups erstellen und wiederherstellen:
-- Backup erstellen
mysqldump -u benutzername -p passwort meine_datenbank > backup.sql
-- Datenbank wiederherstellen
mysql -u benutzername -p passwort meine_datenbank < backup.sql
26. Indizes richtig verwenden:
-- Indexe anlegen
CREATE INDEX index_name ON meine_tabelle(spalte);
-- Indexe entfernen
DROP INDEX index_name ON meine_tabelle;
27. Views erstellen:
-- View erstellen
CREATE VIEW mein_view AS
SELECT spalte1, spalte2 FROM meine_tabelle WHERE bedingung;
-- View aktualisieren
CREATE OR REPLACE VIEW mein_view AS
SELECT spalte1, spalte2 FROM meine_tabelle WHERE bedingung;
28. Trigger definieren:
-- Trigger erstellen
DELIMITER //
CREATE TRIGGER mein_trigger BEFORE INSERT ON meine_tabelle
FOR EACH ROW
BEGIN
-- Trigger-Code hier
END;
//
-- Trigger entfernen
DROP TRIGGER IF EXISTS mein_trigger;
29. Datenbankrechte verwalten:
-- Berechtigungen zuweisen
GRANT SELECT, INSERT ON meine_datenbank.meine_tabelle TO 'benutzer'@'localhost';
-- Berechtigungen widerrufen
REVOKE INSERT ON meine_datenbank.meine_tabelle FROM 'benutzer'@'localhost';
30. Fehlerbehandlung mit Stored Procedures:
-- Stored Procedure erstellen
DELIMITER //
CREATE PROCEDURE meine_prozedur()
BEGIN
-- Prozedur-Code hier
END;
//
-- Stored Procedure aufrufen
CALL meine_prozedur();
31. Verwendung der IN-Klausel:
Abfrage nach bestimmten IDs:
SELECT * FROM meine_tabelle WHERE id IN (1, 3, 5);
Abfrage mit einer Unterabfrage:
SELECT * FROM meine_tabelle WHERE id IN (SELECT id FROM andere_tabelle WHERE bedingung);
Verwendung mit Zeichenketten:
SELECT * FROM meine_tabelle WHERE name IN ('Max', 'Anna', 'Peter');
Verwendung mit Subquery und NOT IN:
SELECT * FROM meine_tabelle WHERE id NOT IN (SELECT id FROM andere_tabelle WHERE bedingung);