Einführung
MySQL verwaltet die von ihm verwalteten Daten in Tabellen und Datenbanken. Tabellen speichern Daten in vordefinierten Schemas von Spalten und Datentypen. Datenbanken sind eine Struktur, die mehrere Tabellen, Indizes und Prozeduren enthalten kann und dabei hilft, einen Bereich für Berechtigungen, Anpassungen und mehr zu definieren.
In dieser Anleitung zeigen wir Ihnen, wie Sie Tabellen und Datenbanken in MySQL erstellen. Wir zeigen Ihnen, wie Sie einige Funktionen beider Strukturen verwalten, und behandeln dann, wie Sie sie entfernen können, um sie zu bereinigen, wenn Sie sie nicht mehr benötigen.
Voraussetzungen
Um dieser Anleitung zu folgen, müssen Sie sich bei einem MySQL-Server mit einem Benutzer mit Administratorrechten unter Verwendung von mysql
anmelden Befehlszeilen-Client.
Wenn Sie sich nicht mit dem root
anmelden möchten MySQL-Administratorkonto benötigt Ihr Benutzer mindestens den CREATE
berechtigt, die in diesem Handbuch beschriebenen Aktionen auszuführen.
Sie können die verfügbaren Berechtigungen Ihres Benutzers überprüfen, indem Sie Folgendes eingeben:
SHOW GRANTS\G
Wie erstellt man eine neue Datenbank?
Als erstes zeigen wir, wie man eine neue Datenbank erstellt. In MySQL enthalten Datenbanken Tabellen, Indizes, Prozeduren und andere Ressourcen, die sich normalerweise auf ein einzelnes Projekt beziehen. Jede dieser Ressourcen muss innerhalb einer Datenbank erstellt werden, daher ist es ein guter erster Schritt zu lernen, wie man eine neue Datenbank erstellt.
Die grundlegende Syntax zum Erstellen einer neuen Datenbank sieht wie folgt aus:
CREATE DATABASE <db_name>;
Ersetzen Sie <db_name>
mit dem Namen, den Sie Ihrer Datenbank geben möchten, bevor Sie den Befehl ausführen. Dieser Befehl erstellt eine Datenbank mit dem angegebenen Namen und legt den aktuellen Benutzer als Eigentümer der neuen Datenbank fest.
Die Datenbank verwendet die systemweiten Standardwerte für den Zeichensatz, die Sortierung und die Verschlüsselungseigenschaften:
- ZEICHENSATZ: legt den Zeichensatz für die neue Datenbank fest. Dies ist eine Lokalisierungsoption, die beeinflusst, welche Zeichen als Großbuchstaben, Kleinbuchstaben und Ziffern betrachtet werden.
- SORTIEREN: legt die Sortierung fest , oder Sortierreihenfolge für die Datenbank. Dies ist eine Lokalisierungsoption, die bestimmt, wie Artikel bei der Bestellung organisiert werden.
- VERSCHLÜSSELUNG: legt die Verschlüsselung für die neue Datenbank fest. Dies ist eine boolesche Option, die entweder 'Y' für Ja oder 'N' für Nein sein kann.
Sie können die für Ihre Installation verfügbaren Zeichensätze finden, indem Sie Folgendes eingeben:
SHOW CHARACTER SET;
Ebenso können Sie die verfügbaren Sortierungen finden, indem Sie Folgendes eingeben:
SHOW COLLATION;
Wenn Sie einen nicht standardmäßigen Wert für einen dieser Parameter angeben möchten, können Sie dies tun, indem Sie ihn wie folgt nach der Haupterstellungsanweisung hinzufügen:
CREATE DATABASE <db_name> CHARACTER SET = 'utf8mb4' COLLATE = 'utf8mb4_0900_ai_ci' ENCRYPTION = 'Y';
Um den Beispielen in diesem Handbuch zu folgen, erstellen Sie eine Datenbank mit dem Namen school
unter Verwendung der standardmäßigen Gebietsschemaeinstellungen Ihrer Instanz und des UTF8-Zeichensatzes:
CREATE DATABASE school CHARACTER SET = 'utf8mb4';
Dadurch wird Ihre neue Datenbank mit den von Ihnen angegebenen Spezifikationen erstellt.
Vorhandene Datenbanken auflisten
Geben Sie Folgendes ein, um die auf Ihrem Server verfügbaren Datenbanken aufzulisten:
SHOW DATABASES;
Dadurch werden alle Datenbanken aufgelistet, die derzeit in der Umgebung definiert sind:
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Sie können überprüfen, ob die von Ihnen angegebenen Einstellungen auf die neue school
angewendet wurden Datenbank mit SHOW CREATE DATABASE
Befehl:
SHOW CREATE DATABASE school;
Die Ausgabe zeigt den Befehl und die Optionen an, die zum Erstellen der Datenbank verwendet wurden, und füllt die Optionen mit den angewendeten Standardwerten auf:
+----------+----------------------------------------------------------------------------------------------------------------------------------+ Database | Create Database |+----------+----------------------------------------------------------------------------------------------------------------------------------+ school | CREATE DATABASE `school` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |+----------+----------------------------------------------------------------------------------------------------------------------------------+1 row in set (0.00 sec)
Wie man in MySQL zu einer anderen Datenbank wechselt
Sobald Ihre Datenbank erstellt ist, können Sie auf verschiedene Arten damit arbeiten.
Die erste Option besteht darin, die Datenbank als Argument in jedem verwendeten Befehl anzugeben. Um jedoch Zeit zu sparen, wenn Sie mehrere Befehle ausführen, die sich auf die Objekte der Datenbank beziehen, können Sie auch zur Datenbank „wechseln“ oder „verwenden“, um Ihre neue Datenbank als Standardkontext für alle datenbankbezogenen Befehle festzulegen, die Sie ausführen werden .
Um zu einer anderen Datenbank zu wechseln, geben Sie Folgendes ein:
USE <db_name>;
In unserem Fall können wir zur school
wechseln Datenbank, die wir erstellt haben, indem Sie Folgendes eingeben:
USE school;
Erstellen Sie Tabellen in Datenbanken
Sobald Sie eine Datenbank erstellt haben, können Sie Tabellen und andere Objekte darin definieren, um Ihre Daten zu speichern und zu verwalten. In MySQL bestehen Tabellen aus einem Tabellennamen, den Spaltendefinitionen (diese beinhalten unter anderem Namen, Datentypen und Einschränkungen) und Tabellenoptionen.
Was ist die Syntax von MySQLs CREATE TABLE
Befehl?
Die grundlegende Syntax zum Erstellen von Tabellen mit CREATE TABLE
von MySQL Befehl sieht so aus:
CREATE TABLE <table_name> ( <column_name> <data_type> [<column_constraint>], [<table_constraint>,]);
Wir können die obige Befehlsvorlage in die folgenden Komponenten aufteilen:
CREATE TABLE <table_name>
:Die grundlegende Schöpfungsaussage. Der<table_name>
Platzhalter sollte durch den Namen der Tabelle ersetzt werden, die Sie verwenden möchten.<column_name> <data_type>
:Definiert eine grundlegende Spalte innerhalb der Tabelle. Der<column_name>
Platzhalter sollte durch den Namen ersetzt werden, den Sie für Ihre Spalte verwenden möchten. Der<data_type>
gibt den MySQL-Datentyp der Spalte an. In der Tabelle gespeicherte Daten müssen der Spaltenstruktur und den Spaltendatentypen entsprechen, um akzeptiert zu werden.<column_constraint>
:Spaltenbeschränkungen sind optionale Beschränkungen, die zusätzliche Anforderungen für Daten hinzufügen. Beispielsweise können Sie verlangen, dass Einträge nicht null, eindeutig oder positive ganze Zahlen sind.<table_constraint>
:Tabelleneinschränkungen ähneln Spalteneinschränkungen, beinhalten jedoch die Interaktion mehrerer Spalten. Beispielsweise könnten Sie eine Tabellenbeschränkung haben, die überprüft, ob einDATE_OF_BIRTH
ist liegt vorDATE_OF_DEATH
in einer Tabelle.
Wie erstellen Sie Tabellen nur, wenn sie noch nicht existieren?
Das Standardverhalten von MySQL besteht darin, einen Fehler auszulösen, wenn Sie versuchen, eine bereits vorhandene Tabelle zu erstellen. Allerdings ist der optionale IF NOT EXISTS
-Klausel kann der Erstellungsanweisung hinzugefügt werden, um dieses Verhalten zu überschreiben.
Sie können den IF NOT EXISTS
verwenden -Klausel, indem Sie sie nach CREATE TABLE
in den Befehl einfügen Phrase, aber vor dem Tabellennamen:
CREATE TABLE IF NOT EXISTS table_name ( column_name TYPE [column_constraint], [table_constraint,]);
Dadurch wird das Verhalten des Befehls wie folgt geändert:Wenn der angegebene Tabellenname bereits existiert, gibt MySQL eine Warnung anstelle eines Fehlers aus. Der Rest des Befehlsverhaltens bleibt gleich.
Erstellen von Tabellen in MySQL-Datenbanken
Die oben angegebene Befehlsvorlage reicht aus, um einfache Tabellen zu erstellen. Um unser Beispiel voranzutreiben, erstellen wir zwei Tabellen in unserer school
Datenbank. Eine Tabelle wird supplies
genannt und die anderen werden teachers
genannt :
Im supplies
Tabelle enthalten wir die folgenden Felder:
- id: Eine eindeutige ID für jede Art von Schulbedarf.
- Name: Der Name eines bestimmten Schulartikels.
- Beschreibung: Eine kurze Beschreibung des Artikels.
- Hersteller: Der Name des Artikelherstellers.
- Farbe: Die Farbe des Artikels.
- Inventar: Die Anzahl der Artikel, die wir für eine bestimmte Art von Schulmaterial haben. Dieser sollte nie kleiner als 0 sein.
Wir können die supplies
erstellen Tabelle mit den oben genannten Qualitäten unter Verwendung des folgenden SQL:
CREATE TABLE supplies ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255), description VARCHAR(255), manufacturer VARCHAR(255), color VARCHAR(255), inventory INT CHECK (inventory >= 0));
Dadurch werden die supplies
erstellt Tabelle innerhalb der school
Datenbank. Der PRIMARY KEY
Spaltenbeschränkung ist eine spezielle Beschränkung, die verwendet wird, um Spalten anzugeben, die Datensätze in der Tabelle eindeutig identifizieren können. Daher gibt die Einschränkung an, dass die Spalte nicht null sein kann und eindeutig sein muss. MySQL erstellt Indizes für Primärschlüsselspalten, um die Abfragegeschwindigkeit zu erhöhen.
Überprüfen Sie, ob die neue Tabelle vorhanden ist, indem Sie Folgendes eingeben:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies |+------------------+1 row in set (0.01 sec)
Sie können überprüfen, ob das Schema Ihre Definition widerspiegelt, indem Sie Folgendes eingeben:
SHOW CREATE TABLE supplies\G
*************************** 1. row *************************** Table: suppliesCreate Table: CREATE TABLE `supplies` ( `id` int NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `description` varchar(255) DEFAULT NULL, `manufacturer` varchar(255) DEFAULT NULL, `color` varchar(255) DEFAULT NULL, `inventory` int DEFAULT NULL, PRIMARY KEY (`id`), CONSTRAINT `supplies_chk_1` CHECK ((`inventory` >= 0))) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci1 row in set (0.00 sec
Die von uns angegebenen Spalten, Datentypen und Einschränkungen sind in der Ausgabe vorhanden, obwohl die Reihenfolge und Anzeige unterschiedlich sein können.
Erstellen Sie als Nächstes einen teachers
Tisch. In dieser Tabelle sollten die folgenden Spalten vorhanden sein:
- id :Eine eindeutige Mitarbeiteridentifikationsnummer.
- Vorname :Vorname des Lehrers.
- Nachname :Nachname des Lehrers.
- Betreff :Das Fach, das der Lehrer unterrichten soll.
- Klassenstufe :Die Klassenstufe der Schüler, die der Lehrer unterrichten soll.
Erstellen Sie die teachers
Tabelle mit obigem Schema mit folgendem SQL:
CREATE TABLE teachers ( id INT AUTO_INCREMENT PRIMARY KEY, first_name VARCHAR(255), last_name VARCHAR(255), subject VARCHAR(255), grade_level INT);
Wie man Tabellen mit Primärschlüsseln und Fremdschlüsseln erstellt
Informationen zum Erstellen von Tabellen mit Primär- und Fremdschlüsseln finden Sie in einigen unserer anderen MySQL-Handbücher. Primärschlüssel und Fremdschlüssel sind beide Arten von Datenbankeinschränkungen innerhalb von MySQL.
Ein Primärschlüssel ist eine spezielle Spalte oder Spalte, die garantiert eindeutig über alle Zeilen innerhalb derselben Tabelle hinweg ist. Alle Primärschlüssel können verwendet werden, um eine bestimmte Zeile eindeutig zu identifizieren. Primärschlüssel stellen nicht nur sicher, dass jede Zeile einen eindeutigen Wert für die Primärschlüsselspalten hat, sie stellen auch sicher, dass keine Zeile NULL
enthält Werte für diese Spalte. Häufig verwendet der Primärschlüssel in MySQL das folgende Format, um einen automatisch zugewiesenen inkrementierenden Primärschlüssel anzugeben:id INT AUTO_INCREMENT PRIMARY KEY
.
Fremdschlüssel sind eine Möglichkeit sicherzustellen, dass eine oder mehrere Spalten in einer Tabelle mit den in einer anderen Tabelle enthaltenen Werten übereinstimmen. Dies trägt dazu bei, die referenzielle Integrität zwischen Tabellen sicherzustellen.
Wie man Tabellen in MySQL anzeigt
In MySQL können Sie Tabellen auf verschiedene Arten auflisten, je nachdem, nach welchen Informationen Sie suchen.
Wenn Sie sehen möchten, welche Tabellen in Ihrer Datenbank verfügbar sind, geben Sie Folgendes ein:
SHOW TABLES;
+------------------+ Tables_in_school |+------------------+ supplies | teachers |+------------------+2 rows in set (0.00 sec)
Sie können auch prüfen, ob das Schema für die Tabelle Ihren Vorgaben entspricht:
DESCRIBE teachers;
+--------------+--------------+------+-----+---------+----------------+ Field | Type | Null | Key | Default | Extra |+--------------+--------------+------+-----+---------+----------------+ id | int | NO | PRI | NULL | auto_increment | name | varchar(255) | YES | | NULL | | description | varchar(255) | YES | | NULL | | manufacturer | varchar(255) | YES | | NULL | | color | varchar(255) | YES | | NULL | | inventory | int | YES | | NULL | |+--------------+--------------+------+-----+---------+----------------+6 rows in set (0.00 sec)
Die teachers
Tabelle scheint unserer Definition zu entsprechen.
Wie man Tabellen mit dem ALTER TABLE
ändert Befehl
Wenn Sie das Schema einer bestehenden Tabelle in MySQL ändern müssen, können Sie ALTER TABLE
verwenden Befehl. Die ALTER TABLE
Der Befehl ist dem CREATE TABLE
sehr ähnlich Befehl, sondern arbeitet mit einer bestehenden Tabelle.
Tabellensyntax ändern
Die grundlegende Syntax zum Ändern von Tabellen in MySQL sieht folgendermaßen aus:
ALTER TABLE <table_name> <change_command> <change_parameters>;
Der <change_command>
gibt die genaue Art der Änderung an, die Sie vornehmen möchten, ob es sich dabei um das Festlegen verschiedener Optionen in der Tabelle, das Hinzufügen oder Entfernen von Spalten oder das Ändern von Typen oder Einschränkungen handelt. Die <change_parameters>
Ein Teil des Befehls enthält alle zusätzlichen Informationen, die MySQL benötigt, um die Änderung abzuschließen.
Hinzufügen von Spalten zu Tabellen
Mit ADD
können Sie einer MySQL-Tabelle eine Spalte hinzufügen Befehl ändern. Die Änderungsparameter umfassen den Spaltennamen, Typ und Optionen, genau so, wie Sie sie in CREATE TABLE
angeben würden Befehl.
Zum Beispiel, um eine Spalte namens missing_column
hinzuzufügen des text
in eine Tabelle namens some_table
eingeben , würden Sie Folgendes eingeben:
ALTER TABLE some_table ADD missing_column text;
Spalten aus Tabellen entfernen
Wenn Sie stattdessen eine vorhandene Spalte entfernen möchten, können Sie DROP COLUMN
verwenden stattdessen befehlen. Sie müssen den Namen der Spalte, die Sie löschen möchten, als Änderungsparameter angeben:
ALTER TABLE some_table DROP COLUMN useless_column;
Ändern des Datentyps einer Spalte
Um den Datentyp einer Spalte zu ändern, können Sie ALTER COLUMN
verwenden Änderungsbefehl mit dem MODIFY COLUMN
Spaltenbefehl. Zu den Parametern in diesem Kontext gehören der Spaltenname und sein neuer Typ:
ALTER TABLE resident MODIFY COLUMN id INT;
Andere Tabellenänderungen
Viele andere Arten von Änderungen können mit ALTER TABLE
erreicht werden Befehl. Weitere Informationen zu den verfügbaren Optionen finden Sie in der offiziellen MySQL-Dokumentation für ALTER TABLE
.
Tabellen löschen
Wenn Sie eine Tabelle löschen möchten, können Sie die DROP TABLE
verwenden SQL-Anweisung. Dadurch werden die Tabelle sowie alle darin gespeicherten Daten gelöscht.
Die grundlegende Syntax sieht folgendermaßen aus:
DROP TABLE <table_name>;
Dies löscht die Tabelle, falls sie existiert, und gibt einen Fehler aus, wenn der Tabellenname nicht existiert.
Wenn Sie die Tabelle löschen möchten, falls sie existiert, und nichts tun möchten, wenn sie nicht existiert, können Sie den IF EXISTS
einfügen Qualifizierer innerhalb der Anweisung:
DROP TABLE IF EXISTS <table_name>;
Tabellen, die Abhängigkeiten von anderen Tabellen oder Objekten haben, können standardmäßig nicht gelöscht werden, solange diese Abhängigkeiten bestehen.
Löschen Sie die supplies
Tabelle, die wir zuvor erstellt haben, indem Sie Folgendes eingeben:
DROP TABLE supplies;
Wir behalten die teachers
Datenbank, um zu demonstrieren, dass die Anweisung zum Löschen von Datenbanken auch alle untergeordneten Objekte wie Tabellen entfernt.
Datenbanken löschen
Die DROP DATABASE
-Anweisung weist MySQL an, die angegebene Datenbank zu löschen. Die grundlegende Syntax sieht folgendermaßen aus:
DROP DATABASE <database_name>;
Ersetzen Sie <database_name>
Platzhalter mit dem Namen der Datenbank, die Sie entfernen möchten. Dadurch wird die Datenbank gelöscht, wenn sie gefunden wird. Wenn die Datenbank nicht gefunden werden kann, tritt ein Fehler auf:
DROP DATABASE some_database;
ERROR 1008 (HY000): Can't drop database 'some_database'; database doesn't exist
Wenn Sie die Datenbank löschen möchten, falls sie existiert, und ansonsten nichts tun, fügen Sie den optionalen IF EXISTS
ein Möglichkeit:
DROP DATABASE IF EXISTS some_database;
Query OK, 0 rows affected, 1 warning (0.00 sec)
Dadurch wird die Datenbank entfernt oder nichts unternommen, wenn sie nicht gefunden werden kann.
Um die school
zu entfernen Datenbank, die wir in diesem Handbuch verwendet haben, listen Sie die vorhandenen Datenbanken auf Ihrem System auf:
SHOW DATABASES;
+--------------------+ Database |+--------------------+ information_schema | mysql | performance_schema | school | sys | testing |+--------------------+6 rows in set (0.00 sec)
Löschen Sie die school
Datenbank mit folgendem Befehl:
DROP DATABASE school;
Dadurch wird die school
entfernt Datenbank zusammen mit den teachers
Tabelle definiert in.
Fazit
Dieser Artikel behandelte die Grundlagen zum Erstellen und Löschen von Datenbanken und Tabellen mit MySQL. Dies sind einige der grundlegendsten Befehle, die zum Einrichten eines Datenbanksystems und zum Definieren der Struktur Ihrer Daten erforderlich sind.
Wie bereits erwähnt, die in diesem MySQL-Tutorial behandelten SQL-Anweisungen, insbesondere CREATE TABLE
Anweisung, haben viele zusätzliche Parameter, die verwendet werden können, um das Verhalten des Systems zu ändern. Weitere Informationen hierzu finden Sie in der offiziellen MySQL-Dokumentation.