-Website

ÜK 105

MySQL Installation/Login

Hier installieren wir MySQL auf Linux (Debian), da wir es im Terminal brauche und alles auf Linux gelernt haben. Um MySQL zu installieren muss man im Terminal diese Befehle eingeben:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install mysql-server mysql-client

Während der Installation muss man das Root-Passwort festlegen. Wir haben uns für das Passwort "105" entschieden. Nach der Installation sollte man im Terminal diesen Befehl eingeben, um MySQL mit dem Root-User zu öffnen.

sudo mysql -p 105 -u root

Nach dem Attribut -p wird das Passwort eingegeben. Nach dem Attribut -u wird der Benutzername eingegeben.

Anschliessend müsste man im MySQL-Terminal gelandet sein.

Datenbank

Eine Datenbank, auch Datenbanksystem genannt, ist ein System zur elektronischen Datenverwaltung. Die wesentliche Aufgabe einer Datenbank ist es grosse Datenmengen effizient, widerspruchsfrei und dauerhaft zu speichern und benötigte Teilmengen in unterschiedlichen Darstellungsformen für Benutzer und Anwendungsprogramme bereitzustellen.
MySQL ist eines der weltweit verbreitesten Datenbankvverwaltungssysteme. Es ist als Open-Source-Sotfware für verschiedene Betriebssysteme verfügbar und bildet die Grundlage für viele dynamische Webauftritte.

Tabellen

Um eine Tabelle erstellen zu können muss man als erstes eine Datenbank erstellen. Anschliessend muss man mit dem Befehl:

use archiv;

Jetzt können wir auch schon die Tabelle mit Hilfe dieses Befehls erstellen:

create table Personen (Vorname varchar (30), Nachname varchar (30), Geburtsdatum datetime);

Tabelle anzeigen lassen:

describe Personen;

Ändern von Tabellen

Tabellennamen ändern mit Hilfe dieses Befehls:

ALTER TABLE Personen CHANGE Vorname vorname INT not null default 0;

Mithilfe von "not null default 0;", sagt man nichts anderes als es darf nicht Nichts drin stehen, und wenn Nichts steht, dann kommt 0.

Das Feld "Vorname" kann man mit diesem Befehl grösser machen:

ALTER TABLE Personen CHANGE Vorname Vorname varchar (100);

Man kann jederzeit ein Feld vergrössern, ohne dass dies einen Datenverlust gibt. Das verkleiner ist jedoch kritischer, da wir Feldwerte zerstören können.

Benutzer

In diesem Kapitel geht es um Benutzer. Benutzer sind sehr Wichtig damit nicht jeder alle Rechte hat und somit eine Gefahr für die Datenbank entsteht. Man kann auch mit berechtigungen, bestimmte Befehle für bestimmte Benutzer blockieren.

Simple Befehle

ErstellenCREATE USER “benutzername” IDENTIFIED BY “Password”;
LöschenDROP USER «Benutzername»;
Login mit Benutzermysql -p -u «Benutzername»

Berechtigungen

Alle Rechte einer Datenbank diesem Benutzer geben. GRANT ALL ON «Datenbank» to “Benutzername”;
Insert und Delete für eine Datenbank vergeben GRANT INSERT, DELETE ON «Datenbank» TO “Benutzername”;
Recht an zwei Benutzer vergeben GRANT INSERT ON «Datenbank» TO “Benutzername1”, “Benutzername2”;
Recht nur auf eine Tabelle vergeben GRANT SELECT ON database.table TO user;
Revoke nimmt alle oder bestimmte befehle/möglichkeiten dem Benutzer weg REVOKE privilege_name ON object_name FROM “Benutzername”
Rechte anzeigenSHOW GRANTS;

Datensätze einfügen

Nachdem die Tabellen erstellt wurden, kann man Werte in diese Tabellen einfügen. Der Befehl um einen Datensatz einzufügen ist:

INSERT INTO «Tabellenname» (Spalte1, Spalte2) VALUES («Inhalt», »Inhalt2»);

In diesem Moment wird folgendes in die Tabelle eingetragen. Um die Tabelle und Ihre Werte zu sehen muss man den folgenden Befehl eingeben:

SELECT all/* FROM «Tabellennamen;
ID Spalte1 Spalte2
1 Inhalt Inhalt2

Datentypen

DatentypBeschreibung
Char(size)Ein String mit einer fix definierten länge kann Buchstaben Nummern Und Sonderzeichen beinhalten.
Varchar(size) Ein String mit variabler länge kann Buchstaben Nummern Und Sonderzeichen beinhalten.
BIT(size)Kann 1, 0 und NULL beinhalten.
TINYINT(size)Sehr kleiner INT von -128 bis 127.
BOOLEANWahr oder falsch, 0 ist falsch und alles andere ist wahr.
SMALLINT(size)Kleiner INT von -32768 bis 32767.
MEDIUMINT(size)Mittelgrosser INT von -8388608 bis 8388607.
INT(size)Dateityp für zahlen von -2147483648 bis 2147483647.
BIGINT(size)Grosser INT von -9223372036854775808 bis 9223372036854775807.
FLOAT(n)Gleitkomma zahl.
DATEEin Dateityp für das Datum im Format: YYYY-MM-DD
DATETIME(fsp)Ein Dateityp für das Datum und für die Zeit im Format: YYYY-MM-DD hh:mm:ss
TIME(fsp)Ein Dateityp für die Zeit im Format: hh:mm:ss
YEAREin Dateityp für das Jahr in 4 Ziffern
Numeric(p,s)Ein Dateityp für Komma zahlen. Das p steht für alle Zeichen vor dem Komma das s für alle nach dem Komma

Import/Export

Wichtig für den Export von Dateien ist, dass der Ordner in den sie exportiert werden, die Rechte für "alle" auf lesen und schreiben setzen. Diese sollten aber nach dem Export wieder zurückgesetzt werden.

Um eine komplette Tabelle zu exportieren, muss der folgende Befehl eingesetzt werden:

SELECT * FROM Datenbank INTO OUTFILE '/dies/ist/ein/beispiel.tb';

Beim Import von Daten, wird der folgende Befehl verwendet:

LOAD LOCAL DATA INFILE '/Dies/Ist/ein/beispiel.tb' into table akten;

Joins

Inner join:

SELECT Attribut FROM Table_A
JOIN Table_B
ON Table_A.PK=Table_B.FK;

Left / Right join:

SELECT Attribut FROM Table_A
LEFT JOIN Table_B
ON Table_A.PK=Table_B.FK;

Left / Right inner join:

SELECT Attribut FROM Table_A
LEFT JOIN Table_B
ON Table_A.PK=Table_B.FK
WHERE Table_B.PK IS NULL

Outer join:

SELECT Attribut FROM Table_A
UNION
SELECT Attribut FROM Table_B

Operationen & Funktionen

Man kann mit Operationen & Funktionen SQL-Abfragen mit mathematischen Funktionen erstellen. Diese kommen nach WHERE. Hier werden die wichtigsten Operationen & Funktionen aufgelistet.

Operatoren

Arithmetische Operatoren

+Addieren
-Subtrahieren
*Multiplizieren
/Dividieren
%Modulo (Rest)

Vergleichsoperatoren

=Gleich
>Grösser als
<Kleiner als
>=Grösser als oder gleich
<=Kleiner als oder gleich
<>Nicht gleich

Logische Operatoren

ALLTRUE wenn alle Unterabfragenwerte damit übereinstimmen
ANDTRUE, wenn alle durch AND getrennten Bedingungen TRUE sind
ANYTRUE, wenn einer der Unterabfragewerte die Bedingung erfüllt
BETWEENTRUE, wenn der Operand im Vergleichsbereich liegt
EXISTSTRUE, wenn die Unterabfrage einen oder mehrere Datensätze zurückgibt
INTRUE, wenn der Operand einem Ausdruck in einer Liste von Ausdrücken entspricht
LIKETRUE, wenn der Operand mit einem Muster übereinstimmt
NOTZeigt einen Datensatz an, wenn die Bedingung (en) NICHT WAHR sind
ORTRUE, wenn eine der durch OR getrennten Bedingungen TRUE ist
SOMETrue wenn einer der Unterabfragewerte die Bedingung erfüllt

Funktionen

CONCATFügt zwei oder mehr Zeichenfolgen zusammen
LeftExtrahiert eine Anzahl von Zeichen aus einer Zeichenfolge (beginnend von links)
LowerKonvertiert eine Zeichenfolge in Kleinbuchstaben, kehrt eine Zeichenfolge um und gibt das Ergebnis zurück
Right eine Anzahl von Zeichen aus einer Zeichenfolge (beginnend von rechts)
UpperKonvertiert eine Zeichenfolge in Großbuchstaben

Sprachschichten

DDL

Auch Data Definition Language wird zum erstellen von Datenbanken, Tabellen und weiterem beunutzt

DROP DATABASE «Datenbankname» SHOW CREATE CREATE TABLE «Tabellenname»

Dazu ist es auch zum Löschen oder verändern dieser Zuständig.

DESCRIBE «Tabellenname» DROP TABLE «Tabellenname» DROP ALTER TABLE «Tabellenname» ADD Attribut Datentyp ALTER TABLE Tabellename CHANGE Attribut

DML

Auch Data Manipulation Language, wird zum Einfügen, verändern znd löschen von Datensätzen genutzt.

INSERT INTO «Tabellenname» VALUES (0,’bla’,’x’) INSERT INTO SET value WHERE x = y INSERT INTO SELECT Update «Tabellenname» VALUES (0,’bla’,’x’) Update «Tabellenname» SET value WHERE x = y Update «Tabellenname» SELECT DELETE FROM Tabellenname WHERE x = y

DQL

Hier kann man bestimmen zB. welche Berufe man anzeigen lassen möchte mit dem folgenden Befehl.

use archiv;select job_title from customers where job_title = 'Purchasing Representative' or job_title = 'Owner' or job_title = 'Accounting Manager;

+---------------------------+
| job_title |
+---------------------------+
| Owner |
| Owner |
| Purchasing Representative |
| Owner |
| Owner |
| Purchasing Representative |
| Purchasing Representative |
| Purchasing Representative |
| Purchasing Representative |
| Owner |
| Purchasing Representative |
| Accounting Manager |
| Owner |
+---------------------------+

Mit "group by" werden alle doppelt aufgezeigten Berufe zusammengefasst und gruppiert, sodass nur noch je ein Beruf angezeigt wird.

select job_title from customers where job_title = 'Purchasing Representative' or job_title = 'Owner' or job_title = 'Accounting Manager' group by job_title;

+---------------------------+
| job_title |
+---------------------------+
| Accounting Manager |
| Owner |
| Purchasing Representative |
+---------------------------+

Mit dem Befehl "having job_title..." sorgt dafür, nur noch die geschriebenen Berufe angezeigt werden.

select job_title from customers where job_title = 'Purchasing Representative' or job_title = 'Owner' or job_title = 'Accounting Manager' group by job_title having job_title = 'Owner' or job_title = 'Accounting Manager';

+--------------------+
| job_title |
+--------------------+
| Accounting Manager |
| Owner |
+--------------------+

"order by job_title" ordnet die Wörter in der Spalte alphabetisch.

select job_title from customers where job_title = 'Purchasing Representative' or job_title = 'Owner' or job_title = 'Accounting Manager' group by job_title having job_title = 'Owner' or job_title = 'Accounting Manager' order by job_title;

+--------------------+
| job_title |
+--------------------+
| Accounting Manager |
| Owner |
+--------------------+

DCL

DCL auch Data Control Language genannt heisst auf Deutsch Datenkontrollsprache. Diese Sprache wird verwendet um Berechtigungen zu vergeben oder zu entziehen. Dieses Sprache wird bei dem Thema "Benutzer" erklärt.