PostgreSQL ALTER TABLE: Dodaj i zmień nazwę kolumny

⚡ Inteligentne podsumowanie

PostgreSQL Polecenie ALTER TABLE zmienia strukturę istniejącej tabeli, umożliwiając dodawanie lub usuwanie kolumn, zmianę nazwy kolumny lub całej tabeli, ustawianie wartości domyślnych i dołączanie ograniczeń sprawdzających bez konieczności ponownego tworzenia obiektu.

  • 🧱 Składnia: Polecenie ALTER TABLE nazwa-tabeli wykonuje jedną zmianę strukturalną na polecenie.
  • Dodaj kolumnę: Polecenie ADD nazwa-kolumny typ-danych dodaje nową kolumnę do tabeli.
  • ✏️ Przemianować: ZMIEŃ NAZWĘ KOLUMNY i ZMIEŃ NAZWĘ, aby zmienić nazwę kolumny lub nazwę tabeli.
  • ⚙️ Wartość domyślna: ALTER COLUMN SET DEFAULT dostarcza wartość dla przyszłych wierszy INSERT.
  • 🛡️ Sprawdź ograniczenie: ADD CHECK weryfikuje nowe dane i odrzuca wartości, które nie spełniają reguły.
  • 🤖 Migracje AI: Asystenci AI tworzą skrypty ALTER TABLE i sprawdzają je pod kątem bezpiecznego wdrożenia.

PostgreSQL ALTER TABLE

Czym jest ALTER TABLE PostgreSQL?

ALTER TABLE polecenie służy do zmiany struktury PostgreSQL tabela. Jest to polecenie służące do zmiany kolumn tabeli lub samej nazwy tabeli, bez konieczności usuwaniaping i odtworzenie obiektu.

Składnia

Oto składnia dla PostgreSQL ZMIEŃ TABELĘ, polecenie:

ALTER TABLE table-name action;

Parametr „table-name” to nazwa tabeli, którą chcesz zmienić. Parametr „action” to czynność, którą musisz wykonać, na przykład zmiana nazwy kolumny lub typu danych kolumny.

OPIS

Polecenie ALTER TABLE zmienia definicję istniejącej tabeli. Przyjmuje następujące podformularze:

  • DODAJ KOLUMNĘ: wykorzystuje podobną składnię jak polecenie CREATE TABLE, służące do dodania nowej kolumny do tabeli.
  • OPUŚĆ KOLUMNĘ: do upuszczeniaping kolumna tabeli. Ograniczenia i indeksy nałożone na kolumny również zostaną usunięte.
  • USTAW/Upuść DOMYŚLNE: służy do ustawiania lub usuwania wartości domyślnej kolumny. Zmiana dotyczy tylko kolejnych WSTAW oświadczenia.
  • USTAW/Upuść NIE NULL: zmienia, czy kolumna będzie dopuszczać wartości null, czy nie.
  • USTAW STATYSTYKI: do ustawiania celu zbierania statystyk dla każdej kolumny na potrzeby operacji ANALIZY.
  • USTAW PRZECHOWYWANIE: do ustawiania trybu przechowywania kolumny, czy to wbudowanej, czy w tabeli uzupełniającej.
  • ZESTAW BEZ OIDÓW: służy do usuwania starej kolumny OID z tabeli.
  • PRZEMIANOWAĆ: do zmiany nazwy tabeli lub nazwy kolumny.
  • DODAJ ograniczenie_tabeli: służy do dodawania nowego ograniczenia do tabeli. Używa tej samej składni co UTWÓRZ TABELĘ dowództwo.
  • WZMOCNIENIE UPADKU:używany do upuszczaniaping ograniczenie tabeli.
  • WŁAŚCICIEL: do zmiany właściciela tabeli, sekwencji, indeksu lub widoku na określonego użytkownika.
  • CLUSTER: do oznaczenia tabeli, która będzie używana w przyszłych operacjach klastra.

Modyfikowanie kolumny

Kolumnę można modyfikować na wiele sposobów. Takie modyfikacje wykonuje się za pomocą polecenia ALTER TABLE. Omówimy je poniżej.

Dodanie nowej kolumny

Aby dodać nową kolumnę do a PostgreSQL tabeli, polecenie ALTER TABLE jest używane z następującą składnią:

ALTER TABLE table-name
  ADD new-column-name column-definition;

Nazwa tabeli to nazwa tabeli, którą należy zmodyfikować. Nazwa nowej kolumny to nazwa nowej kolumny, która ma zostać dodana. Definicja kolumny to typ danych nowej kolumny. Zobacz tabelę „Książka” poniżej:

PostgreSQL Przykład ALTER TABLE

Tabela ma dwie kolumny: id i name. Musimy dodać nową kolumnę do tabeli i nadać jej nazwę author. Wystarczy uruchomić następujące polecenie:

ALTER TABLE Book
  ADD author VARCHAR(50);

Po uruchomieniu powyższego polecenia tabela Book wygląda teraz następująco:

PostgreSQL Przykład ALTER TABLE

Nowa kolumna została dodana pomyślnie.

Zmiana nazwy kolumny tabeli

Możemy użyć polecenia ALTER TABLE, aby zmienić nazwę kolumny. W tym przypadku polecenie jest używane z następującą składnią:

ALTER TABLE table-name
  RENAME COLUMN old-name TO new-name;

Nazwa tabeli to nazwa tabeli, której kolumna ma zostać zmieniona. Stara nazwa to aktualna nazwa kolumny, a nowa nazwa to nowa nazwa kolumny. Rozważmy tabelę Book przedstawioną poniżej:

Książka:

PostgreSQL Przykład ALTER TABLE

Musimy zmienić nazwę kolumny „author” na „book_author”. Oto polecenie:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Po uruchomieniu polecenia możemy obejrzeć strukturę tabeli:

PostgreSQL Przykład ALTER TABLE

Nazwa kolumny została pomyślnie zmieniona.

Ustawianie wartości domyślnej dla kolumny

Możemy ustawić wartość domyślną dla kolumny, dzięki czemu nawet jeśli nie określisz wartości dla tej kolumny podczas operacji INSERT, zostanie ona użyta. W takim przypadku polecenie ALTER TABLE można użyć z następującą składnią:

ALTER TABLE table-name ALTER COLUMN column-name [SET DEFAULT value];

Nazwa tabeli to nazwa tabeli, której kolumna ma zostać zmodyfikowana. Nazwa kolumny to nazwa kolumny, której wartość domyślna ma zostać ustawiona, a wartość jest wartością domyślną dla tej kolumny. Rozważmy poniższą tabelę „Book”:

PostgreSQL Przykład ALTER TABLE

Musimy ustawić wartość domyślną dla kolumny book_author. Możemy uruchomić następujące polecenie:

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';

Teraz wstawmy wiersz do tabeli:

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners');

Zwróć uwagę, że wstawiliśmy wartości tylko dla dwóch kolumn: id i name. Jednak dla kolumny book_author użyto wartości domyślnej:

PostgreSQL Przykład ALTER TABLE

Dodawanie ograniczenia sprawdzającego

Ograniczenie sprawdzające pomaga w sprawdzaniu poprawności rekordów wstawianych do tabeli. Możemy to zrobić łącząc polecenie ALTER TABLE z instrukcją ADD CHECK. Składnia:

ALTER TABLE table-name ADD CHECK expression;

Nazwa_tabeli to nazwa tabeli, którą należy zmienić, a wyrażenie to ograniczenie, które ma zostać nałożone na kolumnę tabeli. Zmodyfikujmy kolumnę book_author tabeli Book tak, aby akceptowała tylko wartości Nicholas i Samuel:

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'));

Spróbujmy teraz wstawić wartość inną niż Nicholas lub Samuel do kolumny book_author tabeli Book:

INSERT INTO Book
VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');

Polecenie zwróci następujący błąd:

PostgreSQL Przykład ALTER TABLE

Operacja wstawiania nie powiodła się, ponieważ naruszono ograniczenie sprawdzające.

Zmiana nazwy tabeli

Oto składnia polecenia ALTER TABLE służącego do zmiany nazwy tabeli:

ALTER TABLE table-name
  RENAME TO new-table-name;

Nazwa tabeli to bieżąca nazwa tabeli, a nowa nazwa tabeli to nowa nazwa, która ma zostać przypisana do tabeli. Na przykład zmieńmy nazwę tabeli „Książki” na „Książki”:

ALTER TABLE Book
  RENAME TO Books;

Korzystanie z pgAdmina

Do tej pory akcje były uruchamiane z poziomu powłoki SQL. Teraz zobaczmy, jak te same akcje można wykonać wizualnie za pomocą pgAdmin.

Dodanie nowej kolumny

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  1. Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  2. Kliknij opcję Demo.

PostgreSQL Przykład ALTER TABLE

Krok 3) Wpisz zapytanie w edytorze zapytań:

ALTER TABLE Book
  ADD author VARCHAR(50);

Krok 4) Kliknij przycisk Wykonaj.

PostgreSQL Przykład ALTER TABLE

Krok 5) Aby sprawdzić, czy kolumna została dodana, wykonaj następujące czynności:

  1. Kliknij Bazy danych w lewym panelu nawigacyjnym.
  2. Rozwiń wersję demonstracyjną.
  3. Rozwiń Schematy.
  4. Rozwiń Publiczne.
  5. Rozwiń tabele.
  6. Rozwiń książkę.
  7. Rozwiń kolumny.

PostgreSQL Przykład ALTER TABLE

Należy dodać kolumnę, jak pokazano poniżej:

PostgreSQL Przykład ALTER TABLE

Zmiana nazwy kolumny tabeli

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  1. Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  2. Kliknij opcję Demo.

PostgreSQL Przykład ALTER TABLE

Krok 3) Wpisz zapytanie w edytorze zapytań:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Krok 4) Kliknij przycisk Wykonaj.

PostgreSQL Przykład ALTER TABLE

Krok 5) Aby sprawdzić, czy zmiana się powiodła, rozwiń kolumny tabeli książek jak poprzednio:

PostgreSQL Przykład ALTER TABLE

Kolumny powinny teraz wyglądać następująco:

PostgreSQL Przykład ALTER TABLE

Kolumna została pomyślnie zmieniona.

Ustawianie wartości domyślnej dla kolumny

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  1. Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  2. Kliknij opcję Demo.

PostgreSQL Przykład ALTER TABLE

Krok 3) Wpisz zapytanie w edytorze zapytań:

ALTER TABLE Book ALTER COLUMN book_author SET DEFAULT 'Nicholas Samuel';

Krok 4) Kliknij przycisk Wykonaj.

PostgreSQL Przykład ALTER TABLE

Krok 5) Aby przetestować, uruchom następujące polecenie w edytorze zapytań:

INSERT INTO Book (id, name)
 VALUES (6, 'PostgreSQL for Beginners')

Krok 6) Teraz możemy wysłać zapytanie do tabeli, aby sprawdzić, czy w kolumnie book_author została wstawiona wartość domyślna:

PostgreSQL Przykład ALTER TABLE

Dodawanie ograniczenia sprawdzającego

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  1. Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  2. Kliknij opcję Demo.

PostgreSQL Przykład ALTER TABLE

Krok 3) Wpisz zapytanie w edytorze zapytań:

ALTER TABLE Book ADD CHECK (book_author IN ('Nicholas', 'Samuel'))

Krok 4) Kliknij przycisk Wykonaj.

PostgreSQL Przykład ALTER TABLE

Krok 5) Aby to sprawdzić, wpisz następujące zapytanie w edytorze zapytań i kliknij przycisk Wykonaj:

INSERT INTO Book
VALUES(7, 'Best PostgreSQL Book', 'Gregory Bush');

PostgreSQL Przykład ALTER TABLE

Zwróci to:

PostgreSQL Przykład ALTER TABLE

Zmiana nazwy tabeli

Krok 1) Zaloguj się na swoje konto pgAdmin.

Krok 2)

  1. Na pasku nawigacyjnym po lewej stronie kliknij opcję Bazy danych.
  2. Kliknij opcję Demo.

PostgreSQL Przykład ALTER TABLE

Krok 3) Wpisz zapytanie w edytorze zapytań:

ALTER TABLE Book
  RENAME TO Books;

Krok 4) Kliknij przycisk Wykonaj.

PostgreSQL Przykład ALTER TABLE

Krok 5) Aby sprawdzić, czy nazwa tabeli została zmieniona, rozwiń pozycję Bazy danych > Demo > Schematy > Publiczne > Tabele:

PostgreSQL Przykład ALTER TABLE

Nazwa tabeli została pomyślnie zmieniona.

Pobierz bazę danych używaną w tym samouczku

FAQ

Użyj instrukcji ALTER TABLE table_name ALTER COLUMN column_name TYPE new_type. Dodaj klauzulę USING, gdy wartości wymagają konwersji, na przykład ALTER COLUMN price TYPE numeric USING price::numeric. PostgreSQL przepisuje kolumnę i sprawdza, czy istniejące dane pasują do nowego typu.

Tylko jeśli domyślna wartość jest zmienna. Ponieważ PostgreSQL 11. DODAJ KOLUMNĘ ze stałą wartością domyślną natychmiast aktualizuje katalog bez przepisywania wierszy. Wartość domyślna, która wywołuje funkcję, nadal wymusza pełne przepisanie tabeli i silniejszą blokadę.

Nie. PostgreSQL Nie można zmienić istniejącego ograniczenia. Usuń istniejące ograniczenie za pomocą DROP CONSTRAINT, a następnie dodaj poprawione za pomocą ADD CONSTRAINT. Umieść oba polecenia w transakcji, aby tabela nigdy nie pozostała bez reguły.

Wymień kilka akcji rozdzielonych przecinkami: ALTER TABLE Book ADD COLUMN price int, ADD COLUMN isbn text. PostgreSQL wprowadza każdą zmianę w jednym przejściu, co jest szybsze i sprawia, że ​​tabela pozostaje spójna.

Użyj polecenia ALTER TABLE table_name ADD PRIMARY KEY (kolumna) lub ADD CONSTRAINT pk_name PRIMARY KEY (kolumna). Kolumna musi zawierać unikalne wartości różne od null. PostgreSQL automatycznie tworzy pomocniczy indeks unikatowy w momencie tworzenia klucza.

Polecenie RENAME aktualizuje tylko nazwę tabeli w katalogu systemowym. Zapisane wiersze, indeksy i ograniczenia pozostają na swoim miejscu i nie ulegają zmianie. Widoki lub funkcje odwołujące się do starej nazwy mogą nadal wymagać późniejszej aktualizacji.

Asystenci AI tworzą skrypty ALTER TABLE na podstawie opisanej zmiany, poprawnie porządkują kroki ADD, RENAME i ograniczenia oraz dodają klauzule USING dla rzutowania typów. Oznaczają również operacje, które nadpisują duże tabele lub utrzymują silne blokady.

Tak. Pilot AI sprawdza migrację, ostrzega przed zablokowaniem lub pełnym przepisywaniem tabeli, sugeruje przetwarzanie wsadowe lub równoczesne tworzenie indeksów i zaleca zawinięcieping zmiany w transakcji, dzięki czemu wdrażanie aktualizacji schematu jest bezpieczniejsze.

Podsumuj ten post następująco: