MySQL Übliche Befehle und Übliche Anweisungen Schnellsuche
Anmeldung an der Datenbank mit dem mysql-Client
sh
mysql -h host -P port -u user -pSie können auch den Datenbanknamen angeben und die angegebene Datenbank direkt nach der Anmeldung verwenden:
sh
mysql -h host -P port -u user -p dbnamewobei 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
sql
SHOW DATABASES;Datenbank erstellen
sql
-- 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
sql
DROP DATABASE db_name;Verwenden der ausgewählten Datenbank
sql
USE db_name;Liste der Tabellen anzeigen
sql
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.
sql
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
sql
-- Tabellenstruktur anzeigen
DESC table_name;
-- SQL-Anweisung anzeigen, die die Tabelle erstellt hat
SHOW CREATE TABLE table_name;Tabelle löschen
sql
DROP TABLE table_name;Tabellennamen ändern
sql
ALTER TABLE table_name RENAME TO new_table_name;Felder hinzufügen/Spalten hinzufügen
sql
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
sql
ALTER TABLE table_name DROP COLUMN column_name;Feldattribute/Spaltenattribute ändern
sql
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
sql
ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name;Index anzeigen
sql
SHOW INDEX FROM table_name;Index hinzufügen
sql
-- 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
sql
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.
sql
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
sql
SELECT * FROM mysql.user;
-- Nur Benutzernamen und IP anzeigen
SELECT user, host FROM mysql.user;Benutzerpasswort ändern
sql
ALTER USER 'user'@'%' IDENTIFIED BY 'new_password';Benutzer löschen
sql
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.
sql
-- 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
sql
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.
sh
## 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.sqlDie Datei kann auch mit dem SQL-Befehl importiert werden
sql
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
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.txtSie können das Trennzeichen angeben.
sh
# 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. txtSie können auch eine Textdatei mit dem SQL-Statement importieren
sql
-- 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.
sql
-- 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
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
sh
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.sqlExportieren Sie Daten im Textformat mit mysql
sh
mysql -h host -P port -u user -p -e "select * from table_name" db_name > /tmp/table_name.txtExportierte Daten mit Tabellenkopf, ein Datensatz pro Zeile, jedes Feld ist durch Tabs (Tabulator/\t) getrennt.
Spalte1 Spalte2 Spalte3
Wert11 Wert12 Wert13
Wert21 Wert22 Wert23