Mariadb Workshop: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 93: Zeile 93:
 
  ('Skoda', 'Octavia', 2021, 'blau', 25999.99),
 
  ('Skoda', 'Octavia', 2021, 'blau', 25999.99),
 
  ('Mazda', 'CX-5', 2022, 'rot', 31999.50);
 
  ('Mazda', 'CX-5', 2022, 'rot', 31999.50);
 
 
= Ein Auto löschen =
 
= Ein Auto löschen =
 
Löscht ein Auto anhand der ID.
 
Löscht ein Auto anhand der ID.
Zeile 103: Zeile 102:
 
Ändert die Farbe aller BMWs auf "blau".   
 
Ändert die Farbe aller BMWs auf "blau".   
 
*update autos set farbe = 'blau' where marke = 'BMW';   
 
*update autos set farbe = 'blau' where marke = 'BMW';   
 
 
= Aggregationen und Gruppen =   
 
= Aggregationen und Gruppen =   
 
Zeigt die durchschnittlichen Preise pro Marke.   
 
Zeigt die durchschnittlichen Preise pro Marke.   
Zeile 110: Zeile 108:
 
Zeigt die Anzahl der Autos pro Marke.   
 
Zeigt die Anzahl der Autos pro Marke.   
 
*select marke, count(*) from autos group by marke;   
 
*select marke, count(*) from autos group by marke;   
 
 
= Neue Tabelle Kunden anlegen =   
 
= Neue Tabelle Kunden anlegen =   
 
Fügt eine Tabelle für Kunden hinzu.   
 
Fügt eine Tabelle für Kunden hinzu.   
Zeile 119: Zeile 116:
 
  email varchar(100)   
 
  email varchar(100)   
 
);   
 
);   
 
 
= Joins: Autos mit Kunden verknüpfen =   
 
= Joins: Autos mit Kunden verknüpfen =   
 
Fügt eine Spalte für den Fahrzeugbesitzer hinzu.   
 
Fügt eine Spalte für den Fahrzeugbesitzer hinzu.   
 
*alter table autos add column kunde_id int;   
 
*alter table autos add column kunde_id int;   
=Zeigt alle Autos mit den dazugehörigen Kunden=
+
= Zeigt alle Autos mit den dazugehörigen Kunden =
 
*select autos.marke, autos.modell, kunden.name from autos left join kunden on autos.kunde_id = kunden.id;   
 
*select autos.marke, autos.modell, kunden.name from autos left join kunden on autos.kunde_id = kunden.id;   
= Benutzer anlegen und Rechte vergeben =   
+
= Benutzer anlegen =   
 
Erstellt einen neuen Benutzer für den Zugriff.   
 
Erstellt einen neuen Benutzer für den Zugriff.   
 
*create user 'autouser'@'localhost' identified by 'Passwort123';   
 
*create user 'autouser'@'localhost' identified by 'Passwort123';   
 
+
= Lesezugriff für autouser = 
 
Gibt Lesezugriff auf die Tabelle autos.   
 
Gibt Lesezugriff auf die Tabelle autos.   
 
*grant select on fahrzeuge.autos to 'autouser'@'localhost';   
 
*grant select on fahrzeuge.autos to 'autouser'@'localhost';   
 
 
= Indizes für schnellere Abfragen =   
 
= Indizes für schnellere Abfragen =   
 
Erstellt einen Index auf der Spalte "marke".   
 
Erstellt einen Index auf der Spalte "marke".   
 
*create index idx_marke on autos (marke);   
 
*create index idx_marke on autos (marke);   
 
 
= Backup und Wiederherstellung =   
 
= Backup und Wiederherstellung =   
 
Sichert die Datenbank in eine Datei.   
 
Sichert die Datenbank in eine Datei.   
Zeile 141: Zeile 135:
  
 
Stellt das Backup wieder her.   
 
Stellt das Backup wieder her.   
*mysql -u root -p fahrzeuge < fahrzeuge.sql;
+
*mysql -u root -p fahrzeuge < fahrzeuge.sql;
 
 
Was möchtest du als nächstes vertiefen?
 

Version vom 20. März 2025, 19:54 Uhr

MariaDB Installation

MariaDB ist eine freie relationale Datenbank. Die Installation erfolgt über das Paketmanagement. Der Client ermöglicht die Verbindung zur Datenbank.

  • apt update && apt install mariadb-server mariadb-client

MariaDB Einrichtung

Nach der Installation sollte MariaDB initial konfiguriert werden, um die Sicherheit zu erhöhen. (Default ist ok, Passwort setzen)

  • mysql_secure_installation

Mit dem MariaDB-Client verbinden

Nach der Installation kann man sich mit dem Client zur Datenbank verbinden.

  • mysql -u root -p

Anzeigen der Datenbanken

Zeigt alle vorhandenen Datenbanken an.

  • show databases;

Wechseln in eine Datenbank

Wechselt in die gewünschte Datenbank.

  • use mysql;

Anzeigen der Tabellen einer Datenbank

Zeigt alle Tabellen der aktuellen Datenbank an.

  • show tables;

Anzeigen aller Werte einer Tabelle

Zeigt alle Werte einer Tabelle an.

  • select * from user;

Verbindung zur Datenbank beenden

Beendet die aktuelle Sitzung und verlässt den MariaDB-Client.

  • exit;

Mit Passwort in der Befehlszeile verbinden

Man kann das Passwort direkt angeben, aber das ist unsicher.

  • mysql -u root -p123Start

Datenbank Fahrzeuge anlegen

Erstellt eine neue Datenbank für Fahrzeuge.

  • create database fahrzeuge;

Tabelle Autos anlegen

Erstellt eine Tabelle für Autos mit sinnvollen Feldern.

  • use fahrzeuge;
  • create table autos (
id int auto_increment primary key,
marke varchar(50),
modell varchar(50),
baujahr int,
farbe varchar(30),
preis decimal(10,2)
);

Beispieldaten in die Tabelle Autos einfügen

Fügt verschiedene Autos in die Tabelle ein.

  • insert into autos (marke, modell, baujahr, farbe, preis) values
('Volkswagen', 'Golf', 2018, 'blau', 15999.99),
('BMW', '3er', 2020, 'schwarz', 27999.50),
('Mercedes', 'C-Klasse', 2019, 'silber', 31999.00),
('Audi', 'A4', 2021, 'weiß', 34999.99),
('Ford', 'Focus', 2017, 'rot', 13999.00),
('Opel', 'Astra', 2016, 'grau', 8999.50),
('Toyota', 'Corolla', 2022, 'grün', 24999.99),
('Honda', 'Civic', 2020, 'blau', 22999.00),
('Peugeot', '308', 2019, 'weiß', 18999.99),
('Renault', 'Megane', 2018, 'schwarz', 17999.50);

Alle Autos anzeigen

Zeigt alle Autos aus der Tabelle.

  • select * from autos;

Bestimmte Spalten anzeigen

Zeigt nur Marke, Modell und Preis.

  • select marke, modell, preis from autos;

Autos nach Preis sortieren

Sortiert die Autos nach Preis aufsteigend.

  • select * from autos order by preis asc;

Nur Autos einer bestimmten Marke anzeigen

Zeigt nur Autos von BMW.

  • select * from autos where marke = 'BMW';

Autos, die teurer als 20.000€ sind

Zeigt nur Autos mit einem Preis über 20.000€.

  • select * from autos where preis > 20000;

Autos, die zwischen 2018 und 2021 gebaut wurden

Zeigt nur Autos aus den Baujahren 2018 bis 2021.

  • select * from autos where baujahr between 2018 and 2021;

Anzahl der Autos in der Tabelle

Zählt, wie viele Autos gespeichert sind.

  • select count(*) from autos;

Durchschnittlicher Preis aller Autos

Berechnet den Durchschnittspreis.

  • select avg(preis) from autos;

Teuerstes Auto anzeigen

Zeigt das Auto mit dem höchsten Preis.

  • select * from autos order by preis desc limit 1;

Günstigstes Auto anzeigen

Zeigt das Auto mit dem niedrigsten Preis.

  • select * from autos order by preis asc limit 1;

Zwei neue Autos hinzufügen

Fügt zwei weitere Autos in die Tabelle ein.

  • insert into autos (marke, modell, baujahr, farbe, preis) values
('Skoda', 'Octavia', 2021, 'blau', 25999.99),
('Mazda', 'CX-5', 2022, 'rot', 31999.50);

Ein Auto löschen

Löscht ein Auto anhand der ID.

  • delete from autos where id = 1;

Daten aktualisieren

Ändert den Preis eines Autos mit einer bestimmten ID.

  • update autos set preis = 27999.99 where id = 2;

Ändert die Farbe aller BMWs auf "blau".

  • update autos set farbe = 'blau' where marke = 'BMW';

Aggregationen und Gruppen

Zeigt die durchschnittlichen Preise pro Marke.

  • select marke, avg(preis) from autos group by marke;

Zeigt die Anzahl der Autos pro Marke.

  • select marke, count(*) from autos group by marke;

Neue Tabelle Kunden anlegen

Fügt eine Tabelle für Kunden hinzu.

  • create table kunden (
id int auto_increment primary key,  
name varchar(100),  
telefon varchar(20),  
email varchar(100)  

);

Joins: Autos mit Kunden verknüpfen

Fügt eine Spalte für den Fahrzeugbesitzer hinzu.

  • alter table autos add column kunde_id int;

Zeigt alle Autos mit den dazugehörigen Kunden

  • select autos.marke, autos.modell, kunden.name from autos left join kunden on autos.kunde_id = kunden.id;

Benutzer anlegen

Erstellt einen neuen Benutzer für den Zugriff.

  • create user 'autouser'@'localhost' identified by 'Passwort123';

Lesezugriff für autouser

Gibt Lesezugriff auf die Tabelle autos.

  • grant select on fahrzeuge.autos to 'autouser'@'localhost';

Indizes für schnellere Abfragen

Erstellt einen Index auf der Spalte "marke".

  • create index idx_marke on autos (marke);

Backup und Wiederherstellung

Sichert die Datenbank in eine Datei.

  • mysqldump -u root -p fahrzeuge > fahrzeuge.sql;

Stellt das Backup wieder her.

  • mysql -u root -p fahrzeuge < fahrzeuge.sql;