1. Normalform (1NF) | 2. Normalform (2NF) | 3. Normalform (3NF) |
1. NF ist dann gegeben, wenn alle Attributwerte atomar sind. Dabei ist ein Attribut dann atomar, wenn es weder aus kleineren Einheiten zusammengesetzt ist, noch mehrwertig ist. | 2. NF ist dann gegeben, wenn sie in der ersten Normalform ist und jedes Nichtschlüsselattribut von jedem Schlüssel voll funktional abhängig ist. Konkret heisst das, dass Nichtschlüsselattribute vom kompletten Schlüssel und nicht nur von einem Teil des Schlüssels abhängen müssen. | 3. NF ist dann gegeben, wenn sie in der ersten und zweiten Normalform vorliegt und kein Nichtschlüsselattribut von (irgend)einem Schlüssel transitiv abhängt. Um eine transitive Abhängigkeit also auszuschließen, dürfen alle Nichtschlüsselattribute nicht von anderen Nichtschlüsselattributen abhängig sein |
1 | c | m | mc |
Genau 1 | 0 oder 1 | 1 oder mehrere | 0, 1 oder mehrere |
Befehl | Möglichkeiten | Beispiel |
mysql | MYSQL -U [USERNAME] -P; | MYSQL -U robin@'localhost' -P; |
exit | EXIT; | EXIT; |
Datenbank erstellen | CREATE DATABASE [Datenbank Name]; | CREATE DATABASE lounge; |
Datenbank Löschen | DROP DATABASE [Datenbank Name];
oder DROP DATABASE IF Exists [Datenbank Name]; |
DROP DATABASE lounge;
oder DROP DATABASE IF Exists lounge; |
Alle Datenbanken anzeigen | SHOW DATABASES; | SHOW DATABASES; |
Datenbank öffnen | USE [Datenbank Name]; | USE mysql; |
Befehl | Möglichkeiten | Beispiel |
Tabelle Erstellen | CREATE TABLE [Tabellen Name] ([Attribut Name] [Datentype] [Constraint]); | CREATE TABLE mitglieder(
id INT AUTO_INCREMENT, firstname VARCHAR(45) NOT NULL, PRIMARY KEY(id) ); |
Tabelle Löschen | DROP TABLE [Tabellen Name] | DROP TABLE |
Alle Tabellen anzeigen | SHOW TABLES; | SHOW TABLES; |
Tabellen Strucktur anzeigen | DESCRIBE [table name]; | DESC user; |
Tabelle bearbeiten (Attribut Hinzufügen) | ALTER TABLE [table_name] ADD [attribut_name] [datatype] [CONSTRAINTS, KEYS, INDEXES]; | ALTER TABLE mitglieder ADD Nachname VARCHAR(50) NOT NULL |
Tabelle bearbeiten (Attribut Verändern) | ALTER TABLE [table_name] MODIFY [attribut_name] [NEW_datatype] [NEW_CONSTRAINTS, NEW_KEYS, NEW_INDEXES]; | ALTER TABLE mitglieder MODIFY Nachname TEXT NOT NULL; |
Tabelle bearbeiten (Attribut Umbenennen) | ALTER TABLE [table_name] CHANGE [attribut_name] [NEW_attribut_name] [datatype]; | ALTER TABLE mitglieder CHANGE Nachname lastname VARCHAR(50); |
Tabelle bearbeiten (Attribut Löschen) | ALTER TABLE [table_name] DROP [attribut_name]; | ALTER TABLE mitglieder DROP Nachname; |
Befehl | Möglichkeiten | Beispiel |
Änderungen übernehmen | FLUSH PRIVILEGES; | FLUSH PRIVILEGES; |
Benutzer Erstellen | CREATE USER [username]@'[location]' IDENTIFIED BY '23456’; | mysql> CREATE USER backoffice@'localhost' IDENTIFIED BY '23456’; |
Benutzer Löschen | DROP USER [username]@'[location]'; | DROP USER backoffice@'localhost'; |
Passwort Setzen | SET PASSWORD FOR [username]@'[location]’ = PASSWORD('[Dein Passwort]’); | mysql> SET PASSWORD FOR backoffice @'localhost' = PASSWORD('12345’); |
Benutzer Umbenennen | RENAME USER [username]@'[location]’ TO [username2]@'[location2]’; | RENAME USER backoffice@'localhost’ TO backoffice2@'%’; |
Berechtigungen zuweisen | GRANT [PERMISSION],[PERMISSION] ON [database].[table] TO [username]@'[location]’; | GRANT INSERT,UPDATE,DELETE ON lounge.mitglieder TO backoffice@'localhost’; |
Berechtigungen entziehen | REVOKE [PERMISSION],[PERMISSION] ON [database].[table] FROM [username]@'[location]’; | REVOKE DELETE, UPDATE ON lounge.* FROM office@'localhost’; |
Berechtigungen anzeigen | SHOW GRANTS FOR [username]@'[location]’; | SHOW GRANTS FOR backoffice@’localhost’; |
Befehl | Möglichkeiten | Beispiel |
Werte einfügen | INSERT INTO [table_name] ([atribut_name], [atribut_name], …) VALUES ([value1], [value2]…); | INSERT INTO mitglieder (name, firstname, age) VALUES
('Schneider', 'Robin', 16), ('Klingler', 'Tobias', 16); |
Daten ändern | UPDATE [table_name] SET [atribut_neu] = [value1], [atribut_alt] = [value2] WHERE [atribut_name] = [value]; | UPDATE mitglieder SET firstname = 'Markus' WHERE firstname = 'Tobias'; |
Daten Löschen | DELETE FROM [table_name] WHERE [atribut_name] = [value]; | DELETE FROM mitglieder WHERE firstname = 'Robin' AND name = 'Schneider'; |
Befehl | Beschreibung |
BEGIN; | Mit dem "BEGIN" Befehl wird die Datenbank lokal virtuell gespeichert. Das bedeutet alles, was fortan geschrieben wird, wird nicht direkt auf der Datenbank geändert. |
COMMIT; | Wenn die eingegebenen Befehle ein Erfolg war, kann man mit "COMMIT" die Änderungen auf die offizielle Datenbank übernehmen und die Virtuelle wird gelöscht. |
ROLLBACK; | Wenn die eingegebenen Befehle kein gutes Resultat ergaben, kann man mit "ROLLBACK" die Änderungen verwerfen und neu beginnen. |
Befehl | Möglichkeiten | Beispiel |
GROUP BY | SELECT [Attribut], [Attribut2] FROM [Table] GROUP BY [option]; | SELECT rating, MIN(length), MAX(length) FROM film GROUP BY rating; |
HAVING | SELECT [Attribut], [Attribut2] FROM [Table] GROUP BY [option] HAVING [Option]; | SELECT rating, MIN(length), MAX(lengths) FROM film GROUP BY rating HAVING MIN(lenth) > 63; |
Befehl | Möglichkeiten | Beispiel |
SELECT MIT INNER JOIN | SELECT [tabellenkürzel] .[attribut] FROM [Tabelle] INNER JOIN [2. Tabelle] ON [fk von tabelle 1] = [Key in Tabelle 2]; | SELECT p.id, p.firstname, p.lastname, z.id, z.name, pr.name, pr.salary FROM person p INNER JOIN zip z ON p. fk_zip_id = z.id INNER JOIN profession pr ON p.fk_profession_id = pr.id WHERE p.id = 3; |
SELECT MIT RIGHT JOIN | SELECT |
SELECT p.id, p.firstname, p.lastname, z.id, z.name, pr.name, pr.salary FROM person p RIGHT JOIN zip z ON p. fk_zip_id = z.id RIGHT JOIN profession pr ON p.fk_profession_id = pr.id WHERE p.id = 3; |
SELECT MIT LEFT JOIN | SELECT |
SELECT p.id, p.firstname, p.lastname, z.id, z.name, pr.name, pr.salary FROM person p LEFT JOIN zip z ON p. fk_zip_id = z.id LEFT JOIN profession pr ON p.fk_profession_id = pr.id WHERE p.id = 3; |
Thema | Beispiel | Beschreibung |
Möglichkeiten |
SELECT [Was?] { * | Attributliste | mathematische Ausdrücke} FROM Tabelle1 Bezeichner1, Tabelle2 Bezeichner2, ... [WHERE Bedingungen] [GROUP BY Attributliste] [HAVING Bedingungen] [ORDER BY Attributliste] [ASC | DESC]; [LIMIT 2(,4)] |
Command aufstellung |
Alles anzeigen | SELECT * FROM [Tabelle]; | Zeigt alle Datensätze an. |
Mehrere Atribute ausgeben | SELECT [Atribut1], [Atribut2] FROM [Tabelle]; | Nur bestimmte Atribute anzeigen. |
Atrubut mit Synonym | SELECT [Atribut1] AS [Ausgabe name], [Atribut2] AS [Ausgabe name] FROM [Tabelle]; | Gibt die Atribute mit einem anderen Namen an. |
LIMIT | SELECT [Atribut1] FROM [Tabelle] LIMIT 4; | Maximal 4 Datensätze anzeigen |
LIMIT | SELECT [Atribut1] FROM [Tabelle] LIMIT 2, 3; | beim zweiten beginnen und Maximal 3 Datensätze anzeigen |
kleinster Wert (MIN) | SELECT MIN([Attribut]) FROM [Tabelle] | Es gibt den Datensatz mit dem kleinsten wert des ausgewählten Attributes aus. |
grösster Wert (MAX) | SELECT MAX([Attribut]) FROM [Tabelle] | Es gibt den Datensatz mit dem grössten wert des ausgewählten Attributes aus. |
Durchschnitt (AVG) | SELECT AVG([Attribut]) FROM [Tabelle] | Es gibt den Durchschnitt der Attribute aus. |
Datensätze Zählen (COUNT) | SELECT COUNT([Attribut]) FROM [Tabelle] | Es gibt die Anzahl der Datensätze aus. |
Thema | Beispiel | Output |
WHERE | SELECT id, lastname FROM mitglieder WHERE id > 6 AND id < 12; |
+----+----------+ | id | lastname | +----+----------+ | 7 | klingler | | 8 | sneider | | 9 | ho | | 10 | fds | +----+----------+ |
WHERE | SELECT id, lastname FROM mitglieder WHERE id = 7 OR id = 9; |
+----+----------+ | id | lastname | +----+----------+ | 7 | klingler | | 9 | ho | +----+----------+ |
WHERE | SELECT id, lastname, firstname FROM mitglieder WHERE lastname = 'ho' OR id = 7; |
+----+----------+-----------+ | id | lastname | firstname | +----+----------+-----------+ | 7 | klingler | JUHUdsf | | 9 | ho | JUHUdsf | +----+----------+-----------+ |
Sortieren absteigen | SELECT id, lastname FROM mitglieder ORDER BY id DESC; |
+----+----------+ | id | lastname | +----+----------+ | 10 | fds | | 9 | ho | | 8 | sneider | | 7 | klingler | | 6 | meier | +----+----------+ |
Sortieren aufsteigen | SELECT id, lastname FROM mitglieder ORDER BY id ASC; |
+----+----------+ | id | lastname | +----+----------+ | 6 | meier | | 7 | klingler | | 8 | sneider | | 9 | ho | | 10 | fds | +----+----------+ |
Sonstige Funktionen | SELECT id, BIN(id), REVERSE(lastname), UPPER(lastname) FROM mitglieder; |
+----+---------+-------------------+-----------------+ | id | BIN(id) | REVERSE(lastname) | UPPER(lastname) | +----+---------+-------------------+-----------------+ | 6 | 110 | reiem | MEIER | | 7 | 111 | relgnilk | KLINGLER | | 8 | 1000 | rediens | SNEIDER | | 9 | 1001 | oh | HO | | 10 | 1010 | sdf | FDS | +----+---------+-------------------+-----------------+ |
Pattern | Output | Beschreibung |
'Me%' |
+----+----------+ | id | lastname | +----+----------+ | 6 | meier | +----+----------+ |
Es gibt alle Werte aus, welche mit "me" beginnen. | '%n%' |
+----+----------+ | id | lastname | +----+----------+ | 7 | klingler | | 8 | sneider | +----+----------+ |
Es gibt alle Werte aus, welche ein "N" beinhalten. | '%r' |
+----+----------+ | id | lastname | +----+----------+ | 6 | meier | | 7 | klingler | | 8 | sneider | +----+----------+ |
Es gibt alle Werte aus, welche mit "r" aufhören. | '_ _ _' |
+----+----------+ | id | lastname | +----+----------+ | 10 | fds | +----+----------+ |
Es gibt alle Werte aus, welche aus 3 Zeichen besteht. | 'k_ _ _ _ _er' |
+----+----------+ | id | lastname | +----+----------+ | 7 | klingler | +----+----------+ |
Es gibt alle Werte aus, welche aus die mit k beginnen 8 Zeichen lang sind und mit er aufhören. |
Quelle: Robin Schneider | Bild: zli.ch