PostgreSQL ÆNDRE TABEL: Tilføj og omdøb kolonne

⚡ Smart opsummering

PostgreSQL ALTER TABLE ændrer strukturen af ​​en eksisterende tabel, så du kan tilføje eller slette kolonner, omdøbe en kolonne eller hele tabellen, angive standardværdier og tilføje kontrolbegrænsninger uden at genskabe objektet.

  • 🧱 Syntaks: Handlingen ALTER TABLE tabelnavn udfører én strukturel ændring pr. sætning.
  • Tilføj kolonne: Datatypen ADD kolonnenavn tilføjer en ny kolonne til tabellen.
  • ✏️ Omdøb: OMDØB KOLONNE og OMDØB FOR at ændre et kolonnenavn eller tabelnavnet.
  • 🇧🇷 Standardværdi: ALTER COLUMN SET DEFAULT angiver en værdi til fremtidige INSERT-rækker.
  • 🛡️ Kontrolbegrænsning: ADD CHECK validerer nye data og afviser værdier, der ikke overholder reglen.
  • 🤖 AI-migrationer: AI-assistenter udarbejder ALTER TABLE-scripts og gennemgår dem med henblik på sikker implementering.

PostgreSQL ALTER TABEL

Hvad er ALTER TABLE i PostgreSQL?

ALTER TABEL Kommandoen bruges til at ændre strukturen af ​​en PostgreSQL tabel. Det er kommandoen, der bruges til at ændre tabelkolonnerne eller navnet på selve tabellen uden at sletteping og genskaber objektet.

Syntaks

Her er syntaksen for PostgreSQL ALTER TABLE kommando:

ALTER TABLE table-name action;

Parameteren table-name er navnet på den tabel, du skal ændre. Parameteren action er den handling, du skal udføre, f.eks. at ændre navnet på en kolonne eller ændre datatypen for en kolonne.

Beskrivelse

ALTER TABLE-kommandoen ændrer definitionen af ​​en eksisterende tabel. Det tager følgende underformularer:

  • TILFØJ KOLONNEDenne kommando bruger en lignende syntaks som CREATE TABLE-kommandoen til at tilføje en ny kolonne til en tabel.
  • SLIP KOLONNE: til dropping en tabelkolonne. De begrænsninger og indekser, der er pålagt kolonnerne, vil også blive fjernet.
  • INDSTIL/SLIP STANDARDbruges til at indstille eller fjerne standardværdien for en kolonne. Ændringen gælder kun for efterfølgende INDSÆT udsagn.
  • SET/DROP IKKE NULL: ændrer om en kolonne tillader nuller eller ej.
  • INDSTIL STATISTIK: til at indstille målet for statistikindsamling for hver kolonne for ANALYZE-operationer.
  • SÆT OPBEVARING: til indstilling af lagringstilstanden for en kolonne, uanset om den er indlejret eller i en supplerende tabel.
  • SÆT UDEN OIDbruges til at fjerne den gamle OID-kolonne i tabellen.
  • OMDØB: for at ændre tabelnavnet eller et kolonnenavn.
  • ADD table_constraintbruges til at tilføje en ny begrænsning til en tabel. Den bruger den samme syntaks som Opret tabel kommando.
  • DROP KONTRASTbruges til dropping en tabelbegrænsning.
  • EJER: til at ændre ejeren af ​​en tabel, sekvens, indeks eller visning til en bestemt bruger.
  • CLUSTER: til at markere en tabel, der skal bruges til fremtidige klyngeoperationer.

Ændring af en kolonne

En kolonne kan ændres på en række måder. Sådanne ændringer udføres ved hjælp af ALTER TABLE-kommandoen. Lad os diskutere disse nedenfor.

Tilføjelse af en ny kolonne

For at tilføje en ny kolonne til en PostgreSQL tabel, bruges ALTER TABLE-kommandoen med følgende syntaks:

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

Tabelnavnet er navnet på den tabel, der skal ændres. Det nye kolonnenavn er navnet på den nye kolonne, der skal tilføjes. Kolonnedefinitionen er datatype af den nye kolonne. Se bogtabellen vist nedenfor:

PostgreSQL Eksempel på ÆNDR TABEL

Tabellen har to kolonner, id og name. Vi skal tilføje en ny kolonne til tabellen og give den navnet author. Kør blot følgende kommando:

ALTER TABLE Book
  ADD author VARCHAR(50);

Efter at have kørt ovenstående kommando, er bogtabellen nu som følger:

PostgreSQL Eksempel på ÆNDR TABEL

Den nye kolonne blev tilføjet.

Omdøbning af en tabelkolonne

Vi kan bruge kommandoen ALTER TABLE til at ændre navnet på en kolonne. I dette tilfælde bruges kommandoen med følgende syntaks:

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

Tabelnavnet er navnet på den tabel, hvis kolonne skal omdøbes. Det gamle navn er kolonnens nuværende navn, og det nye navn er kolonnens nye navn. Betragt tabelbogen vist nedenfor:

Bestil:

PostgreSQL Eksempel på ÆNDR TABEL

Vi skal ændre navnet på kolonneforfatteren til book_author. Her er kommandoen:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Efter at have kørt kommandoen kan vi se tabellens struktur:

PostgreSQL Eksempel på ÆNDR TABEL

Kolonnenavnet blev ændret.

Indstilling af en standardværdi for en kolonne

Vi kan indstille en standardværdi for en kolonne, så selv når du ikke angiver en værdi for den pågældende kolonne under INSERT-operationer, vil standardværdien blive brugt. I dette tilfælde kan ALTER TABLE-kommandoen bruges med følgende syntaks:

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

Tabelnavnet er navnet på den tabel, hvis kolonne skal ændres. Kolonnenavnet er navnet på den kolonne, hvis standardværdi skal indstilles, og værdien er standardværdien for kolonnen. Betragt bogtabellen nedenfor:

PostgreSQL Eksempel på ÆNDR TABEL

Vi skal indstille en standardværdi for kolonnen bogforfatter. Vi kan køre følgende kommando:

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

Lad os nu indsætte en række i tabellen:

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

Bemærk, at vi kun har indsat værdier for to kolonner, id og name. Standardværdien er dog blevet brugt til book_author-kolonnen:

PostgreSQL Eksempel på ÆNDR TABEL

Tilføjelse af en kontrolbegrænsning

En kontrolbegrænsning hjælper med at validere de poster, der indsættes i en tabel. Vi kan gøre dette ved at kombinere ALTER TABLE-kommandoen med ADD CHECK-sætningen. Syntaks:

ALTER TABLE table-name ADD CHECK expression;

Tabelnavnet er navnet på den tabel, der skal ændres, og udtrykket er den begrænsning, der skal pålægges tabelkolonnen. Lad os ændre book_author-kolonnen i bogtabellen, så den kun accepterer værdierne Nicholas og Samuel:

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

Lad os nu prøve at indsætte en anden værdi end Nicholas eller Samuel i book_author-kolonnen i bogtabellen:

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

Udsagnet vil returnere følgende fejl:

PostgreSQL Eksempel på ÆNDR TABEL

Indsættelseshandlingen mislykkedes, fordi vi overtrådte kontrolbegrænsningen.

Omdøbning af en tabel

Her er syntaksen for ALTER TABLE-kommandoen til at omdøbe en tabel:

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

Tabelnavnet er tabellens nuværende navn, og det nye tabelnavn er det nye navn, der skal tildeles tabellen. Lad os for eksempel ændre navnet på bogtabellen til bøger:

ALTER TABLE Book
  RENAME TO Books;

Bruger pgAdmin

Indtil videre er handlingerne blevet udført fra SQL-shell'en. Lad os nu se, hvordan de samme handlinger kan udføres visuelt ved hjælp af pgAdmin.

Tilføjelse af en ny kolonne

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Klik på Databaser i navigationslinjen til venstre.
  2. Klik på Demo.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 3) Indtast forespørgslen i forespørgselseditoren:

ALTER TABLE Book
  ADD author VARCHAR(50);

Trin 4) Klik på knappen Udfør.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 5) For at kontrollere, om kolonnen blev tilføjet, skal du gøre følgende:

  1. Klik på Databaser i venstre navigation.
  2. Udvid Demo.
  3. Udvid skemaer.
  4. Udvid offentlig.
  5. Udvid tabeller.
  6. Udvid bogen.
  7. Udvid kolonner.

PostgreSQL Eksempel på ÆNDR TABEL

Kolonnen skulle være tilføjet, som vist nedenfor:

PostgreSQL Eksempel på ÆNDR TABEL

Omdøbning af en tabelkolonne

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Klik på Databaser i navigationslinjen til venstre.
  2. Klik på Demo.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 3) Indtast forespørgslen i forespørgselseditoren:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Trin 4) Klik på knappen Udfør.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 5) For at kontrollere om ændringen var vellykket, skal du udvide bogtabellens kolonner som før:

PostgreSQL Eksempel på ÆNDR TABEL

Kolonnerne skal nu være som følger:

PostgreSQL Eksempel på ÆNDR TABEL

Kolonnen blev ændret.

Indstilling af en standardværdi for en kolonne

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Klik på Databaser i navigationslinjen til venstre.
  2. Klik på Demo.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 3) Indtast forespørgslen i forespørgselseditoren:

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

Trin 4) Klik på knappen Udfør.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 5) For at teste skal du køre følgende kommando i forespørgselseditoren:

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

Trin 6) Nu kan vi forespørge i tabellen for at kontrollere, om standardværdien blev indsat i kolonnen bogforfatter:

PostgreSQL Eksempel på ÆNDR TABEL

Tilføjelse af en kontrolbegrænsning

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Klik på Databaser i navigationslinjen til venstre.
  2. Klik på Demo.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 3) Indtast forespørgslen i forespørgselseditoren:

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

Trin 4) Klik på knappen Udfør.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 5) For at teste dette skal du skrive følgende forespørgsel i forespørgselseditoren og klikke på knappen Udfør:

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

PostgreSQL Eksempel på ÆNDR TABEL

Det vil returnere følgende:

PostgreSQL Eksempel på ÆNDR TABEL

Omdøbning af en tabel

Trin 1) Log ind på din pgAdmin-konto.

Trin 2)

  1. Klik på Databaser i navigationslinjen til venstre.
  2. Klik på Demo.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 3) Indtast forespørgslen i forespørgselseditoren:

ALTER TABLE Book
  RENAME TO Books;

Trin 4) Klik på knappen Udfør.

PostgreSQL Eksempel på ÆNDR TABEL

Trin 5) For at kontrollere om tabellen er blevet omdøbt, skal du udvide Databaser > Demo > Skemaer > Offentlige > Tabeller:

PostgreSQL Eksempel på ÆNDR TABEL

Tabellen blev omdøbt.

Download databasen brugt i denne vejledning

Ofte Stillede Spørgsmål

Brug ALTER TABLE tabelnavn ALTER COLUMN kolonnenavn TYPE ny_type. Tilføj en USING-klausul, når værdier skal konverteres, for eksempel ALTER COLUMN price TYPE numerisk USING price::numeric. PostgreSQL omskriver kolonnen og kontrollerer, at eksisterende data passer til den nye type.

Kun hvis misligholdelsen er volatil. Da PostgreSQL 11, ADD COLUMN med en konstant standard opdaterer kataloget øjeblikkeligt uden at omskrive rækker. En standard, der kalder en funktion, gennemtvinger stadig en fuld omskrivning af tabellen og en stærkere lås.

Nej. PostgreSQL kan ikke ændre en begrænsning. Fjern den eksisterende med DROP CONSTRAINT, og tilføj derefter den korrigerede med ADD CONSTRAINT. Pak begge sætninger ind i en transaktion, så tabellen aldrig efterlades uden reglen.

Angiv flere handlinger adskilt af kommaer: ALTER TABLE Bog TILFØJ KOLONNE pris int, TILFØJ KOLONNE isbn tekst. PostgreSQL anvender hver ændring i en enkelt gennemgang, hvilket er hurtigere og holder tabellen ensartet.

Brug ALTER TABLE table_name ADD PRIMARY KEY (kolonne) eller ADD CONSTRAINT pk_name PRIMARY KEY (kolonne). Kolonnen skal indeholde unikke værdier, der ikke er nul. PostgreSQL opbygger automatisk et understøttende unikt indeks, når nøglen oprettes.

RENAME opdaterer kun tabellens navn i systemkataloget. De gemte rækker, indekser og begrænsninger forbliver på plads og påvirkes ikke. Visninger eller funktioner, der refererer til det gamle navn, skal muligvis opdateres bagefter.

AI-assistenter udarbejder ALTER TABLE-scripts ud fra en beskrevet ændring, sorterer ADD-, RENAME- og begrænsningstrin korrekt og tilføjer USING-klausuler til typecasts. De markerer også operationer, der omskriver store tabeller eller indeholder tunge låse.

Ja. En AI-copilot gennemgår en migrering, advarer om låsning eller omskrivning af fulde tabeller, foreslår batching eller samtidige indeksopbygninger og anbefaler wrap.ping ændringer i en transaktion, hvilket gør det sikrere at implementere skemaopdateringer.

Opsummer dette indlæg med: