Norėdami rašyti SQL užklausas SQLite duomenų bazėje, turite žinoti, kaip veikia SELECT ir FROM, WHERE, GROUP BY, ORDER BY ir LIMIT sąlygos ir kaip jomis naudotis.
Šios pamokos metu sužinosite, kaip naudoti šiuos sakinius ir kaip parašyti SQLite sakinius.
Šioje pamokoje sužinosite
- Duomenų skaitymas naudojant „Select“
- Vardai ir slapyvardžiai
- KUR
- Apribojimas ir užsakymas
- Dublikatų pašalinimas
- Apibendrinti
- Grupuoti pagal
- Užklausa ir užklausa
- Nustatyti operacijas -UNION, sankirta
- NULL tvarkymas
- Sąlyginiai rezultatai
- Bendra lentelės išraiška
- Išplėstinės užklausos
Duomenų skaitymas naudojant „Select“
Sąlyga SELECT yra pagrindinis sakinys, kurį naudojate pateikdami užklausą SQLite duomenų bazėje. Sąlygoje SELECT nurodote, ką pasirinkti. Bet prieš pasirinkdami sąlygą pažiūrėkime, iš kur galime pasirinkti duomenis naudodami sąlygą FROM.
Sąlyga FROM naudojama nurodyti, kur norite pasirinkti duomenis. Sąlygoje „from“ galite nurodyti vieną ar daugiau lentelių ar porūšių, iš kurių norite pasirinkti duomenis, kaip pamatysime vėliau pamokose.
Atminkite, kad visų šių pavyzdžių atveju turite paleisti sqlite3.exe ir atidaryti ryšį su pavyzdine duomenų baze:
1 žingsnis) Šiame žingsnyje
- Atidarykite „Mano kompiuteris“ ir eikite į šį katalogą „ C: \ sqlite “ ir
- Tada atidarykite „ sqlite3.exe “:
2 žingsnis. Atidarykite duomenų bazę „ TutorialsSampleDB.db “ atlikdami šią komandą:
Dabar esate pasirengę vykdyti bet kokio tipo užklausas duomenų bazėje.
Sąlygoje SELECT galite pasirinkti ne tik stulpelio pavadinimą, bet ir daugybę kitų galimybių nurodyti, ką pasirinkti. Taip:
PASIRINKTI *
Ši komanda pasirinks visus stulpelius iš visų nurodytų lentelių (arba paklausų), esančių sąlygoje FROM. Pavyzdžiui:
PASIRINKTI *IŠ studentųINNER JOIN Departamentai ON Students.DepartmentId = Departments.DepartmentId;
Tai pasirinks visus stulpelius iš lentelių studentų ir katedrų lentelių:
SELECT stalo vardas. *
Tai pasirinks visus stulpelius tik iš lentelės „tablename“. Pavyzdžiui:
PASIRINKITE studentus. *IŠ studentųINNER JOIN Departamentai ON Students.DepartmentId = Departments.DepartmentId;
Tai pasirinks visus stulpelius tik iš studentų lentelės:
Pažodinė vertė
Pažodinė reikšmė yra pastovi vertė, kurią galima nurodyti sakinyje select. Pažodines reikšmes paprastai galite naudoti taip pat, kaip ir stulpelių pavadinimus išlygoje SELECT. Šios pažodinės vertės bus rodomos kiekvienoje eilutėje iš eilučių, kurias grąžino SQL užklausa.
Keletas skirtingų pažodinių verčių, kurias galite pasirinkti, pavyzdžių:
- Skaitmeninis pažodinis - bet kokio formato skaičiai, pvz., 1, 2,55,… ir kt.
- Styginiai literalai - bet kokia eilutė „JAV“, „tai yra teksto pavyzdys“ ir kt.
- NULL - NULL vertė.
- Current_TIME - tai suteiks jums dabartinį laiką.
- CURRENT_DATE - tai suteiks jums dabartinę datą.
Tai gali būti patogu kai kuriose situacijose, kai turite pasirinkti pastovią vertę visoms grąžintoms eilutėms. Pvz., Jei norite iš studentų lentelės pasirinkti visus studentus su nauju stulpeliu, vadinamu šalimi, kurioje yra reikšmė „JAV“, galite tai padaryti:
PASIRINKITE *, „USA“ AS ŠALIS IŠ studentų;
Tai suteiks jums visus studentų stulpelius ir naują stulpelį „Šalis“:
Atminkite, kad šis naujas stulpelis Šalis iš tikrųjų nėra naujas stulpelis, pridėtas prie lentelės. Tai yra virtualus stulpelis, sukurtas užklausoje, kad būtų rodomi rezultatai, ir jis nebus sukurtas lentelėje.
Vardai ir slapyvardžiai
Pseudonimas yra naujas stulpelio pavadinimas, leidžiantis pasirinkti stulpelį su nauju pavadinimu. Stulpelių slapyvardžiai nurodomi naudojant raktinį žodį „AS“.
Pvz., Jei norite pasirinkti „StudentName“ stulpelį, kuris bus grąžintas su „Student Name“ vietoj „StudentName“, galite suteikti jam tokį slapyvardį:
PASIRINKITE „StudentName AS“ iš „Student Name“ iš studentų;
Tai suteiks jums studentų vardus pavadinimu „Student Name“ vietoj „StudentName“:
Atkreipkite dėmesį, kad stulpelio pavadinimas vis tiek yra „ StudentName “; stulpelis StudentName vis dar tas pats, jis nesikeičia slapyvardžiu.
Pseudonimas nepakeis stulpelio pavadinimo; tai tiesiog pakeis rodomą pavadinimą sąlygoje SELECT.
Be to, atkreipkite dėmesį, kad raktinis žodis „AS“ yra neprivalomas, pseudonimo vardą galite įdėti ir be jo, maždaug taip:
PASIRINKITE studento vardą „Student Name“ iš studentų;
Ir tai suteiks jums tą patį išvestį kaip ir ankstesnė užklausa:
Taip pat galite suteikti lentelėms slapyvardžius, ne tik stulpelius. Su tuo pačiu raktiniu žodžiu „AS“. Pavyzdžiui, galite tai padaryti:
PASIRINKITE s. * IŠ studentų;
Tai suteiks jums visus lentelės „Studentai“ stulpelius:
Tai gali būti labai naudinga, jei prisijungiate prie daugiau nei vienos lentelės; užuot pakartoję visą lentelės pavadinimą užklausoje, kiekvienai lentelei galite suteikti trumpą slapyvardžio vardą. Pavyzdžiui, šioje užklausoje:
PASIRINKITE Studentai.StudentName, Departments.DepartmentNameIŠ studentųINNER JOIN Departamentai ON Students.DepartmentId = Departments.DepartmentId;
Ši užklausa parinks kiekvieno studento vardą lentelėje „Studentai“, o skyriaus pavadinimą - lentelėje „Departamentai“:
Tačiau tą pačią užklausą galima parašyti taip:
PASIRINKITE s.StudentName, d.DepartmentNameIŠ studentų ASVIDINIS PRISIJUNGIMAS Skyriai AS d ON s.DepartmentId = d.DepartmentId;
- Mes suteikėme Studentams lentelę slapyvardžiu „s“, o katedros - „d“.
- Tada užuot naudoję visą lentelės pavadinimą, mes nurodėme jų slapyvardžius.
- INNER JOIN sujungia dvi ar daugiau lentelių naudodamas sąlygą. Mūsų pavyzdyje mes sujungėme Studentų lentelę su Departamentų lentele su stulpeliu DepartmentId. „SQLite Joins“ pamokoje taip pat yra išsamus INNER JOIN paaiškinimas.
Tai suteiks jums tikslią išvestį kaip ankstesnė užklausa:
KUR
Rašydami SQL užklausas naudodami tik SELECT sąlygą su FROM sakiniu, kaip matėme ankstesniame skyriuje, gausite visas lentelių eilutes. Tačiau jei norite filtruoti grąžintus duomenis, turite pridėti sąlygą „WHERE“.
Sąlyga WHERE naudojama norint filtruoti SQL užklausos grąžintą rezultatų rinkinį. Taip veikia WHERE sąlyga:
- Sąlygoje WHERE galite nurodyti „išraišką“.
- Ši išraiška bus įvertinta kiekvienai eilutei, grąžintai iš lentelės (-ių), nurodytos (-i) FROM sąlygoje.
- Išraiška bus įvertinta kaip loginė išraiška, kurios rezultatas bus teisingas, klaidingas arba nulis.
- Tada bus grąžintos tik eilutės, kurių išraiška buvo įvertinta su tikra verte, o tos, kurių rezultatai buvo klaidingi arba nuliniai, bus ignoruojami ir nebus įtraukti į rezultatų rinkinį.
- Norėdami filtruoti rezultatų rinkinį naudodami sąlygą WHERE, turite naudoti išraiškas ir operatorius.
Operatorių sąrašas SQLite ir kaip juos naudoti
Kitame skyriuje paaiškinsime, kaip galite filtruoti naudodami išraišką ir operatorius.
Išraiška yra viena ar daugiau pažodinių reikšmių ar stulpelių, sujungtų vienas su kitu su operatoriumi.
Atkreipkite dėmesį, kad išraiškas galite naudoti tiek SELECT, tiek WHERE sąlygose.
Toliau pateiktuose pavyzdžiuose mes išbandysime išraiškas ir operatorius tiek sąlygoje, tiek sąlygoje WHERE. Norint parodyti, kaip jie veikia.
Yra įvairių tipų išraiškos ir operatoriai, kuriuos galite nurodyti taip:
SQLite sujungimo operatorius "||"
Šis operatorius naudojamas susieti vieną ar daugiau pažodinių verčių ar stulpelių tarpusavyje. Tai sukurs vieną eilutę rezultatų iš visų sujungtų pažodinių reikšmių ar stulpelių. Pavyzdžiui:
PASIRINKTI 'Id with Name:' || StudentId || StudentName AS StudentIdWithNameIŠ studentų;
Tai sujungs naują slapyvardį „ StudentIdWithName “:
- Pažodinė eilutės reikšmė „ Id with Name: “
- su stulpelio " StudentId " verte ir
- su stulpelio „ StudentName “ verte
SQLite CAST operatorius:
CAST operatorius naudojamas konvertuoti reikšmę iš duomenų tipo į kitą duomenų tipą.
Pvz., Jei turite skaitinę vertę, išsaugotą kaip eilutės reikšmę, tokią kaip „ '12 .5 '', ir norite ją konvertuoti į skaitinę vertę, galite naudoti operatorių CAST, kad tai atliktumėte taip:„ CAST ('12 .5 'AS TIKRA) “. Arba, jei turite dešimtainę reikšmę, pvz., 12,5, ir jums reikia gauti tik sveiko skaičiaus dalį, galite ją perduoti į tokį skaičių kaip „CAST (12.5 AS INTEGER)“.
Pavyzdys
Šioje komandoje bandysime konvertuoti skirtingas vertes į kitus duomenų tipus:
PASIRINKITE CAST ('12 .5 'AS REAL) ToReal, CAST (12.5 AS INTEGER) AS ToInteger;
Tai suteiks jums:
Rezultatas yra toks:
- CAST ('12,5 'AS REAL) - reikšmė '12,5' yra eilutės reikšmė, ji bus konvertuota į REAL vertę.
- CAST (12.5 AS INTEGER) - reikšmė 12,5 yra dešimtainė reikšmė, ji bus konvertuota į sveiką skaičių. Dešimtainė dalis bus sutrumpinta ir taps 12.
„SQLite“ aritmetikos operatoriai:
Paimkite dvi ar daugiau skaitinių pažodinių reikšmių arba skaitinių stulpelių ir grąžinkite vieną skaitinę vertę. SQLite palaikomi aritmetiniai operatoriai yra šie:
|
Pavyzdys:
Kitame pavyzdyje mes išbandysime penkis aritmetikos operatorius, kurių pažodinės skaitinės vertės yra vienodos
pasirinkti sąlygą:
PASIRINKITE 25 + 6, 25-6, 25 * 6, 25% 6, 25/6;
Tai suteiks jums:
Atkreipkite dėmesį, kaip mes čia naudojome SELECT sakinį be FROM sakinio. Tai leidžiama SQLite tol, kol pasirenkame pažodines reikšmes.
SQLite palyginimo operatoriai
Palyginkite du operandus vienas su kitu ir grąžinkite teisingą arba klaidingą:
|
Atkreipkite dėmesį, kad „SQLite“ tikrąją reikšmę išreiškia 1, o klaidingą - 0.
Pavyzdys:
PASIRINKTI10 <6 AS '<', 10 <= 6 AS '<=',10> 6 AS '>', 10> = 6 AS '> =',10 = 6 AS '=', 10 == 6 AS '==',10! = 6 AS '! =', 10 <> 6 AS '<>';
Tai duos kažką panašaus:
„SQLite“ modelio atitikimo operatoriai
" LIKE " - naudojamas modelių derinimui. Naudodami „ Patinka “ galite ieškoti reikšmių, atitinkančių pakaitos simbolį, nurodytą šablone.
Kairėje esantis operandas gali būti eilutės tiesioginė reikšmė arba eilutės stulpelis. Šabloną galima nurodyti taip:
- Sudėtyje yra raštas. Pavyzdžiui, „ StudentName“ LIKE „% a%“ - tai ieškos studentų vardų, kuriuose yra raidė „a“ bet kurioje stulpelio „StudentName“ vietoje.
- Pradeda nuo modelio. Pavyzdžiui, „ StudentName LIKE 'a%' “ - ieškokite studentų vardų, prasidedančių raide „a“.
- Baigiasi su modeliu. Pvz., „ StudentName LIKE '% a' " - ieškokite studentų vardų, kurie baigiasi raide „a“.
- Bet kurio eilutės simbolio derinimas naudojant pabraukimo raidę „_“. Pvz., „ StudentName LIKE 'J___' ' - ieškokite 4 simbolių ilgio mokinių vardų. Jis turi prasidėti „J“ raide ir po „J“ raidės gali turėti dar tris simbolius.
Šablonų atitikimo pavyzdžiai:
- Gaukite studentų vardus, prasidedančius raide „j“:
PASIRINKITE Studentų vardą iš studentų, kur studentų vardas patinka „j%“;
Rezultatas:
- Gaukite, kad studentų vardai baigtųsi „y“ raide:
PASIRINKITE Studentų vardą iš studentų, kur studento vardas patinka „% y“;
Rezultatas:
- Gaukite studentų vardus, kuriuose yra raidė „n“:
PASIRINKITE Studentų vardą iš studentų, kur studentų vardas patinka „% n%“;
Rezultatas:
„GLOB“ - yra lygiavertis LIKE operatoriui, tačiau GLOB skiria didžiosios ir mažosios raidės, skirtingai nei LIKE operatorius. Pvz., Šios dvi komandos pateiks skirtingus rezultatus:
PASIRINKITE 'Jack' GLOB 'j%';PASIRINKITE 'Jack' LIKE 'j%';
Tai suteiks jums:
- Pirmasis sakinys grąžina 0 (klaidingas), nes GLOB operatorius skiria didžiosios ir mažosios raidės, todėl „j“ nėra lygus „J“. Tačiau antrasis teiginys grąžins 1 (tiesa), nes LIKE operatorius neturi didžiųjų ir mažųjų raidžių, todėl „j“ yra lygus „J“.
Kiti operatoriai:
SQLite IR
Loginis operatorius, kuris sujungia vieną ar daugiau išraiškų. Tai grįš teisinga, tik jei visos išraiškos suteiks „tikrąją“ vertę. Tačiau jis pateiks klaidingą tik tuo atveju, jei visos išraiškos suteiks „klaidingą“ vertę.
Pavyzdys:
Ši užklausa ieškos studentų, kurių StudentId> 5, o StudentName prasideda raide N, o grąžinti studentai turi atitikti dvi sąlygas:
PASIRINKTI *IŠ studentųWHERE (StudentId> 5) IR (StudentName LIKE 'N%');
Kaip išvestį, aukščiau pateiktoje ekrano kopijoje tai suteiks jums tik „Nancy“. Nancy yra vienintelis studentas, atitinkantis abi sąlygas.
SQLite ARBA
Loginis operatorius, kuris sujungia vieną ar daugiau išraiškų, taigi, jei vienas iš sujungtų operatorių duoda tiesą, jis grįš į tiesą. Tačiau, jei visos išraiškos duoda klaidingą, ji pateiks klaidingą.
Pavyzdys:
Ši užklausa ieškos studentų, kurių „StudentId“> 5 arba „StudentName“ prasideda raide N, o grąžinti studentai turi atitikti bent vieną iš sąlygų:
PASIRINKTI *IŠ studentųWHERE (StudentId> 5) ARBA (StudentName LIKE 'N%');
Tai suteiks jums:
Kaip išvestį, pirmiau pateiktoje ekrano kopijoje tai suteiks jums studento, kurio varde yra raidė „n“, vardą ir studento ID, kurio vertė> 5, vardą.
Kaip matote, rezultatas skiriasi nuo užklausos su operatoriumi AND.
SQLite TARP
BETWEEN naudojamas vertėms, kurios yra dviejų verčių diapazone, pasirinkti. Pvz., „ X TARP Y IR Z “ grąžins vertę true (1), jei vertė X yra tarp dviejų reikšmių Y ir Z. Priešingu atveju ji grąžins klaidingą reikšmę (0). " X TARP Y IR Z " yra lygiavertis " X> = Y IR X <= Z ", X turi būti didesnis arba lygus Y ir X yra mažesnis arba lygus Z.
Pavyzdys:
Šiame užklausos pavyzdyje parašysime užklausą, kad gautume studentus, kurių Id vertė yra nuo 5 iki 8:
PASIRINKTI *IŠ studentųKur studentas buvo tarp 5 ir 8;
Tai suteiks tik studentams, kurių ID yra 5, 6, 7 ir 8:
SQLite IN
Paima vieną operandą ir operandų sąrašą. Ji bus teisinga, jei pirmoji operando reikšmė bus lygi vienai iš operandų reikšmei iš sąrašo. IN operatorius grąžina true (1), jei operandų sąraše yra pirmoji operando reikšmė. Priešingu atveju jis grąžins klaidingą reikšmę (0).
Taip: „ col IN (x, y, z) “. Tai tolygu „ (col = x) arba (col = y) arba (col = z) “.
Pavyzdys:
Ši užklausa parinks studentus, kurių ID yra tik 2, 4, 6, 8:
PASIRINKTI *IŠ studentųWHERE StudentId IN (2, 4, 6, 8);
Kaip šitas:
Ankstesnė užklausa pateiks tikslų rezultatą kaip ši užklausa, nes jie yra lygiaverčiai:
PASIRINKTI *IŠ studentųKUR (StudentId = 2) ARBA (StudentId = 4) ARBA (StudentId = 6) ARBA (StudentId = 8);
Abi užklausos pateikia tikslią išvestį. Tačiau skirtumas tarp abiejų užklausų yra tas, kad pirmoji užklausa buvo naudojama operatoriui „IN“. Antroje užklausoje mes naudojome kelis „OR“ operatorius.
IN operatorius yra lygiavertis kelių OR operatorių naudojimui. " KUR StudentId IN (2, 4, 6, 8) " yra lygus " Kur (StudentId = 2) arba (4 StudentId =) ARBA (StudentId = 6) ARBA (StudentId = 8); "
Kaip šitas:
SQLite NĖRA
Operandas „NOT IN“ yra priešingas IN operatoriui. Bet su ta pačia sintakse; tam reikia vieno operando ir operandų sąrašo. Ji bus teisinga, jei pirmojo operando reikšmė nebus lygi vienos iš operandų vertei iš sąrašo. ty, jis grąžins true (0), jei operandų sąraše nėra pirmojo operando. Taip: " col NOT IN (x, y, z) ". Tai atitinka „ (col <> x) AND (col <> y) AND (col <> z) “.
Pavyzdys:
Ši užklausa pasirinks studentus, kurių ID nėra lygūs vienam iš šių ID 2, 4, 6, 8:
PASIRINKTI *IŠ studentųKUR Studentas NEĮĖJO (2, 4, 6, 8);
Kaip šitas
Ankstesnė užklausa pateikiame tikslų rezultatą kaip šią užklausą, nes jie yra lygiaverčiai:
PASIRINKTI *IŠ studentųKUR (StudentId <> 2) IR (StudentId <> 4) IR (StudentId <> 6) IR (StudentId <> 8);
Kaip šitas:
Pirmiau pateiktoje ekrano kopijoje
Mes panaudojome kelis nevienodus operatorius "<>", kad gautume studentų sąrašą, kuris nėra lygus nei vienam iš toliau nurodytų ID 2, 4, 6 ar 8. Ši užklausa grąžins visus kitus studentus, išskyrus šiuos ID sąrašus.
SQLite ESA
Operatoriai „EXISTS“ nepriima jokių operandų; po jo reikia tik SELECT sakinio. Operatorius „EXISTS“ grąžins „true“ (1), jei yra jokių eilučių, grąžintų iš „SELECT“ sąlygos, ir „false“ (0), jei iš „SELECT“ sąlygos nėra jokių eilučių.
Pavyzdys:
Šiame pavyzdyje mes pasirinksime skyriaus pavadinimą, jei studentų lentelėje yra skyriaus ID:
PASIRINKITE skyriaus pavadinimąIŠ Departamentų AS dKUR YRA (PASIRINKITE „DepartmentId“ iš studentų AS, kur d.DepartmentId = s.DepartmentId);
Tai suteiks jums:
Bus grąžinti tik trys skyriai „ IT, fizika ir menai “. Katedros pavadinimas „ Matematika “ nebus grąžintas, nes tame skyriuje nėra studento, todėl katedros ID studentų lentelėje neegzistuoja. Štai kodėl „EXISTS“ operatorius ignoravo „ Matematikos “ skyrių.
SQLite NE
Atšaukia po jo einančio operatoriaus rezultatą. Pavyzdžiui:
- NE TARP - Tai bus teisinga, jei BETWEEN grąžins klaidingą ir atvirkščiai.
- NĖRA PATINKA - grįš tiesa, jei LIKE pateiks neteisingą ir atvirkščiai.
- NE GLOBAS - grįš tiesa, jei GLOB grąžins klaidingą ir atvirkščiai.
- NĖRA NEGALIMA - grįš teisinga, jei EKSISTAS pateiks neteisingą ir atvirkščiai.
Pavyzdys:
Šiame pavyzdyje mes naudosime NOT operatorių su EXISTS operatoriumi, kad gautume skyrių pavadinimus, kurių nėra lentelėje Studentai, o tai yra atvirkštinis operatoriaus EXISTS rezultatas. Taigi, paieška bus vykdoma per „DepartmentId“, kurio nėra skyrių lentelėje.
PASIRINKITE skyriaus pavadinimąIŠ Departamentų AS dKUR NĖRA (SELECT DepartmentIdIŠ studentų ASKUR d.DepartmentId = s.DepartmentId);
Išvestis :
Grąžins tik skyrių „ Matematika “. Kadangi „ Matematikos “ skyrius yra vienintelis skyrius, jo nėra studentų lentelėje.
Apribojimas ir užsakymas
SQLite tvarka
„SQLite Order“ yra rūšiuoti rezultatą pagal vieną ar daugiau išraiškų. Norėdami užsisakyti rezultatų rinkinį, turite naudoti sąlygą ORDER BY taip:
- Pirmiausia turite nurodyti sąlygą ORDER BY.
- Klausimas ORDER BY turi būti nurodytas užklausos pabaigoje; po jo galima nurodyti tik sąlygą LIMIT.
- Nurodykite išraišką, pagal kurią užsakysite duomenis. Ši išraiška gali būti stulpelio pavadinimas arba išraiška.
- Po išraiškos galite nurodyti pasirinktinę rūšiavimo kryptį. Arba DESC, norėdami įsakyti duomenų mažėjimą, arba ASC, kad duomenys būtų didinami. Jei nenurodėte nė vieno iš jų, duomenys bus rūšiuojami didėjančia tvarka.
- Galite nurodyti daugiau posakių naudodami tarpusavyje „,“.
Pavyzdys
Šiame pavyzdyje mes atrinksime visus studentus, suskirstytus pagal jų vardus, bet mažėjančia tvarka, tada pagal katedros pavadinimą didėjimo tvarka:
PASIRINKITE s.StudentName, d.DepartmentNameIŠ studentų ASVIDINIS PRISIJUNGIMAS Skyriai KAD d ON s.DepartmentId = d.DepartmentIdUŽSAKYTI pagal d.DepartmentName ASC, s.StudentName DESC;
Tai suteiks jums:
- Pirmiausia „SQLite“ visus studentus užsakys pagal katedros pavadinimą didėjimo tvarka
- Tada kiekvienam katedros pavadinimui visi studentai pagal tą katedros pavadinimą bus rodomi mažėjančia tvarka pagal jų vardus
SQLite limitas:
Galite apriboti SQL užklausos grąžintų eilučių skaičių naudodami sąlygą LIMIT. Pavyzdžiui, LIMIT 10 suteiks tik 10 eilučių ir nepaisys visų kitų eilučių.
Sąlygoje LIMIT galite pasirinkti konkretų eilučių skaičių, pradedant nuo konkrečios padėties, naudojant sąlygą OFFSET. Pvz., „ LIMIT 4 OFFSET 4 “ nepaisys pirmųjų 4 eilučių ir grąžins 4 eiles, pradedant nuo penktos eilutės, taigi gausite 5,6,7 ir 8 eilutes.
Atminkite, kad sąlyga OFFSET yra neprivaloma, galite ją parašyti kaip „ LIMIT 4, 4 “ ir tai suteiks jums tikslius rezultatus.
Pavyzdys :
Šiame pavyzdyje mes grąžinsime tik 3 studentus, pradedant nuo studento ID 5, naudojant užklausą:
PASIRINKTI * IŠ studentų RIBOTI 4,3;
Tai suteiks jums tik tris studentus, pradedant nuo 5 eilutės. Taigi gausite eilutes su „StudentId 5“, „6“ ir „7“:
Dublikatų pašalinimas
Jei jūsų SQL užklausa pateikia pasikartojančias reikšmes, galite naudoti raktinį žodį „ DISTINCT “, kad pašalintumėte tas kopijas ir grąžintumėte į skirtingas reikšmes. Po mygtuko DISTINCT veikimo galite nurodyti daugiau nei vieną stulpelį.
Pavyzdys:
Ši užklausa pateiks pasikartojančias „skyriaus pavadinimo reikšmes“: Čia mes turime pasikartojančias reikšmes pavadinimais IT, fizika ir menai.
PASIRINKTI d.DepartmentNameIŠ studentų ASVIDINIS PRISIJUNGIMAS Skyriai AS d ON s.DepartmentId = d.DepartmentId;
Tai suteiks jums dubliuojamas skyriaus pavadinimo reikšmes:
Atkreipkite dėmesį, kaip yra dubliuojamos skyriaus pavadinimo vertės. Dabar mes naudosime raktinį žodį DISTINCT su ta pačia užklausa, kad pašalintume tuos dublikatus ir gautume tik unikalias reikšmes. Kaip šitas:
SELECT DISTINCT d.DepartmentNameIŠ studentų ASVIDINIS PRISIJUNGIMAS Skyriai AS d ON s.DepartmentId = d.DepartmentId;
Tai suteiks jums tik tris unikalias skyriaus pavadinimo stulpelio reikšmes:
Apibendrinti
SQLite agregatai yra integruotos funkcijos, apibrėžtos SQLite, kurios sugrupuos kelias kelių eilučių vertes į vieną vertę.
Čia yra SQLite palaikomi suvestiniai rodikliai:
„SQLite AVG“ ()
Pateikė visų x reikšmių vidurkį.
Pavyzdys:
Šiame pavyzdyje gausime vidutinį studentų įvertinimą, gautą iš visų egzaminų:
PASIRINKITE AVG (Pažymėti) IŠ Ženklų;
Tai suteiks jums vertę „18,375“:
Šie rezultatai gaunami susumavus visas pažymių reikšmes, padalytas iš jų skaičiaus.
COUNT () - COUNT (X) arba COUNT (*)
Pateikia bendrą x vertės parodymų skaičiaus skaičių. Štai keletas variantų, kuriuos galite naudoti su COUNT:
- COUNT (x): skaičiuojamos tik x vertės, kur x yra stulpelio pavadinimas. Tai ignoruos NULL reikšmes.
- SKAIČIUS (*): suskaičiuokite visas eiles iš visų stulpelių.
- SKAIČIUS (DISTINCT x): prieš x galite nurodyti DISTINCT raktinį žodį, kuris gaus skirtingų x reikšmių skaičių.
Pavyzdys
Šiame pavyzdyje gausime bendrą skyrių, turinčių COUNT (DepartmentId), COUNT (*) ir COUNT (DISTINCT DepartmentId), skaičių ir jų skirtumus:
SELECT COUNT (DepartmentId), COUNT (DISTINCT DepartmentId), COUNT (*) IŠ studentų;
Tai suteiks jums:
Taip:
- COUNT (DepartmentId) nurodys visų skyriaus ID skaičių ir nepaisys nulinių verčių.
- COUNT (DISTINCT DepartmentId) suteikia jums atskiras DepartmentId reikšmes, kurios yra tik 3. Kurios yra trys skirtingos skyriaus pavadinimo vertės. Atkreipkite dėmesį, kad studento varde yra 8 katedros pavadinimo reikšmės. Tačiau tik trys skirtingos matematikos, IT ir fizikos vertybės.
- COUNT (*) skaičiuoja studentų lentelės eilučių skaičių, kuris yra 10 eilučių 10 studentų.
GROUP_CONCAT () - GROUP_CONCAT (X) arba GROUP_CONCAT (X, Y)
„GROUP_CONCAT“ suvestinė funkcija sujungia dauginamąsias vertes į vieną vertę kableliu, kad jos būtų atskirtos. Jis turi šias galimybes:
- GROUP_CONCAT (X): Tai sujungs visą x vertę į vieną eilutę su kableliu "," kuris naudojamas kaip reikšmių atskyriklis. NULL reikšmės bus ignoruojamos.
- GROUP_CONCAT (X, Y): Tai sujungs x reikšmes į vieną eilutę, o y reikšmė bus naudojama kaip atskiriklis tarp kiekvienos vertės, o ne pagal numatytąjį separatorių „,“. NULL reikšmės taip pat bus ignoruojamos.
- GROUP_CONCAT (DISTINCT X): Tai sujungs visas skirtingas x reikšmes į vieną eilutę kableliu "," kuris naudojamas kaip reikšmių atskyrėjas. NULL reikšmės bus ignoruojamos.
„GROUP_CONCAT“ („DepartmentName“) pavyzdys
Ši užklausa sujungs visas skyriaus pavadinimo reikšmes iš studentų ir katedrų lentelės į vieną eilutės kablelį. Taigi, užuot grąžinus vertybių sąrašą, kiekvienoje eilutėje nurodoma po vieną vertę. Vienoje eilutėje bus grąžinta tik viena reikšmė, visas vertes atskyrus kableliais:
PASIRINKITE GROUP_CONCAT (d.DepartmentName)IŠ studentų ASVIDINIS PRISIJUNGIMAS Skyriai AS d ON s.DepartmentId = d.DepartmentId;
Tai suteiks jums:
Tai suteiks jums 8 skyrių pavadinimų reikšmių, sujungtų į vieną eilutės kablelį, sąrašą.
GROUP_CONCAT (DISTINCT DepartmentName) pavyzdys
Ši užklausa sujungs atskiras skyriaus pavadinimo reikšmes iš studentų ir katedrų lentelės į vieną eilutės kablelį, atskirtą:
PASIRINKITE GROUP_CONCAT (DISTINCT d.DepartmentName)IŠ studentų ASVIDINIS PRISIJUNGIMAS Skyriai AS d ON s.DepartmentId = d.DepartmentId;
Tai suteiks jums:
Atkreipkite dėmesį, kuo rezultatas skiriasi nuo ankstesnio rezultato; grąžintos tik trys reikšmės, kurios yra skirtingų padalinių pavadinimai, ir pasikartojančios vertės buvo pašalintos.
„GROUP_CONCAT“ („DepartmentName“, „&“) pavyzdys
Ši užklausa sujungs visas skyriaus pavadinimo stulpelio vertes iš studentų ir katedrų lentelės į vieną eilutę, bet vietoj kablelio kaip atskyriklį įrašysime simbolį „&“:
PASIRINKITE „GROUP_CONCAT“ (d. Departamento pavadinimas, „&“)IŠ studentų ASVIDINIS PRISIJUNGIMAS Skyriai AS d ON s.DepartmentId = d.DepartmentId;
Tai suteiks jums:
Atkreipkite dėmesį, kaip simbolis „&“ naudojamas vietoj numatytojo simbolio „,“ norint atskirti reikšmes.
SQLite MAX () ir MIN ()
MAX (X) pateikia didžiausią vertę iš X reikšmių. MAX grąžins NULL reikšmę, jei visos x reikšmės yra nulinės. MIN (X) grąžina mažiausią reikšmę iš X reikšmių. MIN grąžins NULL reikšmę, jei visos X reikšmės yra nulinės.
Pavyzdys
Šioje užklausoje mes naudosime MIN ir MAX funkcijas, kad gautume aukščiausią ir žemiausią balą iš lentelės „ Ženklai “:
SELECT MAX (pažymėti), MIN (pažymėti) iš žymių;
Tai suteiks jums:
SQLite SUM (x), iš viso (x)
Abu jie grąžins visų x reikšmių sumą. Tačiau jie skiriasi:
- SUM grąžins nulį, jei visos reikšmės yra nulinės, tačiau „Total“ grąžins 0.
- TOTAL visada pateikia slankiojo kablelio reikšmes. SUM grąžina sveiko skaičiaus vertę, jei visos x reikšmės yra sveikas skaičius. Tačiau jei reikšmės nėra sveikasis skaičius, ji grąžins slankiojo kablelio vertę.
Pavyzdys
Šioje užklausoje mes naudosime sumą ir sumą, kad gautume visų lentelių „ Ženklai “ žymių sumą :
PASIRINKITE SUMĄ (Pažymėti), IŠ VISO (Pažymėti) IŠ Ženklų;
Tai suteiks jums:
Kaip matote, TOTAL visada pateikia slankųjį kablelį. Bet SUM grąžina sveiko skaičiaus vertę, nes stulpelio „Pažymėti“ reikšmės gali būti skaičiai.
Skirtumas tarp SUM ir TOTAL pavyzdžių:
Šioje užklausoje parodysime skirtumą tarp SUM ir TOTAL, kai jie gaus NULL reikšmių SUM:
PASIRINKITE SUMĄ (Pažymėti), IŠ VISO (Pažymėti) IŠ Žymių, KUR TestId = 4;
Tai suteiks jums:
Atminkite, kad nėra „TestId“ = 4 žymių, todėl to bandymo reikšmės yra nulinės. SUM grąžina nulinę vertę kaip tuščią, o TOTAL - 0.
Grupuoti pagal
Sąlyga GROUP BY naudojama norint nurodyti vieną ar daugiau stulpelių, kurie bus naudojami grupuojant eiles į grupes. Tos pačios vertės eilutės bus surenkamos (išdėstomos) kartu į grupes.
Bet kuriame kitame stulpelyje, kuris nėra įtrauktas į grupę pagal stulpelius, galite naudoti suvestinę funkciją.
Pavyzdys:
Ši užklausa suteiks jums bendrą kiekviename skyriuje dalyvaujančių studentų skaičių.
PASIRINKITE d.DepartmentName, COUNT (s.StudentId) AS StudentsCountIŠ studentų ASVIDINIS PRISIJUNGIMAS Skyriai KAD d ON s.DepartmentId = d.DepartmentIdGRUPĖ pagal d. Departamento pavadinimas;
Tai suteiks jums:
Sąlyga „GROUPBY DepartmentName“ sugrupuos visus studentus į grupes po vieną kiekvieno skyriaus pavadinimą. Kiekvienai „katedros“ grupei ji skaičiuos studentus.
TURI sąlyga
Jei norite filtruoti grupes, kurias grąžina sąlyga GROUP BY, tada po GROUP BY galite nurodyti sąlygą „HAVING“ su išraiška. Išraiška bus naudojama šioms grupėms filtruoti.
Pavyzdys
Šioje užklausoje mes pasirinksime tuos skyrius, kuriuose yra tik du studentai:
PASIRINKITE d.DepartmentName, COUNT (s.StudentId) AS StudentsCountIŠ studentų ASVIDINIS PRISIJUNGIMAS Skyriai KAD d ON s.DepartmentId = d.DepartmentIdGRUPĖ pagal d. Departamento pavadinimasTURI SKAIČIAI (s.StudentId) = 2;
Tai suteiks jums:
Sąlyga HAVING COUNT (S.StudentId) = 2 filtruos sugrąžintas grupes ir grąžins tik tas grupes, kuriose yra tiksliai du studentai. Mūsų atveju Menų skyriuje yra 2 studentai, todėl jis rodomas išvestyje.
SQLite užklausa ir subklausa
Bet kurioje užklausoje galite naudoti kitą užklausą „SELECT“, „INSERT“, „DELETE“, „UPDATE“ arba kitoje užklausoje.
Ši įdėta užklausa vadinama antrine užklausa. Dabar pamatysime keletą porūšių naudojimo pavyzdžių SELECT sąlygoje. Tačiau „Duomenų modifikavimo“ pamokoje pamatysime, kaip galime naudoti paklausas su sakiniu INSERT, DELETE ir UPDATE.
Subklausos naudojimas sakinio FROM pavyzdyje
Į šią užklausą į FROM sąlygą įtrauksime užklausą:
PASIRINKTIs.StudentName, t.PažymėtiIŠ studentų ASVIDINIS PRISIJUNGIMAS(PASIRINKITE „StudentId“, pažymėkiteIŠ bandymų AS tVIDINIS PRISIJUNGIMAS Žymos kaip m ON t.TestId = m.TestId) ON s.StudentId = t.StudentId;
Užklausa:
PASIRINKITE „StudentId“, pažymėkiteIŠ bandymų AS tVIDINIS PRISIJUNGIMAS Žymos kaip m ON t.TestId = m.TestId
Pirmiau nurodyta užklausa čia vadinama antrine užklausa, nes ji yra įdėta į FROM sąlygą. Atkreipkite dėmesį, kad mes suteikėme jam slapyvardį „t“, kad galėtume nurodyti užklausoje iš jo grąžintus stulpelius.
Ši užklausa suteiks jums:
Taigi mūsų atveju
- s.StudentName pasirenkamas iš pagrindinės užklausos, nurodančios studentų vardus ir
- t.Pažymė parenkama iš potekstės; tai suteikia kiekvieno iš šių studentų įvertinimus
Paklausos naudojimas WHERE sąlygos pavyzdyje
Į šią užklausą įtrauksime antrinę užklausą į WHERE sąlygą:
PASIRINKITE skyriaus pavadinimąIŠ Departamentų AS dKUR NĖRA (SELECT DepartmentIdIŠ studentų ASKUR d.DepartmentId = s.DepartmentId);
Užklausa:
PASIRINKITE Departamento IDIŠ studentų ASKUR d.DepartmentId = s.DepartmentId
Pirmiau nurodyta užklausa čia vadinama potekste, nes ji yra įdėta į WHERE sąlygą. Po užklausa bus pateiktos „DepartmentId“ reikšmės, kurias naudos operatorius NĖRA.
Ši užklausa suteiks jums:
Pirmiau pateiktoje užklausoje mes pasirinkome skyrių, kuriame nėra nė vieno studento. Kuris čia yra „matematikos“ skyrius.
Nustatyti operacijas - UNION, sankirta
SQLite palaiko šias SET operacijas:
SĄJUNGA IR SĄJUNGA VISOS
Jis sujungia vieną ar daugiau rezultatų rinkinių (eilučių grupę), grąžintus iš kelių SELECT sakinių, į vieną rezultatų rinkinį.
SĄJUNGA grąžins aiškias vertybes. Tačiau „UNION ALL“ nebus ir bus dublikatų.
Atkreipkite dėmesį, kad stulpelio pavadinimas bus stulpelio pavadinimas, nurodytas pirmajame SELECT sakinyje.
SĄJUNGOS pavyzdys
Šiame pavyzdyje gausime „DepartmentId“ sąrašą iš studentų lentelės ir „DepartmentId“ sąrašą iš skyrių lentelės tame pačiame stulpelyje:
PASIRINKITE „DepartmentId AS“ „DepartmentIdUnioned FROM“ iš studentųSĄJUNGAPASIRINKITE Departamentų skyrių;
Tai suteiks jums:
Užklausa pateikia tik 5 eilutes, kurios yra atskiros skyriaus ID vertės. Atkreipkite dėmesį į pirmąją vertę, kuri yra nulinė vertė.
SQLite UNION ALL pavyzdys
Šiame pavyzdyje gausime „DepartmentId“ sąrašą iš studentų lentelės ir „DepartmentId“ sąrašą iš skyrių lentelės tame pačiame stulpelyje:
PASIRINKITE „DepartmentId AS“ „DepartmentIdUnioned FROM“ iš studentųSĄJUNGA VISIPASIRINKITE Departamentų skyrių;
Tai suteiks jums:
Užklausa grąžins 14 eilučių, 10 eilučių iš studentų lentelės ir 4 iš skyrių lentelės. Atminkite, kad grąžinamose vertėse yra dublikatų. Taip pat atkreipkite dėmesį, kad stulpelio pavadinimas buvo tas, kuris nurodytas pirmajame SELECT sakinyje.
Pažiūrėkime, kaip JUNGTIS duos skirtingus rezultatus, jei UNION ALL pakeisime UNION:
SQLite INTERSECT
Grąžina vertes, esančias abiejų rezultatų rinkinyje. Vertės, esančios viename iš bendrų rezultatų rinkinių, bus ignoruojamos.
Pavyzdys
Šioje užklausoje mes pasirinksime „DepartmentId“ reikšmes, esančias lentelėje „Studentai“ ir „Departamentai“ stulpelyje „DepartmentId“:
PASIRINKITE katedros ID iš studentųSusikertaPASIRINKITE Departamentų skyrių;
Tai suteiks jums:
Užklausa pateikia tik tris reikšmes 1, 2 ir 3. Kurios yra vertės, esančios abiejose lentelėse.
Tačiau vertės „null“ ir „4“ nebuvo įtrauktos, nes „null“ vertė yra tik studentų lentelėje, o ne skyrių lentelėje. 4 vertė yra skyrių lentelėje, o ne studentų lentelėje.
Štai kodėl tiek reikšmės NULL, tiek 4 buvo ignoruojamos ir nebuvo įtrauktos į grąžinamas reikšmes.
IŠSKYRUS
Tarkime, jei turite du eilučių sąrašus - „list1“ ir „list2“ ir norite, kad eilutės būtų tik iš „list1“, kurios nėra sąraše2, galite naudoti sąlygą „IŠSKYRUS“. Sąlyga EXCEPT palygina du sąrašus ir pateikia tas eilutes, kurios egzistuoja sąraše1, o nėra sąraše2.
Pavyzdys
Šioje užklausoje mes pasirinksime „DepartmentId“ reikšmes, kurios yra skyrių lentelėje ir kurių nėra studentų lentelėje:
PASIRINKITE Departamentų skyriųIŠSKYRUSPASIRINKITE katedros ID iš studentų;
Tai suteiks jums:
Užklausa pateikia tik 4 reikšmę. Kuri yra vienintelė reikšmė, esanti skyrių lentelėje, o ne studentų lentelėje.
NULL tvarkymas
„ NULL “ reikšmė yra speciali reikšmė SQLite. Jis naudojamas reikšmei, kuri yra nežinoma arba kurios trūksta. Atminkite, kad nulinė reikšmė visiškai skiriasi nuo „ 0 “ arba tuščios „“ vertės. Kadangi 0 ir tuščia reikšmė yra žinoma vertė, nežinoma nulinė vertė.
NULL reikšmės reikalauja specialaus tvarkymo SQLite, mes dabar pamatysime, kaip elgtis su NULL reikšmėmis.
Ieškokite NULL reikšmių
Negalite naudoti įprasto lygybės operatoriaus (=), kad ieškotumėte nulinių verčių. Pvz., Šioje užklausoje ieškoma studentų, kurių „DepartmentId“ vertė yra nulinė:
PASIRINKTI * IŠ studentų, kur DepartmentId = NULL;
Ši užklausa neduos jokių rezultatų:
Kadangi NULL reikšmė nėra lygi jokiai kitai reikšmei, įskaitant pačią nulinę vertę, todėl ji negrąžino jokio rezultato.
- Tačiau norint, kad užklausa veiktų, turite naudoti operatorių „IS NULL“, kad ieškotumėte nulinių verčių taip:
PASIRINKITE * IŠ studentų, kur katedra yra NENUOLAIKA;
Tai suteiks jums:
Užklausa grąžins tuos studentus, kurių „DepartmentId“ reikšmė yra nulinė.
- Jei norite gauti tas vertes, kurios nėra nulinės, turite naudoti tokį operatorių: " NĖRA NULL ":
PASIRINKITE * IŠ studentų, kur katedra nėra pilnavertė;
Tai suteiks jums:
Užklausa grąžins tuos studentus, kurie neturi reikšmės NULL DepartmentId.
Sąlyginiai rezultatai
Jei turite reikšmių sąrašą ir norite pasirinkti bet kurią iš jų, atsižvelgdami į kai kurias sąlygas. Tam, kad būtų pasirinkta, turėtų atitikti tos konkrečios vertės sąlyga.
„CASE“ išraiška įvertins visų sąlygų reikšmių sąrašą. Jei sąlyga yra teisinga, ji grąžins tą vertę.
Pvz., Jei turite stulpelį „Įvertinimas“ ir norite pasirinkti teksto vertę pagal pažymio vertę taip:
- „Puiku“, jei pažymys aukštesnis nei 85.
- „Labai gerai“, jei pažymys yra nuo 70 iki 85.
- „Gerai“, jei pažymys yra nuo 60 iki 70.
Tada tam galite naudoti išraišką CASE.
Tai gali būti naudojama apibrėžiant tam tikrą logiką sąlygoje „SELECT“, kad galėtumėte pasirinkti tam tikrus rezultatus, priklausomai nuo tam tikrų sąlygų, pvz., „If“ sakinio.
Operatorių CASE įvairiomis sintaksėmis galima apibrėžti taip:
- Galite naudoti skirtingas sąlygas:
ATVEJISKADA sąlyga1, tada rezultatas1KADA sąlyga2, tada rezultatas2KADA sąlyga3 TAD rezultatas3 ... KITA rezultatasGALAS
- Arba galite naudoti tik vieną išraišką ir pasirinkti įvairias galimas reikšmes:
CASE išraiškaKAI vertė1 TAD rezultatas1KADA reikšmė2, tada rezultatas2KAI vertė 3 TAD rezultatas3 ... KITA pakartotaGALAS
Atkreipkite dėmesį, kad ELSE sąlyga yra neprivaloma.
Pavyzdys
Šiame pavyzdyje mes naudosime CASE išraišką su NULL reikšme skyriaus Id stulpelyje studentų lentelėje, kad būtų rodomas tekstas „No Department“ taip:
PASIRINKTIStudento vardas,ATVEJISKADA skyrius yra NENU, TADA „Nėra skyriaus“ELSE departamentasEND AS Departamento IDIŠ studentų;
- CASE operatorius patikrins „DepartmentId“ vertę, ar ji yra nulinė, ar ne.
- Jei tai yra NULL reikšmė, tada vietoj DepartmentId reikšmės ji pasirinks pažodinę vertę „No Department“.
- Jei tai nėra nulinė reikšmė, tada ji pasirinks stulpelio „DepartmentId“ vertę.
Tai suteiks jums išvestį, kaip parodyta žemiau:
Bendra lentelės išraiška
Bendrosios lentelės išraiškos (CTE) yra paklausos, apibrėžtos SQL sakinyje su nurodytu vardu.
Jis turi pranašumą prieš paklausas, nes jis apibrėžtas iš SQL sakinių ir palengvins užklausų skaitymą, priežiūrą ir supratimą.
Bendrą lentelės išraišką galima apibrėžti dedant sąlygą WITH prieš SELECT sakinius taip:
SU CTE varduAS(SELECT sakinys)PASIRINKITE, ATNAUJINKITE, ĮTERPKITE arba atnaujinkite teiginį čia iš CTE
„ CTEname “ yra bet koks pavadinimas, kurį galite suteikti CTE, jį galite naudoti norėdami jį vėliau nurodyti. Atminkite, kad CTE galite apibrėžti SELECT, UPDATE, INSERT arba DELETE sakinį
Dabar pažiūrėkime, kaip naudoti CTE, sąlygoje SELECT.
Pavyzdys
Šiame pavyzdyje mes apibrėžsime CTE iš SELECT sakinio ir vėliau jį panaudosime kitoje užklausoje:
SU visais departamentaisAS(Pasirinkite „DepartmentId“, „DepartmentName“IŠ Katedrų)PASIRINKTIs.StudentId,s.StudentName,a. Departamento pavadinimasIŠ studentų ASINNER JOIN AllDepartments AS a ON s.DepartmentId = a.DepartmentId;
Šioje užklausoje mes apibrėžėme CTE ir suteikėme jai pavadinimą „ AllDepartments “. Šis CTE buvo apibrėžtas iš „SELECT“ užklausos:
Pasirinkite „DepartmentId“, „DepartmentName“IŠ Katedrų
Tada, kai mes apibrėžėme CTE, mes jį panaudojome po jo esančioje SELECT užklausoje.
Atminkite, kad bendros lentelės išraiškos neturi įtakos užklausos išvestims. Tai būdas apibrėžti loginį rodinį ar paklausą, kad būtų galima juos pakartotinai naudoti toje pačioje užklausoje. Bendros lentelės išraiškos yra tarsi kintamasis, kurį deklaruojate ir pakartotinai naudojate kaip pakaitinę užklausą. Užklausos išvestį veikia tik SELECT sakinys.
Ši užklausa suteiks jums:
Išplėstinės užklausos
Išplėstinės užklausos yra tos užklausos, kuriose yra sudėtingų sujungimų, antrinių užklausų ir kai kurių suvestinių rodiklių. Kitame skyriuje pamatysime išplėstinės užklausos pavyzdį:
Kur mes gauname,
- Katedros pavadinimai su visais kiekvieno skyriaus studentais
- Studentų vardas atskirtas kableliais ir
- Rodoma katedra, kurioje yra bent trys studentai
PASIRINKTId. Departamento pavadinimas,COUNT (s.StudentId) studentų skaičius,GROUP_CONCAT (StudentName) AS studentaiIŠ Departamentų AS dVIDINIS PRISIJUNGIMAS Studentai, kai įjungtas s.DepartmentId = d.DepartmentIdGRUPĖ pagal d. Departamento pavadinimasTURI SKAIČIAI (s.StudentId)> = 3;
Pridėjome JOIN sąlygą, kad gautume „DepartmentName“ iš „Departments“ lentelės. Po to pridėjome sąlygą GROUP BY su dviem agreguotosiomis funkcijomis:
- „COUNT“ - kiekvienos katedros studentų skaičiavimui.
- „GROUP_CONCAT“, kad kiekvienos grupės mokiniai būtų sujungiami kableliais, atskirtais vienoje eilutėje.
- Po „GROUP BY“ naudojome HAVING sąlygą filtruodami skyrius ir pasirinkdami tik tuos skyrius, kuriuose yra bent 3 studentai.
Rezultatas bus toks:
Santrauka:
Tai buvo įvadas į SQLite užklausų rašymą ir duomenų bazės užklausų pagrindus bei tai, kaip galite filtruoti grąžintus duomenis. Dabar galite parašyti savo SQLite užklausas.