Asosiy tarkibga o‘tish
CodeArena
Kirish
Kurslar

SQL · Kerakli ustun va qatorlarni olish: SELECT, WHERE, DISTINCT, LIKE, NULL

SELECT va WHERE

Beginner 9 masala

Boshlash

Nazariya

SQL so‘rovi

SQL so‘rovi qaysi ma’lumot kerakligini aytadi, qanday topishni emas.

SELECT name, score
FROM students
WHERE city = 'Toshkent'
ORDER BY score DESC
LIMIT 3;

Bajarilish tartibi

FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. Shuning uchun WHERE da COUNT(*) ishlatib bo‘lmaydi — guruh shartini HAVING ga yozing.

JOIN

SELECT c.name, SUM(o.amount) AS total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.id, c.name;

LEFT JOIN buyurtmasiz mijozlarni ham qoldiradi (ularda o.amount — NULL). NULL bilan solishtirish IS NULL orqali, = NULL emas.

SELECT

SELECT jadvaldan kerakli ustunlarni oladi.

SELECT name, age FROM students;          -- ikki ustun
SELECT * FROM students;                  -- hamma ustunlar
SELECT name, price * qty AS total        -- hisoblangan ustun, AS — nom berish
FROM order_items;

Maslahatlar

  • Masala so‘ragan ustunlarni o‘sha tartibda chiqaring — * ko‘pincha xato javob beradi.
  • Ustun nomi masalada ko‘rsatilgan bo‘lsa, AS bilan aynan shunday nom bering.
  • SQL kalit so‘zlari katta-kichik harfga sezgir emas, lekin o‘qish uchun katta harfda yozish odat.

WHERE

WHERE faqat shartga mos qatorlarni qoldiradi.

SELECT name FROM students WHERE city = 'Toshkent';
SELECT * FROM products WHERE price BETWEEN 1000 AND 5000;
SELECT * FROM students WHERE grade >= 4 AND city <> 'Samarqand';
SELECT * FROM orders WHERE status IN ('new', 'paid');

Diqqat

  • Satrlar bitta qo‘shtirnoqda: 'Toshkent'.
  • AND OR dan oldin bajariladi — aralash shartlarni qavsga oling: (a OR b) AND c.
  • NULL bilan = ishlamaydi: IS NULL / IS NOT NULL ishlating.

DISTINCT

DISTINCT takrorlangan qatorlarni olib tashlaydi.

SELECT DISTINCT city FROM students;                 -- har shahar bir marta
SELECT DISTINCT city, faculty FROM students;        -- juftliklar bo‘yicha takrorsiz
SELECT COUNT(DISTINCT city) FROM students;          -- nechta turli shahar

DISTINCT butun qatorga ta’sir qiladi, bitta ustunga emas: SELECT DISTINCT a, b — (a, b) juftliklari takrorsiz.

LIKE

LIKE satrni andoza bo‘yicha qidiradi: % — istalgan uzunlikdagi belgilar, _ — bitta belgi.

SELECT name FROM students WHERE name LIKE 'A%';      -- A bilan boshlanadi
SELECT name FROM students WHERE name LIKE '%ova';    -- -ova bilan tugaydi
SELECT name FROM students WHERE name LIKE '%li%';    -- ichida "li" bor
SELECT code FROM rooms WHERE code LIKE 'A_1';        -- A, istalgan bitta belgi, 1

SQLite’da LIKE lotin harflari uchun katta-kichik harfni farqlamaydi. Aniq moslik kerak bo‘lsa — =.

NULL

NULL — «qiymat yo‘q». U hech narsaga teng emas, hatto o‘ziga ham.

SELECT name FROM customers WHERE phone IS NULL;
SELECT name, COALESCE(phone, 'yo‘q') AS phone FROM customers;   -- NULL o‘rniga qiymat

Diqqat

  • WHERE phone = NULL hech qachon ishlamaydi.
  • COUNT(*) barcha qatorlarni, COUNT(phone) faqat NULL bo‘lmaganlarini sanaydi.
  • AVG, SUM NULL larni o‘tkazib yuboradi.
  • LEFT JOIN dan keyin moslik topilmagan ustunlar NULL bo‘ladi — «buyurtmasi yo‘q mijozlar» shundan topiladi.

Beginner masalalar 8

Easy masalalar 1

Menyu

Ko‘rinish

Klaviatura yorliqlari

Ctrl K yoki /
Qidirish va buyruqlar
g h
Bosh sahifa
g p
Masalalar
g c
Musobaqalar
g r
Reyting
Ctrl Enter
Masala sahifasida — yechimni yuborish
?
Shu oyna