Database
 sql >> Datenbank >  >> RDS >> Database

SQL CREATE TABLE für Anfänger

Dieser Artikel enthält grundlegendes SQL CREATE TABLE Anweisungen, mit denen Anfänger einfache Tabellen für ihre Datenbankprojekte erstellen können.

Grundlegende Syntax

Die grundlegende Syntax zum Erstellen von Tabellen in SQL lautet wie folgt:

CREATE TABLE TableName (
    Column1 datatype optional_constraints,
    Column2 datatype optional_constraints,
    Column3 datatype optional_constraints,
    ...
);

Wo:

  • TableName ist der Name, den Sie der Tabelle geben möchten
  • Column1 , usw. sind die Namen, die Sie Ihren Spalten geben
  • datatype ist der Datentyp, den Sie jeder Spalte zuweisen. Die meisten RDBMS erfordern, dass Sie jeder Spalte einen Datentyp zuweisen. In SQLite ist es optional.
  • optional_constraints ist eine optionale Liste von Einschränkungen, die Sie auf eine Spalte anwenden.

Beachten Sie, dass die meisten DBMSs eine komplexere Syntax als diese verwenden (d. h. sie bieten mehr Optionen), aber dies ist im Allgemeinen die grundlegende Syntax, die zum Erstellen einer Tabelle erforderlich ist. Die meisten Anfänger beginnen mit dieser Syntax und lernen dann im Laufe der Zeit fortgeschrittenere Optionen kennen.

Einfaches Beispiel

Hier ist ein einfaches Beispiel:

CREATE TABLE Pets
(
    PetId       int NOT NULL PRIMARY KEY,
    PetTypeId   int NOT NULL,
    OwnerId     int NOT NULL,
    PetName     varchar(60) NOT NULL,
    DOB         date NULL
);

Hier sind einige Punkte zu beachten:

  • Tabellen- und Spaltennamen können in jedem Fall sein. Zum Beispiel statt PetId Ich hätte es petid nennen können , PETID , oder pet_id . Einige DBMS (z. B. Postgres) unterscheiden zwischen Groß- und Kleinschreibung, wenn Sie Tabellen und ihre Spaltennamen abfragen, während andere dies nicht tun (z. B. SQL Server).
  • Einige DBMS verwenden unterschiedliche Namen für ihre Datentypen.
  • NOT NULL ist eine Tabelleneinschränkung, die angibt, dass diese Spalte einen Wert enthalten muss (d. h. sie darf nicht NULL enthalten Werte).
  • NULL bedeutet, dass die Spalte NULL enthalten darf Werte. Einige DBMS (z. B. DB2) unterstützen den NULL nicht Schlüsselwort, daher müssen Sie es weglassen, wenn Sie mit solchen DBMSs arbeiten.
  • PRIMARY KEY fügt der Tabelle eine Primärschlüsseleinschränkung hinzu. Es empfiehlt sich, einen Primärschlüssel für alle Ihre Tabellen anzugeben.
  • Wenn eine Tabelle mit demselben Namen bereits in der Datenbank vorhanden ist, erhalten Sie eine Fehlermeldung. Sie müssen die vorhandene Tabelle löschen oder ändern (oder den Namen der Tabelle ändern, die Sie erstellen).

Erstellen Sie eine Tabelle mit Fremdschlüsseln

Das folgende Beispiel erstellt eine Tabelle mit zwei Fremdschlüsseln. Fremdschlüssel werden verwendet, um eine Beziehung zwischen zwei Tabellen herzustellen.

CREATE TABLE Pets
(
    PetId       int NOT NULL PRIMARY KEY,
    PetTypeId   int NOT NULL REFERENCES PetTypes (PetTypeId),
    OwnerId     int NOT NULL REFERENCES Owners (OwnerId),
    PetName     varchar(60) NOT NULL,
    DOB         date NULL
);

Die REFERENCES -Klausel wird verwendet, um einen Fremdschlüssel für zwei Spalten zu definieren. In unserem Fall erzwingen die Fremdschlüssel Folgendes:

  • Die Pets.PetTypeId Spalte verweist auf PetTypes.PetTypeId Spalte (jeder Wert, der in die Pets.PetTypeId Spalte muss einen übereinstimmenden Wert in PetTypes.PetTypeId haben Spalte).
  • Die Pets.OwnerId Spalte verweist auf die Owners.OwnerId Spalte (jeder Wert, der in die Pets.OwnerId geht Spalte muss einen übereinstimmenden Wert in Owners.OwnerId haben Spalte).

Fremdschlüssel können auch nachträglich mit ALTER TABLE hinzugefügt werden Anweisung, falls erforderlich.

Erstellen Sie eine Tabelle mit DEFAULT-Einschränkung

Das folgende Beispiel erstellt eine Tabelle mit einem DEFAULT Einschränkung.

CREATE TABLE OrderItems
(
    OrderId     int NOT NULL PRIMARY KEY,
    OrderItem   int NOT NULL,
    ProductId   int NOT NULL,
    Quantity    int NOT NULL DEFAULT 1,
    ItemPrice   decimal(8,2) NOT NULL 
);

Erstellen Sie eine Tabelle mit einer Zeitstempelspalte

Sie können DEFAULT verwenden Einschränkungen zum automatischen Einfügen des aktuellen Datums und der Uhrzeit in eine Spalte, wenn eine neue Zeile eingefügt wird. Dies wird oft als Einfügen eines Zeitstempels bezeichnet.

Unterschiedliche DBMS verwenden unterschiedliche Funktionen, um das aktuelle Datum zurückzugeben.

Hier ist ein Beispiel für die Ausführung in SQL Server.

CREATE TABLE Users
(
    UserId         int NOT NULL PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime DEFAULT CURRENT_TIMESTAMP
);

In SQL Server CURRENT_TIMESTAMP ist das ANSI-Äquivalent von GETDATE() Funktion.

Alternativ können Sie SYSDATETIME() verwenden für einen genaueren Zeitstempel:

CREATE TABLE Users
(
    UserId         int NOT NULL PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime2 DEFAULT SYSDATETIME()
);

Um die höhere Genauigkeit zu unterstützen, muss der Datentyp der Spalte datetime2 sein .

SQL Server hat einige Datentypen für Datums-/Uhrzeitwerte. Eine Liste finden Sie unter Datums- und Zeitfunktionen von SQL Server.

Jedes DBMS hat seine eigenen Funktionen zur Rückgabe von Datum und Uhrzeit. Hier ist eine Liste der wichtigsten:

DB2 CURRENT_DATE
MySQL CURRENT_DATE oder NOW()
Oracle SYSDATE
PostgreSQL CURRENT_DATE
SQL-Server CURRENT_TIMESTAMP , GETDATE() oder SYSDATETIME()
SQLite datetime('now')

Siehe auch:

  • Datums- und Zeitfunktionen von SQL Server
  • SQLite-Datums- und Zeitfunktionen

Erstellen Sie eine Spalte mit einem automatisch inkrementierenden Wert

Manchmal müssen Sie eine Spalte erstellen, die automatisch einen Wert erhöht, wenn eine neue Zeile eingefügt wird. Diese werden je nach verwendetem DBMS typischerweise als „Auto-Increment“- oder „Identity“-Spalten bezeichnet.

Verwenden Sie in SQL Server die IDENTITY Argument:

CREATE TABLE Users
(
    UserId         int NOT NULL IDENTITY(1,1) PRIMARY KEY,
    FirstName      varchar(60) NOT NULL,
    LastName       varchar(60) NOT NULL,
    DateInserted   datetime2 DEFAULT SYSDATETIME()
);

In diesem Fall verwenden wir IDENTITY(1,1) .

  • Die erste 1 ist der Samen. Dies gibt an, mit welchem ​​Wert die Zählung beginnen soll (d. h. dies ist der Wert der allerersten Zeile, die in die Tabelle eingefügt wird).
  • Die zweite 1 ist das Inkrement. Dies ist der inkrementelle Wert, der zum Identitätswert der vorherigen geladenen Zeile hinzugefügt wird.

Jedes DBMS hat sein eigenes Schlüsselwort zum Erstellen einer automatisch inkrementierenden Spalte.

  • Verwenden Sie in MySQL und MariaDb AUTO_INCREMENT
  • In SQLite haben Sie einige Optionen (einschließlich AUTOINCREMENT Schlüsselwort)
  • Verwenden Sie in PostgreSQL SERIAL
  • Von Oracle Database 12c , können Sie jetzt das Schlüsselwort IDENTITY zum Erstellen von automatisch inkrementierenden Spalten verwenden. Ein Beispiel könnte so aussehen:UserId NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY

Erweiterte Optionen

Bei den meisten DBMSs können Sie beim Erstellen von Tabellen erweiterte Optionen angeben. Die verfügbaren Optionen hängen weitgehend von Ihrem DBMS ab.

Sehen Sie in Ihrer DBMS-Dokumentation nach, wenn Sie Optionen benötigen, die nicht in diesem Artikel aufgeführt sind.

Viele erweiterte Optionen können über die GUI eingestellt werden (abhängig von dem Tool, das Sie verwenden, um sich mit Ihrer Datenbank zu verbinden). Sie können eine Tabelle jederzeit über die GUI erstellen oder ändern und dann die Option „Script as Create“ (oder ähnlich) verwenden, um den SQL-Code anzuzeigen, den Sie ausführen müssten, um eine solche Tabelle zu erstellen. Sie können diesen Code nehmen und die Tabellennamen, Spaltennamen usw. ändern, um eine ganz neue Tabelle basierend auf der Definition der vorherigen zu erstellen.