Archiwa tagu: create table

SQL PRIMARY KEY (klucz główny)

SQL PRIMERY KEY


    


DEFINICJA

Klucz główny (ang. primary key) to nic innego jak unikalny identyfikator każdego rekordu w tabeli. Słówko unikalny mówi o tym, że wartości w tej kolumnie nie mogą się powtarzać. Kolumna która jest kluczem głównym nie może także przechowywać wartości NULL, czyli wartości nieokreślonych/nieznanych. W jednej tabeli może być tylko jedna kolumna będąca kluczem głównym. Z mojej dotychczasowej praktyki z bazami danych wynika, że zdecydowana większość tabel powinna mieć klucz główny. Klucz ten nadajemy używając polecenia PRIMARY KEY, co pokażą poniższe przykłady.

Klucz główny możemy określić w kilku sytuacjach:
1. Tworzymy nową tabele i definiujemy klucz główny który obejmuje jedną kolumnę
2. Składnia polecenia PRIMARY KEY dla takiego przypadku.

Przykład utworzenia klucza głównego na kolumnie "ID_miasto" w tabeli "Miasta" przechowująca dane nt. miast.

CREATE TABLE Miasta
    (
         ID_miasto INT PRIMARY KEY
        ,nazwa NVARCHAR(30)
        ,kod_pocztowy NVARCHAR(6)
    );

Kluczem głównym nie muszą zawsze być wartości z jednej tabeli. Niekiedy dopiero wartości z dwóch kolumn są wartościami unikalnymi w skali tabeli i mogą być kluczem głównym. Wtedy klucz główny definiujemy przy pomocy poniższej składni. Przyjmijmy, że wartości z kolumn "ID_miasto" i "nazwa" mają tworzyć klucz główny.

CREATE TABLE Miasta
    (
         ID_miasto INT
        ,nazwa NVARCHAR(30)
        ,kod_pocztowy NVARCHAR(6)
        CONSTRAINT pk_Miasta PRIMARY KEY (ID_miasto,nazwa)
    );

zwróć uwagę, że kluczowi głównemu w tym przypadku nadano nazwę "pk_Miasta" która identyfikuje ten klucz. Jeżeli nie określiliśmy klucza głównego przy tworzeniu tabeli możemy zrobić to później wykorzystując polcenie ALTER TABLE, które służy do modyfikacji struktury tabeli. W kontekście klucza głównego modyfikacja ta może polegać na dodaniu lub usunięciu tego klucza. Wtedy nasz kod wyglądał będzie tak.

Przykład ustawienia kolumny ID_miasto jako klucz główny (dodanie klucza głównego) w tabeli Miasta.

ALTER TABLE Miasta
ADD PRIMARY KEY(ID_miasto)

A jeżeli potrzebujemy żeby kluczem głównym było kilka kolumn to składnia kodu będzie analogiczny jest przy tworzeniu nowej tabeli czyli:

ALTER TABLE Miasta
ADD CONSTRAINT pk_Miasta PRIMARY KEY(ID_miasto,nazwa)

Tak jak to wyglądało przy tworzeniu nowej tabeli utworzonemu kluczowi przypisywana jest nazwa, w tym przypadku jest to "pk_Miasta". Teraz warto przedstawić "mechanizm" usuwania kluczy głównych z tabeli. Do tego posługujemy się poleceniem DROP.

Przykład usunięcia klucza głównego z kolumny "ID_miasto" z tabeli "Miasta", w sytuacji kiedy kluczem głównym jest jedna kolumna "ID_miasto".

ALTER TABLE Miasta
DROP PRIMARY KEY(ID_miasto)

Przykład usunięcia klucza głównego w tabeli "Miasta", gdzie kluczem głównym są dwie kolumny "ID_miasto" i "nazwa".

ALTER TABLE Miasta
DROP CONSTRAINT pk_Miasta

zwróć uwagę, że przy usuwaniu klucza głównego (dwie kolumny) posługujemy się nazwą przypisaną wcześniej do tego klucza, czyli "pk_Miasta".


    

SQL CREATE TABLE

SQL CREATE TABLE


    


DEFINICJA

Polecenie CREATE TABLE służy do tworzenia table w bazie danych. Przy okazji tworzenia tabel określamy jakie kolumny mają się znaleźć w danej tabeli, jakiego typu dane mają tam być przechowywane (np. INTEGER, VARCHAR, DECIMAL itp.) i jakie są powiązania danej tabeli z innymi tabelami w bazie danych. Przy tworzeniu tabeli możemy wskazać także czy dana kolumna ma być kluczem głównym czy obcym (klucze główny i obcy opisany w innym wpisie) lub czy może przechowywać wartości NULL (więcej tutaj).

Składnia polecenia CREATE TABLE

CREATE TABLE nazwa_tabeli
    (
        nazwa_kolumny1 typ_danych(rozmiar),
        nazwa_kolumny2 typ_danych(rozmiar),
        ….
    );


Przykład zastosowania polecenia CREATE TABLE (baza Bank_v4)

Przykład tworzenia tabeli "KLIENCI" z treningowej bazy BANK_v4

CREATE TABLE Klienci
    (
         ID_klienta INT CONSTRAINT PK_klient PRIMARY KEY
        ,ID_oddzialu INT CONSTRAINT FK_ID_oddzial_Klienci REFERENCES Oddzialy(ID_oddzialu)
        ,imie NVARCHAR(20)
        ,nazwisko NVARCHAR(25)
        ,telefon INT
        ,mail NVARCHAR(50)
        ,dataUrodzenia DATE
        ,dataZalozeniaKonta DATE
        ,dataZamknieciaKonta DATE
    );

 


Zobacz także: create database