Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So erstellen Sie eine Tabelle in SQL – Postgres- und MySQL-Beispielabfrage

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 :

  1. Numerisch (int, float, seriell, dezimal usw.)
  2. Datum und Zeit (Zeitstempel, Datum, Uhrzeit usw.)
  3. Zeichen und Zeichenfolge (char, varchar, text usw.)
  4. Unicode (ntext, nvarchar usw.)
  5. Binär (binär usw.)
  6. 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.