Mysql Script: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 2: Zeile 2:
  
 
== Datenbankverwaltung ==
 
== Datenbankverwaltung ==
* Datenbank erstellen:
+
Datenbank erstellen.
 
* create database my_db;
 
* create database my_db;
  
* Datenbank löschen:
+
Datenbank löschen.
 
* drop database my_db;
 
* drop database my_db;
  
* In eine Datenbank wechseln:
+
In eine Datenbank wechseln.
 
* use my_db;
 
* use my_db;
  
 
== Tabellenverwaltung ==
 
== Tabellenverwaltung ==
* Tabelle erstellen:
+
Tabelle mit mehreren Spalten erstellen.
 
* create table my_table (kw int(4), tests int(16), labor int(16), postiv int(16), prozent float);
 
* create table my_table (kw int(4), tests int(16), labor int(16), postiv int(16), prozent float);
  
* Beschreibung einer Tabelle anzeigen:
+
Beschreibung einer Tabelle anzeigen.
 
* desc my_table;
 
* desc my_table;
  
* Tabelle löschen:
+
Tabelle löschen.
 
* drop table my_table;
 
* drop table my_table;
  
* Alle Werte in einer Tabelle löschen:
+
Alle Werte in einer Tabelle löschen.
 
* truncate table my_table;
 
* truncate table my_table;
  
 
== Daten einfügen und bearbeiten ==
 
== Daten einfügen und bearbeiten ==
* Werte in eine Tabelle einfügen:
+
Werte in eine Tabelle einfügen.
 
* insert into my_table values(11,127457,114,7582,5.95);
 
* insert into my_table values(11,127457,114,7582,5.95);
  
* Wert in einer Reihe ändern:
+
Wert in einer Reihe ändern.
 
* update my_table set labor=154 where kw=14;
 
* update my_table set labor=154 where kw=14;
  
* Reihe löschen:
+
Reihe aus der Tabelle löschen.
 
* delete from my_table where kw=11;
 
* delete from my_table where kw=11;
  
 
== Daten abfragen ==
 
== Daten abfragen ==
* Alle Werte einer Tabelle anzeigen:
+
Alle Werte einer Tabelle anzeigen.
 
* select * from my_table;
 
* select * from my_table;
  
* Bestimmte Werte ausgeben:
+
Bestimmte Spalten ausgeben, wenn eine Bedingung erfüllt ist.
 
* select kw, prozent from my_table where tests > 500000;
 
* select kw, prozent from my_table where tests > 500000;
  
* Sortierte Ausgabe:
+
Sortierte Ausgabe der Ergebnisse.
 
* select * from my_table where tests > 500000 order by labor;
 
* select * from my_table where tests > 500000 order by labor;
  
* Letzten Wert anzeigen:
+
Letzten Wert aus der Tabelle ausgeben.
 
* select * from my_table order by kw desc limit 1;
 
* select * from my_table order by kw desc limit 1;
  
 
== CSV-Import und -Export ==
 
== CSV-Import und -Export ==
* Tabelle aus CSV-Datei füllen:
+
Daten aus einer CSV-Datei in die Tabelle laden.
 
* load data infile "/var/lib/mysql-files/my.csv" into table my_table fields terminated by ',' lines terminated by '\n' ignore 1 rows;
 
* load data infile "/var/lib/mysql-files/my.csv" into table my_table fields terminated by ',' lines terminated by '\n' ignore 1 rows;
  
* Sicherung in CSV-Datei:
+
Daten aus einer Tabelle als CSV-Datei speichern.
 
* select * into outfile "/var/lib/mysql-files/backup.csv" fields terminated by ',' enclosed by '"' lines terminated by '\n' from my_table;
 
* select * into outfile "/var/lib/mysql-files/backup.csv" fields terminated by ',' enclosed by '"' lines terminated by '\n' from my_table;
  
 
== Backup und Wiederherstellung ==
 
== Backup und Wiederherstellung ==
* Backup einer Datenbank:
+
Backup einer Datenbank erstellen.
 
* mysqldump my_db > my_db.sql;
 
* mysqldump my_db > my_db.sql;
  
* Backup aller Datenbanken:
+
Backup aller Datenbanken erstellen.
 
* mysqldump --all-databases > all_dbs.sql;
 
* mysqldump --all-databases > all_dbs.sql;
  
* Wiederherstellung einer Datenbank:
+
Backup einer einzelnen Datenbank wiederherstellen.
 
* mysql my_db < my_db.sql;
 
* mysql my_db < my_db.sql;
  
* Wiederherstellung aller Datenbanken:
+
Backup aller Datenbanken wiederherstellen.
 
* mysql < all_dbs.sql;
 
* mysql < all_dbs.sql;
  
 
== Benutzerverwaltung ==
 
== Benutzerverwaltung ==
* Benutzer anlegen:
+
Neuen Benutzer anlegen.
 
* create user 'tuxman'@'localhost' identified by 'Suxer-88';
 
* create user 'tuxman'@'localhost' identified by 'Suxer-88';
  
* Benutzerrechte gewähren:
+
Benutzerrechte für eine Datenbank vergeben.
 
* grant all privileges on my_db.* to 'tuxman'@'localhost';
 
* grant all privileges on my_db.* to 'tuxman'@'localhost';
 
* flush privileges;
 
* flush privileges;
  
* Benutzerrechte entziehen:
+
Benutzerrechte entziehen.
 
* revoke all privileges on my_db.* from 'tuxman'@'localhost';
 
* revoke all privileges on my_db.* from 'tuxman'@'localhost';
 
* flush privileges;
 
* flush privileges;
  
* Passwort eines Benutzers ändern:
+
Passwort eines Benutzers ändern.
 
* update user set password=password('suxer') where user='tuxman';
 
* update user set password=password('suxer') where user='tuxman';
 
* flush privileges;
 
* flush privileges;
  
* Alle Benutzer anzeigen:
+
Liste aller Benutzer ausgeben.
 
* select user from mysql.user;
 
* select user from mysql.user;
  
 
== Erweiterte SQL-Funktionen ==
 
== Erweiterte SQL-Funktionen ==
* Tabelle mit Primärschlüssel erstellen:
+
Tabelle mit Primärschlüssel erstellen.
 
* create table my_table (kw int(4) primary key, tests int(16), labor int(16), postiv int(16), prozent float);
 
* create table my_table (kw int(4) primary key, tests int(16), labor int(16), postiv int(16), prozent float);
  
* Spalte hinzufügen:
+
Neue Spalte zur Tabelle hinzufügen.
 
* alter table my_table add column test_p_1000 int(16);
 
* alter table my_table add column test_p_1000 int(16);
  
* Spalte entfernen:
+
Spalte aus einer Tabelle entfernen.
 
* alter table my_table drop column test_p_1000;
 
* alter table my_table drop column test_p_1000;
  
* Spaltenwerte berechnen:
+
Berechnete Spalte hinzufügen.
 
* alter table my_table add column prozent float default (postiv / tests * 100);
 
* alter table my_table add column prozent float default (postiv / tests * 100);
  
* Tabelle duplizieren:
+
Tabelle duplizieren.
 
* create table my_new_table like my_table;
 
* create table my_new_table like my_table;
  
* Datentyp einer Spalte ändern:
+
Datentyp einer Spalte ändern.
 
* alter table my_table modify column prozent double;
 
* alter table my_table modify column prozent double;
  
* Name einer Spalte ändern:
+
Spaltennamen ändern.
 
* alter table my_table change prozent anteil float;
 
* alter table my_table change prozent anteil float;
  
 
== Gruppierte Abfragen ==
 
== Gruppierte Abfragen ==
* Gruppierte Summenberechnung:
+
Summenberechnung nach Gruppen.
 
* select sum(AnzahlFall), Altersgruppe from rki_csv where Landkreis = 'SK Zweibrücken' group by Altersgruppe;
 
* select sum(AnzahlFall), Altersgruppe from rki_csv where Landkreis = 'SK Zweibrücken' group by Altersgruppe;
  
 
== Automatisierung mit Triggern und Events ==
 
== Automatisierung mit Triggern und Events ==
* Automatische Protokollierung bei INSERT:
+
Automatische Protokollierung von Einträgen aktivieren.
 
* create trigger log_insert after insert on my_table for each row insert into log_table (aktion, zeit) values ('INSERT', now());
 
* create trigger log_insert after insert on my_table for each row insert into log_table (aktion, zeit) values ('INSERT', now());
  
* Zeitgesteuerte Bereinigung von Daten:
+
Regelmäßige Bereinigung alter Daten durch ein Event.
 
* create event cleanup_old_entries on schedule every 1 day do delete from my_table where kw < 10;
 
* create event cleanup_old_entries on schedule every 1 day do delete from my_table where kw < 10;
  
 
== JSON-Unterstützung in MySQL 5.7+ und MariaDB ==
 
== JSON-Unterstützung in MySQL 5.7+ und MariaDB ==
* JSON-Daten speichern:
+
JSON-Daten in einer Tabelle speichern.
 
* create table json_test (id int auto_increment primary key, daten json);
 
* create table json_test (id int auto_increment primary key, daten json);
  
* Daten aus JSON-Feld extrahieren:
+
Daten aus JSON-Feld extrahieren.
 
* select json_extract(daten, '$.name') from json_test;
 
* select json_extract(daten, '$.name') from json_test;
  
 
== Fazit ==
 
== Fazit ==
* Dieses Skript fasst die wichtigsten MySQL-Befehle kompakt zusammen.
+
Dieses Skript fasst die wichtigsten MySQL-Befehle kompakt zusammen. Die vorgestellten Befehle ermöglichen effizientes Datenbankmanagement. Automatisierung und Optimierung können durch Trigger, Events und JSON-Unterstützung erweitert werden.
* Die vorgestellten Befehle ermöglichen effizientes Datenbankmanagement.
 
* Automatisierung und Optimierung können durch Trigger, Events und JSON-Unterstützung erweitert werden.
 

Version vom 15. März 2025, 10:25 Uhr

MySQL Kompaktskript

Datenbankverwaltung

Datenbank erstellen.

  • create database my_db;

Datenbank löschen.

  • drop database my_db;

In eine Datenbank wechseln.

  • use my_db;

Tabellenverwaltung

Tabelle mit mehreren Spalten erstellen.

  • create table my_table (kw int(4), tests int(16), labor int(16), postiv int(16), prozent float);

Beschreibung einer Tabelle anzeigen.

  • desc my_table;

Tabelle löschen.

  • drop table my_table;

Alle Werte in einer Tabelle löschen.

  • truncate table my_table;

Daten einfügen und bearbeiten

Werte in eine Tabelle einfügen.

  • insert into my_table values(11,127457,114,7582,5.95);

Wert in einer Reihe ändern.

  • update my_table set labor=154 where kw=14;

Reihe aus der Tabelle löschen.

  • delete from my_table where kw=11;

Daten abfragen

Alle Werte einer Tabelle anzeigen.

  • select * from my_table;

Bestimmte Spalten ausgeben, wenn eine Bedingung erfüllt ist.

  • select kw, prozent from my_table where tests > 500000;

Sortierte Ausgabe der Ergebnisse.

  • select * from my_table where tests > 500000 order by labor;

Letzten Wert aus der Tabelle ausgeben.

  • select * from my_table order by kw desc limit 1;

CSV-Import und -Export

Daten aus einer CSV-Datei in die Tabelle laden.

  • load data infile "/var/lib/mysql-files/my.csv" into table my_table fields terminated by ',' lines terminated by '\n' ignore 1 rows;

Daten aus einer Tabelle als CSV-Datei speichern.

  • select * into outfile "/var/lib/mysql-files/backup.csv" fields terminated by ',' enclosed by '"' lines terminated by '\n' from my_table;

Backup und Wiederherstellung

Backup einer Datenbank erstellen.

  • mysqldump my_db > my_db.sql;

Backup aller Datenbanken erstellen.

  • mysqldump --all-databases > all_dbs.sql;

Backup einer einzelnen Datenbank wiederherstellen.

  • mysql my_db < my_db.sql;

Backup aller Datenbanken wiederherstellen.

  • mysql < all_dbs.sql;

Benutzerverwaltung

Neuen Benutzer anlegen.

  • create user 'tuxman'@'localhost' identified by 'Suxer-88';

Benutzerrechte für eine Datenbank vergeben.

  • grant all privileges on my_db.* to 'tuxman'@'localhost';
  • flush privileges;

Benutzerrechte entziehen.

  • revoke all privileges on my_db.* from 'tuxman'@'localhost';
  • flush privileges;

Passwort eines Benutzers ändern.

  • update user set password=password('suxer') where user='tuxman';
  • flush privileges;

Liste aller Benutzer ausgeben.

  • select user from mysql.user;

Erweiterte SQL-Funktionen

Tabelle mit Primärschlüssel erstellen.

  • create table my_table (kw int(4) primary key, tests int(16), labor int(16), postiv int(16), prozent float);

Neue Spalte zur Tabelle hinzufügen.

  • alter table my_table add column test_p_1000 int(16);

Spalte aus einer Tabelle entfernen.

  • alter table my_table drop column test_p_1000;

Berechnete Spalte hinzufügen.

  • alter table my_table add column prozent float default (postiv / tests * 100);

Tabelle duplizieren.

  • create table my_new_table like my_table;

Datentyp einer Spalte ändern.

  • alter table my_table modify column prozent double;

Spaltennamen ändern.

  • alter table my_table change prozent anteil float;

Gruppierte Abfragen

Summenberechnung nach Gruppen.

  • select sum(AnzahlFall), Altersgruppe from rki_csv where Landkreis = 'SK Zweibrücken' group by Altersgruppe;

Automatisierung mit Triggern und Events

Automatische Protokollierung von Einträgen aktivieren.

  • create trigger log_insert after insert on my_table for each row insert into log_table (aktion, zeit) values ('INSERT', now());

Regelmäßige Bereinigung alter Daten durch ein Event.

  • create event cleanup_old_entries on schedule every 1 day do delete from my_table where kw < 10;

JSON-Unterstützung in MySQL 5.7+ und MariaDB

JSON-Daten in einer Tabelle speichern.

  • create table json_test (id int auto_increment primary key, daten json);

Daten aus JSON-Feld extrahieren.

  • select json_extract(daten, '$.name') from json_test;

Fazit

Dieses Skript fasst die wichtigsten MySQL-Befehle kompakt zusammen. Die vorgestellten Befehle ermöglichen effizientes Datenbankmanagement. Automatisierung und Optimierung können durch Trigger, Events und JSON-Unterstützung erweitert werden.