User Tools

Site Tools


Sidebar

Databases

k22:k22.8:k22.8.1:start

22.8.1 Exkurs – Arbeit mit dem Datenbank-Client mysql

Damit Sie alle vorgestellten Beispiele nachvollziehen können, sollten Sie für Ihr DBMS MySQL einen DB-Benutzer `test` und eine Datenbank `test` anlegen. Dem neuen DB-Benutzer wird voller Zugriff auf die Datenbank `test` gewährt.

DB-Benutzer:    test
DB-Passwort:    test
Datenbankname:  test

Starten Sie den DB-Monitor mysql in einer Konsole als DB-Administrator mit dem DB-Namen root und dem Passwort ampw, dass durch die Option -p eingefordert wird, um eine Verbindung zum DB-Server herzustellen:

$ mysql --host=127.0.0.1 --port=3306 -u root -p
$ mysql -h localhost -P 3306 -u test -p		  ' Alternative

22.8.1.1 Anlegen des DB-Benutzers `test`

Für das Arbeiten mit dem DB-Clientprogramm gilt:

  • Zuerst markieren Sie die angegebene SQL-Anweisung oder das mysql-Kommando,
  • dann wechseln Sie in die Konsole mit dem DB-Monitor und abschließend
  • geben Sie die SQL-Anweisung oder das mysql-Kommando mit <CTRL>+<SHIFT>+V oder mit 'Einfügen' aus dem Kontext-Menü (RMT) ein.
CREATE USER IF NOT EXISTS 'test'@'localhost' 
  IDENTIFIED BY 'test'
  COMMENT 'MySQL-Test-User';

So erhalten Sie einen Überblick über alle Eigenschaften des DB-Benutzers test auf dem DB-Server:

mysql> SELECT * FROM mysql.user WHERE user='test'\G

22.8.1.2 Anlegen der Datenbank `test`

Das Anlegen einer Datenbank ist schnell erledigt. Mit der folgenden Anweisung wird eine neue Datenbank auf dem MySQL-DB-Server erzeugt:

mysql> CREATE DATABASE test;

Anschließend werden dem DB-Benutzer `test` – durch den DB-Administrator – Rechte für die Datenbank `test` und alle Objekte darin wie Tabellen oder Views oder Trigger mitgegeben. Es bleibt die Einschränkung, dass sich der Datenbankbenutzer `test` nur lokal am DB-Server anmelden kann:

mysql> GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost';
mysql> quit

22.8.1.3 Anlegen der Tabelle `test` in der Datenbank `test`

Mit dem Beenden des DB-Monitors mysql ist Ihre Arbeit als DB-Administrator erst einmal beendet. Jetzt wechseln Sie vom DB-Administrator zu Ihrer Rolle als DB-Benutzer. Die beginnt damit, dass Sie

  • vom DB-Client aus mit dem DB-Konto des DB-Benutzers (test, test) eine Verbindung zum DB-Server herstellen,
  • sich alle Datenbanken ansehen, sich mit der Datenbank `test` verbinden,
  • eine neue DB-Tabelle anlegen,
  • Daten in die Tabelle einfügen und
  • Daten aus der DB-Tabelle von bestimmten DB-Feldern auslesen.

Mit dem Kommando `SHOW DATABASES` wird Ihnen eine Übersicht aller Datenbanken auf dem DB-Server ausgegeben. Achtung: Da Sie als DB-Benutzer `test` auf dem MySQL-DB-Server angemeldet sind, enthält diese Übersicht nur die Datenbanken, auf die der angemeldete DB-Benutzer `test` Zugriff hat:

mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)

Wechseln Sie nun mit dem Kommando `USE <database_name>` zur Datenbank `test`:

mysql> USE test;
Database changed

Sie können sich beim Start auch sofort zu einer bestimmten Datenbank verbinden, wenn Sie dieses Kommando nutzen:

$ mysql --host=127.0.0.1 --port=3306 -D test -u test -p

Für das Anlegen einer Tabelle benutzen Sie die folgende SQL-Anweisung:

CREATE TABLE IF NOT EXISTS 
  test 
    ( 
      id 	INT NOT NULL AUTO_INCREMENT,
      vorname 	VARCHAR(15) NOT NULL, 
      nachname 	VARCHAR(25) NOT NULL, 
      wohnort 	VARCHAR(20) NOT NULL, 
      plz 	VARCHAR(5), 
      strasse 	VARCHAR(30), 
      gebdatum 	DATE, 				-- Geburtstag. Das DB-Speicherformat ist:  yyyy-mm-dd.
      tfestnetz VARCHAR(15), 
      tmobil 	VARCHAR(15), 
      email 	VARCHAR(30),
      CONSTRAINT pk_to_id PRIMARY KEY(id) 	-- Ohne abschließendes Komma!
)
;

Den Erfolg der Aktion bescheinigt Ihnen die Ausgabe des folgendes Kommandos:

mysql> SHOW TABLES;
+----------------+
| Tables_in_test |
+----------------+
| test           |
+----------------+

So erhalten Sie mit dem Kommando `DESCRIBE <db_tablename> stets eine ausführliche Beschreibung der DB-Felder zu einer bestimmten DB-Tabelle:

mysql> DESCRIBE test;
+-----------+-------------+------+-----+---------+----------------+
| Field     | Type        | Null | Key | Default | Extra          |
+-----------+-------------+------+-----+---------+----------------+
| id        | int         | NO   | PRI | NULL    | auto_increment |
| vorname   | varchar(15) | NO   |     | NULL    |                |
| nachname  | varchar(25) | NO   |     | NULL    |                |
| wohnort   | varchar(20) | NO   |     | NULL    |                |
| plz       | varchar(5)  | YES  |     | NULL    |                |
| strasse   | varchar(30) | YES  |     | NULL    |                |
| gebdatum  | date        | YES  |     | NULL    |                |
| tfestnetz | varchar(15) | YES  |     | NULL    |                |
| tmobil    | varchar(15) | YES  |     | NULL    |                |
| email     | varchar(30) | YES  |     | NULL    |                |
+-----------+-------------+------+-----+---------+----------------+

22.8.1.4 Daten in die Tabelle `test` in der Datenbank `test` einfügen

Die Tabelle ist noch leer – wie eine Abfrage aller Datensätze in der DB-Tabelle `test` bestätigt:

mysql> SELECT * FROM test;
Empty set (0.00 sec)

Tragen Sie 45 Datensätze in die DB-Tabelle `test` ein. Markieren Sie die u.a. SQL-Anweisung, wechseln in die Konsole mit dem DB-Monitor und geben die SQL-Anweisung mit <CTRL>+<SHIFT>+V ein:

INSERT INTO test (vorname,nachname,wohnort,plz,strasse,gebdatum,tfestnetz,tmobil,email) 
  VALUES
    ('Arno','Adler','Arneburg','39606','Am Hafen 3','1981-12-08','03937864322','1715749482','arno.adler@arneburg.de'),
    ('Bruno','Bär','Berlin','10404','Bode-Strasse 1','1986-12-06','03094157777','1716771528','bruno.baer@freenet.de'),
    ('Gerda','Geier','Gera','07997','Gartenweg 23','1980-09-12','03657788989','1714472473','gerda.geier@gera.de'),
    ('Lutz','Lama','Leipzig','04103','Lessing-Allee 5','1989-02-25','0641432222','1717346836','lutz.lama@wwleipzig.de'),
    ('Maria','Meise','München','80805','Malergasse 10','1980-07-20','0867554324','1716821096','maria.meise@mawa.com'),
    ('Emil','Elch','Erfurt','99033','Eggert-Strasse 3c','1989-04-18','0361334455','1714287196','emil.elch@erfurt.de'),
    ('Detlef','de Hirsch','Dresden','01067','Deichweg 8','1984-01-28','0351876544','1716271745','detlef.dehirsch@dresden.de'),
    ('Hans-Helmut','Huhn','Hamburg','22111','Hafengasse 90','1988-01-26','04067554008','1716360418','hhhuhn@arcor.com'),
    ('Friedrich','Fledermaus','Frankfurt a.M.','60308','Flusenweg 12','1983-01-01','06101666664','1715209075','fledermaus74@web.de'),
    ('Norbert','Natter','Nürnberg','90402','Nord-Strasse 6a','1980-04-05','091155224324','1713545289','norbert.natter@web.de'),
    ('Clara','Chamäleon','Celle','29229','Claus-Kurt-Weg 1','1990-05-28','05141554678','1717398273','clara.camae@leon.de'),
    ('Ingelore','Igel','Immenstadt i.A.','87509','Imm-Reute 3','1988-12-10','08328552233','1715500891','ingelore.igel@web.de'),
    ('Stephanie','Storch','Stendal','39596','Strohgasse 55b','1989-05-10','039312232366','1716249744','stephanie.storch@reiseland.de'),
    ('Kurt','Kater','Köln','29229','Kanalstrasse 107','1985-05-11','0221767878789','1716968271','kurt.kater@koeln-nord.de'),
    ('Susanne','Sperling','Stuttgart','70173','Strasse der Einheit 3','1988-11-28','05141554678','1713955401','susanne.sperling@aol.com'),
    ('Doreen','Delphin','Dessau-Roßlau','06842','Drosselweg 2','1983-08-01','03455662271','1714171247','ddelphin@arcor.net'),
    ('Andreas','Ameise','Aachen','52064','An der Mauer 4','1982-04-19','02419854332','1715571201','andreas.ameise@aachen.de'),
    ('Fred','Fliege','Fürstenfeldbruck','82276','Feldrain 2','1985-06-23','08148642278','1717564483','fred.fliege@web.de'),
    ('Brunhilde','Bussard','Berlin','10405','Berg-Strasse 44c','1987-11-12','03066422783','1714613147','brunhilde.bussard@web.de'),
    ('Karl-Heinz','Kranich','Kleve','82276','Kurze Strasse 9','1985-02-11','028216666774','1715671343','khkranich@kranich.net'),
    ('Ziri','Zebra','Zittau','02763','Zur Post 33e','1983-06-08','035853376223','1716739494','ziri.zebra@zittauerland.de'),
    ('Paul','Pferd','Pinneberg','25421','Paradegasse 5','1990-03-01','041015555577','1714546720','paul.pferd@rennbahn.de'),
    ('Quirina','Qualle','Querfurt','06268','Quartz-Steg 33','1985-04-28','03477123456','1713455231','quirina.qualle@arcor.de'),
    ('Rüdiger','Rüsselkäfer','Rüdesheim','65385','Radweg 23','1980-06-03','067220042278','1714576104','r.kaefer@web.de'),
    ('Victor','Vogelspinne','Vogelsberg','99610','Vor dem Tore 4-5','1980-11-12','03637290887','1714737048','vvspinne@herbarium.de'),
    ('Jens-Peter','Jaguar','Jena','82276','Janusweg 66','1984-09-14','036410815','1716538095','jp.jaguar@juga.de'),
    ('Otto','Otter','Oldenburg i.H.','23779','Oberer Steg 2','1981-06-22','046313423888','1716342612','otto.otter@freenet.de'),
    ('Thomas','Taube','Taubenheim','02689','Tannwald-Strasse 4','1984-10-18','03593650441','1714320997','tom.taube@taubeev.de'),
    ('Ullrich','Uhu','Ulm','89073','Ulmenweg 7','1988-02-07','073181862258','1713517261','ullrich.uhu@ulm.de'),
    ('Walter','Wisent','Wittenberge','19322','Wiesenweg 50','1989-05-14','038771111258','1715563424','walter.wisent@web.de'),
    ('Dorothea','Dorsch','Düsedau','39606','Dammer Weg 123','1982-07-03','03937345222','1715128617','dodo@dorsch.com'),
    ('Ernst','Esel','Erfurt','99033','Eckstrasse 6','1989-01-18','0361337612','1715533977','ernst.esel@aol.com'),
    ('Hannelore','Haifisch','Hamburg','22131','Hochbauamt 2-7','1980-05-18','04012384566','1714506260','halohai@freenet.de'),
    ('Hans','Hundt','Hameln','31785','Hoher Weg 34','1984-10-16','0515176395588','1716869476','hans.hundt@haba.com'),
    ('Nancy','Nasenbär','Naumburg','06618','Neue Strasse 44a','1984-10-15','0344567888','1714332937','nancy.nb@zoo-nb.de'),
    ('Wolfgang','Wolf','Werra','06766','Waldweg 6a','1984-10-14','036922123','1716355311','wolf.wolter@werra-berg.de'),
    ('Erwin','Eule','Erfurt','99099','Erzberg 6','1988-11-11','0361234333','1718885311','eeule@freenet.de'),
    ('Bernd','Bisam','Berlin','10315','Bad-Ring 1c','1990-09-09','0304409999','1527035312','bernd@bisam-park.de'),
    ('Hans','Hase','Hassel','39695','Hain 12','1988-03-05','0393217752','1727775311','hassel.hase@web.de'),
    ('Stefan','Spatz','Stendal','39576','Seeweg 6a','1989-11-11','03931844123','1715454561','spatz89@aol.com'),
    ('Karl','Keiler','Kassel','34117','Kleiner Weg 3','1988-12-12','05618967944','1527022212','karl.k@arcor.de'),
    ('Xenia','Xanter','Xanten','46509','Xyloner See 2','1989-04-03','0280134556','1612345799','x.y.jolle@freenet.de'),
    ('Luise','Laus','Löbau','02708','Langer Kolken 1','1988-06-23','03587622022','1622323239','familia.l@genua.it'),
    ('Zeno','Zander','Zingst','18374','Ziegenhof 4c','1987-04-04','03823299744','1530345888','zeno.zack@web.de'),
    ('Volker','von Viper','Verden','27283','Volksbad 5c','1987-09-03','04231667293','1724522277','von.viper@web.de');

22.8.1.5 Daten aus der Tabelle `test` auslesen und anzeigen

Mit der folgenden SQL-Anweisung können Sie zum Beispiel die Daten aus den Feldern `vorname`, `nachname`, `plz`, `wohnort` sowie das berechnete aktuelle Alter ausgeben – aber nur von den Orten, deren Postleitzahl mit einer 3 beginnen:

SELECT vorname AS "Vorname", nachname AS "Nachname", plz AS "PLZ", wohnort AS "Ort", 
(YEAR(NOW()) - YEAR(GebDatum) - IF(DAYOFYEAR(NOW()) < DAYOFYEAR(CONCAT(YEAR(NOW()), DATE_FORMAT(GebDatum,'-%m-%d'))),1,0)) AS "Alter" 
FROM test
WHERE plz LIKE '3%'
ORDER BY nachname DESC;
mysql> SELECT  vorname AS "Vorname", nachname AS "Nachname", plz AS "PLZ", wohnort AS "Ort", 
    -> (YEAR(NOW()) - YEAR(GebDatum) - IF(DAYOFYEAR(NOW()) < DAYOFYEAR(CONCAT(YEAR(NOW()), DATE_FORMAT(GebDatum,'-%m-%d'))),1,0)) AS "Alter" 
    -> FROM    test
    -> WHERE   plz LIKE '3%'
    -> ORDER BY nachname DESC;
+-----------+----------+-------+----------+-------+
| Vorname   | Nachname | PLZ   | Ort      | Alter |
+-----------+----------+-------+----------+-------+
| Stephanie | Storch   | 39596 | Stendal  |    32 |
| Stefan    | Spatz    | 39576 | Stendal  |    31 |
| Karl      | Keiler   | 34117 | Kassel   |    32 |
| Hans      | Hundt    | 31785 | Hameln   |    36 |
| Hans      | Hase     | 39695 | Hassel   |    33 |
| Dorothea  | Dorsch   | 39606 | Düsedau  |    38 |
| Arno      | Adler    | 39606 | Arneburg |    39 |
+-----------+----------+-------+----------+-------+
7 rows in set (0,00 sec)
 
mysql> quit
Bye
hans@mint20:~$ 

Download

The website uses a temporary session cookie. This technically necessary cookie is deleted when the browser is closed. You can find information on cookies in our privacy policy.
k22/k22.8/k22.8.1/start.txt · Last modified: 27.12.2021 (external edit)

Page Tools