Jei jūsų užklausos nepakankamai aktyvios, įtraukdami kelis pagrindinius SQL sakinius galite gauti rezultatyvesnius rezultatus. Pažvelkime į kelių tipų SQL sakinius ir sąlygas arba dalis, kurias galite redaguoti, kad gautumėte norimus rezultatus.
Šiame straipsnyje:
- Sakinio Select kūrimas
- Sąlygos SELECT tinkinimas
- Sąlygos FROM tinkinimas
- Sąlygos WHERE tinkinimas
- Tinkinimas naudojant operatorių UNION
Sakinio Select kūrimas
SQL SELECT sakinys turi dvi arba tris sąlygas. Sąlyga SELECT nurodo duomenų bazei, kur ieškoti duomenų, ir prašo pateikti konkretų rezultatą.
Pastaba
SELECT sakiniai visada baigiasi kabliataškiu (;) paskutinės sąlygos pabaigoje arba viena eilutėje, SQL sakinio pabaigoje.
Šis select sakinys prašo "Access" gauti informaciją iš stulpelių El. pašto adresas ir Įmonė, iš lentelės Kontaktai, konkrečiai ten, kur stulpelyje Miestas yra žodis "Sietlas".
Anksčiau pateiktoje užklausoje yra trys sąlygos: SELECT, FROM ir WHERE.
1. Sąlyga SELECT išvardija stulpelius, kuriuose yra norimi naudoti duomenys, ir nurodo operatorių (SELECT) ir du identifikatorius (El. pašto adresas ir Įmonė). Jei identifikatoriuje yra tarpų arba specialiųjų simbolių (pvz., "El. pašto adresas"), identifikatorių rašykite laužtiniuose skliaustuose.
2. Sąlyga FROM identifikuoja šaltinio lentelę. Šiame pavyzdyje yra operatorius (FROM) ir identifikatorius (Kontaktai).
3. Sąlyga WHERE yra pasirinktinė sąlyga. Pavyzdyje yra operatorius (WHERE) ir išraiška (Miestas="Siatlas").
Daugiau informacijos apie išrinkimo užklausas rasite paprastos išrinkimo užklausos kūrimas.
Čia pateikiamas dažniausiai naudojamų SQL sąlygų sąrašas:
| SQL sąlyga | Atliekami veiksmai | Būtina? |
|---|---|---|
| SELECT | Išvardija laukus, kuriuose yra dominančių duomenų. | Taip |
| FROM | Išvardija lenteles, kuriose yra laukai, nurodyti sąlygoje SELECT. | Taip |
| WHERE | Nurodo lauko kriterijus, kuriuos kiekvienas įrašas turi atitikti, kad būtų įtrauktas į rezultatus. | Ne |
| ORDER BY | Nurodo, kaip rūšiuoti rezultatus. | Ne |
| GROUP BY | SQL sakinyje, kuriame yra sudėtinių funkcijų, išvardija laukus, kurie nėra apibendrinti sąlygoje SELECT. | Tik jei yra tokių laukų |
| HAVING | SQL sakinyje, kuriame yra sudėtinių funkcijų, nurodo sąlygas, taikomas laukams, apibendrintiems sakinyje SELECT. | Ne |
Kiekvieną SQL sąlygą sudaro terminai. Čia pateikiamas kai kurių dažniausiai naudojamų SQL terminų sąrašas.
Sąlygos SELECT tinkinimas
| Tinkinimas | Pavyzdys |
|---|---|
| Matyti tik skirtingas reikšmes. Naudokite raktažodį DISTINCT sąlygoje SELECT. |
Pavyzdžiui, jei jūsų klientai yra iš kelių skirtingų filialų ir kai kurie turi tą patį telefono numerį, o jūs norite matyti telefono numerį tik vieną kartą, sąlyga SELECT turėtų būti tokia:SELECT DISTINCT [txtCustomerPhone] |
| Pakeisti identifikatoriaus rodymo duomenų lapo rodinyje būdą, kad būtų lengviau skaityti. Naudokite operatorių AS (raktažodis, vaizduojantis veiksmą arba keičiantis veiksmą) su lauko pseudonimu sąlygoje SELECT. Lauko pseudonimas yra pavadinimas, kurį priskiriate laukui, kad rezultatus būtų lengviau skaityti. |
SELECT [txtCustPhone] AS [Kliento telefonas] |
Sąlygos FROM tinkinimas
| Tinkinimas | Pavyzdys |
|---|---|
| Galite naudoti lentelės pseudonimą arba kitą pavadinimą, kurį priskiriate lentelei sakinyje select. Lentelės pseudonimas yra naudingas, jei lentelės pavadinimas ilgas, ypač jei turite kelis laukus, kuriuose yra tas pats pavadinimas iš skirtingų lentelių. | Norėdami pasirinkti duomenis iš dviejų laukų, kurie abu pavadinti "ID" ir kurių vienas yra gautas iš lentelės "tblCustomer", o kitas – iš lentelės "tblOrder": SELECT [tblCustomer]. [ID], [tblOrder]. [ID] Naudokite operatorių AS, kad apibrėžtumėte lentelės pseudonimus sąlygoje FROM: FROM [tblCustomer] AS [C], [tblOrder] AS [O] Tada savo sąlygoje SELECT galėsite naudoti šiuos lentelių pseudonimus:SELECT [C]. [ID], [O]. [ID] |
| Sujungimus naudokite norėdami sujungti įrašų iš dviejų duomenų šaltinių poras į vieną rezultatą arba nurodyti, ar įtraukti įrašus iš kurios nors lentelės, jei susijusioje lentelėje nėra atitinkamo įrašo, naudokite sujungimus. Sujunkite lenteles taip, kad užklausa sujungtų lentelių elementus ir neįtrauktų elementų, jei kitoje lentelėje nėra atitinkamo įrašo |
Štai kaip gali atrodyti sąlyga FROM:FROM [tblCustomer] INNER JOIN [tblOrder] ON [tblCustomer]. [CustomerID]=[tblOrder]. [Kliento ID] |
Apie jungčių naudojimą
Yra dviejų tipų sujungimai, vidiniai ir išoriniai. Vidinės jungtys dažniau pasitaiko užklausose. Vykdant užklausą su vidiniu sujungimu, rezultatuose rodomi tik tie elementai, kurių bendra reikšmė yra abiejose sujungtose lentelėse.
Išoriniai sujungimai nurodo, ar norite įtraukti duomenis ten, kur nėra bendros reikšmės. Išoriniai sujungimai yra kryptiniai, t. y. galite nurodyti, ar įtraukti visus įrašus iš pirmosios lentelės, nurodytos sujungime (vadinamame kairiu sujungimu), ar įtraukti visus įrašus iš antrosios lentelės (vadinamo dešiniu sujungimu). Išorinio sujungimo SQL sintaksė yra tokia:
FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1 = table2.field2
Daugiau informacijos apie sujungimų užklausoje naudojimą žr. Lentelių ir užklausų sujungimas.
Sąlygos WHERE tinkinimas
Sąlyga WHERE apima kriterijus, kurie padeda apriboti užklausoje pateikiamų elementų skaičių. Peržiūrėkite užklausos kriterijų pavyzdžius ir kaip jie veikia.
Pavyzdys, kaip galite tinkinti pagrindinę sąlygą WHERE, kad apribotumėte užklausos rezultatus; Tarkime, kad norite rasti kliento telefono numerį, bet atsimenate tik jo pavardę kaip Bagelį. Šiame pavyzdyje pavardės saugomos lauke Pavardė, todėl SQL sintaksė būtų tokia:
WHERE [LastName]='Bagel'
Sąlygą WHERE taip pat naudokite norėdami sujungti stulpelių, kuriuose yra sutampančių duomenų, bet skiriasi duomenų tipai, duomenų šaltinius. Tai naudinga, nes negalite sukurti sąsajos tarp laukų, kurių duomenų tipai skirtingi. Naudokite vieną lauką kaip kriterijų kitam laukui su raktažodžiu LIKE . Pavyzdžiui, jei norite naudoti duomenis iš lentelių Turtas ir Darbuotojai, tik kai turto tipo lentelės Darbuotojai lauke Turto tipas yra skaičius 3, štai kaip atrodys sąlyga WHERE:
WHERE field1 LIKE field2
Svarbu
Negalite nurodyti kriterijų laukui, naudojamam su agregavimo funkcija sąlygoje WHERE. Vietoj to agreguotų laukų kriterijams nurodyti galite naudoti sąlygą HAVING.
Tinkinimas naudojant operatorių UNION
Naudokite operatorių UNION, kai norite matyti kelių panašių pasirinkimo užklausų rezultatų jungtinį rodinį. Pvz., jei jūsų duomenų bazėje yra lentelės Produktai ir Paslaugos ir juose yra trys laukai: Išskirtinis pasiūlymas arba Produktas ar paslauga, Kaina, Garantija arba Garantija. Nors lentelėje "Produktai" saugoma garantijos informacija, o lentelėje "Paslaugos" saugoma garantinio laikotarpio informacija, pagrindinė informacija yra tokia pati. Norėdami sujungti tris laukus iš dviejų lentelių, galite naudoti sujungimo užklausą taip:
SELECT name, price, warranty, exclusive_offer
FROM Products
UNION ALL
SELECT name, price, guarantee, exclusive_offer
FROM Services;
Kai vykdote užklausą, duomenys iš kiekvieno atitinkamų laukų rinkinio sujungiami į vieną išvesties lauką. Norėdami į rezultatus įtraukti bet kokias pasikartojančias eilutes, naudokite operatorių ALL.
Pastaba
Sakinyje Select turi būti tiek pat išvesties laukų, išdėstytų ta pačia tvarka ir su tokių pačių arba suderinamų tipų duomenimis. „Union“ užklausose skaičių ir teksto duomenų tipai yra suderinami.
Daugiau informacijos apie "union" užklausas žr. "Union" užklausos naudojimas norint peržiūrėti vieningą kelių užklausų rezultatą.