MySQL Übliche Befehle und Übliche Anweisungen Schnellsuche
Anmeldung an der Datenbank mit dem mysql-Client
mysql -h host -P port -u user -p
Sie können auch den Datenbanknamen angeben und die angegebene Datenbank direkt nach der Anmeldung verwenden:
mysql -h host -P port -u user -p dbname
wobei host
die Adresse des Datenbankservers ist, port
die Portnummer, user
der Benutzername und p
bedeutet, dass das Passwort verwendet wird. Anstatt es direkt im Befehl einzugeben, drücken Sie die Eingabetaste und geben Sie es separat ein.
Datenbank anzeigen
SHOW DATABASES;
Datenbank erstellen
-- Datenbank erstellen
CREATE DATABASE db_name;
-- nur erstellen, wenn die Ziel-Datenbank nicht existiert
CREATE DATABASE IF NOT EXISTS db_name;
-- Datenbank erstellen und den Zeichensatz festlegen
CREATE DATABASE db_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- nur erstellen, wenn die Ziel-Datenbank nicht existiert, und den Zeichensatz festlegen
CREATE DATABASE IF NOT EXISTS db_name DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Datenbank löschen
DROP DATABASE db_name;
Verwenden der ausgewählten Datenbank
USE db_name;
Liste der Tabellen anzeigen
SHOW TABLES;
Tabelle erstellen
Zuerst müssen Sie die Eigenschaften jedes Feldes kennen, wie z.B. Typ, Länge, ob es leer ist, ob es selbstwertend ist, usw. Die gängigen sind:
- Typ (Länge), z.B.
VARCHAR(255)
,INT
,TEXT
,TIMESTAMP
,DATETIME
, usw. - Ob es null sein soll,
NULL
,NOT NULL
- Standardwert,
DEFAULT Wert
- Auto-Inkrement
AUTO_INCREMENT
- Primärschlüssel
PRIMARY KEY
- Bemerkungen
COMMENT 'Bemerkungen'
- Codierungssatz
CHARACTER SET utf8mb4
- Sortieren nach
COLLATE utf8mb4_general_ci
Schreiben Sie das Feld zuerst mit dem Feldnamen und dann mit den Feldattributen.
Tabelle erstellen.
CREATE TABLE table_name (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE table_name (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'Name',
age INT NOT NULL DEFAULT 0 COMMENT 'Alter',
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Erstellungszeit',
);
Tabellenstruktur anzeigen
-- Tabellenstruktur anzeigen
DESC table_name;
-- SQL-Anweisung anzeigen, die die Tabelle erstellt hat
SHOW CREATE TABLE table_name;
Tabelle löschen
DROP TABLE table_name;
Tabellennamen ändern
ALTER TABLE table_name RENAME TO new_table_name;
Felder hinzufügen/Spalten hinzufügen
ALTER TABLE table_name ADD COLUMN new_column_name;
ALTER TABLE table_name ADD COLUMN new_column_name VARCHAR(255) NOT NULL;
ALTER TABLE table_name ADD COLUMN new_column_name INT NOT NULL DEFAULT 0 COMMENT 'Bemerkungen';
ALTER TABLE table_name ADD COLUMN new_column_name INT NOT NULL DEFAULT 0 COMMENT 'Bemerkungen' AFTER column_name;
Feld löschen/Spalte löschen
ALTER TABLE table_name DROP COLUMN column_name;
Feldattribute/Spaltenattribute ändern
ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR(255) NOT NULL;
ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'Bemerkungen';
Feldname/Spaltenname ändern
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name;
Index anzeigen
SHOW INDEX FROM table_name;
Index hinzufügen
-- Einzelnes Feld allgemeiner Index hinzufügen
ALTER TABLE table_name ADD INDEX index_name (column_name);
-- Mehrfeldverbundindex hinzufügen
ALTER TABLE table_name ADD INDEX index_name (column_name1, column_name2);
-- Eindeutigen Index hinzufügen
ALTER TABLE table_name ADD UNIQUE INDEX index_name (column_name);
-- Primärschlüsselindex hinzufügen
ALTER TABLE table_name ADD PRIMARY KEY (column_name);
Index löschen
ALTER TABLE table_name DROP INDEX index_name;
ALTER TABLE table_name DROP PRIMARY KEY;
Benutzer erstellen
MySQL-Benutzer werden über die IP autorisiert. Die Kombination aus Benutzername + IP ergibt den vollständigen Benutzer. Zum Beispiel sind 'user'@'172.8.8.1'
und 'user'@'172.8.8.2'
unterschiedliche Benutzer.
Wenn ein Benutzer den Zugriff auf alle IPs erlaubt, können Sie '%'
als IP verwenden. Wenn Sie den Zugriff auf ein IP-Segment einschränken müssen, müssen Sie das Subnetz angeben. Um beispielsweise den Zugriff auf 172.8.8.*
zu ermöglichen, müssen Sie '172.8.8.0/255.255.255.0'
verwenden.
CREATE USER 'user'@'%' IDENTIFIED BY 'password';
CREATE USER 'user'@'172.8.8.1' IDENTIFIED BY 'password';
CREATE USER 'user'@'172.8.8.2' IDENTIFIED BY 'password';
CREATE USER 'user'@'172.8.8.0/255.255.255.0' IDENTIFIED BY 'password';
Benutzerliste anzeigen
SELECT * FROM mysql.user;
-- Nur Benutzernamen und IP anzeigen
SELECT user, host FROM mysql.user;
Benutzerpasswort ändern
ALTER USER 'user'@'%' IDENTIFIED BY 'new_password';
Benutzer löschen
DROP USER 'user'@'%';
Autorisieren Sie die angegebene Datenbank und Tabelle für einen Benutzer
MySQL hat viele Berechtigungen wie SELECT
, INSERT
, UPDATE
, DELETE
, ALTER
, CREATE
, DROP
, usw. Wenn Sie alle Berechtigungen gewähren möchten, können Sie ALL
schreiben.
-- Gewähren Sie SELECT-Berechtigungen für die angegebene Tabelle
GRANT SELECT ON db_name.table_name TO 'user'@'%';
-- Autorisieren Sie SELECT, INSERT, UPDATE, DELETE-Berechtigungen für die angegebene Tabelle
GRANT SELECT, INSERT, UPDATE, DELETE ON db_name.table_name TO 'user'@'%';
-- Gewähren Sie alle Berechtigungen für die Datenbank db_name
GRANT ALL ON db_name.* TO 'user'@'%';
-- Autorisieren Sie alle Berechtigungen
GRANT ALL ON *.* TO 'user'@'%';
Deautorisieren Sie die angegebene Datenbank und Tabelle
REVOKE SELECT ON db_name.table_name FROM 'user'@'%';
REVOKE ALL ON db_name.* FROM 'user'@'%';
REVOKE ALL ON *.* FROM 'user'@'%';
Daten importieren
Importieren aus einer SQL-Datei
SQL-Dateien können mit dem mysql
-Befehl importiert werden.
## Ohne Datenbanknamen müssen Sie die Datenbank in SQL angeben
mysql -h host -P port -u user -p password < file_name.sql
# Datenbank angeben, kann in SQL ohne Datenbank angegeben werden
mysql -h host -P port -u user -p password db_name < file_name.sql
Die Datei kann auch mit dem SQL-Befehl importiert werden
SOURCE file_name.sql;
Importieren aus einer Textdatei
Textdateien können in eine Datenbank importiert werden, wenn sie durch Zeilenumbrüche getrennt sind, eine Datenzeile pro Zeile mit Tabs (Tabulator/\t
) als Feldtrennzeichen. In diesem Fall können Sie die Datenbank direkt mit mysqlimport
importieren: ```sh
# Importieren mit Standardfeldern und -reihenfolge
mysqlimport -h host -P port -u user -p db_name file_name.txt
# Felder und Importreihenfolge angeben
mysqlimport -h host -P port -u user -p db_name --columns=filed1,filed2,field3 file_name.txt
Sie können das Trennzeichen angeben.
# Importieren mit Standardfeldern und -reihenfolge
mysqlimport -h host -P port -u user -p db_name --fields-terminated-by=, --lines-terminated-by="\r\n" file_name.txt
# Felder und Reihenfolge zum Importieren angeben
mysqlimport -h host -P port -u user -p db_name --fields-terminated-by=, --lines-terminated-by="\r\n" --columns=filed1,filed2,field3 file_name. txt
Sie können auch eine Textdatei mit dem SQL-Statement importieren
-- Importieren nach Standardfeldern und Reihenfolge
LOAD DATA INFILE 'file_name.sql' INTO TABLE table_name;
-- Importieren nach angegebenen Feldern und Reihenfolge
LOAD DATA INFILE 'file_name.sql' INTO TABLE table_name (field1, field2, field3);
Das Importieren mit SQL-Statements ermöglicht es Ihnen auch, Trennzeichen anzugeben, z.B.
-- Importieren nach Standardfeldern und Reihenfolge
LOAD DATA INFILE 'file_name.txt' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
-- Felder und Reihenfolge des Imports angeben
LOAD DATA INFILE 'file_name.txt' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' (field1, field2, field3);
Daten exportieren
Exportieren von Daten im CSV-Textformat mit SQL
-- Daten im CSV-Textformat exportieren
SELECT * FROM table_name INTO OUTFILE '/tmp/table_name.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n';
Exportieren Sie Daten im SQL-Format mit mysqldump
mysqldump -h host -P port -u user -p db_name > /tmp/db_name.sql
mysqldump -h host -P port -u user -p db_name table_name > /tmp/table_name.sql
Exportieren Sie Daten im Textformat mit mysql
mysql -h host -P port -u user -p -e "select * from table_name" db_name > /tmp/table_name.txt
Exportierte Daten mit Tabellenkopf, ein Datensatz pro Zeile, jedes Feld ist durch Tabs (Tabulator/\t
) getrennt.
Spalte1 Spalte2 Spalte3
Wert11 Wert12 Wert13
Wert21 Wert22 Wert23