PostgreSQL ALTER TABLE: Adăugați și redenumiți coloana

⚡ Rezumat inteligent

PostgreSQL Funcția ALTER TABLE modifică structura unui tabel existent, permițându-vă să adăugați sau să eliminați coloane, să redenumiți o coloană sau întregul tabel, să setați valori implicite și să atașați constrângeri de verificare fără a recrea obiectul.

  • 🧱 Sintaxă: Acțiunea ALTER TABLE nume-tabel efectuează o modificare structurală per instrucțiune.
  • Adăugați o coloană: ADD nume-coloană tip-date adaugă o nouă coloană la tabel.
  • ✏️ Redenumiți: REDENUMIRE COLOANĂ și REDENUMIRE PENTRU A schimba numele unei coloane sau numele tabelului.
  • ⚙️ Valoare implicită: ALTER COLUMN SET DEFAULT furnizează o valoare pentru rândurile INSERT viitoare.
  • 🛡️ Verificați restricția: ADD CHECK validează datele noi și respinge valorile care nu îndeplinesc regula.
  • 🤖 Migrări AI: Asistenții inteligenți artificiali redactează scripturi ALTER TABLE și le revizuiesc pentru implementare în siguranță.

PostgreSQL ALTER TABLE

Ce este ALTER TABLE în PostgreSQL?

ALTER TABLE Comanda este utilizată pentru a modifica structura unui PostgreSQL tabel. Este comanda utilizată pentru a schimba coloanele tabelului sau numele tabelului în sine, fără a eliminaping și recrearea obiectului.

Sintaxă

Iată sintaxa pentru PostgreSQL Comanda ALTER TABLE:

ALTER TABLE table-name action;

Parametrul nume-tabel este numele tabelului pe care trebuie să îl modificați. Parametrul acțiune este acțiunea pe care trebuie să o efectuați, cum ar fi schimbarea numelui unei coloane sau schimbarea tipului de date al unei coloane.

Descriere

Comanda ALTER TABLE modifică definiția unui tabel existent. Ia următoarele subforme:

  • Adăugați o coloană: aceasta folosește o sintaxă similară cu comanda CREATE TABLE pentru a adăuga o nouă coloană la un tabel.
  • COLOCARE COLONApentru cădereping o coloană de tabel. Restricțiile și indexurile impuse coloanelor vor fi, de asemenea, eliminate.
  • SET/DROP IMPLICIT: utilizat pentru setarea sau eliminarea valorii implicite pentru o coloană. Modificarea se aplică numai valorilor ulterioare INSERT instrucțiuni.
  • SET/DROP NOT NULL: modifică dacă o coloană va permite sau nu valori nule.
  • SETARE STATISTICI: pentru setarea țintei de colectare a statisticilor pentru fiecare coloană pentru operațiunile ANALYZE.
  • SETARE DEPOZITARE: pentru setarea modului de stocare pentru o coloană, fie în linie, fie într-un tabel suplimentar.
  • SET FĂRĂ OIDURI: utilizat pentru eliminarea vechii coloane OID din tabel.
  • REDENUMIȚI: pentru schimbarea numelui tabelului sau al unei coloane.
  • ADD table_constraint: utilizat pentru adăugarea unei noi constrângeri la un tabel. Folosește aceeași sintaxă ca și CREAȚI TABEL comanda.
  • DRAP CONSTRAINTfolosit pentru cădereping o constrângere de tabel.
  • PROPRIETARpentru schimbarea proprietarului unui tabel, secvență, index sau vizualizare către un anumit utilizator.
  • CURSE: pentru marcarea unui tabel care va fi utilizat pentru operațiuni viitoare în cluster.

Modificarea unei coloane

O coloană poate fi modificată în mai multe moduri. Astfel de modificări se fac folosind comanda ALTER TABLE. Să le discutăm mai jos.

Adăugarea unei coloane noi

Pentru a adăuga o nouă coloană la a PostgreSQL tabel, comanda ALTER TABLE este utilizată cu următoarea sintaxă:

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

Numele tabelului este numele tabelului care va fi modificat. Numele noii coloane este numele noii coloane care va fi adăugată. Definiția coloanei este tip de date din noua coloană. Consultați tabelul Carte de mai jos:

PostgreSQL Exemplu ALTER TABLE

Tabelul are două coloane, id și name. Trebuie să adăugăm o nouă coloană în tabel și să-i dăm numele author. Trebuie doar să executați următoarea comandă:

ALTER TABLE Book
  ADD author VARCHAR(50);

După rularea comenzii de mai sus, tabelul Book este acum după cum urmează:

PostgreSQL Exemplu ALTER TABLE

Noua coloană a fost adăugată cu succes.

Redenumirea unei coloane de tabel

Putem folosi comanda ALTER TABLE pentru a schimba numele unei coloane. În acest caz, comanda este utilizată cu următoarea sintaxă:

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

Numele tabelului este numele tabelului a cărui coloană urmează să fie redenumită. Numele vechi este numele curent al coloanei, iar numele nou este noul nume al coloanei. Luați în considerare tabelul Book prezentat mai jos:

Carte:

PostgreSQL Exemplu ALTER TABLE

Trebuie să schimbăm numele coloanei `author` în `book_author`. Iată comanda:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

După rularea comenzii, putem vizualiza structura tabelului:

PostgreSQL Exemplu ALTER TABLE

Numele coloanei a fost schimbat cu succes.

Setarea unei valori implicite pentru o coloană

Putem seta o valoare implicită pentru o coloană, astfel încât, chiar dacă nu specificați o valoare pentru acea coloană în timpul operațiunilor INSERT, valoarea implicită va fi utilizată. În acest caz, comanda ALTER TABLE poate fi utilizată cu următoarea sintaxă:

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

Numele tabelului este numele tabelului a cărui coloană urmează să fie modificată. Numele coloanei este numele coloanei a cărei valoare implicită urmează să fie setată, iar valoarea este valoarea implicită pentru coloană. Luați în considerare tabelul Book de mai jos:

PostgreSQL Exemplu ALTER TABLE

Trebuie să setăm o valoare implicită pentru coloana book_author. Putem rula următoarea comandă:

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

Acum, să inserăm un rând în tabel:

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

Rețineți că am introdus valori doar pentru două coloane, id și name. Cu toate acestea, valoarea implicită a fost utilizată pentru coloana book_author:

PostgreSQL Exemplu ALTER TABLE

Adăugarea unei constrângeri de verificare

O constrângere de verificare ajută la validarea înregistrărilor care sunt inserate într-un tabel. Putem face acest lucru combinând comanda ALTER TABLE cu instrucțiunea ADD CHECK. Sintaxă:

ALTER TABLE table-name ADD CHECK expression;

nume-tabel este numele tabelului care urmează să fie modificat, iar expresia este constrângerea care va fi impusă coloanei tabelului. Să modificăm coloana autor_carte din tabelul Carte astfel încât să accepte doar valorile Nicholas și Samuel:

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

Acum, să încercăm să inserăm o altă valoare decât Nicholas sau Samuel în coloana book_author a tabelului Book:

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

Declarația va returna următoarea eroare:

PostgreSQL Exemplu ALTER TABLE

Operația de inserare a eșuat deoarece am încălcat constrângerea de verificare.

Redenumirea unui tabel

Iată sintaxa pentru comanda ALTER TABLE pentru redenumirea unui tabel:

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

nume-tabel este numele curent al tabelului, iar nume-tabel-nou este noul nume care va fi atribuit tabelului. De exemplu, să schimbăm numele tabelului Cărți în Cărți:

ALTER TABLE Book
  RENAME TO Books;

Folosind pgAdmin

Până acum, acțiunile au fost executate din shell-ul SQL. Acum să vedem cum pot fi efectuate aceleași acțiuni vizual folosind pgAdmin.

Adăugarea unei coloane noi

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

PostgreSQL Exemplu ALTER TABLE

Pas 3) Introduceți interogarea în editorul de interogări:

ALTER TABLE Book
  ADD author VARCHAR(50);

Pas 4) Faceți clic pe butonul Execute.

PostgreSQL Exemplu ALTER TABLE

Pas 5) Pentru a verifica dacă coloana a fost adăugată, procedați în felul următor:

  1. Faceți clic pe Baze de date din panoul de navigare din stânga.
  2. Extindeți Demo.
  3. Extinde Schemele.
  4. Extindeți Public.
  5. Extindeți Tabele.
  6. Extinde cartea.
  7. Extinde Coloane.

PostgreSQL Exemplu ALTER TABLE

Coloana ar fi trebuit adăugată, după cum se arată mai jos:

PostgreSQL Exemplu ALTER TABLE

Redenumirea unei coloane de tabel

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

PostgreSQL Exemplu ALTER TABLE

Pas 3) Introduceți interogarea în editorul de interogări:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Pas 4) Faceți clic pe butonul Execute.

PostgreSQL Exemplu ALTER TABLE

Pas 5) Pentru a verifica dacă modificarea a avut succes, extindeți coloanele tabelului de cărți ca înainte:

PostgreSQL Exemplu ALTER TABLE

Coloanele ar trebui să fie acum după cum urmează:

PostgreSQL Exemplu ALTER TABLE

Coloana a fost schimbată cu succes.

Setarea unei valori implicite pentru o coloană

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

PostgreSQL Exemplu ALTER TABLE

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

PostgreSQL Exemplu ALTER TABLE

Pas 5) Pentru a testa, executați următoarea comandă în editorul de interogări:

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

Pas 6) Acum, putem interoga tabelul pentru a verifica dacă valoarea implicită a fost inserată în coloana book_author:

PostgreSQL Exemplu ALTER TABLE

Adăugarea unei constrângeri de verificare

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

PostgreSQL Exemplu ALTER TABLE

Pas 3) Introduceți interogarea în editorul de interogări:

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

Pas 4) Faceți clic pe butonul Execute.

PostgreSQL Exemplu ALTER TABLE

Pas 5) Pentru a testa acest lucru, tastați următoarea interogare în editorul de interogări și faceți clic pe butonul Executare:

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

PostgreSQL Exemplu ALTER TABLE

Va returna următoarele:

PostgreSQL Exemplu ALTER TABLE

Redenumirea unui tabel

Pas 1) Conectați-vă la contul dvs. pgAdmin.

Pas 2)

  1. Din bara de navigare din stânga, faceți clic pe Baze de date.
  2. Faceți clic pe Demo.

PostgreSQL Exemplu ALTER TABLE

Pas 3) Introduceți interogarea în editorul de interogări:

ALTER TABLE Book
  RENAME TO Books;

Pas 4) Faceți clic pe butonul Execute.

PostgreSQL Exemplu ALTER TABLE

Pas 5) Pentru a verifica dacă tabelul a fost redenumit, extindeți Baze de date > Demo > Scheme > Public > Tabele:

PostgreSQL Exemplu ALTER TABLE

Tabelul a fost redenumit cu succes.

Descărcați baza de date folosită în acest tutorial

Întrebări frecvente

Folosește ALTER TABLE nume_tabel ALTER COLUMN nume_coloană TYPE tip_nou. Adaugă o clauză USING când valorile necesită conversie, de exemplu ALTER COLUMN preț TYPE numeric USING preț::numeric. PostgreSQL rescrie coloana și verifică dacă datele existente se încadrează în noul tip.

Numai dacă implicit este volatil. Întrucât PostgreSQL 11, ADD COLUMN cu o constantă implicită actualizează instantaneu catalogul fără a rescrie rânduri. O valoare implicită care apelează o funcție forțează în continuare o rescriere completă a tabelului și o blocare mai puternică.

Nu. PostgreSQL Nu se poate modifica o constrângere existentă. Eliminați-o pe cea existentă cu DROP CONSTRAINT, apoi adăugați-o pe cea corectată cu ADD CONSTRAINT. Încadrați ambele instrucțiuni într-o tranzacție, astfel încât tabelul să nu rămână niciodată fără regulă.

Enumerați mai multe acțiuni separate prin virgule: ALTER TABLE Book ADD COLUMN price int, ADD COLUMN isbn text. PostgreSQL aplică fiecare modificare într-o singură trecere, ceea ce este mai rapid și menține tabelul consistent.

Folosiți ALTER TABLE nume_tabel ADD PRIMARY KEY (coloană) sau ADD CONSTRAINT nume_pk PRIMARY KEY (coloană). Coloana trebuie să conțină valori unice, non-null; PostgreSQL construiește automat un index unic de suport atunci când cheia este creată.

RENAME actualizează doar numele tabelului în catalogul de sistem. Rândurile, indexurile și constrângerile stocate rămân la locul lor și nu sunt afectate. Vizualizările sau funcțiile care fac referire la numele vechi pot necesita actualizare ulterioară.

Asistenții inteligenți artificiali creează scripturi ALTER TABLE dintr-o modificare descrisă, ordonează corect pașii ADD, RENAME și constrângeri și adaugă clauze USING pentru conversiile de tip. De asemenea, aceștia semnalează operațiunile care rescriu tabele mari sau dețin blocări grele.

Da. Un copilot AI analizează o migrare, avertizează despre blocarea sau rescrierile complete ale tabelului, sugerează crearea de indexuri în lot sau simultane și recomandă încapsularea.ping modificări într-o tranzacție, ceea ce face ca implementarea actualizărilor de schemă să fie mai sigură.

Rezumați această postare cu: