PostgreSQL ÄNDRING AV TABELL: Lägg till och byt namn på kolumn

⚡ Smart sammanfattning

PostgreSQL ALTER TABLE ändrar strukturen i en befintlig tabell, vilket låter dig lägga till eller ta bort kolumner, byta namn på en kolumn eller hela tabellen, ange standardvärden och koppla kontrollbegränsningar utan att återskapa objektet.

  • 🧱 Syntax: Åtgärden ALTER TABLE tabellnamn utför en strukturell ändring per sats.
  • Lägg till kolumn: Datatypen ADD kolumnnamn lägger till en ny kolumn i tabellen.
  • ✏️ Döp om: BYT NAMN PÅ KOLUMN och BYT NAMN FÖR att ändra ett kolumnnamn eller tabellnamnet.
  • ⚙️ Standardvärde: ALTER COLUMN SET DEFAULT anger ett värde för framtida INSERT-rader.
  • 🛡️ Kontrollbegränsning: LÄGG TILL KONTROLL validerar nya data och avvisar värden som inte uppfyller regeln.
  • 🤖 AI-migreringar: AI-assistenter utarbetar ALTER TABLE-skript och granskar dem för säker distribution.

PostgreSQL ALTER TABLE

Vad är ALTER TABLE i PostgreSQL?

Ocuco-landskapet ALTER TABLE kommandot används för att ändra strukturen hos en PostgreSQL tabell. Det är kommandot som används för att ändra tabellkolumnerna eller namnet på själva tabellen, utan att släppaping och återskapa objektet.

syntax

Här är syntaxen för PostgreSQL ALTER TABLE kommando:

ALTER TABLE table-name action;

Parametern table-name är namnet på den tabell som du behöver ändra. Parametern action är den åtgärd du behöver utföra, till exempel att ändra namnet på en kolumn eller ändra datatypen för en kolumn.

BESKRIVNING

Kommandot ALTER TABLE ändrar definitionen av en befintlig tabell. Det tar följande underformulär:

  • LÄGG TILL KOLUMNDetta använder liknande syntax som CREATE TABLE-kommandot för att lägga till en ny kolumn i en tabell.
  • SLIPP KOLUMNför droppeping en tabellkolumn. De begränsningar och index som tillämpas på kolumnerna kommer också att tas bort.
  • SET/DROPP STANDARD: används för att ställa in eller ta bort standardvärdet för en kolumn. Ändringen gäller endast för efterföljande INFOGA uttalanden.
  • SET/DROP NOT NULL: ändrar om en kolumn tillåter null-värden eller inte.
  • STÄLL IN STATISTIK: för att ställa in målet för statistikinsamling för varje kolumn för ANALYZE-operationer.
  • STÄLL IN FÖRVARING: för att ställa in lagringsläge för en kolumn, oavsett om det är inline eller i en kompletterande tabell.
  • SÄTT UTAN OIDanvänds för att ta bort den gamla OID-kolumnen i tabellen.
  • DÖPA OM: för att ändra tabellnamnet eller ett kolumnnamn.
  • ADD table_constraintanvänds för att lägga till en ny begränsning i en tabell. Den använder samma syntax som SKAPA BORD kommando.
  • DROPKONTRASTanvänds för att släppaping en tabellbegränsning.
  • ÄGARE: för att ändra ägaren av en tabell, sekvens, index eller vy till en viss användare.
  • KLUNGA: för att markera en tabell som ska användas för framtida klusteråtgärder.

Ändra en kolumn

En kolumn kan ändras på flera olika sätt. Sådana ändringar görs med hjälp av kommandot ALTER TABLE. Låt oss diskutera dessa nedan.

Lägga till en ny kolumn

För att lägga till en ny kolumn i en PostgreSQL tabell används kommandot ALTER TABLE med följande syntax:

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

Tabellnamnet är namnet på tabellen som ska ändras. Det nya kolumnnamnet är namnet på den nya kolumnen som ska läggas till. Kolumndefinitionen är data typ för den nya kolumnen. Se boktabellen nedan:

PostgreSQL Exempel på ALTER TABLE

Tabellen har två kolumner, id och name. Vi behöver lägga till en ny kolumn i tabellen och ge den namnet author. Kör bara följande kommando:

ALTER TABLE Book
  ADD author VARCHAR(50);

Efter att ha kört kommandot ovan är boktabellen nu som följer:

PostgreSQL Exempel på ALTER TABLE

Den nya kolumnen lades till.

Byta namn på en tabellkolumn

Vi kan använda kommandot ALTER TABLE för att ändra namnet på en kolumn. I det här fallet används kommandot med följande syntax:

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

Tabellnamnet är namnet på tabellen vars kolumn ska bytas namn. Gammalt namn är kolumnens nuvarande namn och nytt namn är kolumnens nya namn. Betrakta tabellboken som visas nedan:

Bok:

PostgreSQL Exempel på ALTER TABLE

Vi behöver ändra namnet på kolumnens författare till book_author. Här är kommandot:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Efter att ha kört kommandot kan vi se tabellens struktur:

PostgreSQL Exempel på ALTER TABLE

Kolumnnamnet har ändrats.

Ställa in ett standardvärde för en kolumn

Vi kan ange ett standardvärde för en kolumn så att även om du inte anger något värde för den kolumnen under INSERT-operationer, kommer standardvärdet att användas. I det här fallet kan ALTER TABLE-kommandot användas med följande syntax:

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

Tabellnamnet är namnet på tabellen vars kolumn ska ändras. Kolumnnamnet är namnet på kolumnen vars standardvärde ska anges, och värdet är standardvärdet för kolumnen. Betrakta boktabellen nedan:

PostgreSQL Exempel på ALTER TABLE

Vi måste ställa in ett standardvärde för kolumnen book_author. Vi kan köra följande kommando:

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

Låt oss nu infoga en rad i tabellen:

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

Observera att vi bara infogade värden för två kolumner, id och name. Standardvärdet har dock använts för kolumnen book_author:

PostgreSQL Exempel på ALTER TABLE

Lägga till en kontrollbegränsning

En kontrollbegränsning hjälper till att validera de poster som infogas i en tabell. Vi kan göra detta genom att kombinera kommandot ALTER TABLE med ADD CHECK-satsen. Syntax:

ALTER TABLE table-name ADD CHECK expression;

Tabellnamnet är namnet på den tabell som ska ändras, och uttrycket är den begränsning som ska tillämpas på tabellkolumnen. Låt oss modifiera kolumnen book_author i tabellen Book så att den bara accepterar värdena Nicholas och Samuel:

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

Låt oss nu försöka infoga ett annat värde än Nicholas eller Samuel i book_author-kolumnen i boktabellen:

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

Uttalandet kommer att returnera följande fel:

PostgreSQL Exempel på ALTER TABLE

Infogningen misslyckades eftersom vi brutit mot kontrollbegränsningen.

Byta namn på en tabell

Här är syntaxen för kommandot ALTER TABLE för att byta namn på en tabell:

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

Tabellnamnet är tabellens nuvarande namn och det nya tabellnamnet är det nya namnet som ska tilldelas tabellen. Låt oss till exempel ändra namnet på boktabellen till böcker:

ALTER TABLE Book
  RENAME TO Books;

Använder pgAdmin

Hittills har åtgärderna körts från SQL-skalet. Nu ska vi se hur samma åtgärder kan utföras visuellt med hjälp av pgAdmin.

Lägga till en ny kolumn

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

PostgreSQL Exempel på ALTER TABLE

Steg 3) Skriv in frågan i frågeredigeraren:

ALTER TABLE Book
  ADD author VARCHAR(50);

Steg 4) Klicka på knappen Kör.

PostgreSQL Exempel på ALTER TABLE

Steg 5) Gör följande för att kontrollera om kolumnen har lagts till:

  1. Klicka på Databaser i den vänstra navigeringen.
  2. Expandera Demo.
  3. Expandera scheman.
  4. Expandera offentligt.
  5. Expandera tabeller.
  6. Utöka boken.
  7. Expandera kolumner.

PostgreSQL Exempel på ALTER TABLE

Kolumnen borde ha lagts till, som visas nedan:

PostgreSQL Exempel på ALTER TABLE

Byta namn på en tabellkolumn

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

PostgreSQL Exempel på ALTER TABLE

Steg 3) Skriv in frågan i frågeredigeraren:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Steg 4) Klicka på knappen Kör.

PostgreSQL Exempel på ALTER TABLE

Steg 5) För att kontrollera om ändringen lyckades, expandera boktabellens kolumner som tidigare:

PostgreSQL Exempel på ALTER TABLE

Kolumnerna ska nu vara följande:

PostgreSQL Exempel på ALTER TABLE

Kolumnen har ändrats.

Ställa in ett standardvärde för en kolumn

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

PostgreSQL Exempel på ALTER TABLE

Steg 3) Skriv in frågan i frågeredigeraren:

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

Steg 4) Klicka på knappen Kör.

PostgreSQL Exempel på ALTER TABLE

Steg 5) För att testa, kör följande kommando i frågeredigeraren:

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

Steg 6) Nu kan vi fråga tabellen för att kontrollera om standardvärdet infogades i kolumnen book_author:

PostgreSQL Exempel på ALTER TABLE

Lägga till en kontrollbegränsning

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

PostgreSQL Exempel på ALTER TABLE

Steg 3) Skriv in frågan i frågeredigeraren:

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

Steg 4) Klicka på knappen Kör.

PostgreSQL Exempel på ALTER TABLE

Steg 5) För att testa detta, skriv följande fråga i frågeredigeraren och klicka på knappen Kör:

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

PostgreSQL Exempel på ALTER TABLE

Det kommer att returnera följande:

PostgreSQL Exempel på ALTER TABLE

Byta namn på en tabell

Steg 1) Logga in på ditt pgAdmin-konto.

Steg 2)

  1. Klicka på Databaser i navigeringsfältet till vänster.
  2. Klicka på Demo.

PostgreSQL Exempel på ALTER TABLE

Steg 3) Skriv in frågan i frågeredigeraren:

ALTER TABLE Book
  RENAME TO Books;

Steg 4) Klicka på knappen Kör.

PostgreSQL Exempel på ALTER TABLE

Steg 5) För att kontrollera om tabellen har bytt namn, expandera Databaser > Demo > Scheman > Offentliga > Tabeller:

PostgreSQL Exempel på ALTER TABLE

Tabellen har bytt namn.

Ladda ner den databas som används i denna handledning

Vanliga frågor

Använd ALTER TABLE tabellnamn ALTER COLUMN kolumnnamn TYPE ny_typ. Lägg till en USING-klausul när värden behöver konverteras, till exempel ALTER COLUMN price TYPE numerisk USING price::numeric. PostgreSQL skriver om kolumnen och kontrollerar att befintliga data passar den nya typen.

Endast om fallissemanget är volatilt. Eftersom PostgreSQL 11, LÄGG TILL KOLUMN med en konstant standardvärde uppdaterar katalogen direkt utan att raderna ska skrivas om. En standardvärde som anropar en funktion tvingar fortfarande fram en fullständig tabellomskrivning och ett starkare lås.

Nej. PostgreSQL kan inte ändra en begränsning på plats. Ta bort den befintliga med DROP CONSTRAINT och lägg sedan till den korrigerade med ADD CONSTRAINT. Slå in båda satserna i en transaktion så att tabellen aldrig lämnas utan regeln.

Lista flera åtgärder separerade med kommatecken: ALTER TABLE Bok LÄGG TILL KOLUMN pris int, LÄGG TILL KOLUMN isbn text. PostgreSQL tillämpar varje ändring i ett enda svep, vilket är snabbare och håller tabellen konsekvent.

Använd ALTER TABLE tabellnamn ADD PRIMARY KEY (kolumn) eller ADD CONSTRAINT pk_name PRIMARY KEY (kolumn). Kolumnen måste innehålla unika värden som inte är null; PostgreSQL bygger automatiskt ett stödjande unikt index när nyckeln skapas.

RENAME uppdaterar bara tabellens namn i systemkatalogen. De lagrade raderna, indexen och begränsningarna finns kvar och påverkas inte. Vyer eller funktioner som refererar till det gamla namnet kan fortfarande behöva uppdateras efteråt.

AI-assistenter utarbetar ALTER TABLE-skript från en beskriven ändring, ordnar ADD-, RENAME- och begränsningssteg korrekt och lägger till USING-klausuler för typomvandlingar. De flaggar också operationer som skriver om stora tabeller eller innehåller tunga lås.

Ja. En AI-copilot granskar en migrering, varnar för låsning eller omskrivning av fullständiga tabeller, föreslår batch- eller samtidiga indexbyggen och rekommenderar omslag.ping ändringar i en transaktion, vilket gör schemauppdateringar säkrare att distribuera.

Sammanfatta detta inlägg med: