Data: 16.06.2025

Tworzenie i modyfikowanie tabel w SQL Server

Tworzenie i modyfikowanie tabel w MS SQL Server

Spis treści

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)

Title

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

Title

Aby zapisać tabelę:

  • kliknij ikonę dyskietki na pasku narzędzi
  • podaj nazwę tabeli i kliknij przycisk OK

Title

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ż).

Title

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.

Title

Usuwanie tabeli w MS SQL Server – polecenie DROP TABLE

Tabelę możemy usunąć za pomocą polecenia DROP TABLE:

DROP TABLE Klienci

Moż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ń).

Title

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.Address
ADD 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.Address
ADD 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.Address
ADD Nazwisko VARCHAR(50) NOT NULL DEFAULT 'brak';

Odczytujemy dane z tabeli po zmianie

SELECT *
FROM Person.Address;

Title

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 Address
FROM Person.Address

Aby zmienić typ danych z VARCHAR(50) na NVARCHAR(100) wpiszemy poniższe polecenie:

ALTER TABLE Address
ALTER COLUMN Nazwisko NVARCHAR(100);

Title

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_ave
FROM Customers

Tworzymy tabelę Orders_ave na podstawie tabeli Orders, aby mieć kolumny bez ograniczeń

SELECT *
INTO Orders_ave
FROM Orders

Dodanie klucza głównego w tabeli Customers_ave

ALTER TABLE Customers_ave
ADD 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.

Title

Dodanie klucza obcego w tabeli Orders_ave, wskazującego na tabelę Customers_ave

ALTER TABLE Orders_ave
ADD CONSTRAINT FK_Orders_ave_Customers_ave
FOREIGN KEY (CustomerID) REFERENCES Customers_ave(CustomerID);

Title

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_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS AS tc
JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS kcu
    ON tc.CONSTRAINT_NAME = kcu.CONSTRAINT_NAME
WHERE tc.TABLE_NAME IN ('Customers_ave', 'Orders_ave');

Title

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_ave
DROP CONSTRAINT FK_Orders_ave_Customers_ave;

Usuwanie klucza głównego z tabeli Customers_ave

ALTER TABLE Customers_ave
DROP 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).

Title

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.

Ewa Barbara Lelusz
Ewa Barbara Lelusz
Analityk biznesowy
Udostępnij wpis:udostępnij Facebookudostępnij Linkedinudostępnij e-mail

Polecane