Sql
Links
Zielsetzung
Einführung in die Datenbanksprache Structured Query Language. Damit kann man Datenbanktabellen erstellen, Daten eintragen, ändern, löschen und abfragen.
Es gibt Standards für SQL, der Kurs formuliert die Beispiele im Dialekt von MariaDB (oder MySql).
Tabellen
Eine Relation, auch Datenbanktabelle genannt, ist ein Menge von Zeilen, die in **gleich viel Spalten** je Zeile unterteilt ist.
Mit Relationen werden Entitäten (materielle und ideelle Dinge, Sachen oder Ideen) mittels Attributen beschrieben. In Relationen können beliebig viele Entitäten gespeichert werden.
Beispiel
Eine Adresse ist eine Entität, die aus den Attributen Name, Vorname, Ort, Postleitzahl, Straße und Hausnummer besteht.
Erstellen einer Relation
create table users (
id integer primary key auto_increment;
name varchar(64),
email varchar(255),
password varchar(255),
last_login timestamp
);
- Konvention: Wir vergeben immer eine "technische Id" als Identifikation. Weil alle anderen Attribute können sich evt. ändern.
- Konvention: Tabellennamen sind immer in Mehrzahl.
id integer primary key auto_increment
: Das Attribut "id" ist eine Zahl, die den Benutzer identifiziert, das wird Primärschlüssel genannt. Die Zahl wird automatisch generiert (auto_increment)name varchar(64)
: Das Attribut heißt name, der Datentyp ist eine Zeichenkette mit maximaler Länge 64.last_login timestamp
: Mit diesem Attribut wird der Zeitpunkt (Datum + Uhrzeit) des letzten Logins festgehalten.
Datentypen
- Texttypen:
- char(<length>) Zeichenkette mit fester Länge. Beispiel deutsche Postleitzahl:
plz char(5)
- text: Variable Zeichenkette bis 65535 Zeichen.
- longtext Variable Zeichenkette bis 4 GByte
- char(<length>): Zeichenkette mit variabler Länge. Beispiel
name varchar(64)
- char(<length>) Zeichenkette mit fester Länge. Beispiel deutsche Postleitzahl:
- Zahltypen:
- decimal(<length>) oder decimal(<length>, <precisision>): Dezimalzahl mit maximaler Länge von <length> und maximal <precisision> Nachkommastellen. Beispiel:
price decimal(13,2)
- float : Gleitpunktzahlen Beispiel:
article_weight float
- integer oder int: eine ganze Zahl. Beispiel:
birth_year int
- decimal(<length>) oder decimal(<length>, <precisision>): Dezimalzahl mit maximaler Länge von <length> und maximal <precisision> Nachkommastellen. Beispiel:
- Datumstypen:
- date: nur Datum. Beispiel:
birthday date
- datetime: Datum und Uhrzeit. Beispiel:
term datetime
- timestamp: Zeitpunkt mit Genauigkeit 1 Sekunde, gilt nur ab 1.1.1970. Beispiel:
created_at timestamp
- date: nur Datum. Beispiel:
- Sonstiges:
- bool: ein Wahrheitswert. Beispiel:
active bool
- bool: ein Wahrheitswert. Beispiel: