4.1 LIMIT
Kung inaasahan mong magbabalik ng masyadong maraming data ang iyong query sa SQL, maaari mong limitahan ang maximum na bilang nang maaga. Pagkatapos ng lahat, ang mga talahanayan ay maaaring maglaman ng libu-libo o kahit milyon-milyong mga hilera.
Pinapadali ng SQL na limitahan ang bilang ng mga hilera sa resulta ng isang query gamit ang LIMIT
. Ang keyword na ito ay ginagamit sa pinakadulo ng SQL query at ganito ang hitsura:
LIMIT quantity
Sumulat tayo ng query laban sa talahanayan ng produkto, na naglalaman ng listahan ng mga produkto ng aming tindahan. Ngunit dahil mayroon kaming isang napaka-matagumpay na tindahan at nagbebenta kami ng maraming mga produkto, nais naming makuha lamang ang unang 10 linya ng sagot. Narito ang magiging hitsura ng kahilingang iyon:
SELECT * FROM product
LIMIT 10
At makuha namin ang sumusunod na resulta ng query:
id | pangalan | tatak | presyo | bilangin |
---|---|---|---|---|
1 | mesa | IKEA | 20.00 | 15 |
2 | upuan | IKEA | 5.00 | 45 |
3 | Sofa | IKEA | 80.00 | 10 |
4 | kama | IKEA | 75.00 | 10 |
5 | Closet | Bosch | 125.00 | 15 |
6 | istante | istante | 25.00 | 114 |
7 | TV | LG | 350.00 | 4 |
8 | lampara | LG | 15.00 | 100 |
9 | Dresser | IKEA | 99.00 | 10 |
10 | Plato | Bosch | 199.00 | 10 |
Ngayon hihilingin lamang namin ang unang 5 mga hilera. Narito ang magiging hitsura ng kahilingang iyon:
SELECT * FROM product
LIMIT 5
Nakukuha namin ang sumusunod na resulta ng query:
id | pangalan | tatak | presyo | bilangin |
---|---|---|---|---|
1 | mesa | IKEA | 20.00 | 15 |
2 | upuan | IKEA | 5.00 | 45 |
3 | Sofa | IKEA | 80.00 | 10 |
4 | kama | IKEA | 75.00 | 10 |
5 | Closet | Bosch | 125.00 | 15 |
4.2 OFFSET
Huling beses natutunan namin kung paano limitahan ang bilang ng mga linya sa tugon ng server. At ngayon, sa halip na libu-libong mga hilera mula sa talahanayan ng produkto, maaari nating makuha ang unang 10 mga hilera at ipakita ang mga ito sa user. Ito ay perpekto. Ngunit paano namin ipapakita ang pangalawang 10 hilera? At ang pangatlo?
Kung isusulat natin ang LIMIT 20
, o LIMIT 30
, hindi ba ibabalik ng server ang 20 at 30 row ayon sa pagkakabanggit?
Ito ay para sa kasong ito na ang SQL ay may espesyal na keyword OFFSET
kung saan maaari mong hilingin sa server na laktawan ang N linya sa tugon nito. Ang keyword na ito ay ginagamit sa pinakadulo ng SQL query (pagkatapos LIMIT
) at mukhang:
OFFSET quantity
Sumulat tayo ng query sa talahanayan ng produkto at subukang makakuha ng mga talaan 11 hanggang 15. Sa madaling salita, hinihiling namin sa server na ibalik sa amin ang 5 row, ngunit laktawan muna ang unang 10 row ng tugon. Narito ang magiging hitsura ng kahilingang iyon:
SELECT * FROM product
LIMIT 5
OFFSET 10
Nakukuha namin ang sumusunod na resulta ng query:
id | pangalan | tatak | presyo | bilangin |
---|---|---|---|---|
labing-isa | Silyon | Bosch | 44.00 | 8 |
12 | palayok ng bulaklak | Smartflower | 99.00 | 9 |
13 | Tumayo | IKEA | 100.00 | 10 |
3 row lang ang ibinalik ng server, ibig sabihin, may kabuuang 13 row sa table namin. Nilaktawan ng server ang unang 10 at ibinalik ang susunod na 5.
4.3 PUMILI NG DISTINCT
Ang isa pang kapaki-pakinabang na keyword ay DISTINCT
. Ginagamit ito kapag may mga duplicate na tala sa talahanayan at gusto naming alisin ang mga duplicate.
Saan nagmumula ang mga duplicate sa aming talahanayan? Maaaring walang mga duplicate sa talahanayan, ngunit bilang resulta ng query, ito ay madali. Sumulat tayo ng query na magbabalik ng mga tatak ng lahat ng produkto na ibinebenta namin. Narito ang magiging hitsura ng kahilingang iyon:
SELECT brand FROM product
Nakukuha namin ang sumusunod na resulta ng query:
tatak |
---|
IKEA |
IKEA |
IKEA |
IKEA |
Bosch |
Bosch |
LG |
LG |
IKEA |
Bosch |
Bosch |
Smartflower |
IKEA |
Madaling makita na may mga duplicate na row sa table na ito. Ito ay upang matiyak na walang mga duplicate at kailangan mong gamitin ang keyword DISTINCT
. Narito ang magiging hitsura ng naitama na kahilingan:
SELECT DISTINCT brand
FROM product
Nakukuha namin ang sumusunod na resulta ng query:
tatak |
---|
IKEA |
Bosch |
LG |
Smartflower |
Mas mabuti. Hindi ba? ;)
4.4 ORDER NI
At sa wakas nakuha na namin ang pag-uuri . Upang ayusin ang mga resulta ng isang query, kailangan mong gamitin ang keyword ORDER BY
. Sa teknikal, ito ay dalawang salita, ngunit ang kakanyahan ay hindi mahalaga. Dalawang salita, isang operator.
Dapat itong isulat pagkatapos ng keyword WHERE
, ngunit bago LIMIT
at OFFSET
. Kung sumulat ka ORDER BY
pagkatapos ng LIMIT
, ang SQL server ay magbabalik lamang ng isang error sa iyo.
Sa pangkalahatan, ganito ang hitsura ng operator na ito:
ORDER BY column order
Kung saan ang column ay ang pangalan ng column sa resulta ng talahanayan / pag-uuri. At ang pagkakasunud-sunod ay ang pagkakasunud-sunod.
Ang pagkakasunud-sunod ay maaaring may tatlong uri:
ASC
(mula sa Ascending) - pataas;DESC
(mula sa Pababa) - pababang;- Hindi tinukoy - gagamitin
ASC
Sumulat tayo ng query na magbabalik ng listahan ng mga produkto na pinagsunod-sunod ayon sa presyo sa pataas na pagkakasunud-sunod. Narito ang magiging hitsura ng kahilingang iyon:
SELECT * FROM product
ORDER BY price ASC
LIMIT 10
Nakukuha namin ang sumusunod na resulta ng query:
id | pangalan | tatak | presyo | bilangin |
---|---|---|---|---|
2 | upuan | IKEA | 5.00 | 45 |
8 | lampara | LG | 15.00 | 100 |
1 | mesa | IKEA | 20.00 | 15 |
6 | istante | Bosch | 25.00 | 114 |
labing-isa | Silyon | Bosch | 44.00 | 8 |
4 | kama | IKEA | 75.00 | 10 |
3 | Sofa | IKEA | 80.00 | 10 |
12 | palayok ng bulaklak | Smartflower | 99.00 | 9 |
9 | Dresser | IKEA | 99.00 | 10 |
13 | Tumayo | IKEA | 100.00 | 10 |
Makakakuha kami ng parehong resulta kung hindi namin tinukoy ang pagkakasunud-sunod ng pag-uuri - lalaktawan namin ang salita ASC
.
4.5 ORDER BY sa maraming column
Pinapayagan ka ng operator ORDER BY
na pag-uri-uriin ang resulta sa pamamagitan ng ilang mga hanay. Ito ay maaaring maging lubhang kapaki-pakinabang kapag ang unang column ay may maraming duplicate na elemento. Ang pangkalahatang anyo ng operator na ito ay ang mga sumusunod:
ORDER BY column 1 order 1, column 2 order 2, column 3 order 3
Sa madaling salita, kung pagkatapos ng pag-uuri ayon sa unang hanay ay mayroon kang ilang magkaparehong mga halaga sa malapit, pagkatapos ay pinagsunod-sunod sila ng pangalawang haligi, at iba pa.
Sumulat tayo ng query na mag-uuri sa ating mga produkto ayon sa brand, at para sa mga produktong may parehong brand - sa pababang pagkakasunud-sunod ng kanilang numero. Narito ang magiging hitsura ng kahilingang iyon:
SELECT * FROM product
ORDER BY brand ASC, count
DESC
Nakukuha namin ang sumusunod na resulta ng query:
id | pangalan | tatak | presyo | bilangin |
---|---|---|---|---|
6 | istante | Bosch | 25.00 | 114 |
5 | Closet | Bosch | 125.00 | 15 |
10 | Plato | Bosch | 199.00 | 10 |
labing-isa | Silyon | Bosch | 44.00 | 8 |
2 | upuan | IKEA | 5.00 | 45 |
1 | mesa | IKEA | 20.00 | 15 |
9 | Dresser | IKEA | 99.00 | 10 |
13 | Tumayo | IKEA | 100.00 | 10 |
4 | kama | IKEA | 75.00 | 10 |
3 | Sofa | IKEA | 80.00 | 10 |
8 | lampara | LG | 15.00 | 100 |
7 | TV | LG | 350.00 | 4 |
12 | palayok ng bulaklak | Smartflower | 99.00 | 9 |
Tingnang mabuti ang talahanayan - pinagbukud-bukod ang mga row nito ayon sa pangalan ng brand (alphabetical order), at ang mga row na may parehong pangalan ng brand ay pinagbubukod-bukod ayon sa numero ng produkto sa pababang pagkakasunod-sunod (huling column).
GO TO FULL VERSION