Data filtering: Distinct, where, between, in, like, Union, Intersect, Except, Limit, IS NULL

SQLite ની ગાળણની ઓજારપેટી પરિણામ સાંકડું કરે છે: WHERE હરોળ ચકાસે છે, DISTINCT પુનરાવર્તન કાઢે છે, BETWEEN/IN/LIKE/IS NULL શરતો ઝીણી કરે છે, LIMIT output ની હદ બાંધે છે, અને UNION/INTERSECT/EXCEPT આખી queries જોડે છે.

11 min read · 10 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

એક હજાર હરોળ, એક પ્રશ્ન

marks નું કોષ્ટક હવે આખી college ધરાવે છે: હજારો હરોળ. કોઈને ક્યારેય એ બધી જોઈતી નથી.

આચાર્યને 60 અને 80 વચ્ચેના DBMS ના scores જોઈએ છે. ઓફિસને students કયાં શહેરોમાંથી આવે છે એ જોઈએ છે (દરેક શહેર એક વાર). Notice board ને ટોચના 5 જોઈએ છે. પરીક્ષા વિભાગને એવા students જોઈએ છે જેમણે પેપર ચૂક્યું (score ખૂટે છે).

SQL દરેકનો જવાબ એક નાના ગાળણના શબ્દથી આપે છે, અને આ પાઠ આખી ઓજારપેટી છે: દસ શબ્દ, દરેકનું એક કામ, તમે પહેલેથી જાણો છો એ એક કોષ્ટક પર.

Theory

એક જ પાઇપલાઇન પર ચાળણીઓ

Query ને કોષ્ટકથી તમારા પડદા સુધીની પાઇપલાઇન તરીકે વિચારો, અને દરેક શબ્દને એની પર જડાતી ચાળણી તરીકે:

WHERE મળતી હરોળ રાખે છે, DISTINCT પુનરાવર્તન ઓગાળે છે, LIMIT n હરોળ પછી પ્રવાહ કાપે છે. અને જ્યારે તમારી પાસે બે પાઇપલાઇન હોય, ત્યારે UNION એમને સાથે ઠાલવે છે, INTERSECT ફક્ત જે બંને વહન કરે એ રાખે છે, EXCEPT એકમાંથી બીજી બાદ કરે છે. કોઈ પણ સંયોજન, એ જ કોષ્ટક.

At a glance

હરોળ ગાળવાનું કુટુંબ (DISTINCT/LIMIT સિવાય બધું WHERE ની અંદર વસે છે)

ઓજારએવી હરોળ રાખે છે જ્યાં...ઉદાહરણ
WHEREશરત સાચી હોયWHERE subject = 'DBMS'
BETWEENમૂલ્ય હદમાં હોય, છેડા સહિતscore BETWEEN 60 AND 80
INમૂલ્ય યાદીમાં હોયcity IN ('Surat', 'Navsari')
LIKEલખાણ ભાત સાથે મળે (% કોઈ પણ, _ એક)name LIKE 'R%'
IS NULLમૂલ્ય ખૂટતું હોયscore IS NULL
DISTINCT(output) પુનરાવર્તન કઢાયુંSELECT DISTINCT city
LIMIT(output) ફક્ત પહેલી n હરોળLIMIT 5

Practical

ઓફિસના ચાર પ્રશ્નો, જવાબ સાથે

-- 1. DBMS scores from 60 to 80 (BOTH ends included)
SELECT roll, score FROM marks
WHERE subject = 'DBMS' AND score BETWEEN 60 AND 80;

-- 2. every city once
SELECT DISTINCT city FROM students;

-- 3. top 5 DBMS scores
SELECT roll, score FROM marks
WHERE subject = 'DBMS'
ORDER BY score DESC
LIMIT 5;

-- 4. students who missed the paper (score missing)
SELECT roll FROM marks
WHERE subject = 'DBMS' AND score IS NULL;

-- names starting with R:  'R%'   second letter i: '_i%'
SELECT name FROM students WHERE name LIKE 'R%';

This example runs in Gri-Learn on the web, where you can edit it and see the output.

Theory

આખી queries જોડવી: UNION, INTERSECT, EXCEPT

Set નાં operators બે પૂરાં SELECT પર કામ કરે છે જેમાં ખાનાંની સંખ્યા સરખી હોય:

  • UNION: બેમાંથી કોઈ પણ query માં દેખાતી હરોળ (પુનરાવર્તન કઢાય; UNION ALL એમને રાખે છે).
  • INTERSECT: બંને માં દેખાતી હરોળ.
  • EXCEPT: પહેલીમાં પણ બીજીમાં નહીં એવી હરોળ.

ઉદાહરણ: DBMS પાસ કરનારા rolls INTERSECT Maths પાસ કરનારા rolls એ બંને પાસ કરનારા students આપે છે. INTERSECT ને બદલે EXCEPT મૂકો અને તમને એ મળે છે જેમણે DBMS પાસ કર્યું પણ Maths નહીં: ફરી પરીક્ષાની યાદી.

Quiz

એક student ગેરહાજર શોધવા લખે છે: SELECT roll FROM marks WHERE score = NULL; NULL scores હોવા છતાં એ કશું આપતું નથી. કેમ?

  1. NULL એ અજ્ઞાત છે, એટલે score = NULL ક્યારેય સાચું નથી; સાચી કસોટી score IS NULL છે
  2. Query ને roll પહેલાં DISTINCT જોઈએ
  3. NULL વાળી હરોળ ફક્ત LIKE 'NULL' થી શોધાય છે
  4. SQLite NULL ને 0 તરીકે સંઘરે છે, એટલે કસોટી score = 0 હોવી જોઈએ
Show the answer

NULL એ અજ્ઞાત છે, એટલે score = NULL ક્યારેય સાચું નથી; સાચી કસોટી score IS NULL છે

NULL એટલે અજ્ઞાત, અને અજ્ઞાત સાથે કશું સરખાવવાથી અજ્ઞાત મળે છે, ક્યારેય સાચું નહીં, એટલે = NULL કોઈ હરોળ સાથે મળતું નથી: SQL નો સૌથી જાણીતો એક ફાંદો. એકમાત્ર સાચી કસોટીઓ છે IS NULL અને IS NOT NULL. વિકલ્પ D જોખમી છે: NULL એ શૂન્ય નથી (0 નો score એ ખરેખરો score છે); વિકલ્પ B અને C query ને શણગારે છે પણ ખરેખરી સમસ્યાને અડતા નથી.

Think first

હરોળની સંખ્યા ધારો

marks માં DBMS ના scores 55, 60, 80, 95 છે (ચાર હરોળ). Tap કરતાં પહેલાં, દરેક કેટલી હરોળ આપે એ ગણો:

1. WHERE score BETWEEN 60 AND 80

2. WHERE score IN (55, 95)

3. WHERE score > 60 LIMIT 1

Show the answer

1. 2 હરોળ (60 અને 80: BETWEEN બંને છેડા સામેલ કરે છે, જે હકીકત પરીક્ષાઓ ચકાસે છે).

2. 2 હરોળ (યાદીમાં ચોક્કસ સભ્યપદ: 55 અને 95).

3. 1 હરોળ (80 અને 95 લાયક છે, LIMIT ફક્ત પહેલી અપાયેલી રાખે છે).

જો તમે BETWEEN માટે 1 હરોળ કહી, તો તમે છેડા બાકાત રાખ્યા: BETWEEN 60 AND 80 એટલે >= 60 AND <= 80, હંમેશા છેડા સહિત.

Watch out

ત્રણ ટેવપૂર્વક marks ખાનારા

IS NULL ને બદલે = NULL: ચૂપચાપ કશું આપતું નથી.

BETWEEN ના છેડા: છેડા સહિત, બંને બાજુ. તમે જાણો છો એ દેખાડવા જવાબમાં એની બાજુમાં ">= અને <=" લખો.

LIKE નાં લંગર: 'R%' = R થી શરૂ; '%R' = R થી પૂરું; '%R%' = R ધરાવે; '_i%' = બીજો અક્ષર i. ભાતને સ્થાને સ્થાને વાંચો અને query સમજાવવાનું કહેવાય ત્યારે % અને _ દરેકનો અર્થ કહો.

Theory

તમે પાયાનું BCA105 માં મળ્યા હતા

WHERE અને DISTINCT BCA105 માં મીરાની દુકાન પર દેખાયાં હતાં; અહીં નવું છે એક જ જગ્યાએ આખી ઓજારપેટી વત્તા set નાં operators. એકમ 3 માં આ જ queries cursor.execute() માટે Python ની strings માં પ્રવાસ કરે છે, અને એકમ 4 માં pandas એ જ વિચારને boolean masks તરીકે ફરી અમલમાં મૂકે છે (df[df.score > 60]). ગાળણ એ આ વિષયમાં ત્રણ વેશ પહેરેલો એક જ ખ્યાલ છે.

Summary

Key takeaways

  • WHERE દરેક હરોળ ચકાસે છે; BETWEEN (છેડા સહિત), IN (યાદી), LIKE (% કોઈ પણ, _ એક અક્ષર), IS NULL એને ઝીણું કરે છે.
  • = NULL ક્યારેય મળતું નથી: IS NULL / IS NOT NULL એ એકમાત્ર સાચી null ની કસોટીઓ છે.
  • DISTINCT output ની પુનરાવર્તિત હરોળ કાઢે છે; LIMIT n output ની હદ બાંધે છે (ટોચની n માટે ORDER BY સાથે જોડો).
  • UNION (કોઈ પણ એક, પુનરાવર્તન વગર), INTERSECT (બંને), EXCEPT (પહેલી ઓછા બીજી) એ સરખી પહોળાઈનાં બે SELECT જોડે છે.
  • UNION ALL પુનરાવર્તન રાખે છે.
  • Memory hook: એક જ પાઇપલાઇન પર જડાયેલી ચાળણીઓ.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Introduction to SQLite

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati