38 / 100

BOOLEAN

Mantiqiy ma'lumot turi

Kirish: Ushbu qo'llanmada siz PostgreSQL BOOLEAN ma'lumot turi yordamida mantiqiy qiymatlarni (true va false) saqlashni o'rganasiz.

PostgreSQL BOOLEAN ma'lumot turiga kirish

PostgreSQLda mantiqiy ma'lumotlarni (true va false) saqlash uchun boolean turidan foydalaniladi.

boolean ma'lumot turi uch xil qiymatga ega bo'lishi mumkin:

  • true (rost)
  • false (yolg'on)
  • NULL (noma'lum holat)

NULL noma'lum (aniqlanmagan) holatni ifodalaydi.

PostgreSQL boolean turini ifodalash uchun boolean kalit so'zidan foydalanadi. Shuningdek, uning qisqartmasi bo'lgan bool kalit so'zidan ham foydalanishingiz mumkin.

PostgreSQL bitta mantiqiy qiymatni saqlash uchun xotiradan 1 bayt joy ajratadi.

SQL so'rovlarida true va false dan tashqari, PostgreSQL rost va yolg'onni ifodalovchi bir nechta muqobil yozuv shakllarini ham qabul qiladi:

Rost (True)Yolg'on (False)
truefalse
't''f'
'true''false'
'y''n'
'yes''no'
'1''0'

E'tibor bering, true va false dan tashqari boshqa barcha ifodalar bittalik tirnoq ('...') ichida yozilishi kerak.

PostgreSQL BOOLEAN turiga misollar

Birinchidan, mahsulotlar ma'lumotlarini saqlash uchun products nomli jadval yaratamiz:

query.sql
CREATE TABLE products (
  id INT GENERATED ALWAYS AS IDENTITY,
  name VARCHAR NOT NULL,
  is_active BOOL
);

products jadvalidagi is_active ustuni boolean turida e'lon qilingan, shuning uchun u true, false yoki NULL qiymatlarini saqlay oladi.

Agar mantiqiy ustunga NULL qiymati tushishini istamasangiz, unga NOT NULL cheklovini qo'shishingiz mumkin.

Ikkinchidan, products jadvaliga bir nechta qator qo'shamiz:

query.sql
INSERT INTO
  products (name, is_active)
VALUES
  ('iPhone 6', false),
  ('iPhone 16', true),
  ('Galaxy M01', 'f'),
  ('Galaxy Z Fold6', 't'),
  ('Galaxy Z Flip6', NULL) 
RETURNING *;

Natija:

matn
id |      name      | is_active
----+----------------+-----------
  1 | iPhone 6       | f
  2 | iPhone 16      | t
  3 | Galaxy M01     | f
  4 | Galaxy Z Fold6 | t
  5 | Galaxy Z Flip6 | NULL

Uchinchidan, faol bo'lmagan (inaktiv) mahsulotlarni tanlab olamiz:

query.sql
SELECT * FROM products
WHERE is_active = false;

Natija:

matn
id |    name    | is_active
----+------------+-----------
  1 | iPhone 6   | f
  3 | Galaxy M01 | f

Siz false o'rniga 'f', '0', 'n' yoki 'no' kabi boshqa yolg'on qiymatlardan ham foydalanishingiz mumkin:

query.sql
SELECT * FROM products
WHERE is_active = 'f';

To'rtinchidan, jadvaldagi faol mahsulotlarni so'raymiz:

query.sql
SELECT * FROM products
WHERE is_active = true;

Natija:

matn
id |      name      | is_active
----+----------------+-----------
  2 | iPhone 16      | t
  4 | Galaxy Z Fold6 | t

Mantiqiy ustunlar bilan qisqartirilgan taqqoslash

PostgreSQL shartlarda ustun nomining o'zini yozish orqali uni bilvosita (implicit) true ga teng deb hisoblashga imkon beradi. Masalan, quyidagi so'rov barcha faol mahsulotlarni olib beradi:

query.sql
SELECT * FROM products
WHERE is_active;

Natija:

matn
id |      name      | is_active
----+----------------+-----------
  2 | iPhone 16      | t
  4 | Galaxy Z Fold6 | t

Ustun qiymatini teskarisiga o'zgartirish (inkor qilish) uchun NOT operatoridan foydalanasiz:

query.sql
SELECT * FROM products
WHERE NOT is_active;

Natija:

matn
id |    name    | is_active
----+------------+-----------
  1 | iPhone 6   | f
  3 | Galaxy M01 | f

BOOLEAN ustunlar uchun standart qiymat (DEFAULT) o'rnatish

Mantiqiy ustunga standart qiymat belgilash uchun DEFAULT cheklovidan foydalaniladi:

query.sql
column_name BOOL DEFAULT boolean_value;

Masalan, quyidagi buyruq foydalanuvchilar jadvalini yaratadi va undagi email_confirmed ustuniga standart qiymat sifatida false ni o'rnatadi:

query.sql
CREATE TABLE users (
  id INT GENERATED ALWAYS AS IDENTITY,
  email VARCHAR NOT NULL,
  password VARCHAR NOT NULL,
  email_confirmed BOOL NOT NULL DEFAULT false
);

Xulosa

  • Mantiqiy qiymatlarni (true, false, NULL) saqlash uchun PostgreSQL BOOLEAN (yoki BOOL) turidan foydalaning.
  • PostgreSQL mantiqiy qiymatlar uchun bilvosita (qisqartirilgan) taqqoslash sintaksisini qo'llab-quvvatlaydi (WHERE is_active va WHERE NOT is_active).
  • Standart holatni ko'rsatish uchun DEFAULT true yoki DEFAULT false cheklovidan foydalaning.