AXV

SQL: NULL va ma'lumot turlari

NULL, IS NULL, ISNULL, COALESCE, INT, DECIMAL, NVARCHAR, DATE, BIT, CAST

9-sinfBusiness Intelligence5-hafta · 15-dars

Bugun nimalarni o'rganamiz?

NULL va IS NULL

Qiymat yo'q degani nol emas

ISNULL va COALESCE

NULL ni almashtirish

Ma'lumot turlari

Ustun uchun to'g'ri tur

Takrorlash

ORDER BY Narx DESC bilan TOP 1 qaysi mahsulotni beradi (eng qimmati Noutbuk)?

DESC bo'yicha birinchi — eng katta narx.
01

NULL va IS NULL

Qiymat yo'q degani nol emas

NULL tekshiruvi

Telefon = NULL Natija:noma'lum IS NULL TRUE: qatorqoladi NULL ni faqat IS NULL bilan tekshiring

IS NULL va IS NOT NULL


SELECT Ism FROM Mijozlar
WHERE Telefon IS NULL;

SELECT Ism FROM Mijozlar
WHERE Telefon IS NOT NULL;

SELECT Ism FROM Mijozlar
WHERE Telefon = NULL;
  
IS NULL — Vali, Dilnoza (2 qator). IS NOT NULL — Ali, Sana, Jasur (3 qator). = NULL — 0 qator!

Mini-test

WHERE Telefon = NULL nechta qator qaytaradi?

= NULL hech qachon TRUE bermaydi; IS NULL kerak.
02

ISNULL va COALESCE

NULL ni almashtirish

COALESCE tartibi

Telefon bormi? Yo'q: Emailbormi? Yo'q: matn Birinchimavjud qiymat COALESCE birinchi NULL bo'lmaganini oladi

ISNULL va COALESCE


SELECT Ism,
       ISNULL(Telefon, N'Yo''q') AS Tel,
       COALESCE(Telefon, Email, N'Aloqa yo''q') AS Aloqa
FROM Mijozlar;

SELECT Ism FROM Mijozlar
WHERE Telefon <> N'901234567';
  
Ikkinchi so'rov faqat Sana va Jasur ni qaytaradi: NULL telefonli Vali va Dilnoza ham chiqmaydi. Ularni ham olish uchun OR Telefon IS NULL qo'shing.

Mini-test

COALESCE(NULL, NULL, N'C', N'D') nimani qaytaradi?

Birinchi NULL bo'lmagan qiymat: C.
03

Ma'lumot turlari

Ustun uchun to'g'ri tur

Qiymatga mos tur

Butun: INT Pul: DECIMAL Matn: NVARCHAR Sana:DATE, BIT To'g'ri tur xotirani va aniqlikni himoya qiladi

CAST va sana filtri


SELECT Ism, RoyxatSana
FROM Mijozlar
WHERE RoyxatSana >= '2025-01-01';

SELECT Ism FROM Mijozlar
WHERE Faol = 1;

SELECT CAST(7 AS DECIMAL(5,2)) / 2 AS Natija,
       CAST(Narx AS INT) AS ButunNarx
FROM Mahsulotlar;
  
Sana YYYY-MM-DD formatida yoziladi. RoyxatSana >= '2025-01-01' — Sana, Dilnoza, Jasur. Faol = 1 — Ali, Vali, Dilnoza. CAST(7 AS DECIMAL(5,2)) / 2 natijasi 3.50.

Mini-test

Pul miqdori uchun qaysi tur mos?

DECIMAL aniq o'nlik sonlarni saqlaydi.

NULL va 0 / bo'sh matn

0 yoki ''

Qiymat bor: nol yoki bo'sh matn sifatida kiritilgan
VS

NULL

Qiymat yo'q yoki noma'lum

NULL ni = 0 yoki = '' bilan topib bo'lmaydi: IS NULL kerak.

NULL atamalari. Bosing

IS NULL

bosing

NULL bo'lgan qatorlarni topadi

IS NOT NULL

bosing

Qiymati bor qatorlarni topadi

ISNULL

bosing

Ikki parametrli almashtirish (SQL Server)

COALESCE

bosing

Birinchi NULL bo'lmagan qiymat (standart)

NULL bilan ishlash bosqichlari

1. Aniqlang

IS NULL bilan bo'sh qatorlarni toping.

2. Almashtiring

ISNULL yoki COALESCE bilan ko'rinadigan qiymat bering.

3. Tekshiring

<> va = natijalarida NULL qatorlari yo'qolmaganini kuzating.

Turlar yonma-yon

TurNima saqlaydiMisol
INTbutun son25
DECIMAL(12,2)aniq o'nlik son80000.50
NVARCHAR(30)unicode matnN'Ali'
DATEsana'2025-01-10'
BIT0 yoki 11

Pastga bosing: tanlash qoidalari

Tur tanlash qoidalari

  1. Hisoblanadigan butun sonlar uchun INT.
  2. Pul va aniq o'nlik sonlar uchun DECIMAL.
  3. Matn uchun NVARCHAR, sana uchun DATE, ha/yo'q uchun BIT.

NULL ni ko'rinadigan qilamiz


SELECT Ism, Telefon
FROM Mijozlar;
  

NULL ni ko'rinadigan qilamiz


SELECT Ism,
       ISNULL(Telefon, N'Yo''q') AS Tel
FROM Mijozlar;
  

Mijozlar jadvali raqamlarda

0
mijoz jadvalda
0
telefoni NULL
0
'= NULL' topadigan qator

IS NULL 2 ta qatorni topadi, = NULL — hech qaysini.

Amaliy topshiriq 20 daqiqa

OsonNULL telefonlar: Telefoni kiritilmagan mijozlarni toping.
OsonAloqa bor mijozlar: Telefoni bor mijozlarni IS NOT NULL bilan chiqaring.
O'rtaAlmashtirish: Har bir mijoz uchun telefonni, telefon yo'q bo'lsa emailni, ikkalasi ham yo'q bo'lsa «Aloqa yo'q» matnini chiqaring.
QiyinTuzoqni toping: WHERE Telefon <> N'901234567' nechta qator beradi? Nega Vali va Dilnoza chiqmaydi? Ularni ham olish uchun so'rovni tuzating.
BonusTurlar va CAST: 2025-yildan keyin ro'yxatdan o'tgan faol mijozlar ismini chiqaring va Mahsulotlar narxini CAST bilan butun songa aylantiring.

Dars xulosasi

NULL

Qiymat yo'q; IS NULL / IS NOT NULL.

ISNULL / COALESCE

NULL ni almashtirish.

Turlar

INT, DECIMAL, NVARCHAR, DATE, BIT, CAST.

Uyga vazifa: Mijozlar jadvalida NULL va tur so'rovlari.

Keyingi dars: Aggregatsiya funksiyalari

COUNT, SUM, AVG, MIN, MAX

6-hafta · 16-dars