\documentclass[a4paper, 11pt]{article}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{a4wide}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{color}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{ulem}
\usepackage{listings}
\usepackage{float}
\usepackage[rflt]{floatflt}
\usepackage{tabularx}
\setlength{\parindent}{0pt}
\title{MySQL Objekte}
\usepackage[
pdftitle={MySQL Objekte}
pdfsubject={MySQl Objekte wie SERVER, DATABASE, EVENT, FUNCTION &amp; PROCEDURE, TRIGGER, TABLE und VIEW}
pdfauthor={Udo Schmal}
pdfkeywords={Administration, SERVER, DATABASE, EVENT, FUNCTION &amp; PROCEDURE, TRIGGER, TABLE und VIEW}
]{hyperref}
\definecolor{darkblue}{rgb}{0,0,.5}
\hypersetup{pdftex=true, colorlinks=true, breaklinks=true, linkcolor=darkblue, menucolor=darkblue, pagecolor=darkblue, urlcolor=darkblue}
\begin{document}MySQL Objekte
\singlespacing
{\LARGE \textbf{\label{sec:title}MySQL Objekte der Datenbank}}

\singlespacing
{\Large \textbf{SERVER}}

Hier sind globale Einstellungen des Datenbank-Servers abgelegt wie der Standard-Zeichensatz für die Connection, Zeit-Zone, Benutzer und deren Rechte, aber auch die Liste der Datenbanken.

Hier bekommt man z.B. Informationen zum Host, Db-Name und Benutzern und deren Rechte.
\begin{lstlisting}[breaklines]SELECT * FROM mysql.db\end{lstlisting}

Hier bekommt man z.B. Informationen zum Host, Benutzer, Passwort und Rechte.
\begin{lstlisting}[breaklines]SELECT * FROM mysql.user\end{lstlisting}
\vspace{1mm}\hrule 
\singlespacing
{\Large \textbf{DATABASE}}

Hier sind/werden globale Eigenschaften der Datenbank wie der Zeichensatz \&quot;CHARACTER SET\&quot; (z.B. utf8), COLLATE (z.B. latin1\_german1\_ci) und der Name der Datenbank gespeichert,
\begin{lstlisting}[breaklines]SET CHARACTER SET `utf8`;\newline
SET NAMES 'utf8';\end{lstlisting}

aber auch Schema Informationen (information\_schema), also Eigenschaften von Tabellen, Feldern, Privilegien,...  .
\begin{lstlisting}[breaklines]SELECT * FROM information\_schema.COLUMNS \newline
WHERE table\_name = 'myTable' AND table\_schema = 'myDBName' AND column\_name = 'myField';\end{lstlisting}

Hier bekommt man z.B. als Antwort alle Informationen zu einem Feld (myField) der Tabelle (myTable) aus der Datenbank (myDBName):

\begin{tabularx}{0.9\textwidth} { | >{\raggedright\arraybackslash}X | >{\raggedright\arraybackslash}X | }
\hline
COLUMN\_DEFAULT & Standard-Wert des Feldes z.B. NULL, CURRENT\_TIMESTAMP, ...\newline
 \\
\hline
IS\_NULLABLE & ob das Feld den Wert Null annehmen kann \\
\hline
DATA\_TYPE & Datenfeld Typ wie z.B. varchar, longtext, int, bigint, ... \\
\hline
CHARACTER\_MAXIMUM\_LENGTH & maximale Feldlänge bei Felder mit Zeicheninhalt \\
\hline
NUMERIC\_PRECISION & Genauigkeit von Zahlenfeldern (angezeigte Stellen) \\
\hline
NUMERIC\_SCALE & Dezimal Nachkommastellen \\
\hline
CHARACTER\_SET\_NAME & Zeichensatz z.B. utf8 \\
\hline
COLLATION\_NAME & Zeichensatz Raum z.B. utf8\_general\_ci \\
\hline
COLUMN\_TYPE & Datenfeld Typ mit angabe der Größe z.B. varchar(32), int(11) unsigned, ...\newline
 \\
\hline
COLUMN\_KEY\newline
 & Schlüssel, PRI (Primärschlüssel /Primary Key), MUL (Index / Index), UNI (eindeutiger Index / Unique Key)\newline
 \\
\hline
EXTRA\newline
 & z.B. auto\_increment\newline
 \\
\hline
und viele mehr. \\
\hline
\end{tabularx}

Diese Möglichkeit ist z.B. sehr interessant um dynamisch Eingabemasken zu generieren, da dann bei einer Datenbankänderung keine Änderung im Programm erforderlich ist.
\vspace{1mm}\hrule 
\singlespacing
{\Large \textbf{EVENT}}

Ereignisse / Aufgaben die zu einem bestimmten Zeitpunkt durch einen Scheduler-Thread ausgeführt werden.\newline

\vspace{1mm}\hrule 
\singlespacing
{\Large \textbf{FUNCTION \&amp; PROCEDURE}}

Funktionen zur Datenmanipulation ohne das ein externer Insert oder Updateetc. aufgerufen werden muss, Aufruf über CALL.\newline
Bekannt als Stored Procedures.
\vspace{1mm}\hrule 
\singlespacing
{\Large \textbf{TRIGGER}}

Ein Trigger ist eine Aktionen die an ein Ereignis für eine Tabelle gebunden sind.
\vspace{1mm}\hrule 
\singlespacing
{\Large \textbf{TABLE}}

Tabellen zum Speichern der Daten.\newline

\vspace{1mm}\hrule 
\singlespacing
{\Large \textbf{VIEW }}

Sichten auf Tabellen bzw. übergreifend über mehrere Tabellen, gespeicherte (optimierte) Abfrage.\newline

\end{document}