Wissen, wie man Tabellen in SQL
erstellt ist ein wichtiger und grundlegender Begriff.
In diesem Tutorial werde ich Sie durch SQL
führen Syntax für CREATE TABLE
-Anweisung mit Codebeispielen für PostgreSQL und MySQL.
Basic CREATE TABLE
Syntax
Hier ist die grundlegende Syntax für CREATE TABLE
Aussage:
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
);
Für den ersten Teil müssen Sie mit CREATE TABLE
beginnen -Anweisung, gefolgt vom Namen der Tabelle, die Sie erstellen möchten.
Wenn ich eine Tabelle mit Lehrerinformationen erstellen wollte, würde ich etwa so schreiben:
CREATE TABLE teachers();
Innerhalb der Klammern fügen Sie die Informationen zum Erstellen der Spalten für die Tabelle hinzu. Wenn Sie die Klammer vergessen, erhalten Sie eine Fehlermeldung.
CREATE TABLE teachers;
Das Semikolon am Ende der Klammer teilt dem Computer mit, dass es das Ende von SQL
ist Erklärung. Sie werden manchmal hören, dass dies als Anweisungsterminator bezeichnet wird.
Was ist MySQL
Speicher-Engines?
Laut MySQL
Dokumentation:
Speicher-Engines sind MySQL-Komponenten, die die SQL-Operationen für verschiedene Tabellentypen handhaben.
MySQL
verwendet diese Speicher-Engines, um CRUD-Vorgänge (Erstellen, Lesen, Aktualisieren und Löschen) in der Datenbank auszuführen.
In MySQL
haben Sie die Möglichkeit, den Typ der Speicher-Engine anzugeben, die Sie für Ihre Tabelle verwenden möchten. Wenn Sie ENGINE
weglassen -Klausel, dann ist der Standardwert InnoDB.
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
)ENGINE=storage_engine;
Was ist der IF NOT EXISTS
Klausel?
Es gibt eine optionale Klausel namens IF NOT EXISTS
Dadurch wird überprüft, ob die Tabelle, die Sie erstellen möchten, bereits in der Datenbank vorhanden ist. Sie können diese Klausel direkt vor dem Tabellennamen platzieren.
CREATE TABLE IF NOT EXISTS teachers();
Wenn die Tabelle bereits existiert, erstellt der Computer keine neue Tabelle.
Wenn Sie den IF NOT EXISTS
weglassen -Klausel und versuchen, eine Tabelle zu erstellen, die bereits in der Datenbank vorhanden ist, erhalten Sie eine Fehlermeldung.
In diesem Beispiel habe ich zuerst eine Tabelle mit dem Namen „Lehrer“ erstellt. Aber wenn ich versuche, dieselbe Tabelle im nächsten Befehl zu erstellen, tritt ein Fehler auf.
CREATE TABLE IF NOT EXISTS teachers();
CREATE TABLE teachers();
So erstellen Sie Spalten in der Tabelle
Innerhalb der Klammer für CREATE TABLE
-Anweisung werden Sie die Namen der Spalten, die Sie erstellen möchten, zusammen mit ihren Datentypen und Einschränkungen auflisten.
Dies ist ein Beispiel dafür, wie wir vier Spalten von school_id
hinzufügen können , name
, email
und age
zu unserem Lehrertisch. Jeder Spaltenname sollte durch Kommas getrennt werden.
CREATE TABLE teachers(
school_id data_type column_constraint,
name data_type column_constraint,
email data_type column_constraint,
age data_type column_constraint
);
Laut MySQL
Dokumentation:
MySQL hat eine feste Grenze von 4096 Spalten pro Tabelle, aber das effektive Maximum kann für eine bestimmte Tabelle geringer sein. Die genaue Spaltenbegrenzung hängt von mehreren Faktoren ab.
Wenn Sie mit kleinerem MySQL
arbeiten persönliche Projekte, dann müssen Sie sich wahrscheinlich keine Gedanken darüber machen, die Anzahl der Spalten für Ihre Tabellen zu überschreiten.
Laut der PostgreSQL-Dokumentation gibt es ein Limit von 1600 Spalten pro Tabelle. Ähnlich wie MySQL
, ein genaues Limit kann je nach Speicherplatz oder Leistungseinschränkungen variieren.
Datentypen in SQL
Wenn Sie Spalten in der Tabelle erstellen, müssen Sie ihr einen Datentyp zuweisen. Datentypen beschreiben den Werttyp innerhalb der Spalten.
Hier sind sechs beliebte Kategorien von Datentypen in SQL
:
- Numerisch (int, float, seriell, dezimal usw.)
- Datum und Zeit (Zeitstempel, Datum, Uhrzeit usw.)
- Zeichen und Zeichenfolge (char, varchar, text usw.)
- Unicode (ntext, nvarchar usw.)
- Binär (binär usw.)
- Verschiedenes (XML, Tabelle usw.)
Dieser Artikel geht nicht auf jeden einzelnen Datentyp ein, behandelt aber einige der beliebtesten.
Hier ist die vollständige Liste von PostgreSQL
Datentypen und MySQL
Datentypen.
Was ist SERIAL
und AUTO_INCREMENT
?
In PostgreSQL
, eine SERIAL
Der Datentyp ist eine Ganzzahl, die automatisch für jede neu erstellte Zeile um eins erhöht wird.
Wir können SERIAL
hinzufügen direkt nach der school_id
Spalte in unserer Lehrertabelle.
school_id SERIAL
In MySQL
, würden Sie AUTO_INCREMENT
verwenden statt SERIAL
. In diesem Beispiel ist der INT
Datentyp verwendet, der eine Ganzzahl darstellt.
school_id INT AUTO_INCREMENT
Wenn wir unserer Lehrertabelle fünf Zeilen hinzufügen würden, würde die Ausgabe die Zahlen 1, 2, 3, 4, 5 für die school_id
zeigen Spalte, da die ganze Zahl automatisch für jede neue Zeile um eins erhöht wird.
Was ist der VARCHAR
Datentyp?
Ein VARCHAR
Der Datentyp ist eine variable Zeichenfolgenlänge, bei der Sie eine maximale Zeichenlänge festlegen können.
Dies ist ein Beispiel für die Verwendung von VARCHAR
Datentyp für den name
und email
Spalten in unserer Lehrertabelle. Die Zahl 30 ist die maximale Zeichenlänge.
name VARCHAR(30) column_constraint,
email VARCHAR(30) column_constraint,
Spaltenbeschränkungen in SQL
Dies sind Regeln, die auf die Daten in den Tabellenspalten angewendet werden.
Hier ist eine Liste einiger der gebräuchlicheren Spalteneinschränkungen:
- PRIMARY KEY - dieser Schlüssel dient als eindeutige Kennung für die Tabelle
- FREMDSCHLÜSSEL - Dieser Schlüssel stellt sicher, dass die Werte in einer Spalte auch in einer anderen Tabelle vorhanden sind. Dieser dient als Bindeglied zwischen Tabellen.
- EINZIGARTIG – alle Werte in der Spalte müssen eindeutig sein
- NOT NULL - die Werte dürfen nicht NULL sein. NULL ist das Fehlen eines Werts
- CHECK - testet einen Wert gegen einen booleschen Ausdruck
Beispiele für PRIMARY
und FOREIGN
Tasten
In unserer Lehrertabelle können wir einen PRIMARY KEY
hinzufügen an die school_id
Spalte.
So würde der Code in PostgreSQL aussehen:
school_id SERIAL PRIMARY KEY
So würde der Code in MySQL aussehen:
school_id INT AUTO_INCREMENT PRIMARY KEY
Wenn Sie mehr als eine Spalte für den PRIMARY KEY
haben möchten , dann würden Sie es direkt nach Ihrer Spaltenerstellung hinzufügen.
CREATE TABLE table_name(
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
PRIMARY KEY (column1, column2)
);
Wenn Sie eine Tabelle mit einer anderen verknüpfen möchten, können Sie einen FOREIGN KEY
verwenden .
Nehmen wir an, wir hätten eine Tabelle namens district_employees mit einem Primärschlüssel von district_id
. So würde der Code in PostgreSQL aussehen:
CREATE TABLE district_employees(
district_id SERIAL PRIMARY KEY,
employee_name VARCHAR(30) NOT NULL,
PRIMARY KEY(district_id)
);
In unserer Teachers-Tabelle können wir einen Fremdschlüssel verwenden und auf die district_employees-Tabelle verweisen.
district_id INT REFERENCES district_employees(district_id),
CREATE TABLE teachers(
school_id SERIAL PRIMARY KEY,
district_id INT REFERENCES district_employees(district_id),
column1 data_type column_constraint,
column2 data_type column_constraint,
column3 data_type column_constraint,
column4 data_type column_constraint,
... etc
);
Beispiele für NOT NULL
, CHECK
und UNIQUE
Wenn wir sicherstellen wollen, dass wir keine Werte haben, die null sind, können wir den NOT NULL
verwenden Zwang.
name VARCHAR(30) NOT NULL
Wir können den CHECK
verwenden Einschränkung, um sicherzustellen, dass alle unsere Lehrer 18 Jahre oder älter sind. Der CHECK
Constraint testet einen Wert gegen einen booleschen Ausdruck.
age INT CHECK(age >= 18)
Wenn einer unserer Werte diese Bedingung nicht erfüllt, erhalten wir eine Fehlermeldung.
Wir können den UNIQUE
verwenden Einschränkung, um sicherzustellen, dass alle E-Mails eindeutig sind.
email VARCHAR(30) UNIQUE
Dies ist das Endergebnis für die Lehrertabelle:
So würde der Code in PostgreSQL aussehen:
CREATE TABLE teachers(
school_id SERIAL PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) UNIQUE,
age INT CHECK(age >= 18)
);
So würde der Code in MySQL aussehen:
CREATE TABLE teachers(
school_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30) NOT NULL,
email VARCHAR(30) UNIQUE,
age INT CHECK(age >= 18)
);
Ich hoffe, Ihnen hat dieser Artikel gefallen und viel Glück auf Ihrer SQL-Reise.