MySQL: Unterschied zwischen den Versionen
| Zeile 2: | Zeile 2: | ||
== mySQL - Tips und Tricks == | == mySQL - Tips und Tricks == | ||
[[mySQL - Tips und Tricks]] | [[mySQL - Tips und Tricks]] | ||
| + | |||
| + | |||
| + | == mySQL - Cheat Sheet == | ||
| + | [[mySQL - Cheat Sheet]] | ||
== mySQL auf der Kommandozeile == | == mySQL auf der Kommandozeile == | ||
Version vom 7. Februar 2012, 09:50 Uhr
Informationen zur Datenbank aber auch Tipps zur Bedienung etc.
mySQL - Tips und Tricks
mySQL - Cheat Sheet
mySQL auf der Kommandozeile
Codeschnipsel
Typ der Tabellen festlegen
CREATE TABLE `foo` {
...
} ENGINE=InnoDB
CREATE TABLE `bar` {
...
} ENGINE=MyISAM
InnoDB aktivieren
Zitat aus http://www.marmotli.ch/mysql/node35.html
5.2.1 Aktivieren der InnoDB-Tabellen
Das Arbeiten mit dem Tabellentyp 'InnoDB' setzt voraus, dass der MySQL-Server mit diesem Tabellentyp hochgefahren wird.
Unter Debian 3.0 d.h. falls wir MySQL gemäss dieser Anleitung aufgesetzt haben, steht der InnoDB-Tabellentyp zunächst nicht zur Verfügung. Nicht weil MySQL 4.0.13 das nicht unterstützen würde, sondern weil wir die my.cnf-Datei von der Version 3.23.x übernommen haben und das dort nicht aktiviert war. Um die InnoDB-Tabellen nun zu aktivieren, müssen wir einige Änderungen in der Datei '/etc/mysql/my.cnf' vornehmen:
# Read the manual if you want to enable InnoDB! # skip-innodb innodb_data_home_dir = innodb_data_file_path = /var/lib/mysql/ibdata/ibdata1:100M:autoextend
Zunächst muss 'skip-innodb' deaktiviert werden. Danach müssen wir den Speicherort für die Tabellen angeben. Falls wir 'innodb_data_home_dir' leer belassen, verwendet MySQL den normalen Datenpfad der Datenbanken. Dort werden einige Temporär-Dateien erstellt. Den Speicherort für die InnoDB-Tabellen legen wir mit dem Wert 'innodb_data_file_path' fest. Wir verwenden wiederum den Speicherort für die MySQL-Datenbanken sowie das Unterverzeichnis 'ibdata'. Dieses Verzeichnis muss von Hand angelegt werden:
mkdir /var/lib/mysql/ibdata chown -R mysql /var/lib/mysql/ibdata chgrp -R mysql /var/lib/mysql/ibdata
Um die InnoDB-Tabellen endgültig nutzen zu können, müssen wir den MySQL-Server neu initialisieren:
/etc/init.d/mysql restart
Der Neustart dauert einige Sekunden, weil die InnoDB-Tabellen zunächst initialisiert werden müssen. Um zu überprüfen, ob die InnoDB-Tabellen nun aktiviert sind, können wir in '/var/lib/mysql/ibdata' nachsehen. Falls Sie dort eine Datei vorfinden, ist alles ok.
Werte aus Komma getrennter Liste auswerten
Vor allem im Zusammenhang mit Typo3 Datenbanken kommt es oft dazu, daß man integer Werte in Komma-separierten Listen in einem Datenbank vorfindet. Auf diese Weise erzeugt Typo3 in der Standardeinstellung n:m Verknüpfungen (aber auch 1 : n Verknüpfungen).
Beim Auslesen ist das aber eher nachteilig. Eine geschicktere Methode als IN ab mysql 4 (meines Wissens) ist der Befehl FIND_IN_SET.
Die IN - Abfrage ist nur für Ganze Feldlängen zutreffend, also '1','2','3','4','5',usw, ...
Bei der Funktion FIND_IN_SET sucht MySQL in einer bestimmten Zeile und gibt die Stelle zurück an der der Wert in der LISTE steht.
FIND_IN_SET(WERT,LISTE)
In Typo3 gibts auch die Methode:
AND '.$GLOBALS['TYPO3_DB']->listQuery('feldname',5,'tabellenname').'
Die aber ein kompliziertes und wenig Performantes SQL Konstrukt erzeugt.
Vielleicht wird die Funktion ja noch umgebaut ;-)