Prüfungsvorbereitung zur MySQL-Zertifizierung
7.1 Database Properties
Das Prinzip von MySQL-Datenbanken kann man folgendermaßen zusammenfassen: Datensätze werden in Tabellen und Tabellen wiederum in Datenbanken organisiert. Eine Datenbank kann mehrere Tabellen enthalten, was logischerweise auch für Datensätze in Tabellen gilt.
Jede Datenbank wird durch ein Verzeichnis repräsentiert:
# ls -1 /var/lib/mysql/
lokal
mysql
programm
t3_gus
t3_redaktion
t3_testseite
In jedem Datenbank-Verzeichnis werden die Tabellen gespeichert:
# ls -1 /var/lib/mysql/t3_gus/
be_groups.MYD
be_groups.MYI
be_groups.frm
be_sessions.MYD
be_sessions.MYI
be_sessions.frm
be_users.MYD
be_users.MYI
be_users.frm
Jede Datenbank hat einen Standard-Zeichensatz (character set) und -Sortierreihenfolge (collation).
Schema = Database
MySQL verwendet den Begriff „schema“ als Synonym zu „database“. CREATE SCHEMA entspricht CREATE DATABASE. In der Regel verwendet man den Begriff database, aber in einigen grafischen Administrationstools werden die Datenbanken als schema beschrieben. Wenn man auf den Begriff schema trifft, sollte man diesen als database erkennen.
7.2 Creating Databases
Beim Erstellen neuer Datenbanken kann man auch einige Optionen angeben. Das einfache Anlegen einer neuen Datenbank erfolgt folgendermaßen:
CREATE DATABASE db_01;
Wenn eine Datenbank bereits existiert, erscheint eine Fehlermeldung. Um dies zu verhindern, kann man die Option IF NOT EXIST mit angeben. Hierbei wird die Datenbank nur dann angelegt, wenn sie noch nicht existiert:
CREATE DATABASE IF NOT EXIST db_01;
Des Weiteren kann man der Datenbank eine einen Standard-Zeichensatz (character set) und -Sortierreihenfolge (collation) mitgeben, welche dann für die neuen Tabellen gilt:
CREATE DATABASE db_01 CHARACTER SET utf8 COLLATION utf8_german_1;
7.3 Altering Databases
Mit dem Befehl ALTER DATABASE können Änderungen an der Datenbank vorgenommen werden. Folgender Befehl ändert die Sortierreihenfolge:
ALTER DATABASE db_01 COLLATE utf_danish_ci;
Des Weiteren kann man auch die Zeichensatz ändern:
ALTER DATABASE db_01 CHARACTER SET latin1;
Wichtig: Datenbanken können nicht umbenannt werden. Dieses kann man nur umständlich machen, indem man eine neue Datenbank mit neuem Namen anlegt und die Tabellen in diese importiert.
7.4 Dropping Database
Mit dem Befehl DROP DATABASE können Datenbanken gelöscht werden. Wenn die Datenbank aber gar nicht exisitiert, erscheint ähnlich beim Erstellen einer Datenbank eine Fehlermeldung. Um dieses zu verhinden, gibt man die Option IF EXISTS an:
DROP DATABASE IF EXISTS db_01;
Hinweis: Es gibt keine UNDO-Funktion. Wenn die Datenbank gelöscht wurde, ist „sie weg“!
7.5 Obtaining Database Metadata
Nach einer MySQL-Instalation wird automatisch die Datenbank INFORMATION_SCHEMA angelegt. Diese Datenbank enthält Metadaten über alle Datenbanken und ist quasi die Informationsdatenbank bzw. Systemkatalog von MySQL.
mysql> SHOW TABLES FROM INFORMATION_SCHEMA;
+---------------------------------------+
| Tables_in_INFORMATION_SCHEMA |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| KEY_COLUMN_USAGE |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| STATISTICS |
| TABLES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
+---------------------------------------+
Wichtige Tabellen in dieser Datenbank sind beispielsweise SCHEMA_PRIVILEGES, welche die Zugriffsrechte auf die einzelnen Datenbanken enthält, oder ide CHARACTER_SETS, welche die verfügbaren Zeichensätze anzeigt. Hier die Übersicht, welche Tabelle welchen Zweck hat:
CHARACTER_SETS = Infos über verfügbare Zeichensätze
COLLATIONS = Infos über verfügbare Sortierreihenfolgen der Zeichensätze
COLLATION_CHARACTER_SET_APPLICABILITY = Welcher Zeichensatz gilt für welche Kollation?
COLUMNS = Informiert über die Spalten der Tabellen
COLUMN_PRIVILEGES = Spaltenberechtigungen
KEY_COLUMN_USAGE = Infos über Schlüsselspalten
ROUTINES = Infos über gespeicherte Routinen
SCHEMATA = Infos über die einzelnen Datenbanken
SCHEMA_PRIVILEGES = Berechtigungen auf die Datenbanken
STATISTICS = Informationen über Tabellenindizes
TABLES = Infos über einzelne Tabellen
TABLE_CONSTRAINTS = Zeigt an, welche Tabellen Constraints unterliegen
TABLE_PRIVILEGES = Tabellenberechtigungen
TRIGGERS = Infos über Trigger
USER_PRIVILEGES = Benutzerberechtigungen
VIEWS = Infos über Views in Datenbanken
Beispiel:
mysql> SELECT * FROM SCHEMATA\G;
*************************** 1. row ***************************
CATALOG_NAME: NULL
SCHEMA_NAME: information_schema
DEFAULT_CHARACTER_SET_NAME: utf8
DEFAULT_COLLATION_NAME: utf8_general_ci
SQL_PATH: NULL
*************************** 2. row ***************************
CATALOG_NAME: NULL
SCHEMA_NAME: lokal
DEFAULT_CHARACTER_SET_NAME: latin1
DEFAULT_COLLATION_NAME: latin1_swedish_ci
SQL_PATH: NULL