Oracle ALTER TABLE MODIFY Column

Resumé: i denne vejledning lærer du, hvordan du bruger Oracle ALTER TABLE MODIFY kolonneopgørelse for at ændre definitionen af eksisterende kolonner.

For at ændre definitionen af en kolonne i en tabel bruger du ALTER TABLE MODIFY kolonnesyntaks som følger:

Erklæringen er ligetil. For at ændre en kolonne i en tabel skal du angive kolonnenavn, tabelnavn og handling, du vil udføre.

Oracle giver dig mulighed for at udføre mange handlinger, men følgende er de vigtigste:

  • Rediger søjlens synlighed
  • Tillad eller tillad ikke nulværdier
  • Forkort eller udvid kolonnens størrelse
  • Skift standardværdi for en kolonne
  • Rediger udtryk for de virtuelle kolonner

For at ændre flere kolonner bruger du følgende syntaks:

Oracle ALTER TABLE MODIFY kolonneeksempler

Opret først en ny tabel med navnet accounts til demonstrationen:

For det andet skal du indsætte nogle rækker i accounts -tabellen:

For det tredje skal du kontrollere indsættelsesfunktionen ved hjælp af følgende SELECT udsagn:

A) Rediger søjlens synlighed it

I Oracle Database 12c kan du definere tabelkolonner som usynlige eller synlige. Usynlige kolonner er ikke tilgængelige for forespørgslen som:

Eller udsagn som:

i SQL * Plus.

Du kan dog forespørge de usynlige kolonner ved at angive dem eksplicit i forespørgslen:

By som standard er tabelkolonner synlige. Du kan definere usynlig kolonne, når du opretter tabellen eller bruger ALTER TABLE MODIFY kolonneerklæring.

For eksempel giver følgende udsagn full_name usynlig kolonne:

Følgende udsagn returnerer data fra alle kolonner i accounts -tabellen undtagen full_name -kolonnen :

Dette skyldes, at kolonnen full_name er usynlig.

For at ændre en kolonne fra usynlig til synlig bruger du udsagnet nedenfor:

B) Tillad eller tillad ikke nulleksempel

Følgende udsagn ændres email -kolonnen for at acceptere værdier, der ikke er nul:

Oracle udsendte imidlertid følgende fejl:

Fordi når du ændrede en kolonne fra nulbar til n on-nullable, skal du sikre, at de eksisterende data overholder den nye begrænsning.

For at rette dette opdaterer vi først værdierne for email -kolonnen:

Bemærk, at funktionen LOWER() konverterer en streng til små bogstaver.

Og skift derefter søjles begrænsning:

Nu fungerer den som forventet.

C) Udvid eller forkert størrelsen på et kolonneeksempel

Antag, vi vil føje international kode til telefonnumrene. Før vi gør det, skal vi udvide telefonkolonnens størrelse ved hjælp af følgende udsagn:

Nu kan vi opdatere telefonnumrene:

Følgende udsagn bekræfter opdateringen:

For at forkorte størrelsen på en kolonne skal du sørge for, at alle data i kolonnen passer til den nye størrelse.

For eksempel forsøger vi at forkorte størrelsen på phone kolonnen ned til 12 tegn:

Oracle Database udsendte følgende fejl:

For at løse dette skal vi først fjerne den internationale kode fra telefonnumrene:

REPLACE() -funktionen erstatter en substring med en ny substring. I dette tilfælde erstatter det ‘+ 1-‘ med en tom streng.

Og afkort derefter størrelsen på phone kolonnen:

D) Rediger virtuel kolonne

Antag, vi har det fulde navn i følgende format:

For at gøre dette kan vi ændre udtrykket for virtuel kolonne full_name som følger:

Følgende udsagn bekræfter ændringen:

E) Rediger standardværdien af en kolonne

Lad os tilføje en ny kolonne med navnet status til accounts -tabellen med standardværdi 1.

Når du har udført udsagnet, er værdierne i statuskolonnen indstillet til 1 for alle eksisterende rækker i accounts -tabellen.

For at ændre standardværdien o f statuskolonnen til 0, bruger du følgende udsagn:

Vi kan tilføje en ny række til accounts tabel for at kontrollere, om standardværdien i kolonnen status er 0 eller 1:

Forespørgselsdata fra accounts -tabellen:

Som du kan se, er værdien i statuskolonnen for kontoen med id 4 som forventet.

I denne vejledning har du lært, hvordan du bruger Oracle ALTER TABLE MODIFY kolonneudtalelsen til at ændre definitionen af eksisterende kolonner i en tabel.

  • Var denne tutorial nyttig?
  • JaNej

Write a Comment

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *