ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 9 · 4లో పాఠం 3కోర్సులో 35/57~10 min
మాడ్యూల్ పాఠాలు (3/4)

నిర్మాణాన్ని మార్చడం: ALTER TABLE

ఒక అప్లికేషన్ యొక్క అవసరాలు కాలానుగుణంగా మారుతాయి మరియు డేటాబేస్ తప్పనిసరిగా కొనసాగుతుంది. ALTER TABLE అనేది ఇప్పటికే ఉన్న టేబుల్ స్కీమాలను సవరించడానికి అంకితం చేయబడిన (అత్యంత బహుముఖ) కమాండ్ _ని డ్రాప్ చేయకుండానే (లోపల డేటాను రిస్క్ చేస్తుంది).

నిలువు వరుసలను సవరించడం (జోడించు / డ్రాప్ / ఆల్టర్)

నిలువు వరుసను జోడించడానికి జాగ్రత్త అవసరం. పట్టిక ఇప్పటికే డేటాను కలిగి ఉన్నట్లయితే, "NOT NULL" నిలువు వరుసను జోడించడం వలన పోస్ట్‌గ్రెస్‌లో లోపం ఏర్పడుతుంది: పాత అడ్డు వరుసలలో అది ఏమి చొప్పించాలి? మీరు తప్పనిసరిగా DEFAULTని అనుబంధించాలి.

SQL
-- Aggiungiamo una colonna
ALTER TABLE users ADD COLUMN age INTEGER; -- Ok, sarà NULL ovunque

-- Aggiungiamo NOT NULL, quindi diamogli un deafult
ALTER TABLE users ADD COLUMN active BOOLEAN NOT NULL DEFAULT true;

-- Cancellare una colonna (ATTENZIONE! i dati andranno persi)
ALTER TABLE users DROP COLUMN age;

జోడించడం లేదా తీసివేయడం మాత్రమే కాదు: మీరు తరచుగా కాలమ్ యొక్క type లేదా దాని పరిమితుల్లో ఒకదాన్ని మళ్లీ కాన్ఫిగర్ చేయాలి:

SQL
-- Cambia il tipo di dato (postgreSQL farà un 'cast' dei dati esistenti se possibile)
ALTER TABLE users ALTER COLUMN username TYPE VARCHAR(100);

-- Aggiunge il vincolo NOT NULL
ALTER TABLE users ALTER COLUMN username SET NOT NULL;

-- Rimuove il vincolo NOT NULL (ritorna ad accettare null)
ALTER TABLE users ALTER COLUMN username DROP NOT NULL;

రన్‌టైమ్‌లో పరిమితులను జోడిస్తోంది

CREATE TABLE మాదిరిగానే, మేము ALTER TABLEని ఉపయోగించి CONSTRAINTని ఉత్పత్తి యాప్‌లో ఇప్పటికే ఉపయోగంలో ఉన్న టేబుల్‌కి జోడించవచ్చు.

SQL
-- Aggiungi un nuovo Foreign Key
ALTER TABLE orders
  ADD CONSTRAINT fk_order_status FOREIGN KEY (status_id) REFERENCES statuses(id);

-- Aggiungi un CHECK
ALTER TABLE products
  ADD CONSTRAINT price_positive CHECK (price > 0);

-- E per distruggerli?
ALTER TABLE products DROP CONSTRAINT price_positive;

పేరు మార్చడం

నిలువు వరుసలు మరియు పట్టికలు రెండింటినీ పేరు మార్చవచ్చు:

SQL
ALTER TABLE users RENAME TO auth_users;
ALTER TABLE auth_users RENAME COLUMN username TO login_name;

దీనిని ప్రయత్నించండి

వ్యాయామం#sql.m9.l3.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

'ఉత్పత్తుల' పట్టిక ప్రస్తుతం 'పేరు' నిలువు వరుసను కలిగి ఉంది. 'పేరు' నిలువు వరుస పేరును 'శీర్షిక'గా మార్చడం ద్వారా పట్టికను సవరించండి. RENAME COLUMN ఆపరేషన్‌ని ఉపయోగించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

సింటాక్స్: పట్టికను మార్చండి ... కాలమ్‌ని పేరు మార్చండి ... టు ...

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

పోస్ట్-ప్రొడక్షన్‌లో పరిమితులను జోడించడం

వ్యాయామం#sql.m9.l3.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ధర (నిలువు 'ధర') 0 కంటే ఎక్కువగా ఉండాల్సిన చెక్ నిర్బంధాన్ని ('verifica_prezzo' పేరుతో) జోడించడం ద్వారా 'ఉత్పత్తుల' పట్టికను సవరించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

వాక్యనిర్మాణం: పట్టికను మార్చండి నిర్బంధ పేరును జోడించండి తనిఖీ చేయండి (...)

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది