... just another site around the web ...





Nur wenn wir unseren Egoismus ablegen und beginnen, uns in Geduld und Demut dem Wohle anderer zu widmen, werden wir befreit von all unseren Leiden und Zwängen.
- Dalai Lama

MySQL


Architektur

Mögliche Verwirrung: MySQL hat einen root-user. Dieser hat nichts mit dem Unixoiden "root" zu tun, sondern dient als Super-Admin nur für das DBMS.

Administration

mysqladmin

mysqladmin verwenden und als root eine Beispieldatenbank anlegen:

mysqladmin -u root -h localhost create beispieldatenbank

Mit Passwortangabe (Passwort wird danach abgefragt):

mysqladmin -u root -p -h localhost create beispieldatenbank

mysql

Als root an localhost anmelden

mysql -u root -h localhost
mysql -u root -p -h localhost

Dem Beispielbenutzer alle Rechte auf die Beispieldatenbank geben (Benutzer wird damit erstellt)

GRANT ALL ON beispieldatenbank.* TO beispieluser@localhost IDENTIFIED BY "beispielpasswort";

Datenbanken anzeigen

show databases;

Verlassen

exit

Als Beispielbenutzer an localhost anmelden

mysql -u beispieluser -h localhost -p

Datenbanken anzeigen

show databases;

Tabellen anzeigen

SHOW TABLES FROM beispieldatenbank;

Datenbank auswählen (als aktive/zu benutzende)

use beispieldatenbank;

Tabellen anzeigen

show tables;

Verlassen

exit

Tabellen anlegen

Erstelle eine leere Tabelle mit den gleichen Spalten wie eine vorhandene:

CREATE TABLE neuetabelle LIKE originaltabelle;

Erstelle eine Tabelle aus einem SELECT-Statement einer vorhandenen:

CREATE TABLE neuetabelle AS SELECT * FROM originaltabelle;

Erstelle eine Tabelle wenn noch nicht vorhanden:

CREATE TABLE IF NOT EXISTS personen (
	person_id INT(10) AUTO_INCREMENT PRIMARY KEY,
	vorname VARCHAR(50),
	nachname VARCHAR(50),
	geburtsdatum DATE,
	email VARCHAR(50),
	fk_adresse_id INT(10)
	updated TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
);
CREATE TABLE IF NOT EXISTS adressen (
	adresse_id INT(10) AUTO_INCREMENT PRIMARY KEY,
	strasse VARCHAR(100),
	plz VARCHAR(10),
	ort VARCHAR(100),
	land VARCHAR(100),
	updated TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
);

Tabellen befüllen

INSERT INTO adressen (strasse,plz,ort,land) VALUES ('Musterstraße 13', '01234', 'Musterstadt', 'Musterland');

Datensätze ändern

UPDATE adressen SET strasse = 'Neuestrasse', plz = 'Neueplz', ort = 'Neuerort', land = 'Neuesland';

Tabellen abfragen

Select ... FROM ...
SELECT * FROM personen;
SELECT person_id, vorname, nachname FROM personen;
SELECT id AS Personalnummer, vorname, nachname FROM personen;
SELECT DISTINCT vorname AS Vornamen FROM personen;
SELECT DISTINCT vorname AS Vornamen FROM personen ORDER BY vornamen;
Select ... FROM ... WHERE ...
SELECT vorname, nachname FROM personen WHERE id=5;
SELECT t1.nachname, t2.* FROM personen AS t1, adressen AS t2
  WHERE t1.fk_adresse_id = t2.adresse_id;
SELECT personen
LEFT JOIN adressen ON personen.fk_adresse_id = adressen.adresse_id;
SELECT * 
FROM personen
WHERE fk_adresse_id IN
(SELECT adresse_id FROM adressen);

Tabelle umbenennen

RENAME TABLE personen TO person;

Tabelle löschen

DROP TABLE person;

mysqlimport

mysqldump

perror

mysqlshow

Trigger

Partitionierung

Range-Partitionierung

CREATE TABLE `kunde` (
  region int NOT NULL,
  nr int NOT NULL,
  name char(30),
  ed date NOT NULL,
)
PARTITION BY range(region) (
  PARTITION p0 VALUES LESS THAN (10),
  PARTITION p1 VALUES LESS THAN (20),
  PARTITION p2 VALUES LESS THAN (30)
);
CREATE TABLE `kunde` (
  region int NOT NULL,
  nr int NOT NULL,
  name char(30),
  ed date NOT NULL
)
PARTITION BY range(year(ed)) (
  PARTITION p0 VALUES LESS THAN (1990),
  PARTITION p1 VALUES LESS THAN (2000),
  PARTITION p2 VALUES LESS THAN maxvalue
);

List-Partitionierung

CREATE TABLE `kunde` (
  region int NOT NULL,
  nr int NOT NULL,
  name char(30),
  ed date NOT NULL
)
PARTITION BY list(region) (
  PARTITION p0 VALUES IN (1, 3, 5 ),
  PARTITION p1 VALUES IN (2, 4, 6 ),
  PARTITION p2 VALUES IN (10, 11, 12 )
);

Hash-Partitionierung

CREATE TABLE `kunde` (
  region int NOT NULL,
  nr int NOT NULL,
  name char(30),
  ed date NOT NULL
) 
PARTITION BY hash(region) PARTITIONS 4;

Key-Partitionierung

CREATE TABLE `kunde` (
  nr int NOT NULL primary key,
  name char(30),
  ed date NOT NULL
)
PARTITION BY key() PARTITIONS 4;








Copyright © 2018

Impressum