PostgreSQL ENDRE TABELL: Legg til og gi nytt navn til kolonne

⚡ Smart oppsummering

PostgreSQL ALTER TABLE endrer strukturen til en eksisterende tabell, slik at du kan legge til eller slette kolonner, gi nytt navn til en kolonne eller hele tabellen, angi standardverdier og legge til kontrollbegrensninger uten å opprette objektet på nytt.

  • 🧱 Syntaks: Handlingen ALTER TABLE tabellnavn utfører én strukturell endring per setning.
  • Legg til kolonne: Datatypen ADD kolonnenavn legger til en ny kolonne i tabellen.
  • ✏️ Gi nytt navn: ENDR NAVN PÅ KOLONNE og ENDR NAVN FOR Å endre et kolonnenavn eller tabellnavnet.
  • ⚙️ Standardverdi: ALTER COLUMN SET DEFAULT angir en verdi for fremtidige INSERT-rader.
  • 🛡️ Sjekkbegrensning: ADD CHECK validerer nye data og avviser verdier som ikke oppfyller regelen.
  • 🤖 AI-migrasjoner: AI-assistenter utarbeider ALTER TABLE-skript og gjennomgår dem for sikker distribusjon.

PostgreSQL ALTER TABLE

Hva er ALTER TABLE i PostgreSQL?

Ocuco ALTER TABLE kommandoen brukes til å endre strukturen til en PostgreSQL tabell. Det er kommandoen som brukes til å endre tabellkolonnene eller navnet på selve tabellen, uten å sletteping og gjenskape objektet.

syntax

Her er syntaksen for PostgreSQL ALTER TABLE kommando:

ALTER TABLE table-name action;

Parameteren table-name er navnet på tabellen du må endre. Parameteren action er handlingen du må utføre, for eksempel å endre navnet på en kolonne eller endre datatypen til en kolonne.

Tekniske beskrivelser

ALTER TABLE-kommandoen endrer definisjonen av en eksisterende tabell. Det tar følgende underskjemaer:

  • LEGG TIL KOLONNEDenne bruker lignende syntaks som CREATE TABLE-kommandoen for å legge til en ny kolonne i en tabell.
  • DROPPE KOLONNE: for slippping en tabellkolonne. Begrensningene og indeksene som er pålagt kolonnene, vil også bli fjernet.
  • SET/DROPP STANDARDbrukes til å angi eller fjerne standardverdien for en kolonne. Endringen gjelder bare for påfølgende INSERT setninger.
  • SET/DROP NOT NULL: endrer om en kolonne tillater nullverdier eller ikke.
  • ANGI STATISTIKK: for å angi målet for statistikkinnsamling for hver kolonne for ANALYZE-operasjoner.
  • STILL LAGRING: for å angi lagringsmodus for en kolonne, enten innebygd eller i en tilleggstabell.
  • SATT UTEN OIDbrukes til å fjerne den gamle OID-kolonnen i tabellen.
  • RENAME: for å endre tabellnavnet eller et kolonnenavn.
  • ADD table_constraint: brukes til å legge til en ny begrensning i en tabell. Den bruker samme syntaks som LAG TABELL kommando.
  • DROPKONTRASTbrukes til slippping en tabellbegrensning.
  • EIER: for å endre eieren av en tabell, sekvens, indeks eller visning til en bestemt bruker.
  • CLUSTER: for å markere en tabell som skal brukes til fremtidige klyngeoperasjoner.

Endre en kolonne

En kolonne kan endres på en rekke måter. Slike endringer gjøres ved hjelp av ALTER TABLE-kommandoen. La oss diskutere disse nedenfor.

Legge til en ny kolonne

For å legge til en ny kolonne i en PostgreSQL tabell, brukes ALTER TABLE-kommandoen med følgende syntaks:

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

Tabellnavnet er navnet på tabellen som skal endres. Det nye kolonnenavnet er navnet på den nye kolonnen som skal legges til. Kolonnedefinisjonen er data-type for den nye kolonnen. Se boktabellen vist nedenfor:

PostgreSQL Eksempel på ALTER TABLE

Tabellen har to kolonner, id og name. Vi må legge til en ny kolonne i tabellen og gi den navnet author. Bare kjør følgende kommando:

ALTER TABLE Book
  ADD author VARCHAR(50);

Etter å ha kjørt kommandoen ovenfor, er boktabellen nå som følger:

PostgreSQL Eksempel på ALTER TABLE

Den nye kolonnen ble lagt til.

Gi nytt navn til en tabellkolonne

Vi kan bruke ALTER TABLE-kommandoen til å endre navnet på en kolonne. I dette tilfellet brukes kommandoen med følgende syntaks:

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

Tabellnavnet er navnet på tabellen hvis kolonne skal gis nytt navn. Gammelt navn er det nåværende navnet på kolonnen, og nytt navn er det nye navnet på kolonnen. Tenk på tabellboken vist nedenfor:

Bok:

PostgreSQL Eksempel på ALTER TABLE

Vi må endre navnet på kolonneforfatteren til book_author. Her er kommandoen:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Etter å ha kjørt kommandoen, kan vi se strukturen til tabellen:

PostgreSQL Eksempel på ALTER TABLE

Kolonnenavnet ble endret.

Angi en standardverdi for en kolonne

Vi kan angi en standardverdi for en kolonne, slik at selv om du ikke angir en verdi for kolonnen under INSERT-operasjoner, vil standardverdien bli brukt. I dette tilfellet kan ALTER TABLE-kommandoen brukes med følgende syntaks:

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

Tabellnavnet er navnet på tabellen hvis kolonne skal endres. Kolonnenavnet er navnet på kolonnen hvis standardverdi skal angis, og verdien er standardverdien for kolonnen. Tenk deg boktabellen nedenfor:

PostgreSQL Eksempel på ALTER TABLE

Vi må angi en standardverdi for book_author-kolonnen. Vi kan kjøre følgende kommando:

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

La oss nå sette inn en rad i tabellen:

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

Merk at vi bare har satt inn verdier for to kolonner, id og name. Standardverdien er imidlertid brukt for book_author-kolonnen:

PostgreSQL Eksempel på ALTER TABLE

Legge til en sjekkbegrensning

En kontrollbegrensning hjelper til med å validere postene som settes inn i en tabell. Vi kan gjøre dette ved å kombinere ALTER TABLE-kommandoen med ADD CHECK-setningen. Syntaks:

ALTER TABLE table-name ADD CHECK expression;

Tabellnavnet er navnet på tabellen som skal endres, og uttrykket er begrensningen som skal legges på tabellkolonnen. La oss endre book_author-kolonnen i boktabellen slik at den bare godtar verdiene Nicholas og Samuel:

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

La oss nå prøve å sette inn en annen verdi enn Nicholas eller Samuel i book_author-kolonnen i boktabellen:

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

Utsagnet vil returnere følgende feil:

PostgreSQL Eksempel på ALTER TABLE

Innsettingsoperasjonen mislyktes fordi vi brøt kontrollbegrensningen.

Gi nytt navn til en tabell

Her er syntaksen for ALTER TABLE-kommandoen for å gi nytt navn til en tabell:

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

Tabellnavnet er det nåværende navnet på tabellen, og det nye tabellnavnet er det nye navnet som skal tilordnes tabellen. La oss for eksempel endre navnet på boktabellen til bøker:

ALTER TABLE Book
  RENAME TO Books;

Bruker pgAdmin

Så langt har handlingene blitt kjørt fra SQL-skallet. La oss nå se hvordan de samme handlingene kan utføres visuelt ved hjelp av pgAdmin.

Legge til en ny kolonne

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

PostgreSQL Eksempel på ALTER TABLE

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

ALTER TABLE Book
  ADD author VARCHAR(50);

Trinn 4) Klikk på Utfør-knappen.

PostgreSQL Eksempel på ALTER TABLE

Trinn 5) For å sjekke om kolonnen ble lagt til, gjør følgende:

  1. Klikk på Databaser fra venstre navigering.
  2. Utvid Demo.
  3. Utvid skjemaer.
  4. Utvid offentlig.
  5. Utvid tabeller.
  6. Utvid boken.
  7. Utvid kolonner.

PostgreSQL Eksempel på ALTER TABLE

Kolonnen skulle ha blitt lagt til, som vist nedenfor:

PostgreSQL Eksempel på ALTER TABLE

Gi nytt navn til en tabellkolonne

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

PostgreSQL Eksempel på ALTER TABLE

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Trinn 4) Klikk på Utfør-knappen.

PostgreSQL Eksempel på ALTER TABLE

Trinn 5) For å sjekke om endringen var vellykket, utvider du boktabellkolonnene som før:

PostgreSQL Eksempel på ALTER TABLE

Kolonnene skal nå være som følger:

PostgreSQL Eksempel på ALTER TABLE

Kolonnen ble endret.

Angi en standardverdi for en kolonne

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

PostgreSQL Eksempel på ALTER TABLE

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

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

Trinn 4) Klikk på Utfør-knappen.

PostgreSQL Eksempel på ALTER TABLE

Trinn 5) For å teste, kjør følgende kommando i spørreredigeringsprogrammet:

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

Trinn 6) Nå kan vi spørre tabellen for å sjekke om standardverdien ble satt inn i book_author-kolonnen:

PostgreSQL Eksempel på ALTER TABLE

Legge til en sjekkbegrensning

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

PostgreSQL Eksempel på ALTER TABLE

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

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

Trinn 4) Klikk på Utfør-knappen.

PostgreSQL Eksempel på ALTER TABLE

Trinn 5) For å teste dette, skriv inn følgende spørring i spørreredigeringsprogrammet og klikk på Utfør-knappen:

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

PostgreSQL Eksempel på ALTER TABLE

Det vil returnere følgende:

PostgreSQL Eksempel på ALTER TABLE

Gi nytt navn til en tabell

Trinn 1) Logg på pgAdmin-kontoen din.

Trinn 2)

  1. Fra navigasjonslinjen til venstre klikker du på Databaser.
  2. Klikk på Demo.

PostgreSQL Eksempel på ALTER TABLE

Trinn 3) Skriv inn søket i spørringsredigeringsprogrammet:

ALTER TABLE Book
  RENAME TO Books;

Trinn 4) Klikk på Utfør-knappen.

PostgreSQL Eksempel på ALTER TABLE

Trinn 5) For å sjekke om tabellen har fått nytt navn, utvid Databaser > Demo > Skjemaer > Offentlig > Tabeller:

PostgreSQL Eksempel på ALTER TABLE

Tabellen ble omdøpt.

Last ned databasen som brukes i denne opplæringen

Spørsmål og svar

Bruk ALTER TABLE tabellnavn ALTER COLUMN kolonnenavn TYPE ny_type. Legg til en USING-klausul når verdier må konverteres, for eksempel ALTER COLUMN price TYPE numerisk USING price::numeric. PostgreSQL skriver kolonnen på nytt og kontrollerer at eksisterende data passer til den nye typen.

Bare hvis misligholdet er volatilt. Siden PostgreSQL 11, LEGG TIL KOLONNE med en konstant standard oppdaterer katalogen umiddelbart uten å omskrive rader. En standard som kaller en funksjon tvinger fortsatt frem en fullstendig omskriving av tabellen og en sterkere lås.

Nei. PostgreSQL kan ikke endre en begrensning som er på plass. Fjern den eksisterende med DROP CONSTRAINT, og legg deretter til den korrigerte med ADD CONSTRAINT. Pakk begge setningene inn i en transaksjon slik at tabellen aldri blir stående uten regelen.

List opp flere handlinger atskilt med komma: ALTER TABLE Bok LEGG TIL KOLONNE pris int, LEGG TIL KOLONNE isbn tekst. PostgreSQL anvender hver endring i én omgang, noe som er raskere og holder tabellen konsistent.

Bruk ALTER TABLE tabellnavn ADD PRIMARY KEY (kolonne) eller ADD CONSTRAINT pk_name PRIMARY KEY (kolonne). Kolonnen må inneholde unike verdier som ikke er null; PostgreSQL bygger automatisk en støttende unik indeks når nøkkelen opprettes.

RENAME oppdaterer bare tabellens navn i systemkatalogen. De lagrede radene, indeksene og begrensningene forblir på plass og påvirkes ikke. Visninger eller funksjoner som refererer til det gamle navnet, må kanskje oppdateres etterpå.

AI-assistenter utarbeider ALTER TABLE-skript fra en beskrevet endring, ordner ADD-, RENAME- og begrensningstrinn riktig, og legger til USING-klausuler for typekonverteringer. De flagger også operasjoner som omskriver store tabeller eller inneholder tunge låser.

Ja. En AI-copilot gjennomgår en migrering, advarer om låsing eller omskriving av fullstendige tabeller, foreslår batching eller samtidige indeksbygg og anbefaler wrap.ping endringer i en transaksjon, noe som gjør skjemaoppdateringer tryggere å distribuere.

Oppsummer dette innlegget med: