Database
 sql >> Baza danych >  >> RDS >> Database

SQL CREATE TABLE dla początkujących

Ten artykuł zawiera podstawowe informacje o języku SQL CREATE TABLE instrukcje, których początkujący mogą używać do tworzenia podstawowych tabel dla swoich projektów baz danych.

Podstawowa składnia

Podstawowa składnia tworzenia tabel w SQL wygląda następująco:

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

Gdzie:

  • TableName to nazwa, którą chcesz nadać stolikowi
  • Column1 itd. to nazwy, które nadajesz swoim kolumnom
  • datatype to typ danych, który przypisujesz do każdej kolumny. Większość RDBMS wymaga przypisania typu danych do każdej kolumny. W SQLite jest to opcjonalne.
  • optional_constraints to opcjonalna lista ograniczeń, które stosujesz względem kolumny.

Zauważ, że większość DBMS używa bardziej złożonej składni niż ta (tj. oferują więcej opcji), ale jest to generalnie podstawowa składnia wymagana do stworzenia tabeli. Większość początkujących zaczyna od tej składni, a w miarę postępów uczy się bardziej zaawansowanych opcji.

Przykład podstawowy

Oto podstawowy przykład:

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
);

Oto kilka punktów, na które należy zwrócić uwagę:

  • Nazwy tabel i kolumn mogą być w każdym przypadku. Na przykład zamiast PetId Mogłem to nazwać petid , PETID lub pet_id . Niektóre DBMS (np. Postgres) rozróżniają wielkość liter podczas zapytań o tabele i ich nazwy kolumn, podczas gdy inne nie (np. SQL Server).
  • Niektóre DBMS używają różnych nazw dla swoich typów danych.
  • NOT NULL jest ograniczeniem tabeli, które określa, że ​​ta kolumna musi zawierać wartość (tzn. nie może zawierać NULL wartości).
  • NULL oznacza, że ​​kolumna może zawierać NULL wartości. Niektóre DBMS (takie jak DB2) nie obsługują NULL słowo kluczowe, więc będziesz musiał je pominąć podczas pracy z takimi DBMS.
  • PRIMARY KEY dodaje do tabeli ograniczenie klucza podstawowego. Dobrą praktyką jest określenie klucza podstawowego we wszystkich tabelach.
  • Jeśli tabela o tej samej nazwie już istnieje w bazie danych, pojawi się błąd. Musisz usunąć istniejącą tabelę lub ją zmienić (lub zmienić nazwę tej, którą tworzysz).

Utwórz tabelę z kluczami obcymi

Poniższy przykład tworzy tabelę z dwoma kluczami obcymi. Klucze obce służą do tworzenia relacji między dwiema tabelami.

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
);

REFERENCES Klauzula służy do zdefiniowania klucza obcego w dwóch kolumnach. W naszym przypadku klucze obce wymuszają:

  • Pets.PetTypeId kolumna odwołuje się do PetTypes.PetTypeId kolumna (dowolna wartość, która trafia do Pets.PetTypeId kolumna musi mieć pasującą wartość w PetTypes.PetTypeId kolumna).
  • Pets.OwnerId kolumna odwołuje się do Owners.OwnerId kolumna (dowolna wartość, która trafia do Pets.OwnerId kolumna musi mieć pasującą wartość w Owners.OwnerId kolumna).

Klucze obce można również dodać później, używając ALTER TABLE oświadczenie, jeśli jest wymagane.

Utwórz tabelę z domyślnym ograniczeniem

Poniższy przykład tworzy tabelę z DEFAULT ograniczenie.

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 
);

Utwórz tabelę z kolumną sygnatury czasowej

Możesz użyć DEFAULT ograniczenia do automatycznego wstawiania bieżącej daty i godziny do kolumny po wstawieniu nowego wiersza. Często nazywa się to wstawianiem znacznika czasu.

Różne DBMS używają różnych funkcji do zwracania bieżącej daty.

Oto przykład wykonania tego w 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
);

W SQL Server, CURRENT_TIMESTAMP jest odpowiednikiem ANSI funkcji GETDATE() funkcja.

Możesz alternatywnie użyć SYSDATETIME() dla bardziej precyzyjnego znacznika czasu:

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

Aby zapewnić większą precyzję, typ danych kolumny musi być datetime2 .

SQL Server ma sporo typów danych dla wartości daty/godziny. Zobacz listę funkcji daty i czasu serwera SQL.

Każdy DBMS ma swoje własne funkcje do zwracania daty i czasu. Oto lista głównych:

DB2 CURRENT_DATE
MySQL CURRENT_DATE lub NOW()
Wyrocznia SYSDATE
PostgreSQL CURRENT_DATE
Serwer SQL CURRENT_TIMESTAMP , GETDATE() lub SYSDATETIME()
SQLite datetime('now')

Zobacz także:

  • Funkcje daty i czasu serwera SQL
  • Funkcje daty i czasu SQLite

Utwórz kolumnę z automatycznie rosnącą wartością

Czasami trzeba utworzyć kolumnę, która automatycznie zwiększa wartość po wstawieniu nowego wiersza. Są one zwykle określane jako kolumny „automatycznego przyrostu” lub „tożsamości”, w zależności od używanego systemu DBMS.

W SQL Server użyj 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()
);

W tym przypadku używamy IDENTITY(1,1) .

  • Pierwszy 1 jest nasienie. Określa, jaka wartość ma rozpocząć zliczanie (tzn. jest to wartość pierwszego wiersza wstawionego do tabeli).
  • Drugi 1 jest przyrostem. Jest to wartość przyrostowa dodana do wartości tożsamości poprzedniego załadowanego wiersza.

Każdy DBMS ma swoje własne słowo kluczowe do tworzenia kolumny autoinkrementacji.

  • W MySQL i MariaDb użyj AUTO_INCREMENT
  • W SQLite masz kilka opcji (w tym AUTOINCREMENT słowo kluczowe)
  • W PostgreSQL użyj SERIAL
  • Z bazy danych Oracle 12c , możesz teraz używać słowa kluczowego IDENTITY do tworzenia kolumn z automatycznym przyrostem. Przykład może wyglądać tak:UserId NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY

Opcje zaawansowane

Większość DBMS pozwala na określenie zaawansowanych opcji podczas tworzenia tabel. Dostępne opcje będą w dużej mierze zależeć od Twojego DBMS.

Zapoznaj się z dokumentacją DBMS, jeśli potrzebujesz opcji, które nie są określone w tym artykule.

Wiele zaawansowanych opcji można ustawić za pomocą GUI (w zależności od narzędzia, którego używasz do łączenia się z bazą danych). Zawsze możesz utworzyć lub zmodyfikować tabelę za pomocą GUI, a następnie użyć jej opcji „Skrypt jako Utwórz” (lub podobnej), aby zobaczyć kod SQL, który musisz uruchomić, aby utworzyć taką tabelę. Możesz wziąć ten kod i zmienić nazwy tabel, nazwy kolumn itp., aby utworzyć zupełnie nową tabelę na podstawie definicji poprzedniej.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak komentować w SQL

  2. Kiedy przełączyć się na większą instancję RDS

  3. T-SQL Wtorek #106 :ZAMIAST wyzwalaczy

  4. Samouczek DBMS:Kompletny kurs Crash na DBMS

  5. Zwiększ wydajność bazy danych o 400%