====== SQL-Datenbanken ======
''Hinweis:'' Diese Seite erhebt keinen Anspruch auf Vollständigkeit, es handelt sich nur um eine Sammlung einzelner Informationen.
===== MySQL Dokumentation =====
[[https://dev.mysql.com/doc/refman/8.0/en/|MySQL 8.0 Reference Manual (Externer Link)]]
-----
==== Wissenswertes ====
=== NULL ===
Der **null** Wert in SQL wird verwendet um ein Attributsfeld eines Datensatzes als **leer** zu kennzeichnen.
=== NOT NULL ===
**not null** als Wert bzw. Defaultwert besagt, dass das betreffende Datenfeld **nicht leer bleiben darf**. \\
Ist ein Feld als Primary Key gekennzeichnet wird der Defaultwert automatisch auf not null gesetzt.
=== A_I (Auto Inkrement) ===
Auto Inkrement (AI) Steht für ein automatisches "hochzählen" einer Zahl um einen vorgegebenen Wert. Meistens wird um 1 hochgezählt. \\
- Es kann **NUR** der Primary Key als Auto Increment Feld definiert werden. \\
- Der Startwert für Auto Increment kann **NUR NACHTRÄGLICH** dem bereits aktivierten Auto Increment hinzugefügt werden.
=== " " und ' ' ===
''**!!!!!!DIESER ABSCHNITT IST NICHT GANZ RICHTIG UND MUSS ÜBERARBEITET WERDEN!!!!!!**''
"Werte" werden zwischen " " gesetzt,
'Spalten' sowie 'Attribute' zwischen ' '
-----
==== MySQL Datentypen ====
=== Nummern und Zahlen ===
''tinyint'' Wird für Boolean verwendet, Wert 0 = False -- Werte 1, 2, 3, .... 254, 255 = True \\
Hintergrund: in SQL gibt es Boolean nicht als eigenständigen Datentypen, daher wird TINYINT verwendet.
''int'' Standarddatentyp für **ganze** Zahlen bis 10 Stellen (bzw. 11 Stellen bei negativen Zahlen für das -)
''bigint'' Datentyp für große ganze Zahlen bis 2^54-1 Stellen
''double (M, D)'' Datentyp für Gleitkommazahlen, M gibt die Gesamte Anzahl Stellen an, D gibt die Anzahl Stellen **nach** dem Komma an.
''decimal (M, D)'' -wie double
''numeric (M, D)'' -wie double
''float (M, D)'' - wie double
=== Zeichenketten===
''char (L)'' Datentyp für Zeichenketten L steht für die Anzahl Zeichen (bis 255) die dieses Feld aufnehmen kann.
''varchar (L)'' Wie char allerdings bis zu 65.535 Zeichen
=== Zeit und Datum ===
''date'' Datentyp für ein Datum im Format 'YYYY-MM-DD'
''time'' Datentyp für eine Zeit im Format 'hh:mm:ss'
''datetime'' Datentyp für Datum **und** Zeit im Format 'YYYY-MM-DD hh:mm:ss'
''timestamp'' Datentyp für einen Zeitstempel im Format 'YYYY-MM-DD hh:mm:ss'
''year'' Datentyp für eine Jahreszahl im Format 'YYYY'
=== Text ===
''text (L)'' Datentyp für Text L steht für die Länge des Feldes.
=== Objekte (Dateien) ===
''blob'' (**B**inary **L**arge **OB**ject) Datentyp für, unter anderem, Multimediadateien.
-----
==== Relationales ====
=== Primary Key ===
Wird der Primary Key definiert, wird der Default-Wert des Attributes automatisch auf "NOT NULL" gesetzt.
=== Foreign Key ===
Um einen Foreign Key zu erstellen muss zwingend ein Primary Key vorhanden sein, auf den dieser verweisen kann. \\
Beim löschen eines Foreign Keys muss darauf geachtet werden, dass zuerst der Constraint, sowie danach der Key gelöscht werden.
-----
==== Befehle ====
__''**Wichtig:**''__ //Jeder Befehl in MySQL MUSS mit einem ; (Semikolon) abgeschlossen werden!//
#Auflisten aller Datenbanken
show databases;
#Auflisten der Eigenschaften einer Tabelle
show create table [name_der_tabelle];
#Auswählen einer bestimmten Datenbank
use [name_der_datenbank];
#Dieser Befehl wird meist nachfolgenden Befehlen vorangestellt
#um die zu Manipulierende Datenbank auszuwählen.
#Eine neue leere Datenbank erstellen
create database [name_der_datenbank];
#Eine neue Tabelle mit mehreren Atributen (Spalten) erstellen
create table [name_der_tabelle] (
[name_der_spalte_1] datentyp (size) not null auto_increment,
[name_der_spalte_2] datentyp (size) null,
[name_der_spalte_X] datentyp (size) default wertX
);
#Einer bestehenden Tabelle ein neues Attribut (Spalte) hinzufügen
use [name_der_db];
alter table [name_der_tabelle]
add column [name_der_spalte] datentyp (size);
#Ein Attribut (Spalte) einer bestehenden Tabelle entfernen
use [name_der_db];
alter table [name_der_tabelle]
drop column [name_der_spalte];
#Eigenschaften eines bestehendes Attributs (Spalte) einer bestehenden Tabelle abändern
use [name_der_db];
alter table [name_der_tabelle]
modify column [name_der_spalte] neuer_datentyp (neue_size) etc...;
#Name/Bezeichnung und Eigenschaften eines Attributs abändern
use [name_der_db];
alter table [name_der_tabelle]
change column [name_der_spalte] [neuer_name_der_spalte] neuer_datentyp (neue_size);
#Eine ausgewählte Tabelle umbenennen
rename table [name_der_tabelle] to [neuer_name_der_tabelle];
#Eine ausgewählte Tabelle löschen
drop table [name_der_tabelle];
#Eine ausgewählte Datenbank löschen
drop database [name_der_db];
#Eine Tabelle innerhalb einer Datenbank kopieren
use [name_der_db];
create table [name_der_neuen_tabelle] like [name_der_originaltabelle];
insert [name_der_neuen_tabelle] SELECT * FROM [name_der_originaltabelle];
#Einen Primary Key (Primärschlüssel) definieren
1. Weg direkt bei Erstellung einer Tabelle:
create table [name_der_tabelle] (
[name_der_spalte_1] datentyp (size),
[name_der_spalte_2] datentyp (size),
[name_der_spalte_X] datentyp (size),
primary key ([name_der_spalte_die_PK_werden_soll])
);
2. Weg nachträglich einem bereits erstellten Attribut hinzufügen:
alter table [name_der_tabelle]
add primary key ([name_des_attributs])
# Auto Inkrement für einen Primärschlüssel definieren
1. Weg nachträglich für ein bereits erstellten Primary Key:
alter table [name_der_tabelle]
modify [name_des_primary_key_attributs] datentyp (size) auto_increment;
2. Weg beim erstellen einer Tabelle:
create table [name_der_tabelle] (
[name_der_spalte_1] datentyp (size) auto_increment,
[name_der_spalte_2] datentyp (size),
[name_der_spalte_X] datentyp (size),
primary key ([name_der_spalte_1])
);
# Startwert für Auto Inkrement definieren:
alter table [name_der_tabelle] auto_increment=startwertX;
Wichtig:
auto_increment muss bereits für den betreffenden Schlüssel aktiviert sein!
-----
===== XAMPP =====
XAMPP ist eine freie Software von Apache die es beispielsweise zu Testzwecken erlaubt, auf einfache Weise verschiedene Serverdienste auf dem eigenen PC zu starten. Dies funktioniert sowohl auf Windows als auch unter MacOS und Linux.
Zu den Serverdiensten gehören:
* Apache Webserver inklusive PHP
* MySQL Datenbank MariaDB inklusive PHPmyAdmin
* FileZilla Fileserver
* Mercury Mailserver
* Tomcat Java Server
[[https://www.apachefriends.org/de/index.html|XAMPP Homepage & Download (Externer Link)]]
''WICHTIG! Aktueller Bug in XAMPP auf Windows: Sollte XAMPP beim Beenden Fehlermeldungen erzeugen dann einfach so lange auf X und OK Klicken bis eine Reaktion erfolgt.''
==== Wichtig für eine Verbindung zum Datenbankserver (Connection): ====
''PATH:'' (Pfad zur Datenbank, bei XAMPP //localhost/ // bzw. //localhost/phpmyadmin/index.php//)
''USER:'' (Benutzername, bei XAMPP root)
''PASSWORD:'' (Passwort, bei XAMPP kein(!) Passwort)
==== MySQL Standardports ====
Port: 3306 MySQL Datenbankzugriff für externe Programme (bsp. PHPmyAdmin) \\
Port: 80 http Protokoll für PHPmyAdmin \\
Port: 443 https Protokoll für PHPmyAdmin
-----
===== Anhang und Downloads =====
{{ :sql_befehle_aufschrieb_2022-05-02.pdf |SQL-Befehle Aufschrieb 02.05.2022 (PDF)}} \\
{{ :sql_befehle_aufschrieb_2022-05-03.pdf |SQL-Befehle Aufschrieb 03.05.2022 (PDF)}} \\
{{ :sql_ddl_befehle_teil_1_mit_loesung_2022-05-03.pdf |SQL-Aufgaben Teil 1 vom 03.05.2022 mit Lösung (PDF)}} \\
{{ :sql_befehle_aufschrieb_2022-05-04.pdf |SQL-Befehle Aufschrieb 04.05.2022 (PDF)}} \\
{{ :sql_ddl_befehle_teil_2_mit_loesung_2022-05-04.pdf |SQL-Aufgaben Teil 2 vom 04.05.2022 mit Lösung (PDF)}} \\
{{ :sql_befehle_aufschrieb_2022-05-05_01.pdf |SQL-Befehle Aufschrieb 05.05.2022 Teil 1 (PDF)}} \\
{{ :sql_befehle_aufschrieb_2022-05-05_02.pdf |SQL-Befehle Aufschrieb 05.05.2022 Teil 2 (PDF)}} \\
{{ :sql_befehle_aufschrieb_2022-05-06.pdf |SQL-Befehle Aufschrieb 06.05.2022 (PDF)}} \\