Data: 16.06.2025

Tworzenie i modyfikowanie tabel w MS SQL Server
Spis treści
- Tworzenie i modyfikowanie tabel w MS SQL Server
- Tworzenie i modyfikowanie tabel w MS SQL Server
- Typy danych w SQL Server
- Zasady tworzenia tabel w SQL Server
- Tworzenie tabeli za pomocą polecenia
CREATE TABLE - Jak utworzyć tabelę graficznie w SSMS?
- Wyświetlanie tabeli w Object Explorer w SSMS
- Usuwanie tabeli w MS SQL Server – polecenie
DROP TABLE - Zmiana struktury tabeli – polecenie
ALTER TABLE - Jak dodać kolumnę do tabeli w SQL Server?
- Jak zmienić typ danych kolumny w SQL Server?
- Jak usunąć kolumnę z tabeli w SQL Server?
- Jak dodać klucz główny oraz klucz obcy w SQL Server?
- Jak usunąć klucz główny oraz klucz obcy w SQL Server?
- Dobre praktyki tworzenia i modyfikowania tabel
W artykule Tworzenie i modyfikowanie tabel w MS SQL Server omawiam, w jaki sposób tworzyć tabele i zarządzać nimi.
Tworzenie i modyfikowanie tabel w MS SQL Server
Tabele są podstawowymi obiektami w relacyjnych bazach danych SQL Server. Stanowią one logiczną strukturę, w której przechowywane są dane w postaci wierszy i kolumn. Prawidłowe zaprojektowanie tabel oraz umiejętność ich modyfikacji jest kluczowa dla zachowania integralności danych w bazie oraz wydajności zapytań SQL.
Dobrze zaprojektowana tabela uwzględnia:
- odpowiednie typy danych
- klucze główny i obcy
- ewentualne ograniczenia (constraints), które zapewniają spójność i poprawność przechowywanych informacji.
W miarę rozwoju aplikacji i zmieniających się wymagań biznesowych, czasami konieczne jest modyfikowanie istniejących tabel np. poprzez dodawanie nowych kolumn, czy definiowanie indeksów poprawiających wydajność.
Typy danych w SQL Server
Każda kolumna w tabeli musi mieć zdefiniowany typ danych, który określa możliwy zakres i format przechowywanych w niej wartości.
Przykładowe typy danych wykorzystywane w tabelach:
- INT – liczby całkowite
- NVARCHAR(n) – tekst z obsługą znaków Unicode
- DATETIME – pełna data i czas
- BIT – typ logiczny (przyjmuje wartości 0 lub 1).
Więcej informacji na temat typów danych znajdziesz w naszym artykule Typy danych w MS SQL Server
Zasady tworzenia tabel w SQL Server
Tworząc tabelę należy określić:
- nazwę tabeli niepowtarzalną w skali schematu
- jakie rodzaje danych będą wprowadzane do tabeli
- która kolumna (kolumny) będzie pełnić rolę klucza głównego
- jakie typy danych będą przypisane do poszczególnych kolumn
- jakie będą rozmiary poszczególnych kolumn
- w których kolumnach będą dopuszczalne wartości NULL
W MS SQL Server tabelę możemy utworzyć za pomocą języka T-SQL lub wykorzystując opcje graficzne w aplikacji SQL Server Management Studio (SSMS).
Tworzenie tabeli za pomocą polecenia CREATE TABLE
Polecenie CREATE TABLE umożliwia utworzenie nowej tabeli w bazie danych.
CREATE TABLE Zakupy (ID INT,Nazwa VARCHAR(50),Data_zakupu DATE);W powyższym przykładzie tworzymy w bazie danych nową tabelę o nazwie Zakupy, która zawiera trzy kolumny:
- ID – typ INT (liczba całkowita) – kolumna, w której możemy przechowywać liczby całkowite
- Nazwa – typ VARCHAR(50) – kolumna, w której możemy przechowywać tekst o zmiennej długości, maksymalnie 50 znaków
- Data_zakupu – typ DATE – kolumna, w której możemy przechowywać daty
CREATE TABLE Customers ( ID INT IDENTITY(1,1) NOT NULL, FirstName VARCHAR(20), LastName VARCHAR(20));W powyższym przykładzie tworzymy tabelę o nazwie Customers, która zawiera trzy kolumny:
- ID – typ INT, z dodatkiem IDENTITY(1,1) NOT NULL:
- IDENTITY(1,1) oznacza, że w kolumnie będą automatycznie generowane unikalne wartości zaczynając od 1 i zwiększając się o 1 przy każdym nowym rekordzie
- NOT NULL wymusza, że kolumna nie może być pusta
- FirstName – typ VARCHAR(20) i LastName – typ VARCHAR(20) – kolumny, w których możemy przechowywać tekst, maksymalnie 20 znaków
Jak utworzyć tabelę graficznie w SSMS?
Aby utworzyć tabelę graficznie, otwórz aplikację SQL Server Management Studio i wykonaj poniższe kroki:
Kliknij kolejno:
- znak plusa z lewej strony obiektu Databases (bazy danych)
- znak plusa z lewej strony wybranej bazy danych
- prawy przycisk na obiekcie Tables (tabele)
- polecenie New (Nowy)
- polecenie Table (Tabela)

Uzupełnij kolejno:
- w polu Column Name wpisz nazwę kolumny – nazwy kolumn muszą być w tabeli unikalne
- w polu Data Type wybierz typ danych, które mają być przechowywane w kolumnie
- pole Allow Nulls pozostaw zaznaczone, jeśli chcesz, aby możliwe było pozostawienie kolumny pustej lub odznacz je, jeśli chcesz, aby w kolumnie zawsze były uzupełniane dane

Aby zapisać tabelę:
- kliknij ikonę dyskietki na pasku narzędzi
- podaj nazwę tabeli i kliknij przycisk OK

Wyświetlanie tabeli w Object Explorer w SSMS
Aby wyświetlić tabelę na drzewie tabel w Object Explorer w aplikacji SSMS, kliknij prawy przycisk myszy na obiekcie Tables (tabele) i wybierz opcję Refresh (Odśwież).

Kliknij znak plusa z lewej strony obiektu Tables aby rozwinąć dostępne w bazie tabele. Na liście tabel powinna się znajdować utworzona przez Ciebie tabela.

Usuwanie tabeli w MS SQL Server – polecenie DROP TABLE
Tabelę możemy usunąć za pomocą polecenia DROP TABLE:
DROP TABLE KlienciMożemy ją również usunąć za pomocą interfejsu graficznego w SSMS. Aby to zrobić kliknij prawym przyciskiem myszy nazwę tabeli i wybierz opcję Delete (Usuń).

Zmiana struktury tabeli – polecenie ALTER TABLE
Polecenie ALTER TABLE w języku SQL służy do modyfikowania istniejącej struktury tabeli bez konieczności jej usuwania i ponownego tworzenia.
Dzięki niemu możemy dodawać nowe kolumny, usuwać istniejące, zmieniać typy danych, a także definiować lub usuwać klucze i ograniczenia np. PRIMARY KEY, FOREIGN KEY, NOT NULL.
Jak dodać kolumnę do tabeli w SQL Server?
Nową kolumnę dodajemy do tabeli przy użyciu poniższego polecenia:
ALTER TABLE Person.AddressADD Nazwisko VARCHAR(50);W poleceniu dodajemy do tabeli nową kolumnę o nazwie Nazwisko, która może przechowywać dane tekstowe o zmiennej długości (VARCHAR), z limitem do 50 znaków.
Nową kolumnę, w której nie będą dopuszczone wartości specjalne NULL, dodajemy za pomocą poniższego polecenia:
ALTER TABLE Person.AddressADD Nazwisko VARCHAR(50) NOT NULL;Jeśli w tabeli zostały już zapisane dane, dodawana kolumna nie może być zdefiniowana jako NOT NULL bez podania wartości domyślnej (DEFAULT), gdyż ograniczenie NOT NULL wymusza, by każde pole w kolumnie zawierało wartość – nie może być puste (NULL).
ALTER TABLE Person.AddressADD Nazwisko VARCHAR(50) NOT NULL DEFAULT 'brak';Odczytujemy dane z tabeli po zmianie
SELECT *FROM Person.Address;
Jak zmienić typ danych kolumny w SQL Server?
Aby zmienić typ danych kolumny Nazwisko w tabeli, należy użyć polecenia ALTER TABLE z klauzulą ALTER COLUMN.
Poniżej kopiujemy dane z tabeli Person.Address do tabeli Address, aby usunąć ograniczenia:
SELECT *INTO AddressFROM Person.AddressAby zmienić typ danych z VARCHAR(50) na NVARCHAR(100) wpiszemy poniższe polecenie:
ALTER TABLE AddressALTER COLUMN Nazwisko NVARCHAR(100);
Uwaga! Jeśli dokonujesz zmiany w tabeli lub kolumnie, aby tę zmianę zobaczyć, kliknij w Object Explorer na nazwie tabeli prawym przyciskiem myszy i kliknij opcję Refresh.
Warto pamiętać, że:
- zmiana typu danych może się nie powieść, jeśli istnieją dane niezgodne z nowym typem
- w przypadku zmniejszania rozmiaru typu np. z VARCHAR(100) na VARCHAR(50) należy wcześniej sprawdzić, czy dane mieszczą się w nowym zakresie, aby uniknąć błędu
- zmiany typu danych mogą wpłynąć na wydajność oraz indeksy
Jak usunąć kolumnę z tabeli w SQL Server?
Aby usunąć kolumnę, należy użyć polecenia ALTER TABLE wraz z klauzulą DROP COLUMN
ALTER TABLE [Person].[Address]DROP COLUMN Nazwisko;Operacja usunięcia kolumny jest nieodwracalna – usunięte dane mogą być przywrócone np. z kopii zapasowej.
Przed wykonaniem tej operacji warto upewnić się, że dana kolumna nie jest wykorzystywana w kluczach obcych, indeksach, procedurach składowanych lub widokach, gdyż jej usunięcie może naruszyć integralność danych lub wpłynąć na działanie aplikacji korzystających z bazy.
Jak dodać klucz główny oraz klucz obcy w SQL Server?
W SQL Server klucz główny (Primary Key) służy do jednoznacznej identyfikacji każdego rekordu w tabeli. Kolumna, która ma pełnić rolę klucza głównego nie może zawierać wartości specjalnej NULL ani duplikatów.
Klucz obcy (Foreign Key) natomiast tworzy relację między dwiema tabelami, wskazując na kolumnę będącą kluczem głównym w innej tabeli.
Poniżej znajduje się przykład oparty na bazie danych Northwind, w którym tabela Orders odwołuje się do tabeli Customers.
Tworzymy tabelę Customers_ave na podstawie tabeli Customers, aby mieć kolumny bez ograniczeń
SELECT *INTO Customers_aveFROM CustomersTworzymy tabelę Orders_ave na podstawie tabeli Orders, aby mieć kolumny bez ograniczeń
SELECT *INTO Orders_aveFROM OrdersDodanie klucza głównego w tabeli Customers_ave
ALTER TABLE Customers_aveADD CONSTRAINT PK_Customers_ave PRIMARY KEY (CustomerID);Po odświeżeniu widoku tabel, w oknie Object Explorer możemy zobaczyć zmodyfikowaną tabelę. Węzeł Keys zawiera informacje o kluczach. Możemy odczytać w nim nazwę klucza głównego.

Dodanie klucza obcego w tabeli Orders_ave, wskazującego na tabelę Customers_ave
ALTER TABLE Orders_aveADD CONSTRAINT FK_Orders_ave_Customers_aveFOREIGN KEY (CustomerID) REFERENCES Customers_ave(CustomerID);
Jak usunąć klucz główny oraz klucz obcy w SQL Server?
Aby usunąć klucz główny (PRIMARY KEY) lub klucz obcy (FOREIGN KEY) w Microsoft SQL Server musimy znać jego nazwę. Nazwę możemy zobaczyć, w przedstawionym wyżej węźle Keys w SSMS. Możemy ją też odczytać z widoków systemowych.
W przykładzie poniżej odczytujemy nazwy kluczy głównego i obcego z tabel Customers_ave i Orders_ave.
SELECT tc.TABLE_NAME, tc.CONSTRAINT_NAME, tc.CONSTRAINT_TYPE, kcu.COLUMN_NAMEFROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tcJOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS kcu ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAMEWHERE tc.TABLE_NAME IN ('Customers_ave', 'Orders_ave');
W przykładach poniżej pokazuję, w jaki sposób usunąć klucz główny z tabeli Customers_ave oraz klucz obcy z tabeli Orders_ave w bazie Northwind.
Usuwanie klucza obcego z tabeli Orders_ave
ALTER TABLE Orders_aveDROP CONSTRAINT FK_Orders_ave_Customers_ave;Usuwanie klucza głównego z tabeli Customers_ave
ALTER TABLE Customers_aveDROP CONSTRAINT PK_Customers_ave;Najpierw musimy usunąć klucz obcy, a dopiero później klucz główny. Jeśli spróbujemy najpierw usunąć klucz główny, otrzymamy w wyniku błąd, gdyż próbujemy usunąć klucz główny (PK_Customers_ave), do którego odwołuje się inna tabela (Orders_ave).

Dobre praktyki tworzenia i modyfikowania tabel
Projektowanie i zarządzanie strukturą tabel w SQL Server to ważny element pracy z relacyjnymi bazami danych. Wdrożenie odpowiednich struktur danych ma bezpośredni wpływ na efektywność działania aplikacji, jakość przechowywanych informacji oraz bezpieczeństwo systemu.
Aby utrzymać wysoką jakość struktury danych w bazie, warto stosować się do poniższych zasad:
- stosuj jednoznaczne klucze główne – każda tabela powinna mieć unikalny identyfikator rekordu (PRIMARY KEY)
- używaj odpowiednich typów danych i długości pól – nie należy przydzielać niepotrzebnie dużych długości, np. NVARCHAR(MAX), gdy wystarczyłby NVARCHAR(100)
- unikaj wartości NULL, gdy nie są konieczne – ułatwia to analizę danych i projektowanie zapytań
- stosuj ograniczenia (CHECK, UNIQUE, DEFAULT) tam, gdzie to możliwe – wspomagają one kontrolę poprawności danych na poziomie bazy
- testuj modyfikacje przed wdrożeniem na środowisku produkcyjnym – wprowadzenie błędnych zmian w strukturze może prowadzić do utraty danych
Zapraszamy na nasze kursy SQL, na których możesz poćwiczyć tworzenie i modyfikowanie tabel oraz poznać składnię języka MS SQL.
