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