SQL: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= SQL Kompaktskript = == Einführung in SQL == SQL (Structured Query Language) ist eine Sprache zur Verwaltung und Abfrage relationaler Datenbanken. Sie wird…“)
 
Zeile 1: Zeile 1:
= SQL Kompaktskript =
+
=Grundkonzepte relationaler Datenbanken=
  
== Einführung in SQL ==
+
==Was ist eine Datenbank?==
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.
+
Eine Datenbank ist eine strukturierte Sammlung von Daten. Sie dient der langfristigen, konsistenten und kontrollierten Speicherung und Organisation von Informationen.
 +
In relationalen Datenbanken besteht sie aus mehreren logisch verknüpften Tabellen.
  
SQL besteht aus verschiedenen Kategorien von Befehlen:
+
==Was ist eine Tabelle?==
* DDL (Data Definition Language) – Definition von Datenbankstrukturen, z. B. CREATE, ALTER, DROP.
+
Eine Tabelle ist eine strukturierte Anordnung von Daten in Zeilen und Spalten. Sie stellt eine Sammlung gleichartiger Objekte oder Entitäten dar.
* DML (Data Manipulation Language) – Bearbeitung von Daten, z. B. INSERT, UPDATE, DELETE.
+
Jede Tabelle besitzt einen eindeutigen Namen und ist Teil der Datenbank.
* 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.
+
==Was ist eine Zeile?==
 +
Eine Zeile (auch: Tupel, Datensatz) repräsentiert ein einzelnes Objekt oder einen Eintrag in der Tabelle.
 +
Jede Zeile enthält Werte für jede Spalte der Tabelle.
  
== Datenbankverwaltung ==
+
==Was ist eine Spalte?==
Datenbank erstellen.
+
Eine Spalte (auch: Attribut) definiert eine bestimmte Eigenschaft oder ein Datenfeld.
* create database my_db;
+
Jede Spalte hat einen Namen und einen Datentyp (z. B. Ganzzahl, Text, Datum). 
 +
Spaltenstruktur ist für alle Zeilen gleich.
  
Datenbank löschen.
+
==Was ist ein Primärschlüssel?==
* drop database my_db;
+
Ein Primärschlüssel ist eine oder mehrere Spalten, deren Kombination jeden Datensatz eindeutig identifiziert.
 +
Er verhindert doppelte Einträge und ist essenziell für Beziehungen zwischen Tabellen.
  
In eine Datenbank wechseln.
+
==Was ist ein Fremdschlüssel?==
* use my_db;
+
Ein Fremdschlüssel ist eine Spalte, die auf einen Primärschlüssel in einer anderen Tabelle verweist.
 +
Er definiert eine Beziehung zwischen zwei Tabellen und stellt referenzielle Integrität sicher.
  
== Tabellenverwaltung ==
+
==Was ist ein Index?==
Tabelle mit mehreren Spalten erstellen.
+
Ein Index ist eine spezielle Datenstruktur, die das schnelle Suchen und Zugreifen auf Daten ermöglicht. 
* create table my_table (kw int, tests int, labor int, postiv int, prozent float);
+
Er funktioniert ähnlich wie ein Inhaltsverzeichnis in einem Buch. 
 +
Indexe können auf einzelne oder mehrere Spalten gelegt werden.
 +
Ein Primärschlüssel ist immer automatisch indiziert.
  
Beschreibung einer Tabelle anzeigen.
+
==ASCII-Darstellung einer Tabelle==
* desc my_table;
 
  
Tabelle löschen.
+
Hier eine schematische Darstellung:
* drop table my_table;
 
  
Alle Werte in einer Tabelle löschen.
+
+------------+------------+------------+
* truncate table my_table;
+
| ID        | Name      | Alter      |
 +
+------------+------------+------------+
 +
| 1          | Anna      | 30        |
 +
| 2          | Ben        | 45        |
 +
| 3          | Carla      | 22        |
 +
+------------+------------+------------+
  
== Daten einfügen und bearbeiten ==
+
Legende:
Werte in eine Tabelle einfügen.
+
* Tabelle: rechteckige Anordnung
* insert into my_table values(11,127457,114,7582,5.95);
+
* Spalten: ID, Name, Alter
 
+
* Zeilen: einzelne Einträge (Datensätze)
Wert in einer Reihe ändern.
+
* ID: könnte Primärschlüssel sein
* 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.
 

Version vom 22. März 2025, 07:44 Uhr

Grundkonzepte relationaler Datenbanken

Was ist eine Datenbank?

Eine Datenbank ist eine strukturierte Sammlung von Daten. Sie dient der langfristigen, konsistenten und kontrollierten Speicherung und Organisation von Informationen. In relationalen Datenbanken besteht sie aus mehreren logisch verknüpften Tabellen.

Was ist eine Tabelle?

Eine Tabelle ist eine strukturierte Anordnung von Daten in Zeilen und Spalten. Sie stellt eine Sammlung gleichartiger Objekte oder Entitäten dar. Jede Tabelle besitzt einen eindeutigen Namen und ist Teil der Datenbank.

Was ist eine Zeile?

Eine Zeile (auch: Tupel, Datensatz) repräsentiert ein einzelnes Objekt oder einen Eintrag in der Tabelle. Jede Zeile enthält Werte für jede Spalte der Tabelle.

Was ist eine Spalte?

Eine Spalte (auch: Attribut) definiert eine bestimmte Eigenschaft oder ein Datenfeld. Jede Spalte hat einen Namen und einen Datentyp (z. B. Ganzzahl, Text, Datum). Spaltenstruktur ist für alle Zeilen gleich.

Was ist ein Primärschlüssel?

Ein Primärschlüssel ist eine oder mehrere Spalten, deren Kombination jeden Datensatz eindeutig identifiziert. Er verhindert doppelte Einträge und ist essenziell für Beziehungen zwischen Tabellen.

Was ist ein Fremdschlüssel?

Ein Fremdschlüssel ist eine Spalte, die auf einen Primärschlüssel in einer anderen Tabelle verweist. Er definiert eine Beziehung zwischen zwei Tabellen und stellt referenzielle Integrität sicher.

Was ist ein Index?

Ein Index ist eine spezielle Datenstruktur, die das schnelle Suchen und Zugreifen auf Daten ermöglicht. Er funktioniert ähnlich wie ein Inhaltsverzeichnis in einem Buch. Indexe können auf einzelne oder mehrere Spalten gelegt werden. Ein Primärschlüssel ist immer automatisch indiziert.

ASCII-Darstellung einer Tabelle

Hier eine schematische Darstellung:

+------------+------------+------------+
| ID         | Name       | Alter      |
+------------+------------+------------+
| 1          | Anna       | 30         |
| 2          | Ben        | 45         |
| 3          | Carla      | 22         |
+------------+------------+------------+

Legende:

  • Tabelle: rechteckige Anordnung
  • Spalten: ID, Name, Alter
  • Zeilen: einzelne Einträge (Datensätze)
  • ID: könnte Primärschlüssel sein