SQL
SQL Kompaktskript
Einführung in SQL
SQL (Structured Query Language) ist eine Sprache zur Verwaltung und Abfrage relationaler Datenbanken. Sie wird genutzt, um Daten zu speichern, zu bearbeiten und abzufragen. SQL basiert auf relationalen Konzepten, in denen Daten in Tabellen organisiert sind.
SQL besteht aus verschiedenen Kategorien von Befehlen:
- DDL (Data Definition Language) – Definition von Datenbankstrukturen, z. B. CREATE, ALTER, DROP.
- DML (Data Manipulation Language) – Bearbeitung von Daten, z. B. INSERT, UPDATE, DELETE.
- DQL (Data Query Language) – Abfragen von Daten, z. B. SELECT.
- DCL (Data Control Language) – Verwaltung von Benutzerrechten, z. B. GRANT, REVOKE.
- TCL (Transaction Control Language) – Verwaltung von Transaktionen, z. B. COMMIT, ROLLBACK.
SQL wird in vielen relationalen Datenbanksystemen wie MySQL, PostgreSQL, SQLite und Microsoft SQL Server verwendet. Während die Grundlagen universell sind, gibt es systemabhängige Erweiterungen.
Datenbankverwaltung
Datenbank erstellen.
- create database my_db;
Datenbank löschen.
- drop database my_db;
In eine Datenbank wechseln.
- use my_db;
Tabellenverwaltung
Tabelle mit mehreren Spalten erstellen.
- create table my_table (kw int, tests int, labor int, postiv int, prozent float);
Beschreibung einer Tabelle anzeigen.
- desc my_table;
Tabelle löschen.
- drop table my_table;
Alle Werte in einer Tabelle löschen.
- truncate table my_table;
Daten einfügen und bearbeiten
Werte in eine Tabelle einfügen.
- insert into my_table values(11,127457,114,7582,5.95);
Wert in einer Reihe ändern.
- update my_table set labor=154 where kw=14;
Reihe aus der Tabelle löschen.
- delete from my_table where kw=11;
Daten abfragen
Alle Werte einer Tabelle anzeigen.
- select * from my_table;
Bestimmte Spalten ausgeben, wenn eine Bedingung erfüllt ist.
- select kw, prozent from my_table where tests > 500000;
Sortierte Ausgabe der Ergebnisse.
- select * from my_table where tests > 500000 order by labor;
Letzten Wert aus der Tabelle ausgeben.
- select * from my_table order by kw desc limit 1;
Gruppierte Abfragen
Summenberechnung nach Gruppen.
- select sum(AnzahlFall), Altersgruppe from rki_csv where Landkreis = 'SK Zweibrücken' group by Altersgruppe;
Transaktionen in SQL
Transaktionen ermöglichen es, mehrere SQL-Operationen als eine Einheit zu behandeln.
- start transaction;
- update my_table set labor=200 where kw=15;
- commit; -- Änderungen dauerhaft speichern
- rollback; -- Änderungen verwerfen
Automatisierung mit Triggern und Events
Automatische Protokollierung von Einträgen aktivieren.
- create trigger log_insert after insert on my_table for each row insert into log_table (aktion, zeit) values ('INSERT', now());
Regelmäßige Bereinigung alter Daten durch ein Event.
- create event cleanup_old_entries on schedule every 1 day do delete from my_table where kw < 10;
Benutzerverwaltung
Neuen Benutzer anlegen.
- create user 'tuxman'@'localhost' identified by 'Suxer-88';
Benutzerrechte für eine Datenbank vergeben.
- grant all privileges on my_db.* to 'tuxman'@'localhost';
- flush privileges;
Benutzerrechte entziehen.
- revoke all privileges on my_db.* from 'tuxman'@'localhost';
- flush privileges;
Passwort eines Benutzers ändern.
- alter user 'tuxman'@'localhost' identified by 'neuesPasswort';
Liste aller Benutzer ausgeben.
- select user from information_schema.users;
JSON-Unterstützung in SQL
Einige moderne relationale Datenbanken unterstützen JSON-Felder für semi-strukturierte Daten.
JSON-Daten in einer Tabelle speichern.
- create table json_test (id int auto_increment primary key, daten json);
Daten aus JSON-Feld extrahieren.
- select json_extract(daten, '$.name') from json_test;
Fazit
SQL ist eine universelle Sprache zur Verwaltung relationaler Datenbanken. Sie ermöglicht effizientes Speichern, Abrufen und Bearbeiten von Daten und wird in verschiedenen Datenbanksystemen mit leichten Abweichungen verwendet. Die Kombination aus SQL-Grundlagen und spezifischen Erweiterungen macht sie vielseitig einsetzbar.