Definiowanie kolumny jako klucza głównego w tabeli – SQL Server 2012
Niemal każda tabela w relacyjnej bazie danych posiada klucz główny – indeks, dzięki któremu wyszukiwanie rekordów jest szybsze i który identyfikuje każdy rekord. Najczęściej klucz główny stanowi kolumna o typie danych liczby całkowitej.
Jak zdefiniować kolumnę jako klucz podstawowy? Wystarczy użyć słowa PRIMARY KEY
zaraz po typie danych.
create table osoby ( id_osoby int PRIMARY KEY, nazwisko varchar(150) not null );
Spotykam często w projektach baz danych praktykę dodawania do kolumny z kluczem jeszcze ograniczenia NOT NULL
. Nie jest ono potrzebne w SQL Server
, ponieważ PRIMARY KEY
zawiera już w sobie dwa ograniczenia: UNIQUE
oraz NOT NULL
. Stosowanie więc dodatkowo tych ograniczeń jest zbędne. Po wejściu w Management Studio do okna projektowania tabeli osoby
, w jej właściwościach Allow Nulls
jest ustawione na ograniczenie NOT NULL
.
Natomiast unikalność zapewnia sam klucz główny, którego wartość musi być niepowtarzalna.
Innym sposobem na definiowanie w tabeli klucza podstawowego jest skorzystanie z wyrażenia constraint
. Wtedy dla danej kolumny określamy tylko nazwę i typ danych, natomiast po wymienieniu wszystkich kolumn po przecinku podajemy wyrażenie constraint
(ograniczenie) podając jego dowolną nazwę oraz klauzulę PRIMARY KEY
, po której w nawiasach zwykłych podajemy nazwę kolumny, na którą ma być to ograniczenie nałożone.
create table osoby ( id_osoby int, nazwisko varchar(150) not null, constraint pk_osoba PRIMARY KEY( id_osoby ) );
I jeszcze jeden sposób na zdefiniowanie klucza podstawowego. W tym przypadku wystarczy tylko podać PRIMARY KEY, po którym podajemy nazwę kolumny mającej stanowić klucz.
create table osoby ( id_osoby int, nazwisko varchar(150) not null, PRIMARY KEY( id_osoby ) );
Klucz podstawowy może być definiowany również na kilku kolumnach tabeli. Poniżej przedstawiam przykład tworzenia tabeli z kluczem podstawowym.
create table lista ( nr int, nazwisko varchar(150), imie varchar(100) not null, PRIMARY KEY(nr, nazwisko) );
Tabela może posiadać tylko jeden klucz podstawowy.