முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 8 · பாடம் 3 இன் 4பாடத்திட்டத்தில் 31/57~12 min
தொகுதி பாடங்கள் (3/4)

அட்டவணைகள் மற்றும் கட்டுப்பாடுகளை உருவாக்குதல்: DDL

இதுவரை நீங்கள் ஏற்கனவே இருக்கும் (customers, orders…). DDL ("தரவு வரையறை மொழி") என்பது அறிக்கைகளைக் குறிக்கிறது ** ஸ்கீமாவை உருவாக்கி மாற்றவும்**: அட்டவணைகள், நெடுவரிசைகள், கட்டுப்பாடுகள், குறியீடுகள்.

அட்டவணையை உருவாக்கவும்: தொடரியல்

SQL
CREATE TABLE nome_tabella (
  colonna  TIPO  [vincoli_colonna],
  …,
  [vincoli_tabella]
);

எடுத்துக்காட்டு: வாடிக்கையாளர்களையும் தயாரிப்புகளையும் இணைக்கும் விருப்பப்பட்டியல்:

SQL
CREATE TABLE wishlists (
  id           SERIAL PRIMARY KEY,
  customer_id  INTEGER NOT NULL REFERENCES customers(id),
  product_id   INTEGER NOT NULL REFERENCES products(id),
  added_on     DATE NOT NULL DEFAULT CURRENT_DATE,
  note         TEXT,
  UNIQUE (customer_id, product_id)
);

துண்டு துண்டாக உடைப்போம்.

மிகவும் பொதுவான வகைகள்

வகைஅது என்ன வைத்திருக்கிறது
INTEGER / INTமுழு எண்கள் (-2.1B … +2.1B)
BIGINTபெரிய முழு எண்கள்
NUMERIC(p, s)சரியான தசமங்கள் — பணம், சதவீதங்கள்
TEXTமாறி-நீள சரங்கள்
VARCHAR(n)அதிகபட்ச நீளம் n
BOOLEANTRUE / FALSE / NULL
DATEதேதி மட்டும்
TIMESTAMPதேதி + நேரம் (நேர மண்டலம் இல்லை)
TIMESTAMPTZநேர மண்டலத்துடன் தேதி + நேரம்
SERIALதானாக அதிகரிக்கும் வரிசையுடன் INTEGER

கட்டுப்பாடுகள்

ஒரு கட்டுப்பாடு என்பது PostgreSQL தானாக செயல்படுத்தும் ஒரு விதி: என்றால் INSERT/UPDATE அதை மீறுகிறது, செயல்பாடு தோல்வியடைகிறது.

SQL
PRIMARY KEY                         -- identifica univocamente la riga, non NULL
NOT NULL                            -- vieta NULL
UNIQUE                              -- vieta duplicati su questa colonna
REFERENCES tabella(colonna)         -- foreign key
CHECK (espressione_booleana)        -- es. CHECK (price > 0)
DEFAULT espressione                 -- valore di default se non fornito

கட்டுப்பாடுகளை ஒரு நெடுவரிசையில் இன்லைன் அல்லது அட்டவணை நிலை என அறிவிக்கலாம் கட்டுப்பாடுகள் (புலங்களுக்கு கீழே). ஒரு கலவையின் எடுத்துக்காட்டு UNIQUE:

SQL
UNIQUE (customer_id, product_id)   -- niente coppia (cliente, prodotto) duplicata

தடையைச் சரிபார்க்கவும்

CHECK தனிப்பயன் விதியைச் செயல்படுத்துகிறது:

SQL
CREATE TABLE stock_alerts (
  product_id   INTEGER PRIMARY KEY REFERENCES products(id),
  threshold    INTEGER NOT NULL CHECK (threshold >= 0),
  notify_email TEXT    NOT NULL,
  active       BOOLEAN NOT NULL DEFAULT true
);

threshold ≥ 0 ஆக இருக்க வேண்டும்; யாராவது INSERT … threshold = -5 ஐ முயற்சித்தால், அது ஒரு கட்டுப்பாட்டுப் பிழையுடன் தோல்வியடைகிறது.

கைவிடுதல் மற்றும் மாற்றுதல்

SQL
DROP TABLE wishlists;                                 -- elimina la tabella (e i dati!)
DROP TABLE IF EXISTS wishlists;                       -- senza errore se non esiste
ALTER TABLE customers ADD COLUMN newsletter BOOLEAN NOT NULL DEFAULT false;
ALTER TABLE customers DROP COLUMN newsletter;

உங்கள் முறை

உடற்பயிற்சி#sql.m8.l3.e1
முயற்சிகள்: 0ஏற்றுகிறது…

பின்வரும் நெடுவரிசைகளுடன் விருப்பப்பட்டியல் அட்டவணையை உருவாக்கவும்: ஐடி (சீரியல் பிரைமரி கீ), customer_id (INTEGER NULL குறிப்புகள் இல்லை வாடிக்கையாளர்கள்(id)), product_id (INTEGER NULL குறிப்புகள் அல்ல (id)), added_on (DATE NUT NULL உடன் DEFAULT CURRENT_DATE). ஜோடியில் ஒரு தனித்துவமான தடையைச் சேர்க்கவும் (customer_id, product_id).

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

UNIQUE (வாடிக்கையாளர்_ஐடி, தயாரிப்பு_ஐடி) கீழே உள்ள அட்டவணை-நிலை தடையாக உள்ளது.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#sql.m8.l3.e2
முயற்சிகள்: 0ஏற்றுகிறது…

பூலியன் வகையின் செய்திமடல் நெடுவரிசையை வாடிக்கையாளர்கள் அட்டவணையில் சேர்க்கவும், பூஜ்யம் அல்ல, இயல்புநிலை தவறு. ஒற்றை ALTER TABLE அறிக்கையைப் பயன்படுத்தவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

இயல்புநிலை இல்லாமல், ALTER தோல்வியடையும், ஏனெனில் வரிசைகள் ஏற்கனவே உள்ளன மற்றும் புதிய நெடுவரிசை பூஜ்யமாக இல்லை.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்