6-modul · 2-dars: Table · Constraints

Daraja: O'rta

Table · Constraints. PostgreSQL bo‘yicha nazariya, amaliy namuna va mustaqil mashq.

Tushuntirish

## Dars maqsadi Table · Constraints tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.

## Nazariya Table ustunlar va qatorlardan iborat. Ustun turi qanday qiymat yozish mumkinligini, constraint esa biznes qoidalarini belgilaydi. PRIMARY KEY qatorni noyob aniqlaydi va NULLni taqiqlaydi; FOREIGN KEY boshqa jadvaldagi mavjud kalitga bog'lanishni tekshiradi. UNIQUE takrorni, NOT NULL bo'sh qiymatni, CHECK esa ifoda FALSE bo'lishini cheklaydi; CHECK ichidagi NULL alohida e'tibor talab qiladi. PostgreSQLda upsert uchun INSERT ... ON CONFLICT ishlatiladi. Conflict nishoni mos unique constraint yoki unique indexga tayanadi. DO NOTHING takrorni tashlab ketadi; DO UPDATE mavjud qatorni yangilaydi. Bu parallel ikki so'rov orasidagi SELECT-keyin-INSERT poygasidan himoyalashga yordam beradi. psql ichida \l bazalarni, \dt jadvallarni, \d jadval tuzilishini ko'rsatadi, \c bazani almashtiradi, \q chiqadi. Bu buyruqlar SQL emas va JDBC orqali yuborilmaydi. Constraintni faqat frontend tekshiruviga almashtirmang: boshqa client va parallel so'rovlar ham mavjud.

## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/6-module%28database%29.md) [Rasmiy qo‘llanma](https://www.postgresql.org/docs/current/)

Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.

Kod misoli

CREATE TEMP TABLE demo_user (
  id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  email text UNIQUE NOT NULL,
  age integer CHECK (age >= 0)
);
INSERT INTO demo_user(email, age) VALUES ('a@example.test', 20)
ON CONFLICT (email) DO UPDATE SET age = EXCLUDED.age;

Keng tarqalgan xatolar

Mashqlar

Teglar: pdp, modul-06, nazariya

Interaktiv ko'rinish (viktorina, izohlar, tarix)