Limbaj de interogare structurat (SQL) oferă utilizatorilor de baze de date posibilitatea de a crea interogări personalizate pentru a extrage informații din baze de date. Într-un articol anterior, am explorat extragerea informațiilor dintr-o bază de date folosind interogări SQL SELECT. Să aprofundăm această discuție și să explorăm cum puteți obține performanțe avansate întrebări pentru a prelua date care se potrivește condițiilor specifice.
Să luăm în considerare un exemplu bazat pe cel utilizat în mod obișnuit Northwind bază de date, care se livrează frecvent cu produse de bază de date ca tutorial.
Iată un extras din tabelul de produse al bazei de date:
ID produs | Numele produsului | ID furnizor | QuantityPerUnit | Preț unitar | Unitati in stoc |
---|---|---|---|---|---|
1 | Chai | 1 | 10 cutii x 20 pungi | 18.00 | 39 |
2 | Chang | 1 | Sticle de 24 - 12 oz | 19.00 | 17 |
3 | Sirop de anason | 1 | Flacoane de 12 - 550 ml | 10.00 | 13 |
4 | Condimentul Cajun al bucătarului Anton | 2 | 48 - borcane de 6 oz | 22.00 | 53 |
5 | Chef Anton's Gumbo Mix | 2 | 36 cutii | 21.35 | 0 |
6 | Băiatul Boysenberry Spread | 3 | 12 - 8 borcane de oz | 25.00 | 120 |
7 | Pere uscate organice ale unchiului Bob | 3 | 12 - 1 kg pachete. | 30.00 | 15 |
Condiții limită simple
Primele restricții pe care le vom pune la interogarea noastră implică condiții simple la graniță. Le putem specifica în clauza WHERE a interogării SELECT, folosind instrucțiuni simple de condiție construite cu operatori standard, cum ar fi ,> = și <=.
În primul rând, să încercăm o interogare simplă care ne permite să extragem o listă cu toate produsele din baza de date care au un preț unitar mai mare de 20,00:
SELECTAȚI Nume produs, Preț unitate
DIN produse
UNDE UnitPrice> 20.00
Aceasta produce o listă de patru produse, după cum se arată mai jos:
ProductName UnitPrice
Chef Anton's Gumbo Mix 21.35
Condimentul Cajun al bucătarului Anton 22.00
Bunică Boysenberry Spread 25,00
Pere uscate organice ale unchiului Bob 30,00
Putem folosi și clauza WHERE cu valori de șir. Aceasta echivalează practic caractere cu numere, A reprezentând valoarea 1 și Z reprezentând valoarea 26. De exemplu, am putea afișa toate produsele cu nume care încep cu U, V, W, X, Y sau Z cu următoarea interogare:
Selectați numele produsului
DIN produse
UNDE ProductName> = 'T'
Care produce rezultatul:
Numele produsului
Pere uscate organice ale unchiului Bob
Exprimarea gamelor folosind limite
Clauza WHERE ne permite, de asemenea, să implementăm o condiție de interval pe o valoare utilizând mai multe condiții. De exemplu, dacă am dori să luăm interogarea de mai sus și să limităm rezultatele la produse cu prețuri cuprinse între 15.00 și 20.00, am putea utiliza următoarea interogare:
SELECTAȚI Nume produs, Preț unitate
DIN produse
UNDE UnitPrice> 15.00 ȘI UnitPrice <20.00
Acest lucru produce rezultatul prezentat mai jos:
ProductName UnitPrice
Chai 18.00
Chang 19.00
Exprimarea gamelor cu BETWEEN
SQL oferă, de asemenea, o comandă rapidă între sintaxa care reduce numărul de condiții pe care trebuie să le includem și face ca interogarea să fie mai lizibilă. De exemplu, în loc să folosim cele două condiții WHERE de mai sus, am putea exprima aceeași interogare ca:
SELECTAȚI Nume produs, Preț unitate
DIN produse
UNDE Preț unitate între 15.00 ȘI 20.00
Ca și în cazul celorlalte clauze de condiție, BETWEEN funcționează și cu valori de șir. Dacă am dori să producem o listă a tuturor țărilor care încep cu V, W sau X, am putea folosi interogarea:
Selectați numele produsului
DIN produse
UNDE Denumirea produsului ÎNTRE „A” și „D”
Care produce rezultatul:
Numele produsului
Sirop de anason
Chai
Chang
Chef Anton's Gumbo Mix
Condimentul Cajun al bucătarului Anton
Clauza WHERE este o parte puternică a limbajului SQL care vă permite să restrângeți rezultatele la valorile care se încadrează în intervalele specificate. Este foarte frecvent utilizat pentru a ajuta la exprimarea logicii de afaceri și ar trebui să facă parte din setul de instrumente al fiecărui profesionist din baza de date. Este adesea util să încorporezi clauze comune într-o procedură stocată pentru a o face accesibilă celor fără cunoștințe SQL.