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

అధునాతన డేటా రకాలు మరియు ENUMలు

మునుపటి పాఠంలో మేము ప్రాథమిక CREATE TABLE ఆదేశాన్ని చూశాము. మన డొమైన్‌లను మరింత ఖచ్చితమైన మరియు సురక్షితమైన రీతిలో మోడల్ చేయడానికి PostgreSQL అందించే కొన్ని అధునాతన డేటా రకాలను ఇప్పుడు అన్వేషిద్దాం.

సంఖ్యా మరియు వచన రకాలు

PostgreSQL సంఖ్యలు మరియు టెక్స్ట్ కోసం అనేక రకాలు ఉన్నాయి. సరైనదాన్ని ఎంచుకోవడం ధృవీకరణ మరియు నిల్వ స్థలం రెండింటికీ సహాయపడుతుంది.

SQL
CREATE TABLE advanced_products (
  id           SERIAL PRIMARY KEY,
  name         VARCHAR(50) NOT NULL,
  description  TEXT,
  -- NUMERIC(p,s) dove p = cifre totali, s = cifre decimali
  price        NUMERIC(10, 2) NOT NULL,
  featured     BOOLEAN DEFAULT FALSE
);
  • TEXT vs VARCHAR(n): పోస్ట్‌గ్రెస్‌లో పనితీరు ఒకేలా ఉంటుంది. మీరు డేటాబేస్ స్థాయిలో చొప్పించిన పొడవును ** స్పష్టంగా పరిమితం చేయాలనుకున్నప్పుడు మాత్రమే మీరు VARCHAR(n)ని ఉపయోగిస్తారు.
  • NUMERIC(10, 2): డబ్బు లేదా అంకగణిత ఖచ్చితత్వం కోసం పర్ఫెక్ట్. ఇక్కడ ఇది గరిష్టంగా 8 పూర్ణాంక అంకెలు మరియు 2 దశాంశాలు (మొత్తం 10) అనుమతిస్తుంది. మీరు 10.555ని ఇన్‌సర్ట్ చేస్తే, Postgres దాన్ని 10.56కి రౌండ్ చేస్తుంది.

UUID రకం

వెబ్‌లో బహిర్గతమయ్యే సురక్షిత ఐడెంటిఫైయర్‌ల కోసం (URLలలో పబ్లిక్ IDలు వంటివి), UUID తరచుగా క్లాసిక్ SERIAL ఇంక్రిమెంట్ కంటే ప్రాధాన్యతనిస్తుంది.

SQL
CREATE TABLE public_orders (
  id          UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  customer    TEXT NOT NULL,
  total       NUMERIC(10, 2)
);

ENUM (గణనలు)

తరచుగా నిలువు వరుస కొన్ని ముందే నిర్వచించబడిన విలువలలో ఒకదాన్ని మాత్రమే కలిగి ఉండాలి (ఉదా. ఆర్డర్ స్థితి: "కొత్త", "చెల్లింపు", "షిప్పింగ్"). CHECK కీవర్డ్‌ని ఉపయోగించడం ఒక విధానం, కానీ PostgreSQL అనుకూల ENUM రకాలను అందిస్తుంది.

SQL
-- Dobbiamo prima creare il tipo:
CREATE TYPE order_status AS ENUM ('nuovo', 'pagato', 'spedito', 'cancellato');

-- Ora possiamo usarlo in una tabella:
CREATE TABLE orders_demo (
  id SERIAL PRIMARY KEY,
  status order_status NOT NULL DEFAULT 'nuovo'
);

డేటా అనుగుణ్యతను రక్షిస్తూ ఎవరూ ఎప్పుడూ చెల్లని స్థితిని చొప్పించలేరని ఇది హామీ ఇస్తుంది.

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

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

దీనితో 'user_reviews' పట్టికను సృష్టించండి: id (SERIAL pk), test_id (డిఫాల్ట్‌తో UUID gen_random_uuid()), స్కోర్ (పూర్ణాంకం శూన్యం కాదు) మరియు కంటెంట్ (TEXT). ఇతర ఫీల్డ్‌లలో దేనికీ రకానికి మించి స్పష్టమైన పరిమితులు అవసరం లేదు.

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

CREATE TABLE user_reviews (...) ఆపై వివిధ ఫీల్డ్‌లను వ్రాయండి. కామాలను గుర్తుంచుకోండి.

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

వ్యాయామం సమీక్షించండి

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

ముందుగా 'అడ్మిన్' మరియు 'యూజర్' విలువలతో ENUM రకాన్ని 'user_role' సృష్టించండి. ఆపై id (SERIAL pk) మరియు రోల్‌తో 'enum_users' పట్టికను సృష్టించండి (మీరు ఇప్పుడే సృష్టించిన రకం, NULL కాదు).

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

మర్చిపోవద్దు; రెండు స్టేట్‌మెంట్‌లను వేరు చేయడానికి (క్రియేట్ టైప్ మరియు క్రియేట్ టేబుల్).

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