PostgreSQL ALTER TABLE: Lisää ja nimeä sarake uudelleen

⚡ Älykäs yhteenveto

PostgreSQL ALTER TABLE muuttaa olemassa olevan taulukon rakennetta, jolloin voit lisätä tai poistaa sarakkeita, nimetä sarakkeen tai koko taulukon uudelleen, asettaa oletusarvot ja liittää tarkistusrajoitteita luomatta objektia uudelleen.

  • 🧱 Syntaksi: ALTER TABLE -taulukon_nimi-toiminto suorittaa yhden rakennemuutoksen lauseketta kohden.
  • Lisää sarake: ADD-sarakkeen_nimi-tietotyyppi lisää uuden sarakkeen tauluun.
  • ✏️ Nimeä uudelleen: RENAME COLUMN ja RENAME TO muuttavat sarakkeen tai taulukon nimeä.
  • ⚙️ Oletusarvo: ALTER COLUMN SET DEFAULT antaa arvon tuleville INSERT-riveille.
  • 🛡️ Tarkista rajoitus: ADD CHECK tarkistaa uudet tiedot ja hylkää arvot, jotka eivät täytä sääntöä.
  • 🤖 Tekoälymigraatiot: Tekoälyavustajat luonnostelevat ALTER TABLE -skriptejä ja tarkistavat ne turvallista käyttöönottoa varten.

PostgreSQL ALTER TABLE

Mikä on ALTER TABLE -funktio? PostgreSQL?

ALTER TABLE komentoa käytetään muuttamaan rakenteen PostgreSQL taulukko. Se on komento, jota käytetään taulukon sarakkeiden tai itse taulukon nimen muuttamiseen ilman pudotusta.ping ja objektin uudelleenluominen.

Syntaksi

Tässä on syntaksi kohteelle PostgreSQL ALTER TABLE -komento:

ALTER TABLE table-name action;

Table-name-parametri on muutettavan taulukon nimi. Action-parametri on suoritettava toiminto, kuten sarakkeen nimen tai sarakkeen tietotyypin muuttaminen.

Tuotetiedot

ALTER TABLE -komento muuttaa olemassa olevan taulukon määritelmää. Se ottaa seuraavat alilomakkeet:

  • LISÄÄ SARAKE: tämä käyttää samanlaista syntaksia kuin CREATE TABLE -komento uuden sarakkeen lisäämiseen taulukkoon.
  • PUDOTA SARAKEpudotusta vartenping taulukon sarake. Myös sarakkeille asetetut rajoitteet ja indeksit poistetaan.
  • SET/DOP OLETUS: käytetään sarakkeen oletusarvon asettamiseen tai poistamiseen. Muutos koskee vain seuraavia INSERT lausunnot.
  • SET/DROP NOT NULL: muuttaa, salliiko sarake null-arvoja vai ei.
  • SET TILASTOT: tilastojen keräämistavoitteen asettamiseen kullekin sarakkeelle ANALYZE-toiminnoissa.
  • SET TALLENNUS: sarakkeen tallennustilan asettamiseen, joko rivillä olevaan taulukkoon tai lisätaulukkoon.
  • SET ILMAN OIDEJA: käytetään taulukon vanhan OID-sarakkeen poistamiseen.
  • NIMEÄ UUDELLEEN: taulukon tai sarakkeen nimen muuttaminen.
  • LISÄÄ taulukko_rajoitus: käytetään uuden rajoitteen lisäämiseen taulukkoon. Se käyttää samaa syntaksia kuin Luo taulukko komento.
  • PUDOTUSRAJOITUS: käytetään pudotukseenping taulukkorajoite.
  • OMISTAJA: taulukon, sekvenssin, indeksin tai näkymän omistajan vaihtamiseen tietylle käyttäjälle.
  • CLUSTER: taulukon merkitsemiseen tulevia klusteritoimintoja varten.

Sarakkeen muokkaaminen

Saraketta voidaan muokata useilla tavoilla. Tällaiset muutokset tehdään ALTER TABLE -komennolla. Käsitellään näitä alla.

Uuden sarakkeen lisääminen

Uuden sarakkeen lisääminen kohtaan a PostgreSQL taulukossa, ALTER TABLE -komentoa käytetään seuraavan syntaksin kanssa:

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

Taulukon_nimi on muokattavan taulukon nimi. Uuden_sarakkeen_nimi on lisättävän uuden sarakkeen nimi. Sarakkeen_määritelmä on tietotyyppi uuden sarakkeen. Katso alla olevaa Kirja-taulukkoa:

PostgreSQL ALTER TABLE -esimerkki

Taulukossa on kaksi saraketta, id ja name. Meidän on lisättävä taulukkoon uusi sarake ja annettava sille nimi author. Suorita vain seuraava komento:

ALTER TABLE Book
  ADD author VARCHAR(50);

Yllä olevan komennon suorittamisen jälkeen Book-taulukko on nyt seuraava:

PostgreSQL ALTER TABLE -esimerkki

Uusi sarake lisättiin onnistuneesti.

Taulukon sarakkeen nimeäminen uudelleen

Voimme käyttää ALTER TABLE -komentoa muuttaaksesi sarakkeen nimeä. Tässä tapauksessa komentoa käytetään seuraavan syntaksin kanssa:

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

Taulukon-nimi on sen taulukon nimi, jonka sarake nimetään uudelleen. Vanha-nimi on sarakkeen nykyinen nimi ja uusi-nimi on sarakkeen uusi nimi. Tarkastellaan alla olevaa Book-taulukkoa:

Kirja:

PostgreSQL ALTER TABLE -esimerkki

Meidän on muutettava sarakkeen tekijän nimi muotoon book_author. Tässä on komento:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Komennon suorittamisen jälkeen voimme tarkastella taulukon rakennetta:

PostgreSQL ALTER TABLE -esimerkki

Sarakkeen nimen muuttaminen onnistui.

Oletusarvon asettaminen sarakkeelle

Voimme asettaa sarakkeelle oletusarvon, jolloin oletusarvoa käytetään, vaikka et määrittäisikään arvoa kyseiselle sarakkeelle INSERT-toimintojen aikana. Tässä tapauksessa ALTER TABLE -komentoa voidaan käyttää seuraavalla syntaksilla:

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

Taulukon nimi on sen taulukon nimi, jonka saraketta muokataan. Sarakkeen nimi on sen sarakkeen nimi, jonka oletusarvo asetetaan, ja arvo on sarakkeen oletusarvo. Tarkastellaan alla olevaa Book-taulukkoa:

PostgreSQL ALTER TABLE -esimerkki

Meidän on asetettava oletusarvo book_author -sarakkeelle. Voimme suorittaa seuraavan komennon:

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

Lisätään nyt taulukkoon rivi:

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

Huomaa, että lisäsimme arvot vain kahteen sarakkeeseen, id:hen ja name:hen. Book_author-sarakkeelle on kuitenkin käytetty oletusarvoa:

PostgreSQL ALTER TABLE -esimerkki

Tarkistusrajoituksen lisääminen

Tarkistusrajoitus auttaa vahvistamaan tietueita, jotka lisätään taulukkoon. Voimme tehdä tämän yhdistämällä ALTER TABLE -komennon ADD CHECK -käskyyn. Syntaksi:

ALTER TABLE table-name ADD CHECK expression;

Taulukon_nimi on muutettavan taulukon nimi ja lauseke on taulukon sarakkeelle asetettava rajoite. Muokataan Book-taulukon book_author-saraketta siten, että se hyväksyy vain arvot Nicholas ja Samuel:

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

Yritetään nyt lisätä jokin muu arvo kuin Nicholas tai Samuel Kirja-taulukon book_author -sarakkeeseen:

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

Lauseke palauttaa seuraavan virheen:

PostgreSQL ALTER TABLE -esimerkki

Lisäys epäonnistui, koska rikoimme tarkistusrajoitusta.

Taulukon nimeäminen uudelleen

Tässä on syntaksi ALTER TABLE -komennolle taulukon uudelleennimeämiseksi:

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

Taulukon_nimi on taulukon nykyinen nimi ja uusi_taulukon_nimi on taulukolle annettava uusi nimi. Muutetaan esimerkiksi Book-taulukon nimi muotoon Books:

ALTER TABLE Book
  RENAME TO Books;

pgAdminin avulla

Tähän mennessä toiminnot on suoritettu SQL-komennosta. Katsotaanpa nyt, miten samat toiminnot voidaan suorittaa visuaalisesti pgAdminin avulla.

Uuden sarakkeen lisääminen

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  1. Napsauta vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 3) Kirjoita kysely kyselyeditoriin:

ALTER TABLE Book
  ADD author VARCHAR(50);

Vaihe 4) Napsauta Suorita-painiketta.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 5) Voit tarkistaa, onko sarake lisätty, toimimalla seuraavasti:

  1. Napsauta vasemmasta navigointipalkista Tietokannat.
  2. Laajenna Demo.
  3. Laajenna Schemas.
  4. Laajenna Julkinen.
  5. Laajenna taulukot.
  6. Laajenna kirjaa.
  7. Laajenna sarakkeet.

PostgreSQL ALTER TABLE -esimerkki

Sarake olisi pitänyt lisätä alla olevan kuvan mukaisesti:

PostgreSQL ALTER TABLE -esimerkki

Taulukon sarakkeen nimeäminen uudelleen

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  1. Napsauta vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 3) Kirjoita kysely kyselyeditoriin:

ALTER TABLE Book
  RENAME COLUMN author TO book_author;

Vaihe 4) Napsauta Suorita-painiketta.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 5) Tarkistaaksesi, onnistuiko muutos, laajenna kirjataulukon sarakkeita kuten aiemmin:

PostgreSQL ALTER TABLE -esimerkki

Sarakkeiden pitäisi nyt olla seuraavat:

PostgreSQL ALTER TABLE -esimerkki

Sarakkeen vaihto onnistui.

Oletusarvon asettaminen sarakkeelle

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  1. Napsauta vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 3) Kirjoita kysely kyselyeditoriin:

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

Vaihe 4) Napsauta Suorita-painiketta.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 5) Testaa suorittamalla seuraava komento kyselyeditorissa:

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

Vaihe 6) Nyt voimme kysyä taulukosta tarkistaaksemme, onko oletusarvo lisätty book_author -sarakkeeseen:

PostgreSQL ALTER TABLE -esimerkki

Tarkistusrajoituksen lisääminen

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  1. Napsauta vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 3) Kirjoita kysely kyselyeditoriin:

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

Vaihe 4) Napsauta Suorita-painiketta.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 5) Testaa tämä kirjoittamalla seuraava kysely kyselyeditoriin ja napsauttamalla Suorita-painiketta:

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

PostgreSQL ALTER TABLE -esimerkki

Se palauttaa seuraavat tiedot:

PostgreSQL ALTER TABLE -esimerkki

Taulukon nimeäminen uudelleen

Vaihe 1) Kirjaudu sisään pgAdmin-tilillesi.

Vaihe 2)

  1. Napsauta vasemmalla olevasta navigointipalkista Tietokannat.
  2. Napsauta Demo.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 3) Kirjoita kysely kyselyeditoriin:

ALTER TABLE Book
  RENAME TO Books;

Vaihe 4) Napsauta Suorita-painiketta.

PostgreSQL ALTER TABLE -esimerkki

Vaihe 5) Tarkistaaksesi, onko taulukko nimetty uudelleen, laajenna Tietokannat > Demo > Rakenteet > Julkinen > Taulukot:

PostgreSQL ALTER TABLE -esimerkki

Taulukon uudelleennimeäminen onnistui.

Lataa tässä opetusohjelmassa käytetty tietokanta

UKK

Käytä ALTER TABLE -lauseketta table_name ALTER COLUMN column_name TYPE new_type. Lisää USING-lauseke, kun arvot tarvitsevat muunnoksia, esimerkiksi ALTER COLUMN price TYPE numeric USING price::numeric. PostgreSQL kirjoittaa sarakkeen uudelleen ja tarkistaa, että olemassa olevat tiedot sopivat uuteen tyyppiin.

Vain jos maksukyvyttömyys on epävakaa. Koska PostgreSQL 11, ADD COLUMN vakio-oletusarvolla päivittää luettelon välittömästi kirjoittamatta rivejä uudelleen. Oletusarvoisesti funktiota kutsuva komento pakottaa silti koko taulukon uudelleenkirjoituksen ja vahvemman lukituksen.

Ei. PostgreSQL Ei voi muuttaa voimassa olevaa rajoitetta. Poista olemassa oleva rajoite komennolla DROP CONSTRAINT ja lisää sitten korjattu rajoite komennolla ADD CONSTRAINT. Yhdistä molemmat lauseet tapahtumaan, jotta taulukko ei koskaan jää ilman sääntöä.

Luettele useita toimintoja pilkuilla erotettuina: ALTER TABLE Book ADD COLUMN price int, ADD COLUMN isbn text. PostgreSQL soveltaa jokaisen muutoksen yhdellä kertaa, mikä on nopeampaa ja pitää taulukon yhtenäisenä.

Käytä ALTER TABLE -komentoa table_name ADD PRIMARY KEY (sarake) tai ADD CONSTRAINT pk_name PRIMARY KEY (sarake). Sarakkeen arvoissa on oltava yksilöllisiä ja muita kuin null-arvoja. PostgreSQL muodostaa automaattisesti tukevan yksilöllisen indeksin avaimen luonnin yhteydessä.

RENAME päivittää vain taulukon nimen järjestelmäluettelossa. Tallennetut rivit, indeksit ja rajoitteet pysyvät paikoillaan eivätkä muutu. Vanhaan nimeen viittaavat näkymät tai funktiot saattavat vaatia päivitystä jälkikäteen.

Tekoälyavustajat luovat ALTER TABLE -skriptejä kuvatusta muutoksesta, järjestävät ADD-, RENAME- ja rajoitusvaiheet oikein ja lisäävät USING-lausekkeita tyyppimuunnoksia varten. He myös merkitsevät operaatioita, jotka kirjoittavat uudelleen suuria taulukoita tai sisältävät raskaita lukkoja.

Kyllä. Tekoälyyn perustuva apupilotti tarkistaa migraation, varoittaa lukituksesta tai koko taulukon uudelleenkirjoittamisesta, ehdottaa eräajoa tai samanaikaista indeksien koontia ja suosittelee rivitystä.ping muutoksia tapahtumassa, mikä tekee skeemapäivitysten käyttöönotosta turvallisempaa.

Tiivistä tämä viesti seuraavasti: