Zum Inhalt springen

Mysql/Grundlagen: Unterschied zwischen den Versionen

Aus Foxwiki
K Textersetzung - „ )“ durch „)“
 
(66 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Einführung in MySQL =
'''Mysql/Grundlagen''' - MySQL-Einführung


MySQL ist die beliebteste Open-Source-Datenbank der Welt. Trotz der leistungsstarken Funktionen von ist MySQL einfach einzurichten und leicht zu verwenden. Im Folgenden finden Sie einige Anleitungen, die Ihnen helfen, MySQL in wenigen Schritten einzurichten und zum Laufen zu bringen. Wir erklären auch, wie Sie einige grundlegende Operationen mit MySQL unter Verwendung des '''mysql''' Clients durchführen können.
== Beschreibung ==
; MySQL ist die weltweit beliebteste Open-Source-Datenbank
* leistungsstarke Funktionen
* einfach einzurichten
* leicht zu verwenden


Anmerkungen
== Anwendungen ==
* Die folgenden Anweisungen gelten nicht unbedingt für Versionen von MySQL, die älter als MySQL 5.7 sind.
=== Anmeldung ===
* Dies sind nur Anweisungen für eine Neuinstallation. Wenn Sie bereits MySQL verwenden und auf eine neuere Version upgraden möchten, lesen Sie bitte [https://dev.mysql.com/doc/refman/8.0/en/upgrading.html MySQL upgraden].


Rechtliche Informationen finden Sie in den [https://dev.mysql.com/doc/mysql-getting-started/en/index.html#legalnotice Rechtlichen Hinweisen ].
=== Datenbanken anzeigen ===
; Vorhandene Datenbanken anzeigen
[https://dev.mysql.com/doc/refman/8.0/en/show-databases.html SHOW DATABASES] Anweisung


Wenn Sie Hilfe bei der Verwendung von MySQL benötigen, besuchen Sie bitte die [http://forums.mysql.com/ MySQL-Foren], wo Sie unter Ihre Probleme mit anderen MySQL-Benutzern diskutieren können.  
<syntaxhighlight lang="sql" highlight="1" copy>
SHOW DATABASES;
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
+--------------------+
| Database      |
+--------------------+
| information_schema |
| mysql       |
| performance_schema |
| sys        |
+--------------------+
4 rows in set (0.00 sec)
</syntaxhighlight>


== Verbinden mit dem MySQL-Server mit dem mysql-Client ==
=== Datenbank erstellen ===
Sobald Ihr MySQL-Server läuft, können Sie sich als mit dem Superuser <tt>root</tt> mit dem [https://dev.mysql.com/doc/refman/8.0/en/mysql.html mysql] Client verbinden.
; Erstellen einer neuen Datenbank
* Unter Linux geben Sie den folgenden Befehl in der Kommandozeile Terminal ein (für die Installation mit generischen Binärdateien müssen Sie möglicherweise zuerst in den Ordner <tt>bin</tt> unter dem Basisverzeichnis Ihrer MySQL-Installation wechseln): <br/>$> mysql -u root -p
[https://dev.mysql.com/doc/refman/8.0/en/create-database.html CREATE DATABASE] Anweisung
* Unter Windows klicken Sie auf Start, Alle Programme, MySQL, MySQL 5.7 Command Line Client (bzw. MySQL 8.0 Command Line Client). Wenn Sie MySQL nicht mit dem MySQL Installer installiert haben, öffnen Sie eine Eingabeaufforderung, gehen Sie in den Ordner <tt>bin</tt> unter dem Basisverzeichnis Ihrer MySQL-Installation und geben Sie den folgenden Befehl ein:
C:\> mysql -u root -p


Sie werden dann nach dem <tt>root</tt>-Passwort gefragt, das je nach der Art und Weise, wie Sie MySQL installiert haben, auf unterschiedliche Weise vergeben wurde. In den oben genannten Installations- und Initialisierungsanweisungen wird das <tt>root</tt>-Passwort bereits erklärt, aber hier ist eine kurze Zusammenfassung:
<syntaxhighlight lang="sql" highlight="1" copy>
* Bei Installationen, die das MySQL Yum-Repository, das MySQL SUSE -Repository oder direkt von Oracle heruntergeladene RPM-Pakete verwenden, finden Sie unter das generierte <tt>root</tt>-Passwort im Fehlerprotokoll. Zeigen Sie es z. B. mit dem folgenden Befehl an:
CREATE DATABASE pets;
sudo grep 'temporary password' /var/log/mysqld.log
</syntaxhighlight>
* Für Installationen, die das MySQL APT Repository oder Debian Pakete verwenden, die direkt von Oracle heruntergeladen wurden, sollten Sie das <tt>root</tt> Passwort bereits selbst vergeben haben; wenn Sie das aus irgendeinem Grund nicht getan haben, lesen Sie die "Wichtige" Notiz [https://dev.mysql.com/doc/refman/8.0/en/linux-installation-debian.html#linux-installing-debian-password hier] oder [https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html Wie man das Root Passwort zurücksetzt].
<!-- output -->
* Bei Installationen unter Linux mit den generischen Binärdateien, gefolgt von einer Initialisierung des Datenverzeichnisses mit <tt>mysqld --initialize</tt>, wie in [https://dev.mysql.com/doc/refman/8.0/en/data-directory-initialization.html Initialisierung des Datenverzeichnisses] beschrieben, wird das generierte <tt>root</tt>-Passwort im Standard-Fehlerstrom während der Initialisierung des Datenverzeichnisses angezeigt: <br/>[Warning] A temporary password is generated for root@localhost:<br/>iTag*AfrH5ej<br/>Hinweis <br/>Abhängig von der Konfiguration, die Sie zur Initialisierung des MySQL-Servers verwendet haben, könnte die Fehlerausgabe an das [https://dev.mysql.com/doc/refman/8.0/en/error-log.html MySQL-Fehlerprotokoll] geleitet worden sein; gehen Sie dorthin und überprüfen Sie das Passwort, wenn Sie die obige Meldung nicht auf Ihrem Bildschirm sehen. Das Fehlerprotokoll ist eine Datei mit einer <tt>.err</tt>-Erweiterung, die normalerweise unter im Datenverzeichnis des Servers zu finden ist (der Speicherort hängt von der Konfiguration des Servers ab, ist aber wahrscheinlich der <tt>data</tt>-Ordner unter dem Basisverzeichnis Ihrer MySQL-Installation, oder der <tt>/var/lib/mysql</tt>-Ordner). <br/>Wenn Sie stattdessen das Datenverzeichnis mit <tt>mysqld --initialize-insecure</tt> initialisiert haben, ist das <tt>root</tt> Passwort leer.
<syntaxhighlight lang="text" highlight="" line>
* Für Installationen unter Windows mit dem MySQL Installer und OS X mit dem Installer-Paket sollten Sie selbst ein <tt>root</tt>-Passwort vergeben haben.
Query OK, 1 row affected (0.01 sec)
</syntaxhighlight>


Wenn Sie das <tt>Wurzelpasswort</tt> vergessen haben, das Sie gewählt haben, oder Probleme haben, das temporäre <tt>Wurzelpasswort</tt> zu finden, das für Sie generiert wurde, lesen Sie [https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html Wie man das Wurzelpasswort zurücksetzt].
; Prüfen, ob die Datenbank erstellt wurde
<syntaxhighlight lang="sql" highlight="1" line>
SHOW DATABASES;
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
+--------------------+
| Database      |
+--------------------+
| information_schema |
| mysql       |
| performance_schema |
| pets        |
| sys        |
+--------------------+
5 rows in set (0.00 sec)
</syntaxhighlight>


Sobald Sie mit dem MySQL-Server verbunden sind, wird eine Willkommensnachricht angezeigt und die Eingabeaufforderung <tt>mysql></tt> erscheint, die wie folgt aussieht:
=== Tabelle erstellen ===
Erstellen einer Tabelle innerhalb einer Datenbank


Welcome to the MySQL monitor.  Commands end with ; or \g.
; Datenbank auswählen
Your MySQL connection id is 4
Wählen Sie zunächst die Datenbank aus, in der Sie die Tabelle mit einer [https://dev.mysql.com/doc/refman/8.0/en/use.html USE]-Anweisung erstellen möchten
Server version: 5.7.32 MySQL Community Server (GPL)
<syntaxhighlight lang="sql" highlight="1" copy>
USE pets
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
Database changed
</syntaxhighlight>


Copyright (c) 2000, 2020, Oracle and/or its affiliates.
Die Anweisung [https://dev.mysql.com/doc/refman/8.0/en/use.html USE] weist MySQL an, <tt>pets</tt> als Standarddatenbank für nachfolgende Anweisungen zu verwenden


Oracle is a registered trademark of Oracle Corporation and/or its
; Tabelle erstellen
affiliates. Other names may be trademarks of their respective
Als Nächstes erstellen Sie eine Tabelle mit einer [https://dev.mysql.com/doc/refman/8.0/en/create-table.html CREATE TABLE] Anweisung
owners.


  Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
<syntaxhighlight lang="sql" highlight="1" copy>
CREATE TABLE cats
(
  id      INT unsigned NOT NULL AUTO_INCREMENT, # Unique ID for the record
name      VARCHAR(150) NOT NULL,        <nowiki># Name of the cat</nowiki>
owner      VARCHAR(150) NOT NULL,        <nowiki># Owner of the cat</nowiki>
birth      DATE NOT NULL,            <nowiki># Birthday of the cat</nowiki>
PRIMARY KEY  (id)                <nowiki># Make the id the primary key</nowiki>
);
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
</syntaxhighlight>


mysql>
; Datentypen
Datentypen, die Sie in jeder Spalte verwenden können, werden in [https://dev.mysql.com/doc/refman/8.0/en/data-types.html Datentypen] erläutert. [https://dev.mysql.com/doc/refman/8.0/en/primary-key-optimization.html Primärschlüssel-Optimierung] erklärt das Konzept von eines Primärschlüssels
* Was auf ein <tt><nowiki>#</nowiki></tt> in jeder Zeile folgt, ist ein Kommentar, der vom '''mysql''' Client ignoriert wird; siehe [https://dev.mysql.com/doc/refman/8.0/en/comments.html Kommentare] für andere Kommentararten


Wenn Sie sich zu diesem Zeitpunkt mit einem temporären <tt>root</tt>-Passwort angemeldet haben, das während der Installation oder des Initialisierungsprozesses generiert wurde (was der Fall ist, wenn Sie MySQL mit dem MySQL Yum-Repository oder mit RPM Paketen oder generischen Binärdateien von Oracle installiert haben), ändern Sie Ihr <tt>root</tt>-Passwort, indem Sie die folgende Anweisung an der Eingabeaufforderung eingeben:
; Tabelle prüfen
Prüfen Sie, ob die Tabelle mit einer [https://dev.mysql.com/doc/refman/8.0/en/show-tables.html SHOW TABLES] Anweisung erstellt wurde
<syntaxhighlight lang="sql" highlight="1" copy>
SHOW TABLES;
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
+----------------+
| Tables_in_pets |
+----------------+
| cats      |
+----------------+
1 row in set (0.00 sec)
</syntaxhighlight>


mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '''new_password''';
; Informationen anzeigen
[https://dev.mysql.com/doc/refman/8.0/en/explain.html DESCRIBE] zeigt Informationen über alle Spalten einer Tabelle
<syntaxhighlight lang="sql" highlight="1" copy>
DESCRIBE cats;
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
+-------+------------------+------+-----+---------+----------------+
| Field | Type      | Null | Key | Default | Extra    |
+-------+------------------+------+-----+---------+----------------+
| id  | int(10) unsigned | NO  | PRI | NULL  | auto_increment |
| name | varchar(150)  | NO  |  | NULL  |        |
| owner | varchar(150)  | NO  |  | NULL  |        |
| birth | date      | NO  |  | NULL  |        |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
</syntaxhighlight>


Solange Sie Ihr <tt>root</tt>-Passwort nicht ändern, können Sie keine Superuser-Rechte ausüben, auch wenn Sie als <tt>root</tt> angemeldet sind.
=== Datensätze hinzufügen ===
; Hinzufügen von Datensätzen in eine Tabelle
Verwenden Sie zum Beispiel eine [https://dev.mysql.com/doc/refman/8.0/en/insert.html INSERT...VALUES]-Anweisung
<syntaxhighlight lang="sql" highlight="1" copy>
INSERT INTO cats (name, owner, birth) VALUES
('Sandy', 'Lennon', '2015-01-03'),
('Cookie', 'Casey', '2013-11-13'),
('Charlie', 'River', '2016-05-21');
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
</syntaxhighlight>


Hier sind ein paar nützliche Dinge, die Sie bei der Verwendung des '''mysql'''-Clients beachten sollten:
Siehe [https://dev.mysql.com/doc/refman/8.0/en/literals.html Literale Werte] für das Schreiben von Strings, Datumswerten und anderen Arten von Literalen in MySQL
* Client-Befehle (z. B. <tt>help</tt>, <tt>quit</tt> und <tt>clear</tt>) und Schlüsselwörter in SQL-Anweisungen (z. B. [https://dev.mysql.com/doc/refman/8.0/en/select.html SELECT], [https://dev.mysql.com/doc/refman/8.0/en/create-table.html CREATE TABLE] und [https://dev.mysql.com/doc/refman/8.0/en/insert.html INSERT]) unterscheiden nicht zwischen Groß- und Kleinschreibung.
* Bei Spaltennamen wird zwischen Groß- und Kleinschreibung unterschieden. Bei Tabellennamen wird auf den meisten Unix-ähnlichen Plattformen die Groß- und Kleinschreibung beachtet ( ), auf Windows-Plattformen jedoch nicht ( ). Die Unterscheidung zwischen Groß- und Kleinschreibung während des Zeichenfolgenvergleichs hängt von der von Ihnen verwendeten Zeichenkollation ab. Im Allgemeinen ist es eine gute Idee, alle Bezeichner (Datenbanknamen, Tabellennamen, Spaltennamen usw.) und Zeichenketten unter Berücksichtigung der Groß- und Kleinschreibung zu behandeln. Siehe [https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html Unterscheidung zwischen Groß- und Kleinschreibung bei Bezeichnern] und [https://dev.mysql.com/doc/refman/8.0/en/case-sensitivity.html Unterscheidung zwischen Groß- und Kleinschreibung bei Stringsuchen] für weitere Details.
* Sie können Ihre SQL-Anweisungen in mehreren Zeilen eingeben, indem Sie <tt>Enter</tt> in der Mitte drücken. Die Eingabe eines Semikolons (<tt><nowiki>;</nowiki></tt>) gefolgt von einem <tt>Enter</tt> beendet eine SQL-Anweisung und sendet sie zur Ausführung an den Server; dasselbe geschieht, wenn eine Anweisung mit <tt>\g</tt> oder <tt>\G</tt> beendet wird (bei letzterem werden die zurückgegebenen Ergebnisse vertikal angezeigt). Für Client-Befehle (z. B. <tt>Hilfe</tt>, <tt>Beenden</tt> und <tt>Löschen</tt>) ist jedoch kein Abschlusszeichen erforderlich.


Um die Verbindung mit dem MySQL-Server zu trennen, geben Sie <tt>QUIT</tt> oder <tt>\q</tt> auf dem Client ein:
=== Datensätzen anzeigen ===
; Abrufen von Datensätzen aus einer Tabelle
Verwenden Sie eine [https://dev.mysql.com/doc/refman/8.0/en/select.html SELECT]-Anweisung und "*", um alle Spalten abzugleichen
<syntaxhighlight lang="sql" highlight="1" copy>
SELECT * FROM cats;
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
+----+---------+--------+------------+
| id | name  | owner | birth  |
+----+---------+--------+------------+
| 1 | Sandy  | Lennon | 2015-01-03 |
| 2 | Cookie | Casey | 2013-11-13 |
| 3 | Charlie | River | 2016-05-21 |
+----+---------+--------+------------+
3 rows in set (0.00 sec)
</syntaxhighlight>


  mysql> QUIT
Um bestimmte Spalten und Zeilen nach einer bestimmten Bedingung auszuwählen, verwenden Sie die <tt>WHERE</tt>-Klausel
<syntaxhighlight lang="sql" highlight="1" copy>
SELECT name FROM cats WHERE owner = 'Casey';
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
+--------+
| name |
+--------+
| Cookie |
+--------+
1 row in set (0.00 sec)
</syntaxhighlight>


== Einige grundlegende Operationen mit MySQL ==
=== Datensatz löschen ===
; Löschen eines Datensatzes aus einer Tabelle
Verwenden Sie eine [https://dev.mysql.com/doc/refman/8.0/en/delete.html DELETE]-Anweisung, um einen -Datensatz aus einer Tabelle zu löschen, und geben Sie das Kriterium für das Löschen mit der <tt>WHERE</tt>-Klausel an
<syntaxhighlight lang="sql" highlight="1" copy>
DELETE FROM cats WHERE name='Cookie';
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
Query OK, 1 row affected (0.05 sec)
</syntaxhighlight>


Hier finden Sie einige grundlegende Operationen mit dem MySQL-Server. [https://dev.mysql.com/doc/refman/8.0/en/sql-statements.html SQL-Anweisungen] erklärt detailliert die reichhaltige Syntax und die Funktionalität der SQL-Anweisungen, die unter dargestellt sind.  
<syntaxhighlight lang="sql" highlight="1" copy>
SELECT * FROM cats;
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
+----+---------+--------+------------+
| id | name  | owner | birth  |
+----+---------+--------+------------+
| 1 | Sandy  | Lennon | 2015-01-03 |
| 3 | Charlie | River | 2016-05-21 |
+----+---------+--------+------------+
2 rows in set (0.00 sec)
</syntaxhighlight>


Vorhandene Datenbanken anzeigen.&nbsp; Verwenden Sie eine [https://dev.mysql.com/doc/refman/8.0/en/show-databases.html SHOW DATABASES] Anweisung:
=== Spalten hinzufügen/löschen ===
; Hinzufügen oder Löschen einer Spalte aus einer Tabelle
Verwenden Sie eine [https://dev.mysql.com/doc/refman/8.0/en/alter-table.html ALTER TABLE...ADD] Anweisung, um eine Spalte hinzuzufügen
* Sie können beispielsweise&nbsp;eine <tt>AFTER</tt> Klausel verwenden, um den Ort der neuen Spalte anzugeben


mysql> SHOW DATABASES;
<syntaxhighlight lang="sql" highlight="1" copy>
+--------------------+
mysql> ALTER TABLE cats ADD gender CHAR(1) AFTER name;
| Database          |
</syntaxhighlight>
+--------------------+
<!-- output -->
| information_schema |
<syntaxhighlight lang="text" highlight="" line>
| mysql              |
Query OK, 0 rows affected (0.24 sec)
| performance_schema |
Records: 0 Duplicates: 0 Warnings: 0
| sys                |
</syntaxhighlight>
+--------------------+
4 rows in set (0.00 sec)


Erstellen einer neuen Datenbank.&nbsp; Verwenden Sie eine [https://dev.mysql.com/doc/refman/8.0/en/create-database.html CREATE DATABASE] Anweisung:
Verwenden Sie [https://dev.mysql.com/doc/refman/8.0/en/explain.html DESCRIBE], um das Ergebnis zu überprüfen
<syntaxhighlight lang="sql" highlight="1" copy>
DESCRIBE cats;
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
+--------+------------------+------+-----+---------+----------------+
| Field | Type      | Null | Key | Default | Extra    |
+--------+------------------+------+-----+---------+----------------+
| id  | int(10) unsigned | NO  | PRI | NULL  | auto_increment |
| name  | varchar(150)  | NO  |  | NULL  |        |
| gender | char(1)    | YES |  | NULL  |        |
| owner | varchar(150)  | NO  |  | NULL  |        |
| birth | date      | NO  |  | NULL  |        |
+--------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
</syntaxhighlight>


mysql> CREATE DATABASE pets;
[https://dev.mysql.com/doc/refman/8.0/en/show-create-table.html SHOW CREATE TABLE] zeigt eine [https://dev.mysql.com/doc/refman/8.0/en/create-table.html CREATE TABLE] Anweisung, die noch mehr Details über die Tabelle liefert
Query OK, 1 row affected (0.01 sec)


  Prüfen Sie, ob die Datenbank erstellt worden ist:
<syntaxhighlight lang="sql" highlight="1" copy>
SHOW CREATE TABLE cats\G
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
*************************** 1
* row ***************************
    Table: cats
Create Table: CREATE TABLE `cats` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
`gender` char(1) DEFAULT NULL,
`owner` varchar(150) NOT NULL,
  `birth` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
</syntaxhighlight>


mysql> SHOW DATABASES;
Verwenden Sie [https://dev.mysql.com/doc/refman/8.0/en/alter-table.html ALTER TABLE...DROP] um eine Spalte zu löschen
+--------------------+
<syntaxhighlight lang="sql" highlight="1" copy>
| Database          |
ALTER TABLE cats DROP gender;
+--------------------+
</syntaxhighlight>
| information_schema |
<!-- output -->
| mysql              |
<syntaxhighlight lang="text" highlight="" line>
| performance_schema |
Query OK, 0 rows affected (0.19 sec)
| pets              |
Records: 0 Duplicates: 0 Warnings: 0
| sys                |
</syntaxhighlight>
+--------------------+
5 rows in set (0.00 sec)


Erstellen einer Tabelle innerhalb einer Datenbank.&nbsp; Wählen Sie zunächst die Datenbank aus, in der Sie die Tabelle mit einer [https://dev.mysql.com/doc/refman/8.0/en/use.html USE]-Anweisung erstellen möchten:
<syntaxhighlight lang="sql" highlight="1" copy>
DESCRIBE cats;
</syntaxhighlight>
<!-- output -->
<syntaxhighlight lang="text" highlight="" line>
+-------+------------------+------+-----+---------+----------------+
| Field | Type      | Null | Key | Default | Extra    |
+-------+------------------+------+-----+---------+----------------+
| id  | int(10) unsigned | NO  | PRI | NULL  | auto_increment |
| name | varchar(150)  | NO  |  | NULL  |        |
| owner | varchar(150)  | NO  |  | NULL  |        |
| birth | date      | NO  |  | NULL  |        |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
</syntaxhighlight>


mysql> USE pets
Im [https://dev.mysql.com/doc/refman/8.0/en/tutorial.html Tutorial] finden Sie weitere Anleitungen für die Arbeit mit dem MySQL-Server
Database changed


Die Anweisung [https://dev.mysql.com/doc/refman/8.0/en/use.html USE] weist MySQL an, <tt>pets</tt> als Standarddatenbank für nachfolgende Anweisungen zu verwenden. Als nächstes erstellen Sie eine Tabelle mit einer [https://dev.mysql.com/doc/refman/8.0/en/create-table.html CREATE TABLE] Anweisung:
=== Problembehebung ===


CREATE TABLE cats
(
  id              INT unsigned NOT NULL AUTO_INCREMENT, # Unique ID for the record
  name            VARCHAR(150) NOT NULL,                <nowiki># Name of the cat</nowiki>
  owner          VARCHAR(150) NOT NULL,                <nowiki># Owner of the cat</nowiki>
  birth          DATE NOT NULL,                        <nowiki># Birthday of the cat</nowiki>
  PRIMARY KEY    (id)                                  <nowiki># Make the id the primary key</nowiki>
);


Datentypen, die Sie in jeder Spalte verwenden können, werden in [https://dev.mysql.com/doc/refman/8.0/en/data-types.html Datentypen] erläutert. [https://dev.mysql.com/doc/refman/8.0/en/primary-key-optimization.html Primärschlüssel-Optimierung] erklärt das Konzept von eines Primärschlüssels. Was auf ein <tt><nowiki>#</nowiki></tt> in jeder Zeile folgt, ist ein Kommentar, der vom '''mysql''' Client ignoriert wird; siehe [https://dev.mysql.com/doc/refman/8.0/en/comments.html Kommentare] für andere Kommentararten.
<noinclude>


Prüfen Sie, ob die Tabelle mit einer [https://dev.mysql.com/doc/refman/8.0/en/show-tables.html SHOW TABLES] Anweisung erstellt wurde:
== Anhang ==
=== Siehe auch ===
<div style="column-count:2">
<categorytree hideroot=on mode="pages">{{BASEPAGENAME}}</categorytree>
</div>
----
{{Special:PrefixIndex/{{BASEPAGENAME}}/}}


mysql> SHOW TABLES;
=== Dokumentation ===
+----------------+
<!--
| Tables_in_pets |
; Man-Page
+----------------+
# [https://manpages.debian.org/stable/procps/pgrep.1.de.html prep(1)]
| cats          |
+----------------+
1 row in set (0.00 sec)


[https://dev.mysql.com/doc/refman/8.0/en/explain.html DESCRIBE] zeigt Informationen über alle Spalten einer Tabelle:
; Info-Pages
-->


mysql> DESCRIBE cats;
* [https://dev.mysql.com/doc/refman/8.0/en/sql-statements.html SQL-Anweisungen] erklärt detailliert Syntax und Funktionalität der SQL-Anweisungen, die hier vorgestellt werden
+-------+------------------+------+-----+---------+----------------+
| Field | Type            | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO  | PRI | NULL    | auto_increment |
| name  | varchar(150)    | NO  |    | NULL    |                |
| owner | varchar(150)    | NO  |    | NULL    |                |
| birth | date            | NO  |    | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)


Hinzufügen von Datensätzen in eine Tabelle.&nbsp; Verwenden Sie zum Beispiel eine [https://dev.mysql.com/doc/refman/8.0/en/insert.html INSERT...VALUES]-Anweisung:
=== Links ===
==== Projekt ====
==== Weblinks ====


INSERT INTO cats ( name, owner, birth) VALUES
<!--
  ( 'Sandy', 'Lennon', '2015-01-03' ),
{{DEFAULTSORT:new}}
  ( 'Cookie', 'Casey', '2013-11-13' ),
{{DISPLAYTITLE:new}}
  ( 'Charlie', 'River', '2016-05-21' );
-->


Siehe [https://dev.mysql.com/doc/refman/8.0/en/literals.html Literale Werte] für das Schreiben von Strings, Datumswerten und anderen Arten von Literalen in MySQL.
[[Kategorie:Mysql]]


Abrufen von Datensätzen aus einer Tabelle.&nbsp; Verwenden Sie eine [https://dev.mysql.com/doc/refman/8.0/en/select.html SELECT]-Anweisung und "*", um alle Spalten abzugleichen:
</noinclude>
 
mysql> SELECT * FROM cats;
+----+---------+--------+------------+
| id | name    | owner  | birth      |
+----+---------+--------+------------+
|  1 | Sandy  | Lennon | 2015-01-03 |
|  2 | Cookie  | Casey  | 2013-11-13 |
|  3 | Charlie | River  | 2016-05-21 |
+----+---------+--------+------------+
3 rows in set (0.00 sec)
 
Um bestimmte Spalten und Zeilen nach einer bestimmten Bedingung auszuwählen, verwenden Sie die <tt>WHERE</tt>-Klausel:
 
mysql> SELECT name FROM cats WHERE owner = 'Casey';
+--------+
| name  |
+--------+
| Cookie |
+--------+
1 row in set (0.00 sec)
 
Löschen eines Datensatzes aus einer Tabelle.&nbsp; Verwenden Sie eine [https://dev.mysql.com/doc/refman/8.0/en/delete.html DELETE]-Anweisung, um einen -Datensatz aus einer Tabelle zu löschen, und geben Sie das Kriterium für das Löschen mit der <tt>WHERE</tt>-Klausel an:
 
mysql> DELETE FROM cats WHERE name='Cookie';
Query OK, 1 row affected (0.05 sec)
 
mysql> SELECT * FROM cats;
+----+---------+--------+------------+
| id | name    | owner  | birth      |
+----+---------+--------+------------+
|  1 | Sandy  | Lennon | 2015-01-03 |
|  3 | Charlie | River  | 2016-05-21 |
+----+---------+--------+------------+
2 rows in set (0.00 sec)
 
Hinzufügen oder Löschen einer Spalte aus einer Tabelle.&nbsp; Verwenden Sie eine [https://dev.mysql.com/doc/refman/8.0/en/alter-table.html ALTER TABLE...ADD] Anweisung, um eine Spalte hinzuzufügen. Sie können z.B. eine <tt>AFTER</tt> Klausel verwenden, um den Ort der neuen Spalte anzugeben:
 
mysql> ALTER TABLE cats ADD gender CHAR(1) AFTER name;
Query OK, 0 rows affected (0.24 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
Verwenden Sie [https://dev.mysql.com/doc/refman/8.0/en/explain.html DESCRIBE], um das Ergebnis zu überprüfen:
 
mysql> DESCRIBE cats;
+--------+------------------+------+-----+---------+----------------+
| Field  | Type            | Null | Key | Default | Extra          |
+--------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO  | PRI | NULL    | auto_increment |
| name  | varchar(150)    | NO  |    | NULL    |                |
| gender | char(1)          | YES  |    | NULL    |                |
| owner  | varchar(150)    | NO  |    | NULL    |                |
| birth  | date            | NO  |    | NULL    |                |
+--------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
 
[https://dev.mysql.com/doc/refman/8.0/en/show-create-table.html SHOW CREATE TABLE] zeigt eine [https://dev.mysql.com/doc/refman/8.0/en/create-table.html CREATE TABLE] Anweisung, die noch mehr Details über die Tabelle liefert:
 
mysql> SHOW CREATE TABLE cats\G
*************************** 1. row ***************************
        Table: cats
Create Table: CREATE TABLE `cats` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(150) NOT NULL,
  `gender` char(1) DEFAULT NULL,
  `owner` varchar(150) NOT NULL,
  `birth` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
 
Verwenden Sie [https://dev.mysql.com/doc/refman/8.0/en/alter-table.html ALTER TABLE...DROP] um eine Spalte zu löschen:
 
mysql> ALTER TABLE cats DROP gender;
Query OK, 0 rows affected (0.19 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
mysql> DESCRIBE cats;
+-------+------------------+------+-----+---------+----------------+
| Field | Type            | Null | Key | Default | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | int(10) unsigned | NO  | PRI | NULL    | auto_increment |
| name  | varchar(150)    | NO  |    | NULL    |                |
| owner | varchar(150)    | NO  |    | NULL    |                |
| birth | date            | NO  |    | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
 
Im [https://dev.mysql.com/doc/refman/8.0/en/tutorial.html Tutorial] finden Sie weitere Anleitungen für die Arbeit mit dem MySQL-Server .

Aktuelle Version vom 17. Juni 2026, 10:40 Uhr

Mysql/Grundlagen - MySQL-Einführung

Beschreibung

MySQL ist die weltweit beliebteste Open-Source-Datenbank
  • leistungsstarke Funktionen
  • einfach einzurichten
  • leicht zu verwenden

Anwendungen

Anmeldung

Datenbanken anzeigen

Vorhandene Datenbanken anzeigen

SHOW DATABASES Anweisung

SHOW DATABASES;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| mysql       |
| performance_schema |
| sys        |
+--------------------+
4 rows in set (0.00 sec)

Datenbank erstellen

Erstellen einer neuen Datenbank

CREATE DATABASE Anweisung

CREATE DATABASE pets;
Query OK, 1 row affected (0.01 sec)
Prüfen, ob die Datenbank erstellt wurde
SHOW DATABASES;
+--------------------+
| Database      |
+--------------------+
| information_schema |
| mysql       |
| performance_schema |
| pets        |
| sys        |
+--------------------+
5 rows in set (0.00 sec)

Tabelle erstellen

Erstellen einer Tabelle innerhalb einer Datenbank

Datenbank auswählen

Wählen Sie zunächst die Datenbank aus, in der Sie die Tabelle mit einer USE-Anweisung erstellen möchten

USE pets
Database changed

Die Anweisung USE weist MySQL an, pets als Standarddatenbank für nachfolgende Anweisungen zu verwenden

Tabelle erstellen

Als Nächstes erstellen Sie eine Tabelle mit einer CREATE TABLE Anweisung

CREATE TABLE cats
(
 id       INT unsigned NOT NULL AUTO_INCREMENT, # Unique ID for the record
 name      VARCHAR(150) NOT NULL,        <nowiki># Name of the cat</nowiki>
 owner      VARCHAR(150) NOT NULL,        <nowiki># Owner of the cat</nowiki>
 birth      DATE NOT NULL,            <nowiki># Birthday of the cat</nowiki>
 PRIMARY KEY   (id)                 <nowiki># Make the id the primary key</nowiki>
);
Datentypen

Datentypen, die Sie in jeder Spalte verwenden können, werden in Datentypen erläutert. Primärschlüssel-Optimierung erklärt das Konzept von eines Primärschlüssels

  • Was auf ein # in jeder Zeile folgt, ist ein Kommentar, der vom mysql Client ignoriert wird; siehe Kommentare für andere Kommentararten
Tabelle prüfen

Prüfen Sie, ob die Tabelle mit einer SHOW TABLES Anweisung erstellt wurde

SHOW TABLES;
+----------------+
| Tables_in_pets |
+----------------+
| cats      |
+----------------+
1 row in set (0.00 sec)
Informationen anzeigen

DESCRIBE zeigt Informationen über alle Spalten einer Tabelle

DESCRIBE cats;
+-------+------------------+------+-----+---------+----------------+
| Field | Type       | Null | Key | Default | Extra     |
+-------+------------------+------+-----+---------+----------------+
| id  | int(10) unsigned | NO  | PRI | NULL  | auto_increment |
| name | varchar(150)   | NO  |   | NULL  |        |
| owner | varchar(150)   | NO  |   | NULL  |        |
| birth | date       | NO  |   | NULL  |        |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

Datensätze hinzufügen

Hinzufügen von Datensätzen in eine Tabelle

Verwenden Sie zum Beispiel eine INSERT...VALUES-Anweisung

INSERT INTO cats (name, owner, birth) VALUES
 ('Sandy', 'Lennon', '2015-01-03'),
 ('Cookie', 'Casey', '2013-11-13'),
 ('Charlie', 'River', '2016-05-21');

Siehe Literale Werte für das Schreiben von Strings, Datumswerten und anderen Arten von Literalen in MySQL

Datensätzen anzeigen

Abrufen von Datensätzen aus einer Tabelle

Verwenden Sie eine SELECT-Anweisung und "*", um alle Spalten abzugleichen

SELECT * FROM cats;
+----+---------+--------+------------+
| id | name  | owner | birth   |
+----+---------+--------+------------+
| 1 | Sandy  | Lennon | 2015-01-03 |
| 2 | Cookie | Casey | 2013-11-13 |
| 3 | Charlie | River | 2016-05-21 |
+----+---------+--------+------------+
3 rows in set (0.00 sec)

Um bestimmte Spalten und Zeilen nach einer bestimmten Bedingung auszuwählen, verwenden Sie die WHERE-Klausel

SELECT name FROM cats WHERE owner = 'Casey';
+--------+
| name  |
+--------+
| Cookie |
+--------+
1 row in set (0.00 sec)

Datensatz löschen

Löschen eines Datensatzes aus einer Tabelle

Verwenden Sie eine DELETE-Anweisung, um einen -Datensatz aus einer Tabelle zu löschen, und geben Sie das Kriterium für das Löschen mit der WHERE-Klausel an

DELETE FROM cats WHERE name='Cookie';
Query OK, 1 row affected (0.05 sec)
SELECT * FROM cats;
+----+---------+--------+------------+
| id | name  | owner | birth   |
+----+---------+--------+------------+
| 1 | Sandy  | Lennon | 2015-01-03 |
| 3 | Charlie | River | 2016-05-21 |
+----+---------+--------+------------+
2 rows in set (0.00 sec)

Spalten hinzufügen/löschen

Hinzufügen oder Löschen einer Spalte aus einer Tabelle

Verwenden Sie eine ALTER TABLE...ADD Anweisung, um eine Spalte hinzuzufügen

  • Sie können beispielsweise eine AFTER Klausel verwenden, um den Ort der neuen Spalte anzugeben
mysql> ALTER TABLE cats ADD gender CHAR(1) AFTER name;
Query OK, 0 rows affected (0.24 sec)
Records: 0 Duplicates: 0 Warnings: 0

Verwenden Sie DESCRIBE, um das Ergebnis zu überprüfen

DESCRIBE cats;
+--------+------------------+------+-----+---------+----------------+
| Field | Type       | Null | Key | Default | Extra     |
+--------+------------------+------+-----+---------+----------------+
| id   | int(10) unsigned | NO  | PRI | NULL  | auto_increment |
| name  | varchar(150)   | NO  |   | NULL  |        |
| gender | char(1)     | YES |   | NULL  |        |
| owner | varchar(150)   | NO  |   | NULL  |        |
| birth | date       | NO  |   | NULL  |        |
+--------+------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

SHOW CREATE TABLE zeigt eine CREATE TABLE Anweisung, die noch mehr Details über die Tabelle liefert

SHOW CREATE TABLE cats\G
*************************** 1
* row ***************************
    Table: cats
Create Table: CREATE TABLE `cats` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(150) NOT NULL,
 `gender` char(1) DEFAULT NULL,
 `owner` varchar(150) NOT NULL,
 `birth` date NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

Verwenden Sie ALTER TABLE...DROP um eine Spalte zu löschen

ALTER TABLE cats DROP gender;
Query OK, 0 rows affected (0.19 sec)
Records: 0 Duplicates: 0 Warnings: 0
DESCRIBE cats;
+-------+------------------+------+-----+---------+----------------+
| Field | Type       | Null | Key | Default | Extra     |
+-------+------------------+------+-----+---------+----------------+
| id  | int(10) unsigned | NO  | PRI | NULL  | auto_increment |
| name | varchar(150)   | NO  |   | NULL  |        |
| owner | varchar(150)   | NO  |   | NULL  |        |
| birth | date       | NO  |   | NULL  |        |
+-------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

Im Tutorial finden Sie weitere Anleitungen für die Arbeit mit dem MySQL-Server

Problembehebung

Anhang

Siehe auch



Dokumentation

  • SQL-Anweisungen erklärt detailliert Syntax und Funktionalität der SQL-Anweisungen, die hier vorgestellt werden

Projekt