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.

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:
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í:
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:
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:
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:
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:
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:
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)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz v editoru dotazů:
ALTER TABLE Book ADD author VARCHAR(50);
Krok 4) Klepněte na tlačítko Spustit.
Krok 5) Chcete-li zkontrolovat, zda byl sloupec přidán, postupujte takto:
- V levé navigační nabídce klikněte na Databáze.
- Rozbalte Demo.
- Rozbalte položku Schémata.
- Rozbalte položku Veřejné.
- Rozbalte tabulky.
- Rozbalit knihu.
- Rozbalte sloupce.
Sloupec by měl být přidán, jak je znázorněno níže:
Přejmenování sloupce tabulky
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz v editoru dotazů:
ALTER TABLE Book RENAME COLUMN author TO book_author;
Krok 4) Klepněte na tlačítko Spustit.
Krok 5) Chcete-li zkontrolovat, zda byla změna úspěšná, rozbalte sloupce tabulky knih jako dříve:
Sloupce by nyní měly být následující:
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)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
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.
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:
Přidání kontrolního omezení
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
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.
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');
Vrátí následující:
Přejmenování tabulky
Krok 1) Přihlaste se ke svému účtu pgAdmin.
Krok 2)
- Na navigační liště vlevo klikněte na Databáze.
- Klepněte na tlačítko Demo.
Krok 3) Zadejte dotaz v editoru dotazů:
ALTER TABLE Book RENAME TO Books;
Krok 4) Klepněte na tlačítko Spustit.
Krok 5) Chcete-li zkontrolovat, zda byla tabulka přejmenována, rozbalte Databáze > Demo > Schémata > Veřejné > Tabulky:
Tabulka byla úspěšně přejmenována.
Stáhněte si databázi použitou v tomto kurzu

























