mysql create table tutorial with examples
In diesem Tutorial werden wir die Verwendung des Befehls MySQL CREATE TABLE anhand von Syntax- und Programmierbeispielen untersuchen:
Die Anweisung CREATE TABLE ist Teil der DDL (Data Definition Language) von SQL.
Wir werden die Möglichkeiten erläutern, wie Sie eine Tabelle in einer bestimmten Datenbank erstellen, Spaltennamen und die DB-Engine beim Erstellen der Tabelle erwähnen können, sowie die Regeln für Namenskonventionen für SQL-Tabellen.
Was du lernen wirst:
- Voraussetzungen
- MySQL CREATE TABLE Befehl
- Fazit
Voraussetzungen
Voraussetzung für die Ausführung eines der SQL-Befehle ist das Herunterladen des MySQL-Servers. Die kostenlose Community Edition kann heruntergeladen werden Hier.
Wir werden auch den MySQL Workbench SQL Client für alle Beispiele und Diskussionen in diesem Tutorial verwenden. Die kostenlose Community Edition von MySQL Workbench kann heruntergeladen werden Hier (Sie können die Version abhängig vom Betriebssystem auswählen, an dem Sie arbeiten).
Falls Sie MySQL Workbench nicht verwenden möchten, können Sie auch den MySQL-Befehlszeilenclient verwenden, der mit der Standardinstallation von MySQL Server geliefert wird.
MySQL CREATE TABLE Befehl
Der Befehl CREATE TABLE ist Teil des DDL-Befehlssatzes (Data Definition Language) in MySQL und ermöglicht es einem Benutzer, eine neue Tabelle für die angegebene Datenbank zu erstellen.
Hinweis: Der Befehl CREATE TABLE ist für fast alle relationalen Datenbanken vorhanden - wie MySQL, Postgres, SQL Server usw.
MySQL CREATE TABLE Syntax
In der einfachsten Form können Sie den Befehl CREATE TABLE nur mit den grundlegenden Optionen verwenden, d. H. Dem Tabellennamen und den Spaltendefinitionen.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... );
Lassen Sie uns die Syntaxargumente im Detail verstehen:
- Tabellenname: Dies sollte der Name der Tabelle sein, die Sie erstellen möchten. Es sollte ein vollständig qualifizierter Name sein (falls Sie keine Standarddatenbank festgelegt haben). Zum Beispiel, databaseName.tableName
Der Tabellenname kann ohne Anführungszeichen oder mit einem Backtick-Symbol wie 'Tabellenname' und 'Datenbankname' angegeben werden. 'Tabellenname' - Spaltendefinition: Eine Tabelle in SQL muss aus mindestens einer Spalte bestehen. Alle Spaltendefinitionen müssen aus Spaltenname sowie dem Spaltendatentyp bestehen. Optional können Sie auch die anderen Spalteneigenschaften wie Primärschlüssel, Null, nicht Null usw. einschließen.
Sehen wir uns ein Beispiel für die Verwendung der obigen Syntax zum Erstellen einer Tabelle an.
Wir werden eine Tabelle mit dem Namen EMPLOYEE_DETAILS (in der Datenbank - SAMPLE_DB) mit Spalten erstellen
- Name: varchar (100)
- Alter: int
- Adresse: varchar (100)
CREATE TABLE SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) );
Im Folgenden wird die Ausgabe der Tabellenerstellung angegeben:
Hinweis:
# 1) Beachten Sie die Verwendung des optionalen Befehls (WENN NICHT EXISTIERT) in der obigen Syntax.
Es wird allgemein empfohlen, diesen Befehl zu verwenden, da dadurch kein Fehler generiert wird, wenn die Tabelle, die wir erstellen möchten, bereits in der Datenbank vorhanden ist.
Hier ist ein Beispiel für die Verwendung mit und ohne IF NOT EXISTS.
- Ohne IF NOT EXISTS würde ein Fehler generiert, wenn die Tabelle bereits vorhanden ist.
- Mit IF NOT EXISTS wird kein Fehler generiert. Es wird jedoch eine Warnung angezeigt, dass die Tabelle bereits vorhanden ist.
# 2) Der 'tableName' sollte bei Verwendung des Befehls CREATE TABLE vollständig mit dem Datenbanknamen qualifiziert sein, d. H. So, wie wir ihn verwendet haben SAMPLE_DB.employee_details
Die andere Möglichkeit, den Tabellennamen anzugeben, besteht darin, die aktuelle Datenbank mit dem Befehl 'USE' einzurichten. Z.B. USE SAMPLE_DB; und dann nur den Tabellennamen anstelle des vollständig qualifizierten Tabellennamens ausführen / verwenden.
TABELLE ERSTELLEN Mit Tabellenoptionen
Die Tabellenoptionen werden verwendet, um das Verhalten der MySQL-Tabellen zu optimieren. Diese können beim Erstellen einer Tabelle mit dem Befehl MySQL CREATE TABLE (oder später mit dem Befehl ALTER TABLE) angewendet werden.
Die Syntax bleibt mit zusätzlichen Tabellenoptionen, die angegeben werden können, gleich.
CREATE TABLE (IF NOT EXISTS) tableName ( column1 datatype, column2 datatype, .... ) (table “” not found /)
;
Im Folgenden werden die am häufigsten verwendeten Optionen erläutert. (Eine vollständige Liste der Tabellenoptionen finden Sie hier Hier ).
# 1) MOTOR
Es wird verwendet, um die Speicher-Engine für die Tabelle anzugeben, d. H. Der Standardwert ist InnoDB. Dies muss nur geändert werden, wenn eine bestimmte Speicher-Engine erforderlich ist. Die anderen gültigen Werte für Speicher-Engines sind MEMORY, CSV, HEAP usw.
Die Syntax zum Angeben von ENGINE als Teil von MySQL CREATE TABLE ist unten angegeben.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )ENGINE='MEMORY';
# 2) AUTO_INCREMENT
Diese Option wird verwendet, um den anfänglichen AUTO_INCREMENT-Wert der Tabelle festzulegen, d. H. Der Standardwert ist 1, Sie können jedoch jeden anderen positiven ganzzahligen Wert überschreiben.
Hinweis: AUTO_INCREMENT kann nur für eine Spalte in der Tabelle angegeben werden und sollte der Primärschlüssel sein. Sehen wir uns ein Beispiel für die Angabe des automatischen Inkrements als 10 und das Einfügen eines Datensatzes an, um zu überprüfen, ob das automatische Inkrement korrekt eingestellt ist.
Wir verwenden dieselbe Tabelle employee_details (stellen Sie sicher, dass die vorhandene Tabelle gelöscht wird, bevor Sie diesen Befehl ausführen) mit einem zusätzlichen ID-Feld, das als Primärschlüssel markiert ist.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details( id int not null AUTO_INCREMENT primary key, name varchar(100), age int, address varchar(100) )AUTO_INCREMENT=10;
Fügen Sie eine Zeile ohne Wert für ID ein und stellen Sie sicher, dass die Werte ab dem Wert ab 10 eingefügt werden.
INSERT INTO SAMPLE_DB.employee_details(name,age,address) values ('aman kumar',20,'mumbai'); select * from SAMPLE_DB.employee_details;
# 3) CHECKSUM
Dies sollte auf 1 gesetzt werden, wenn eine Prüfsumme für die gesamte Tabelle gespeichert werden soll. Es wird im Allgemeinen verwendet, um sicherzustellen, dass keine beschädigten Tabellen vorhanden sind.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100) )CHECKSUM=1;
CHECKSUM führt während Einfügungen oder Aktualisierungen eine Live-Prüfsumme der gesamten Tabelle
TABELLE ERSTELLEN Mit Partitionierungsdetails
Wir können bei Bedarf auch die benutzerdefinierte Partitionierung mithilfe der Partitionierungsoptionen erwähnen.
Partitionierung als Konzept wird häufig verwendet, um den Inhalt der Tabellen über das Dateisystem zu verteilen, um schnellere Zugriffszeiten und optimierte Abfragen zu gewährleisten. Durch die Partitionierung wird eine große Tabelle abhängig von den angegebenen Strategien oder Partitionierungsschlüsseln in kleinere Tabellen aufgeteilt.
Lassen Sie uns sehen, wie wir Partitionierungsdetails mit dem MySQL CREATE TABLE-Befehl angeben können.
Wir werden die Beispieltabelle employee_details verwenden und eine neue Ganzzahlspalte mit dem Namen department_id hinzufügen, die als Partitions-Hash-Schlüssel für eine gleichmäßige Verteilung der Daten verwendet wird.
Wenn Sie auch die Anzahl der Partitionen angeben, wird angegeben, wie viele tatsächliche Partitionen erstellt werden (in diesem Fall 4). Wenn nicht angegeben, gibt es standardmäßig nur 1 Partition.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int )PARTITION BY HASH (department_id) PARTITIONS 4;
Hinweis: Im Allgemeinen hängt der Schlüssel, der zum Erstellen von Partitionen verwendet wird, von den erwarteten Zugriffsmustern ab, die für die Tabelle verwendet werden. Nehmen wir in diesem Fall an, wir würden die Tabelle die meiste Zeit basierend auf der Abteilungs-ID abfragen. Dann ist es sinnvoll, department_id als Teil des Hash-Schlüssels zu haben.
Klonen und Kopieren von MySQL-Tabellen
Manchmal möchten Sie möglicherweise einen Klon einer vorhandenen Tabelle erstellen oder den Inhalt von einer Tabelle in eine andere Tabelle kopieren. MySQL unterstützt zwei Möglichkeiten, um dies zu erreichen, wie unten gezeigt.
- Verwenden des Befehls LIKE
- Verwenden des Befehls SELECT
Klonen von Tabellen mit LIKE COMMAND
Mit dem Befehl LIKE können Sie eine neue Tabelle mit genau denselben Spaltennamen und Eigenschaften wie die vorhandenen Tabellen erstellen.
Hier ist die Syntax mit dem Befehl LIKE.
Java-Pass-Array an Methode nach Wert
CREATE TABLE tableName1 LIKE tableName2
Mit dem obigen Befehl würde eine neue Tabelle, d. H. TableName1, mit derselben Struktur und denselben Eigenschaften wie tableName2 erstellt.
Beachten Sie, dass bei diesem Ansatz nur die Spaltennamen und -eigenschaften geklont werden und nicht die tatsächlichen Tabellendaten.
Versuchen wir, eine Tabelle mit dem Namen employee_details zu erstellen, und verwenden Sie diese Tabelle, um mit der Option LIKE eine neue Tabelle mit dem Namen student_details zu erstellen.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), age int, address varchar(100), department_id int ); CREATE TABLE SAMPLE_DB.student_details LIKE SAMPLE_DB.employee_details;
Unten ist die Ausgabe des obigen Befehls angegeben.
Klonen von Tabellen mit SELECT COMMAND
Dieser Ansatz verwendet den Befehl SELECT, um eine Kopie der vorhandenen Tabelle in eine neue Tabelle zu erstellen.
Bei diesem Ansatz werden auch die Daten aus der Tabelle in die neue Tabelle kopiert.
CREATE TABLE tableName1 AS SELECT * FROM tableName2;
Versuchen wir, eine Tabelle mit dem Namen employee_details zu erstellen, und verwenden Sie diese Tabelle, um mit der Option SELECT eine neue Tabelle mit dem Namen student_details zu erstellen.
CREATE TABLE SAMPLE_DB.student_details AS SELECT * FROM SAMPLE_DB.employee_details;
Namenskonventionen für MySQL-Tabellen
In den vorherigen Abschnitten haben wir gelernt, wie Sie Tabellen MySQL erstellen. Sehen wir uns nun einige Regeln an, die beim Benennen der Tabellen beachtet werden sollten, sowie die Einschränkungen, die für MySQL gelten.
Diese Konventionen / Regeln gelten sowohl für SQL-Tabellen als auch für Datenbanken.
# 1) Gesetzliche Zeichen in Namen
zu) Nicht in Anführungszeichen gesetzte Namen können aus beliebigen Zeichen im SQL Server-Standardzeichensatz bestehen, mit der Ausnahme, dass nicht alle Zeichen Ziffern sein können. Zum Beispiel, '23test' ist ein gültiger Tabellenname, jedoch nicht '2345'.
Im Folgenden finden Sie eine Liste der Zeichen, die für nicht zitierte Namen verwendet werden können:
ASCII: (0-9, a-z, A-Z $ _) (lateinische Grundbuchstaben, Ziffern 0-9, Dollar, Unterstrich)
Erweitert: U + 0080 .. U + FFFF
Erfahren Sie mehr über ASCII-Codes Hier
b) Tabellen- und Datenbanknamen können mit einem Backtick-Zeichen (`) in Anführungszeichen gesetzt werden und alle Buchstaben / Zeichen außer dem Backtick-Zeichen selbst enthalten. Mit den angegebenen Namen können Sie sogar Tabellen- / Datenbanknamen mit allen Ziffern haben.
Bitte beachten Sie, dass Sie für solche Tabellen die Backticks um die Tabelle und / oder den Datenbanknamen verwenden müssen, um auf Daten in solchen Tabellen zuzugreifen.
c) Tabellen- und Datenbanknamen dürfen keinen Punkt '.' Enthalten, da dieser als Datenbank- und Tabellentrennzeichen verwendet wird.
d) Die Datenbank- und Tabellennamen können die Sonderzeichen '$' und '_' enthalten.
# 2) Namenslänge
Die maximal zulässige Länge für einen Datenbank- oder Tabellennamen in MySQL beträgt 64 Figuren.
# 3) Namensqualifikatoren
Wie in den vorherigen Abschnitten erläutert, befindet sich eine Tabelle in MySQL immer im Kontext der Datenbank, zu der sie gehört. Um auf eine Tabelle zuzugreifen, können Sie daher einen vollständig qualifizierten Tabellennamen verwenden. Dies ist nichts anderes als die Kombination aus Datenbanknamen, die durch einen Punkt getrennt sind, und dem Spaltennamen.
Zum Beispiel, Um alle Elemente aus der Tabelle 'EMPLOYEE_DETAILS' aus der Datenbank SAMPLE_DB auszuwählen, können Sie einen vollständig qualifizierten Namen wie folgt verwenden.
SELECT * from SAMPLE_DB.EMPLOYEE_DETAILS;
Die DB- und Tabellennamen können auch wie unten gezeigt separat mit Backticks angegeben werden.
SELECT * from `SAMPLE_DB`.`EMPLOYEE_DETAILS`;
Die von der Branche empfohlenen Konventionen und Best Practices für die Benennungstabellen und -datenbanken sind nachstehend aufgeführt.
- Benennen Sie Tabellen und Datenbanken in Kleinbuchstaben - Dies beschleunigt im Allgemeinen das Eingeben und Abfragen der Datenbank, insbesondere für diejenigen, die an der täglichen Abfrage der Datenbank beteiligt sind.
- Verwenden Sie Unterstriche ('_') anstelle von Leerzeichen in Tabellen- und Datenbanknamen - Dadurch werden die Namen besser lesbar.
- Verwenden Sie selbsterklärende Namen für die Tabellen und Datenbanken - - Zum Beispiel, Eine Tabelle mit Details zum Mitarbeiter kann auf verschiedene Arten benannt werden, z. B. employee_info, employee_data, employee, employee_details, employee_name_and_address. Es wäre sinnvoll, einen Namen zu wählen, der am selbsterklärendsten ist. Zum Beispiel, Wir können den Tabellennamen als employee_details oder employee_info auswählen. Obwohl dies eine subjektive Diskussion ist, sollte dies von mehreren Teammitgliedern vereinbart werden, die diese Entitäten verwenden und erstellen werden.
- Vermeiden Sie die Verwendung von Zahlen in Datenbank- und Tabellennamen - Wie sample_db_2, test_table_1 usw.
Häufig gestellte Fragen und Antworten
F # 1) Wie erstelle ich eine Tabelle in MySQL mit Index?
Antworten: Sie können während der Tabellenerstellung selbst einen INDEX für jede Spalte (oder Kombination von Spalten) hinzufügen.
Sehen wir uns ein Beispiel für das Hinzufügen eines Index für die Spalte abteilungs_ID für die Tabelle employee_details an.
womit man swf dateien öffnet
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int, age int, address varchar(100), department_id int, index(department_id) );
F # 2) Wie erstelle ich eine Tabelle mit Datum in MySQL?
Antworten: Datum ist ein Datentyp, der beim Erstellen einer Tabelle jeder Spalte zugeordnet werden sollte.
Lesen Sie den folgenden Beispielbefehl CREATE TABLE mit der Spalte join_date mit DATETIME als Datentyp für eine Beispieltabelle employee_details.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), joining_date datetime, department_id int );
F # 3) Wie kann ich die Struktur der Tabelle in MySQL sehen?
Antworten: Wenn Sie nach dem Erstellen einer Tabelle auf die Struktur der Tabelle wie Spalten, Indizes usw. verweisen möchten, können Sie die Details mit dem Befehl DESCRIBE abrufen.
Syntax:
DESCRIBE tableName;
Erstellen wir eine Tabelle und sehen die Ausgabe für den Befehl DESCRIBE.
CREATE TABLE IF NOT EXISTS SAMPLE_DB.employee_details ( name varchar(100), id int primary key, age int, address varchar(100), department_id int ); DESCRIBE sample_db.employee_details;
Unten ist die Ausgabe des Befehls DESCRIBE angegeben.
F # 4) Wie füge ich einer Tabelle in MySQL einen AUSLÄNDISCHEN SCHLÜSSEL hinzu?
Antworten: Der Fremdschlüssel wird verwendet, um 2 Tabellen in MySQL miteinander zu verknüpfen. Um die Fremdschlüsseleinschränkung verwenden zu können, sollten Sie die Tabelle, auf die Sie sich beziehen, bereits erstellt haben.
>> Erfahren Sie mehr über MySQL-Fremdschlüsseleinschränkung
Versuchen wir dies anhand eines Beispiels zu verstehen. Nehmen wir an, wir haben zwei Tabellen, d. H. Abteilung (mit Details zu den verschiedenen Abteilungen des Colleges) und Studentendetails (alle Details zu Studenten).
Abteilung hat Spalten - ID (Primärschlüssel) und Name.
Studentendetails - ID (Primärschlüssel), Alter, Adresse und Abteilungs-ID (Fremdschlüssel, auf den in der Abteilungstabelle verwiesen wird).
Im Folgenden wird die Syntax für den Befehl CREATE TABLE für diese beiden Tabellen angegeben.
CREATE TABLE department ( name varchar(100), id INT NOT NULL, PRIMARY KEY (id) ); CREATE TABLE student_details ( name varchar(100), id int not null, age int, address varchar(100), department_id int, PRIMARY KEY (id), FOREIGN KEY (department_id) references department(id) ON DELETE CASCADE );
Beziehen Sie sich auf die Syntax der FOREIGN KEY-Referenz in der Tabelle student_details, in der die Beziehung zwischen den Spalten und der Abteilungs-ID durch die Spalten-ID aus der Abteilungstabelle referenziert werden sollte.
Fazit
Der Befehl CREATE TABLE in MySQL, der zu Befehlen in der Kategorie Data Definition Language gehört, wurde hier ausführlich erläutert.
Wir haben die verschiedenen Tabellenoptionen wie ENGINE, CHECKSUM usw. kennengelernt, die zusammen mit dem Befehl CREATE TABLE erwähnt werden können, damit zusätzliche Eigenschaften für die Tabelle festgelegt werden.
Wir haben die Möglichkeiten durchlaufen, einen Klon der vorhandenen Tabelle in MySQL zu erstellen. Schließlich sprachen wir über die Namenskonventionen für die Tabellennamen sowie über die von der Industrie empfohlenen Best Practices.
Fröhliches Lesen!!
Literatur-Empfehlungen
- MySQL Create View Tutorial mit Codebeispielen
- MySQL-Datentypen | Was sind verschiedene Datentypen in MySQL?
- MySQL Insert Into Table - Syntax und Beispiele für Insert-Anweisungen
- MySQL JOIN Tutorial: Inner, Außen, Kreuz, Links, Rechts und Selbst
- Unterschied zwischen SQL und MySQL und SQL Server (mit Beispielen)
- Verwendung von PL SQL-Anweisungen zum Einfügen, Aktualisieren, Löschen und Auswählen
- MongoDB Tutorial zum Erstellen einer Datenbank
- MongoDB Benutzer erstellen und Rollen mit Beispielen zuweisen