Damit der Einstieg in MySQL auf ein Linux-Umgebung erleichtert wird, hier ist eine Liste von Linux- und SQL-Befehle. Diese Liste ist nicht komplett, wird aber mit der Zeit ergänzt.
| Datenbanken erstellen, anzeigen, auswählen, löschen, verlassen, … |
| CREATE DATABASE datenbank_name; |
Datenbank erstellen |
| SHOW DATABASES; |
Datenbanken anzeigen |
| use datenbank_name |
Datenbank auswählen |
| DROP DATABASE datenbank_name |
Datenbank löschen |
| DROP DATABASE IF EXISTS datenbank_name; |
Datenbank löschen |
| status |
Status der Server anzeigen |
| help |
Hilfe anzeigen |
| exit |
Datenbank verlassen |
| quit |
Datenbank verlassen |
| Tabelle erstellen, anzeigen, ändern, löschen, prüfen |
| CREATE TABLE tabelle_name (
id INT AUTO_INCREMENT PRIMARY KEY, spalte1 varchar(50) NOT NULL); |
Tabelle erstellen |
| SHOW TABLES FROM datenbank_name; |
Tabellen anzeigen |
| DROP TABLE tabelle_name; |
Tabelle löschen |
| DROP TABLE IF EXISTS tabelle_name; |
Tabelle löschen |
| ALTER TABLE tabelle_name ADD COLUMN (spalte2 char(50)); |
Spalte hinzufügen |
| ALTER TABLE tabelle_name MODIFY (spalte2 varchar(50)); |
Datentyp einer Spalte ändern |
| ALTER TABLE tabelle_name DROP COLUMN spalte2; |
Spalte löschen |
| CHECK Table tabelle_name QUICK |
Prüft Tabelle nach Fehler |
| CHECK Table tabelle_name FAST |
Prüft Tabelle nach Fehler, |
| CHECK Table tabelle_name CHANGED |
Prüft Tabelle nach Fehler |
| CHECK Table tabelle_name MEDIUM |
Prüft Tabelle nach Fehler |
| CHECK Table tabelle_name EXTENDED |
Prüft Tabelle nach Fehler |
| Daten hinzufügen, anzeigen, ändern, löschen |
| INSERT INTO tabelle_name (spalte1, spalte2) VALUES (wert1, wert2); |
Daten hinzufügen |
| SELECT * FROM tabelle_name; |
Alle Daten anzeigen |
| UPDATE tabelle_name SET spalte1 = neuer_wert1 WHERE id = 1; |
Daten ändern |
| DELETE FROM tabelle_name WHERE id = 1; |
Bestimmte Daten löschen |
| DELETE FROM tabelle_name; |
Alle Daten löscht |
| SELECT spalte1, spalte2 FROM tabelle_name; |
Daten im Spalte1 und Spalte2 Anzeigen |
| SELECT DISTINCT spalte1 FROM tabelle_name; |
keine doppelten Zeilen anzeigen |
| SELECT * FROM tabelle_name WHERE id = 1; |
Bestimmte Daten anzigen |
| SELECT * FROM tabelle_name WHERE spalte1 = ‘blabla’; |
Bestimmte Daten anzigen |
| SELECT * FROM tabelle_name WHERE id BETWEEN 10 AND 20; |
Bestimmte Daten anzigen |
| SELECT * FROM tabelle_name WHERE spalte1 LIKE ‘%blabla%’; |
Bestimmte Daten anzigen |
| SELECT * FROM tabelle_name WHERE spalte1 LIKE ‘w__t’; |
Bestimmte Daten anzigen |
| SELECT * FROM tabelle_name WHERE id > 10 AND id < 20; |
Bestimmte Daten anzigen |
| SELECT * FROM tabelle_name WHERE id = 10 OR id = 20; |
Bestimmte Daten anzigen |
| SELECT * FROM tabelle_name WHERE id < 10 AND NOT id = 5; |
Bestimmte Daten anzigen |
| SELECT * FROM tabelle_name WHERE id < 10 OR (spalte1 = ‘blabla’ AND id = 5); |
Bestimmte Daten anzigen |
| Daten Anzeigen mittel Aggregatfunktionen |
| SELECT COUNT(*) FROM tabelle_name WHERE spalte1 = ‘blabla’; |
Zeilen zählen, wo das Wort blabla taucht |
| SELECT SUM(preis) FROM tabelle_name; |
Summierung |
| SELECT AVG(preis) FROM tabelle_name; |
Durchschnitt |
| SELECT MAX(preis) FROM tabelle_name; |
Maximal-wert |
| SELECT MIN(preis) FROM tabelle_name; |
Minimal-wert |
| SELECT spalte1, COUNT(*) FROM tabelle_name GROUP BY spalte1; |
Gruppierung |
| Daten aufsteigend oder absteigend anzeigen |
| SELECT * FROM tabelle_name ORDER BY spalte1; |
aufsteigend |
| SELECT * FROM tabelle_name ORDER BY spalte1 ASC; |
aufsteigend |
| SELECT * FROM tabelle_name ORDER BY spalte1 DESC; |
absteigend |
| SELECT * FROM tabelle_name ORDER BY spalte1, spalte2; |
aufsteigend |
Verwandte Artikel:
Dieser Beitrag wurde unter
Linux abgelegt und mit
mysql,
sql verschlagwortet. Setze ein Lesezeichen auf den
Permalink.
Datenbank sichern:
mysqldump -u BENUTZERNAME -p PASSWORD DATENBANKNAME > daten300710.SQL
Datenbank wiederherstellen:
mysql -u BENUTZERNAME -p PASSWORD DATENBANKNAME < daten300710.SQL
Bestimmte Tabelle sichern:
mysqldump -u BENUTZERNAME -p PASSWORD DATENBANKNAME TABELLENAME > tabellenameBackup.SQL
Bestimmte Tabelle mit Linux-Befehl ‘cat’ wiederherstellen:
cat tabellenameBackup.SQL | mysql -u root DATENBANKNAME
Mehrere Datenbanken sichern:
mysqldump -u BENUTZERNAME -p PASSWORD -B DATENBANKNAME1 DATENBANKNAME2 DATENBANKNAME3 > alle_datenbanken_backup.SQL
Alle Datenbanken sichern:
mysqldump -u BENUTZERNAME -p PASSWORD -A > alle_datenbanken_backup.SQL
Datenbank-Struktur sichern (also ohne Daten)
mysqldump -d -u BENUTZERNAME -p PASSWORD DATENBANKNAME > strukturback.SQL
Datenbank komprimiert sichern:
mysqldump -u BENUTZERNAME -p PASSWORD DATENBANKNAME | gzip -9 > daten300710.SQL.gz
Komprimierte Datenbank wiederherstellen:
gunzip < daten300710.SQL.gz | mysql -u BENUTZERNAME -p PASSWORD DATENBANKNAME
Teil eines Strings zurückgeben:
SELECT SUBSTRING_INDEX(‘www.wissensrallye.de’, ‘.’, 2);
-> ‘www.wissensrallye’
SELECT SUBSTRING_INDEX(‘www.wissensrallye.de’, ‘.’, -1);
-> ‘de’
Mysql Bash History findet man unter:
/HOME/USERNAME/.mysql_history
Mehrere String verbinden und ausgeben
SELECT CONCAT(‘www’ , ‘.’ , ‘wissensrallye’ , ‘.’ , ‘de’);
-> http://www.wissensrallye.de
Daten von mehrere Tabellen, die miteinander verbunden sind, ausgeben:
SELECT * FROM TABELLE1, TABELLE2 WHERE TABELLE1.id=TABELLE2.id;
SELECT * FROM TABELLE1 LEFT JOIN TABELLE2 USING (id);
SELECT * FROM TABELLE1 LEFT JOIN TABELLE2 ON TABELLE1.id=TABELLE2.id;
Struktur einer Tabelle ausgeben:
desc TABELLENAME;
Daten von ein Textdatei in Datenbanktabelle importieren:
Fallbeispiel:
/tmp/herstellerliste.txt enthält folgende Daten:
7;APRILIA;NULL;2010-10-04 17:30:01;NULL
8;AWO;NULL;2010-10-04 17:30:01;NULL
9;BENELLI;NULL;2010-10-04 17:30:01;NULL
10;BIMOTA;NULL;2010-10-04 17:30:01;NULL
Der Befehl zum Importieren lautet:
mysql> load data infile “/tmp/herstellerliste.txt” into table manufacturers fields terminated by “;”
PS:
Der Text Datei muss genau im Verzeichnis /tmp/ liegen
Die Tabelle manufacturers enthält genau 5 Spalten,
Bestimmte Daten von eine Tabelle in ein andere Tabelle kopieren:
INSERT INTO tabelle_yyy (spalte_y1, spalte_y2) select spalte_x1, spalte_x2 from tabelle_xxx;
dh. hier werden die Daten der spalte_x1 und spalte_x2 der Tabelle tabelle_xxx in spalte_y1 und spalte_y2 der Tabelle tabelle_yyy kopiert.
Datums- und Zeitfunktionen:
http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html
SHOW PROCESSLIST
Es spricht für sich selbst
Subselect / Subquery
SELECT Spalte1 FROM Tabelle1 WHERE Spalte2 = (SELECT MIN(Spalte3) FROM Tabelle2)
SELECT Spalte2 FROM Tabelle1 WHERE Spalte2 IN (SELECT Spalte3 FROM Tabelle2)
SELECT Spalte3 FROM Tabelle1 WHERE Spalte3 NOT IN (SELECT Spalte3 FROM Tabelle2)
Horizontale Ausgabe einer Tabelle:
select * from products where products_id=”187548″ limit 4\G;
Nur bestimmte Daten einer Tabelle sichern
mysqldump -t -uc8xtcommerce -pUfHdRL c8xtcommerce content_manager
- -where=”content_group=4″ > content_manager_impressum_Backup.SQL
-t keine Tabelle (ohne -t ist gefährlich, da beim Wiederherstellen die Tabelle neu erstellt wird, und dadurch wird die Alte gelöscht und ein neue erstellt, somit werden wir alle Daten der Tabelle verlieren).
Der Unterschied zwischen REPLACE und INSERT
REPLACE funktioniert genau so wie INSERT. Der einzige Unterschied ist, dass der alter Datensatz gelöscht wird, bevor der neue eingefügt wird, wenn dieser gleiche Wert wie der neuer Datensatz für einen Primärschlüssel oder einen eindeutigen Index hat.
Der Unterschied zwischen REPLACE und INSERT
REPLACE funktioniert genau so wie INSERT. Der einzige Unterschied ist, dass der alter Datensatz gelöscht wird, bevor der neue eingefügt wird, wenn dieser gleiche Wert wie der neuer Datensatz für einen Primärschlüssel oder einen eindeutigen Index hat.
Gute Literatur
http://openbook.galileocomputing.de/it_handbuch/fachinformatiker_12_datenbanken_001.htm
PASSWORD ändern:
mysql -u BENUTZERNAME -p PASS;
use mysql;
update user set password=PASSWORD(“NEUPASSW”)
where User=”BENUTZERNAME”;
mysql> flush privileges;
Datenbank Sichern (die bessere Variante)
mysqldump - -databases -uroot persons > persons.sql
Mit der Option – -databases wird beim Wiederherstellen der Datenbank der Datenbank selbst erstellt falls diese nicht existiert.
D.h. der Wiederherstellungsskript enthält schon das Befehl “create database”