PostgreSQL ZMĚNIT TABULKU: Přidat a přejmenovat sloupec

⚡ Chytré shrnutí

PostgreSQL Příkaz ALTER TABLE změní strukturu existující tabulky a umožní vám přidávat nebo odstraňovat sloupce, přejmenovat sloupec nebo celou tabulku, nastavit výchozí hodnoty a připojit kontrolní omezení bez nutnosti znovu vytvářet objekt.

  • 🧱 Syntaxe: Akce ALTER TABLE název_tabulky provede jednu strukturální změnu na příkaz.
  • Přidat sloupec: Příkaz ADD název-sloupce datový-typ připojí do tabulky nový sloupec.
  • ✏️ Přejmenovat: PŘEJMENOVAT SLOUPEC a PŘEJMENOVAT PRO změnu názvu sloupce nebo názvu tabulky.
  • ⚙️ Výchozí hodnota: ALTER COLUMN SET DEFAULT dodává hodnotu pro budoucí řádky INSERT.
  • 🛡️ Zkontrolujte omezení: Příkaz ADD CHECK ověřuje nová data a odmítá hodnoty, které pravidlu neprojdou.
  • 🤖 Migrace umělé inteligence: Asistenti umělé inteligence navrhují skripty ALTER TABLE a kontrolují je pro bezpečné nasazení.

PostgreSQL ALTER TABLE

Co je ALTER TABLE v PostgreSQL?

Jedno ALTER TABLE Příkaz se používá ke změně struktury PostgreSQL tabulka. Je to příkaz používaný ke změně sloupců tabulky nebo samotného názvu tabulky bez nutnosti odstraněníping a znovuvytvoření objektu.

Syntax

Zde je syntaxe pro PostgreSQL Příkaz ALTER TABLE:

ALTER TABLE table-name action;

Parametr table-name je název tabulky, kterou je třeba změnit. Parametr action je akce, kterou je třeba provést, například změna názvu sloupce nebo změna datového typu sloupce.

Description

Příkaz ALTER TABLE změní definici existující tabulky. Má následující podformuláře:

  • PŘIDAT SLOUPEK: tento příkaz používá podobnou syntaxi jako příkaz CREATE TABLE k přidání nového sloupce do tabulky.
  • PUSTI SLOUPEK: pro poklesping sloupec tabulky. Omezení a indexy uvalené na sloupce budou také zrušeny.
  • SET/DROP DEFAULT: používá se pro nastavení nebo odebrání výchozí hodnoty pro sloupec. Změna se týká pouze následujících INSERT příkazy.
  • SET/DROP NOT NULL: mění, zda sloupec povoluje hodnoty null či nikoli.
  • NASTAVENÍ STATISTIK: pro nastavení cíle shromažďování statistik pro každý sloupec pro operace ANALYZE.
  • NASTAVIT ÚLOŽIŠTĚ: pro nastavení režimu ukládání sloupce, ať už v řádku nebo v doplňkové tabulce.
  • SET BEZ OIDŮ: používá se k odstranění starého sloupce OID z tabulky.
  • PŘEJMENOVAT: pro změnu názvu tabulky nebo názvu sloupce.
  • PŘIDAT omezení_tabulky: používá se pro přidání nového omezení do tabulky. Používá stejnou syntaxi jako VYTVOŘENÍ TABULKY příkaz.
  • OMEZENÍ POHLEDU: používá se pro pádping omezení tabulky.
  • MAJITEL: pro změnu vlastníka tabulky, sekvence, indexu nebo pohledu na určitého uživatele.
  • CLUSTER: pro označení tabulky, která se má použít pro budoucí operace s clusterem.

Úprava sloupce

Sloupec lze upravit několika způsoby. Takové úpravy se provádějí pomocí příkazu ALTER TABLE. Pojďme si je probrat níže.

Přidání nového sloupce

Chcete-li přidat nový sloupec do a PostgreSQL tabulka, příkaz ALTER TABLE se používá s následující syntaxí:

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

Název tabulky je název tabulky, která má být upravena. Název nového sloupce je název nového sloupce, který má být přidán. Definice sloupce je datový typ nového sloupce. Viz tabulka Kniha níže:

PostgreSQL Příklad příkazu ALTER TABLE

Tabulka má dva sloupce, id a name. Musíme do tabulky přidat nový sloupec a pojmenovat ho author. Stačí spustit následující příkaz:

ALTER TABLE Book
  ADD author VARCHAR(50);

Po spuštění výše uvedeného příkazu je nyní tabulka knihy následující:

PostgreSQL Příklad příkazu ALTER TABLE

Nový sloupec byl úspěšně přidán.

Přejmenování sloupce tabulky

Ke změně názvu sloupce můžeme použít příkaz ALTER TABLE. V tomto případě se příkaz používá s následující syntaxí:

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

Název tabulky je název tabulky, jejíž sloupec má být přejmenován. Starý název je aktuální název sloupce a nový název je nový název sloupce. Vezměme si tabulku Book uvedenou níže:

Rezervovat:

PostgreSQL Příklad příkazu ALTER TABLE

Potřebujeme změnit název sloupce autor na book_author. Zde je příkaz:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Po spuštění příkazu si můžeme prohlédnout strukturu tabulky:

PostgreSQL Příklad příkazu ALTER TABLE

Název sloupce byl úspěšně změněn.

Nastavení výchozí hodnoty pro sloupec

Můžeme nastavit výchozí hodnotu pro sloupec, takže i když během operací INSERT nezadáme hodnotu pro daný sloupec, bude použita výchozí hodnota. V tomto případě lze použít příkaz ALTER TABLE s následující syntaxí:

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

Název tabulky je název tabulky, jejíž sloupec má být upraven. Název sloupce je název sloupce, jehož výchozí hodnota má být nastavena, a hodnota je výchozí hodnota pro daný sloupec. Uvažujme tabulku Book uvedenou níže:

PostgreSQL Příklad příkazu ALTER TABLE

Musíme nastavit výchozí hodnotu pro sloupec book_author. Můžeme spustit následující příkaz:

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

Nyní vložíme do tabulky řádek:

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

Všimněte si, že jsme vložili hodnoty pouze pro dva sloupce, id a name. Pro sloupec book_author však byla použita výchozí hodnota:

PostgreSQL Příklad příkazu ALTER TABLE

Přidání kontrolního omezení

Kontrolní omezení pomáhá při ověřování záznamů, které se vkládají do tabulky. Toho dosáhneme kombinací příkazu ALTER TABLE s příkazem ADD CHECK. Syntax:

ALTER TABLE table-name ADD CHECK expression;

Název tabulky je název tabulky, která má být změněna, a výraz je omezení, které má být uvaleno na sloupec tabulky. Upravme sloupec book_author tabulky Book tak, aby přijímal pouze hodnoty Nicholas a Samuel:

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

Nyní zkusme vložit jinou hodnotu než Nicholas nebo Samuel do sloupce book_author tabulky Book:

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

Příkaz vrátí následující chybu:

PostgreSQL Příklad příkazu ALTER TABLE

Operace vložení se nezdařila, protože jsme porušili kontrolní podmínku.

Přejmenování tabulky

Zde je syntaxe příkazu ALTER TABLE pro přejmenování tabulky:

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

Název tabulky je aktuální název tabulky a nový název tabulky je nový název, který bude tabulce přiřazen. Například změníme název tabulky Kniha na Knihy:

ALTER TABLE Book
  RENAME TO Books;

Pomocí pgAdmin

Doposud byly akce spouštěny z SQL shellu. Nyní se podívejme, jak lze stejné akce provádět vizuálně pomocí pgAdmin.

Přidání nového sloupce

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigační liště vlevo klikněte na Databáze.
  2. Klepněte na tlačítko Demo.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 3) Zadejte dotaz v editoru dotazů:

ALTER TABLE Book
  ADD author VARCHAR(50);

Krok 4) Klepněte na tlačítko Spustit.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 5) Chcete-li zkontrolovat, zda byl sloupec přidán, postupujte takto:

  1. V levé navigační nabídce klikněte na Databáze.
  2. Rozbalte Demo.
  3. Rozbalte položku Schémata.
  4. Rozbalte položku Veřejné.
  5. Rozbalte tabulky.
  6. Rozbalit knihu.
  7. Rozbalte sloupce.

PostgreSQL Příklad příkazu ALTER TABLE

Sloupec by měl být přidán, jak je znázorněno níže:

PostgreSQL Příklad příkazu ALTER TABLE

Přejmenování sloupce tabulky

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigační liště vlevo klikněte na Databáze.
  2. Klepněte na tlačítko Demo.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 3) Zadejte dotaz v editoru dotazů:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Krok 4) Klepněte na tlačítko Spustit.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 5) Chcete-li zkontrolovat, zda byla změna úspěšná, rozbalte sloupce tabulky knih jako dříve:

PostgreSQL Příklad příkazu ALTER TABLE

Sloupce by nyní měly být následující:

PostgreSQL Příklad příkazu ALTER TABLE

Sloupec byl úspěšně změněn.

Nastavení výchozí hodnoty pro sloupec

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigační liště vlevo klikněte na Databáze.
  2. Klepněte na tlačítko Demo.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 3) Zadejte dotaz v editoru dotazů:

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

Krok 4) Klepněte na tlačítko Spustit.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 5) Pro otestování spusťte v editoru dotazů následující příkaz:

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

Krok 6) Nyní se můžeme dotázat na tabulku a zkontrolovat, zda byla do sloupce book_author vložena výchozí hodnota:

PostgreSQL Příklad příkazu ALTER TABLE

Přidání kontrolního omezení

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigační liště vlevo klikněte na Databáze.
  2. Klepněte na tlačítko Demo.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 3) Zadejte dotaz v editoru dotazů:

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

Krok 4) Klepněte na tlačítko Spustit.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 5) Chcete-li to otestovat, zadejte do editoru dotazů následující dotaz a klikněte na tlačítko Spustit:

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

PostgreSQL Příklad příkazu ALTER TABLE

Vrátí následující:

PostgreSQL Příklad příkazu ALTER TABLE

Přejmenování tabulky

Krok 1) Přihlaste se ke svému účtu pgAdmin.

Krok 2)

  1. Na navigační liště vlevo klikněte na Databáze.
  2. Klepněte na tlačítko Demo.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 3) Zadejte dotaz v editoru dotazů:

ALTER TABLE Book
  RENAME TO Books;

Krok 4) Klepněte na tlačítko Spustit.

PostgreSQL Příklad příkazu ALTER TABLE

Krok 5) Chcete-li zkontrolovat, zda byla tabulka přejmenována, rozbalte Databáze > Demo > Schémata > Veřejné > Tabulky:

PostgreSQL Příklad příkazu ALTER TABLE

Tabulka byla úspěšně přejmenována.

Stáhněte si databázi použitou v tomto kurzu

Nejčastější dotazy

Použijte ALTER TABLE název_tabulky ALTER COLUMN název_sloupce TYPE nový_typ. Přidejte klauzuli USING, pokud je třeba hodnoty převést, například ALTER COLUMN cena TYPE numeric USING cena::numeric. PostgreSQL přepíše sloupec a zkontroluje, zda existující data odpovídají novému typu.

Pouze pokud je výchozí nastavení volatilní. Protože PostgreSQL 11, PŘIDAT SLOUPEC s konstantní výchozí hodnotou aktualizuje katalog okamžitě bez přepisování řádků. Výchozí hodnota, která volá funkci, stále vynutí přepis celé tabulky a silnější zámek.

Ne. PostgreSQL Nelze změnit zavedené omezení. Stávající omezení odstraňte pomocí příkazu DROP CONSTRAINT a opravené omezení přidejte pomocí příkazu ADD CONSTRAINT. Oba příkazy zabalte do transakce, aby tabulka nikdy nezůstala bez pravidla.

Uveďte několik akcí oddělených čárkami: ALTER TABLE Book PŘIDAT SLOUPEC cena int, PŘIDAT SLOUPEC isbn text. PostgreSQL aplikuje každou změnu v jednom průchodu, což je rychlejší a udržuje tabulku konzistentní.

Použijte ALTER TABLE table_name ADD PRIMARY KEY (sloupec) nebo ADD CONSTRAINT pk_name PRIMARY KEY (sloupec). Sloupec musí obsahovat jedinečné, nenulové hodnoty; PostgreSQL automaticky vytvoří podpůrný jedinečný index při vytvoření klíče.

Příkaz RENAME aktualizuje pouze název tabulky v systémovém katalogu. Uložené řádky, indexy a omezení zůstávají na místě a nejsou ovlivněny. Pohledy nebo funkce, které odkazují na starý název, mohou být i nadále potřeba aktualizovat.

Asistenti umělé inteligence navrhují skripty ALTER TABLE z popsané změny, správně řadí kroky ADD, RENAME a constraint a přidávají klauzule USING pro přetypování typů. Také označují operace, které přepisují velké tabulky nebo drží těžké zámky.

Ano. AI Copilot kontroluje migraci, varuje před uzamčením nebo přepisováním celé tabulky, navrhuje dávkové nebo souběžné sestavení indexů a doporučuje zalamování.ping změny v transakci, což usnadňuje nasazení aktualizací schématu.

Shrňte tento příspěvek takto: