Delphin

MySQL Einführung


Autoren: D. Supper, A. Grella, M. Retzbach, Elektronikschule Tettnang

MySQL ist ein Datenbank­verwaltungs­system (engl. database management system) für Datenbanken.

In diesem Artikel wird der Aufbau und die Struktur von MySQL, phpMyAdmin, sowie SQL erklärt. Neben dem Anlegen von Datenbanken, Erstellen und Ändern von Tabellen wird die Steuerung der Benutzer und deren Zugriffsrechte erklärt.

MySQL Eigenschaften



MySQL ist ein Datenbank­verwaltungs­system (engl. database management system) für relationale Datenbanken. Die quelloffene Server-Software kann große Datenmengen von verschiedenen Nutzern in kurzer Zeit verarbeiten und bildet so häufig die Grundlage für viele Webseiten.

Der Zugriff auf MySQL ist unterschiedlich möglich:

  1. Konsole
  2. Weboberfläche mit phpMyAdmin
  3. MySQL-Workbench

MySQL unterstützt den aktuellen SQL-Standad (engl. structured query language).

Die Software MySQL Community Server kann unter folgenden Link heruntergeladen werden:

Für Nutzer von Windows oder Mac-OS empfiehlt sich aber die Installation von XAMPP, da hier ein Webserer, PHP, PHPMyAdmin und MySQL in einem Paket installiert werden.

Man beachte, dass mit MySQL riesige Datensätze mit einem einzigen Befehl ohne Rückfrage verändert werden können und so großer Schaden angerichtet werden kann.

SQL - Structered Query Language



SQL (engl. Structured Query Language) ist eine Datenbanksprache zur Definition, Manipulation und Abfrage (engl. query) von Datenstrukturen.

Im ersten Schritt wird mit dem Befehl create database ... eine Datenbank angelegt. In jeder Datenbank lassen sich beliebig viele Tabellen mit dem Befehl create table .... erstellen.

Im zweiten Schritt können die Daten mit den Befehlen insert ..., update ... und delete ... manipuliert werden.

Im dritten Schritt erfolgt die Abfrage (engl. query) der Daten mit dem Befehl select ....

In einem vierten Schritt lassen sich Benutzer und deren Zugriffsrechte steuern (engl. control).

Data Definition Datenbanken und Tabellen anlegen
Data Manipulation Anlegen, Ändern und Löschen von Datensetzen
Data Query Abfrage der Daten
Data Control Benutzer anlegen und Zugriffsrechte steuern

Datenbanken anlegen und verwenden



Zum Anlegen von Datenbanken startet man MySQL in der Konsole/Terminal:
~ $ ./mysql -u root

Hinweis: Beenden tut man MySQL mit:
> quit

Befehl Bedeutung
create database <dbname>; Datenbank anlegen
drop database <dbname>; Datenbank löschen
use <dbname>; Datenbank selektieren
show databases; Datenbanken anzeigen
Erstellen einer Datenbank
Database
Fortbildung
Schulung
  • > create database Fortbildung;
    > create database Schulung;
    > show databases;
    > drop database Schulung;

Tabellen anlegen, verwalten und anzeigen



Zum Erstellen von Tabellen müssen Datentypen bekannt sein:

Datentyp Beschreibung
int Ganzzahl 4 Bytes
float, double Gleitkommazahlen
char(n) Zeichenkette mit n Zeichen (max. 255)
varchar(n) Zeichenkette die nur benötigten Speicher belegt
time, date Zeit- und Datumstypen

Datentypen können durch Optionen ergänzt werden:

Option Beschreibung
not null leeres Feld nicht zulässig
auto_increment automatisches Hochzählen der Spalte
primary key Spalte ist Primärschlüssel

Tabellen erstellen, löschen und Struktur anzeigen:

Befehl Bedeutung
create table <tbname> (<colname> type [options], <colname> type [options], ...); Tabelle anlegen
drop table <tbname>; Tabelle löschen
show tables; Tabellenstruktur anzeigen
describe table <tbname>; ausführliche Tabellenstruktur anzeigen
Erstellen einer Tabelle
field type key extra
pkperson int PRI auto_increment
name char
vorname char
  • > use fortbildung;
    > create table person (pkperson int not null auto_increment primary key, name char(30), vorname char(30));
    > describe person;

Datensätze einfügen, manipulieren
pkperson name vorname
100 Meier Hans
101 Baer Teddy
  • > insert into person (pkperson, name, vorname) values(100,"Maier", "Hans");
    > insert into person (pkperson, name, vorname) values(Null,"Baer", "Teddy");
    > update person set name = "Meier" where pkperson = 100;
    > delete from person where pkperson >= 102;
    > select * from person;

Entspann dich erstmal ...



Rezept für 3 Stück Laugengebäck:

  • 160 g Mehl 405
  • 100 g Milch
  • 40 g Sauerteig
  • 5 g Hefe
  • 5 g Salz

Teig kneten und alle 20-30 Minuten falten. Am Ende 30 Minuten ruhen lassen und direkt vor dem Backen mit 4 % Natronlauge bestreichen. Mit Rasierklinge einschneiden und mit grobem Salz bestreuen. Ohne Wasserdampf bei 200 °C circa 15 Minuten backen.

Übung 1 MySQL-Server installieren und Datenbanken anlegen

Tabelle: Person
pkPerson name vorname
100 Maier Sepp
101 Pfeiffer Arndt
102 Lindner Xaver
Tabelle: Kurs
pkKurs bezeichnung
100 Netzwerktechnik
102 Webdesign
105 Datenbanken
Tabelle: Buchung
pkBuchung fkPerson fkKurs Datum
1 100 100 2021-02-15
2 101 102 2021-12-09
3 102 105 2021-03-15
Installation und Test
  1. Lade die aktuelle Version von XAMPP herunter und installiere diese auf Deinem PC.
  2. Teste die Installation: Starte und stoppe den MySQL-Server über die entsprechenden Konsolenbefehle.
Datenbank und Tabelle anlegen, Datensätze eingeben und löschen
  1. Lege zunächst eine neue Datenbank namens "fortbildung" an und liste anschließend alle Datenbanken auf.
  2. Erstelle die Tabelle "Person" mit dem Attribut "pkPerson" (int, not null, auto_increment, primary key) als Primärschlüssel sowie den Attributen "name" und "vorname" vom Datentyp varchar(30). Gebe zur Kontrolle die erzeugte Tabellen­struktur aus.
  3. Gib die Datensätze in die Tabelle "Person" ein und überprüfe die Eingaben mit Hilfe einer einfachen Abfrage.
  4. Lösche die Tabelle "Person" wieder. Überprüfe das Ergebnis, indem du alle Tabellen der Datenbank auflistest.
  5. Erzeuge eine Textdatei (z.B. create_Person.sql), in der die SQL-Befehle zum Erstellen der Tabelle "Person" enthalten sind. Achte darauf, dass jeder SQL-Befehl durch ein Semikolon abgeschlossen ist. Führe die in der Datei enthaltenen Befehle interaktiv aus. Erweitere das SQL-Skript mit den Befehlen zum Anlegen der Datensätze und teste es erneut.
  6. Ändere in der Tabelle "Person" den Nachnamen der Person mit dem Primärschlüssel 100 auf 'Michelberger' ab.
  7. Lösche aus der Tabelle "Person" den Datensatz mit dem Primärschlüssel 102.
  8. Lege ebenso die Tabellen "Kurs" und "Kursbesuch" an. Datumswerte werden in der Form 'jjjj-mm-dd' angegeben.
Backup erzeugen und einlesen
  1. Erstelle mit Hilfe des Programms mysqldump.exe ein Backup der Datenbank "fortbildung". Schaue den Dump in einem Editor an.
  2. Lösche mit dem Programm mysql.exe oder mysqladmin.exe die Datenbank "fortbildung" auf dem MySQL-Server.
  3. Lege mit Hilfe des Programms mysqladmin.exe eine neue Datenbank "schulung" an.
  4. Spiele das erstellte Backup mit Hilfe des Programms mysql.exe wieder ein.

Übung 2 Welche Aussage ist wahr?

Wähle die korrekten Aussagen aus.

Ein Mitarbeiter gibt folgenden Befehl ein:
> create table person (pkPerson int not null auto_increment primary key, name char(30), vorname char(30));
Nenne die Auswirkung. Wähle zwei Antworten.

  1. Die Tabelle hat vier Spalten.
  2. Die Tabelle wird nicht erstellt.
  3. Die Spalte pkPerson wird automatisch hochgezählt
  4. Die Spalte name darf maximal 30 Zeichen enthalten.


Ein Mitarbeiter gibt folgenden Befehl ein:
> create table person (pkPerson int not null auto_increment primary key, name varchar(30), vorname varchar(30));
Nenne die Auswirkung. Wähle zwei Antworten.

  1. Die Tabelle hat keine Spalten.
  2. Jeder Name kann unterschiedlich viel Speicher belegen.
  3. Jeder Name hat einen Speicherplatz von 30 Zeichen.
  4. Jeder Name darf maximal 30 Zeichen lang sein.



Ein Mitarbeiter gibt folgenden Befehl ein:
> delete from person where pkperson >= 102;
Nenne die Auswirkung. Wähle eine Antwort.

  1. Alle Datensätze werden gelöscht.
  2. Die Löschung jeder einzelnen Zelle muss bestätigt werden.
  3. Nur Daten mit einem Primärschlüssel >= 102 werden gelöscht.
  4. Die Löschung muss bestätigt werden.


Ein Mitarbeiter gibt folgenden Befehl ein:
> select * from person;
Finde die Fehleranzahl. Wähle eine Antwort.

  1. kein Fehler
  2. ein Fehler
  3. zwei Fehler
  4. mehr als zwei Fehler


Ein Mitarbeiter gibt folgenden Befehl ein:
> select * from person;
Benenne die Auswirkung. Wähle eine Antwort.

  1. Alle Einträge der Tabelle werden angezeigt.
  2. Die Tabellenstruktur wird angezeigt.
  3. Der Befehl ist fehlerhaft.
  4. Man lässt sich alle Einträge mit * anzeigen.


Ein Nutzer gibt den Befehl insert into person (pkPerson, name, vorname) values(Null,"Baer", "Teddy"); ein.

Wähle die passende Aussage zum Befehl.
Wähle eine Antwort.

  1. Teddy Baer wird nicht eingefügt.
  2. Teddy Baer wird eingefügt.
  3. Teddy Baer wird ohne Primärschlüssel eingefügt.
  4. Teddy Baer existiert bereits.

phpMyAdmin grafische Oberfläche und Benutzerverwaltung



phpMyAdmin ist eine Webanwendung zur Administration von MySQL-Datenbanken. Die grafische Oberfläche erleichtert die Wartung und Administration von MySQL-Servern.

Von jeder Datenbank wird unter dem Menüpunkt Mehr>Designer eine Übersicht aller Tabellen und deren Strukturen dargestellt.

Das Erstellen von Datenbanken und Tabellen sowie deren Manipulation wird unter verschiedenen Reitern ermöglicht. Darüber hinaus lässt sich eine Abfrage der Datensätze durchführen.

Ein weiterer wichtiger Aspekt sind die Benutzerverwaltung und deren Zugriffsrechte. Diese werden in der Datenbank mysql gespeichert. In phpMyAdmin werden unter dem Menüpunkt "Benutzerkonten", Benutzer und deren Zugriffsrechte geregelt.

Weboberfläche von phpMyAdmin

Übung 3 Umgang mit phpMyAdmin - Zugriffsrechte

Anlegen von Datenbanken und Tabellen
  1. Starte phpMyadmin durch die Eingabe localhost/phpmyadmin und mache dich mit der Programmoberflächevertraut.
  2. Lege eine Datenbank "schulung" an. Eine Besonderheit von phpMyadmin ist es, dass für Aktionen immer auch die SQL-Befehle angezeigt werden. Auf diese Weise lernt man die SQL-Befehle besser kennen. Woran erkennt man, welche Datenbank aktiv ist?
  3. Lege eine Tabelle "person" mit den Spalten pkPerson (int, not null, auto_increment, primary key), name (varchar(30)) und vorname (varchar(30)) an. Notiere den vom Assistenten erzeugten SQL-Befehl und kopiere ihn in die Zwischenablage.
  4. Lösche die Tabelle "person" wieder. Kopiere aus der Zwischenablage das SQL-Statement in das SQL-Fenster und betätigen Sie die Schaltfläche ("OK"), damit die Tabelle "person" erneut erstellt wird.
  5. Wähle die Tabelle "person" durch Anklicken aus und füge drei Einträge hinzu.
  6. Ändere den Namen einer Person.
  7. Lösche den Datensatz mit dem Primärschlüssel 102.
Zugriffsrechte
  1. Wechsel in den Menüpunkt "Benutzerkonten". Welche Benutzer sind standardmäßig eingerichtet und von welchen Rechnern aus dürfen diese Benutzer auf das MySQL-System zugreifen?
  2. Öffnen eine Konsole und starte mysql.exe als Benutzer "root". Die Verwaltung der Benutzer und Zugriffsrechte erfolgt in der Datenbank namens "mysql". Wähle diese Datenbank aus und lasse die Benutzer ("User"), die Rechner ("Host") und die Passwort-Hashes ("Authentication_string") aus der Tabelle "user" anzeigen.
  3. Lege in phpMyAdmin einen neuen Datenbankadministrator namens "dbadmin2" an, der passwortgeschützt von jedem PC des Klassenzimmers aus auf dein MySQL-System zugreifen darf und dieselben administrativen Rollen wie der Benutzer "root" inne hat. Kontrolliere den Eintrag vom Terminal aus. Teste ob der Zugriff vom benachbarten PC aus tatsächlich möglich ist.
  4. Lege einen neuen Benutzer namens "verwalter" an, der passwortgeschützt nur von deinem Hostrechner aus vollen Zugriff auf die Datenbank "fortbildung" haben soll. Kontrolliere den neuen Benutzereintrag mit mysql aus der Konsole und teste anschließend den Zugriff über eine Konsolenverbindung.
  5. Lege abschließend einen neuen Benutzer namens "sekretariat" an, der passwortgeschützt von Nachbar-PC aus in deiner Datenbank "fortbildung" nur Abfragen ausführen darf. Kontrolliere den neuen Benutzereintrag mit der Konsolenanwendung mysql und teste die Verbindung vom Nachbar- PC aus per Konsolenverbindung.

Übung 4 Welche Aussage ist wahr?

Wähle die korrekten Aussagen aus.

Gegeben ist folgende Benutzerkonten­übersicht:

Benutzer­name Hostname Passwort Globale Rechte
dbadmin % Nein ALL PRIVILEGES
sekretariat 192.168.0.% Ja SELECT

Wähle korrekte Aussagen über den Benutzer "dbadmin".
Wähle beliebig viele Antworten.

  1. Das Passwort lautet: %
  2. Das Passwort ist nicht gesetzt.
  3. Es kann keine Aussage getroffen werden.
  4. Der Zugriff ist aus jedem Netz möglich.


Wähle korrekte Aussagen über den Benutzer "sekretariat".
Wähle beliebig viele Antworten.

  1. Das Passwort lautet: 192.168.0.%
  2. Das Passwort ist nicht gesetzt.
  3. Der Zugriff ist aus einem privaten Netzwerk möglich
  4. Der Nutzer darf Datenbankeinträge abfragen.



Nenne die beiden Befehle, mit der alle Benutzer und zugehörigen Hosts angezeigt werden.
Wähle zwei Antworten.

  1. > use mysql;
  2. > use fortbildung;
  3. > select user, host from mysql;
  4. > select user, host from user;


Nenne Auswirkungen des folgenden Befehls:
> GRANT SELECT ON *.* TO 'sekretariat'@'192.168.0.%'
Wähle zwei Antworten.

  1. Der Nutzer "sekretariat" darf alles abfragen".
  2. Jeder darf auf Inhalte von "sekretariat" zugreifen.
  3. Der Zugriff ist auf einen privaten Adressbereich begrenzt.
  4. Der Nutzer "sekretariat" hat alle Rechte.



Wortliste und Satzbausteine



MySQL Datenbank­verwaltungs­system (engl. database management system)
SQL Datenbanksprache (engl. structured query language)
phpMyAdmin Webanwendung zur Administration von MySQL-Datenbanken
MySQL Workbench Software zur Erstellung und Bearbeitung von MySQL-Datenbanken
XAMPP Programmpaket mit Software wie: Webserver Apache, PHP, MySQL und PHPMyAdmin
Data Definition Datenbanken und Tabellen anlegen
Data Manipulation Anlegen, Ändern und Löschen von Datensetzen
Data Query Datenbankabfrage
Data Control Benutzer anlegen und Zugriffsrechte steuern
der Daten­typ, -en Format und Größe von Daten
inkrementieren hochzählen eines Wertes