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ć stolikowiColumn1
itd. to nazwy, które nadajesz swoim kolumnomdatatype
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
lubpet_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ę doPetTypes.PetTypeId
kolumna (dowolna wartość, która trafia doPets.PetTypeId
kolumna musi mieć pasującą wartość wPetTypes.PetTypeId
kolumna).Pets.OwnerId
kolumna odwołuje się doOwners.OwnerId
kolumna (dowolna wartość, która trafia doPets.OwnerId
kolumna musi mieć pasującą wartość wOwners.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.