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:
TableNameto nazwa, którą chcesz nadać stolikowiColumn1itd. to nazwy, które nadajesz swoim kolumnomdatatypeto 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_constraintsto 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
PetIdMogłem to nazwaćpetid,PETIDlubpet_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 NULLjest ograniczeniem tabeli, które określa, że ta kolumna musi zawierać wartość (tzn. nie może zawieraćNULLwartości).NULLoznacza, że kolumna może zawieraćNULLwartości. Niektóre DBMS (takie jak DB2) nie obsługująNULLsłowo kluczowe, więc będziesz musiał je pominąć podczas pracy z takimi DBMS.PRIMARY KEYdodaje 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.PetTypeIdkolumna odwołuje się doPetTypes.PetTypeIdkolumna (dowolna wartość, która trafia doPets.PetTypeIdkolumna musi mieć pasującą wartość wPetTypes.PetTypeIdkolumna).Pets.OwnerIdkolumna odwołuje się doOwners.OwnerIdkolumna (dowolna wartość, która trafia doPets.OwnerIdkolumna musi mieć pasującą wartość wOwners.OwnerIdkolumna).
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
1jest nasienie. Określa, jaka wartość ma rozpocząć zliczanie (tzn. jest to wartość pierwszego wiersza wstawionego do tabeli). - Drugi
1jest 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
AUTOINCREMENTsł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.