Blog JSystems - z miłości do programowania

Szukaj

Tworzenie i zarządzanie tabelami w MS SQL Server

Tworzenie tabel


Tworząc tabelę podajemy pola jakie ta tabela ma posiadać, rodzaj danych przechowywanych przez te pola oraz własności tabeli. Podczas tworzenia możemy nakładać różne klucze, ograniczenia, a także ustawić dodawanie wartości domyślnej w przypadku nie wprowadzenia wartości żadnej dla danego pola podczas uzupełniania tabeli. Najprostszy kod, który stworzy nam tabelę o nazwie SklepSpozywczy. Będzie ona zawierała 5 kolumn o nazwach: ID, Nazwa, Kolor, KrajPochodzeniaID, Cena.


create table SalesLT.SklepSpozywczy(


ID int not null primary key,


Nazwa nchar(20) NOT NULL,


Kolor nchar(20) NULL,


KrajPochodzeniaID int NOT NULL,


Cena decimal(4,2) NOT NULL);


106.png (603×303)


W powyższym przykładzie widać polecenie tworzące tabelę o nazwie SklepSpozywczy w schemacie SalesLT. Pierwsza kolumna o nazwie ID, na którą od razu przy tworzeniu tabeli został nałożony klucz główny, będzie zawierała wartości liczbowe typu int, w kolumnie tej nie będą mogły być przechowywane wartości null. Druga o tytule Nazwa, będzie przechowywała dane znakowe typu char, do maksymalnie 20 znaków, w kolumnie tej też nie będą mogły być przechowywane wartości null. Kolumna trzecia w odróżnieniu do drugiej, poza oczywiście nazwą, może już przechowywać wartości null. Czwarta poza nazwą i tym, że nie posiada klucza głównego to niczym się nie różni od pierwszej. Piąta natomiast będzie zawierała wartości liczbowe typu decimal, do czterech znaków, z czego dwa po przecinku, nie może również przechowywać wartości typu null.


create table SalesLT.KrajPochodzenia(


ID int not null identity(1,1) constraint pk_KP primary key,


NazwaKraju varchar(10) not null);


107.png (702×188)


W schemacie stworzona została tabela KrajPochodzenia, z dwoma kolumnami. Pierwsza z nich o nazwie ID, typu int, z opcją autouzupełniania tej kolumny począwszy od numeru pierwszego i wzrostem o jeden oraz kluczem głównym. Druga kolumna o tytule NazwaKraju, typ danych varchar o długości do 10 znaków.


Zmiana nazwy tabeli


Aby zmienić nazwę tabeli korzystamy z polecenia sp_rename:


SP_RENAME ‘ nazwa_tabeli’, ‘nowa_nazwa_tabeli’;


sp_rename ‘SalesLT.SklepSpozywczy’ , ‘SalesLT.XXX’;


108.png (660×130)


Usuwanie tabel


Aby usunąć tabelę korzystamy z polecenia drop:


DROP TABLE nazwa_tabeli;


drop table SalesLT.SklepSpozywczy;


109.png (599×129)


Więzy integralności


Dzięki więzom integralności nie można tak zmodyfikować danych by straciły on spójność. Są zbiorem zasad nałożonych na tabele w bazie danych.


Primary key


Wymusza unikatowość wierszy kolumnie, a oprócz tego zabrania stosowania znaczników null. Każdy unikatowy zbiór wartości w atrybutach ograniczeń w tabeli może wystąpić tylko raz – czyli tylko w jednym wierszu. Najczęściej zakładany jest na kolumnę która przechowuje dane jednoznacznie określające pojedynczy wiersz. W tabeli może być tylko jeden klucz główny.


Unique


Zapewnia unikalność wartości w kolumnie, jednak w przeciwieństwie do primary key takich kluczy może być więcej niż jeden, oraz umożliwia występowanie wartości null.


Foreign key


Jest to klucz obcy. Służy do definiowania relacji pomiędzy tabelami. Zapewnia on, że rekord w tabeli podrzędnej zawsze będzie miał swojego odpowiednika w tabeli nadrzędnej. Klucz obcy musi się odwoływać do kolumny (kolumn) w tabeli nadrzędnej, na których założony jest unique lub klucz główny. Obie tabele mogą być tak naprawdę jedną i tą samą tabelą.


Not null


Zapobiega wstawianiu wartości null do kolumny.


Check


Zapewnia, że wartość wstawiana do kolumny spełnia wymagany warunek logiczny.


Default


Jest to wyrażenie używane jako wartość domyślna, jeśli podczas wstawiania wiersza nie jest wprost wyspecyfikowana wartość atrybutu.


Zakładanie więzów integralności


Więzy integralności możemy zakładać na nie tylko w momencie tworzenia tabeli, tak jak to zostało wcześniej pokazane, ale także na istniejący już obiekt. Poniżej przykład nałożenia klucza obcego na istniejącą już tabelę.


 ALTER TABLE nazwa_tabeli ADD CONSTRAINT nazwa_klucza typ_klucza (nazwa_kolumny) REFERENCES nazwa_tabeli_do_której_ten_klucz_się_odwołuje(nazwa_kolumny)


alter table SalesLT.SklepSpozywczy add constraint fk_SklepSpo foreign key (KrajPochodzeniaID) references SalesLT.KrajPochodzenia(ID);


110.png (822×160)


Do tabeli SklepSpożywczy, na kolumnę KrajPochodzeniaID został nałożony klucz obcy, który odwołuje się do kolumny ID w tabeli KrajPochodzenia.


Modyfikowanie tabel


Po utworzeniu tabeli, może się okazać, że musimy jednak jeszcze dodać do niej kolumnę, zmodyfikować ją lub usunąć. Służy do tego polecenie alter.


 


Dodanie kolumny do tabeli


ALTER TABLE nazwa_tabeli ADD nazwa_kolumny typ_danych;


alter table SalesLT.SklepSpozywczy add CenaPromocyjna decimal(4,2) null;


111.png (840×124)


Dodanie do tabeli SklepSpozywczy nowej kolumny o nazwie CenaPromocyjna, o liczbowym typie danych decimal, kolumna ta będzie mogła przechowywać wartości null.


 


Modyfikacja kolumny w tabeli


ALTER TABLE nazwa_tabeli ALTER COLUMN nazwa_kolumny nowy_typ_danych;


alter table SalesLT.SklepSpozywczy alter column CenaPromocyjna money null;


112.png (856×128)


 


Zmiana nazwy kolumny


SP_RENAME ‘nazwa_tabeli.nazwa_kolumny’, ‘nowa_nazwa_kolumny’, ‘COLUMN’


sp_rename ‘SalesLT.SklepSpozywczy.CenaPromocyjna’, ‘NowaCenaPromocyjna’, ‘column’;


113.png (943×123)


Nazwa kolumny CenaPromocyjna została zmieniona na NowaCenaPromocyjna.


 


Usuwanie kolumny z tabeli


ALTER TABLE nazwa_tabeli DROP COLUMN nazwa_kolumny;


alter table SalesLT.SklepSpozywczy drop column NowaCenaPromocyjna;


114.png (773×128)


Usunięta została kolumna NowaCenaPromocyjna

Przyjdź do nas na szkolenie z baz danych SQL Server! Mamy szereg szkoleń w ofercie: SQL, T-SQL, tuning, administracja i wiele innych. Sprawdź dostępne szkolenia SQL Server
Zapisz się do newslettera aby otrzymywać najnowsze świeżynki pojawiające się na blogu! Zapisz się do newslettera