Kategorie: MySQL

MySQL: Tabellen in andere Datenbank kopieren

Mit nachstehenden MySQL-Befehlen lässt sich eine Tabelle recht einfach in eine andere Datenbank kopieren. In diesem Beispiel werden die Daten von db1 in db2 kopiert.

Zunächst muss die neue Tabelle (mit gleicher Struktur) erstellt werden:

CREATE TABLE db2.newTable LIKE db1.oldTable

Danach können die Daten in die neue Tabelle kopiert werden:

ALTER TABLE db2.newTable DISABLE KEYS
INSERT INTO db2.newTable SELECT * FROM db1.oldTable
ALTER TABLE db2.newTable ENABLE KEYS

MySQL-Variablen für Spaltennamen (und andere Identifier) verwenden

Variablen lassen sich in MySQL hervorragend für Strings, Zahlenwerte oder auch binäre Daten verwenden. Möchte man diese Variablen jedoch zum Adressieren von Spalten, Tabellen oder Datenbanken verwenden, dann erfordert dies ein etwas anderes Vorgehen. Dieser Artikel gibt eine kurze Zusammenfassung, wie man MySQL-Variablen in Abfragen einsetzt.

MySQL: INSERT … ON DUPLICATE KEY UPDATE …

MySQL bietet die Möglichkeit, beim Ausführen eines INSERT INTO ein UPDATE auszuführen, falls es beim Einfügen des Datensatzes zu einem dublicate key kommt. Dies lässt sich mit folgender Eingabe erzielen:

INSERT INTO <table> (<field1>, <field2>) VALUES (<value1>, <value2>)
ON DUPLICATE KEY UPDATE <field2> = <field2> + 1;

Sollte es bei der Ausführung der INSERT-Anweisung zu einem doppelten Eintrag in einer als PRIMARY KEY oder UNIQUE KEY definierten Spalte kommen, dann wendet MySQL die UPDATE-Anweisung auf den Datensatz an, der zu dem doppelten Inhalten führt.

Spalte einer MySQL-Tabelle verschieben

Die Spalte einer MySQL-Tabelle lässt sich folgendermaßen an eine andere Position verschieben:

ALTER TABLE <tabelle> MODIFY <spaltenname> tinyint(1) DEFAULT '0'
AFTER <spaltenname_vor_neuer_position>

Wichtig ist hierbei auch die Angabe der Spaltendefinitionen. Eingaben wie „tinyint(1) DEFAULT ‚0‘“ müssen also den Definitionen der Spalte entsprechen und beim Verschieben mit angegeben werden.