Jos haluat kirjoittaa SQL-kyselyitä SQLite-tietokantaan, sinun on tiedettävä, miten SELECT-, FROM-, WHERE-, GROUP BY-, ORDER BY- ja LIMIT -lausekkeet toimivat ja miten niitä käytetään.
Tämän opetusohjelman aikana opit käyttämään näitä lausekkeita ja kuinka kirjoittaa SQLite-lausekkeita.
Tässä opetusohjelmassa opit-
- Tietojen lukeminen Select-painikkeella
- Nimet ja aliakset
- MISSÄ
- Rajoittaminen ja tilaaminen
- Kopioiden poistaminen
- Aggregaatti
- Ryhmä BY
- Kysely ja alakysely
- Aseta toiminnot -UNION, Intersect
- NULL käsittely
- Ehdolliset tulokset
- Yhteinen taulukkoilmaus
- Edistyneet kyselyt
Tietojen lukeminen Select-painikkeella
SELECT-lauseke on päälauseke, jota käytät SQLite-tietokannan kyselyyn. SELECT-lausekkeessa ilmoitetaan mitä valita. Mutta ennen valintalauseketta katsotaanpa mistä voimme valita tietoja käyttämällä FROM-lauseketta.
FROM-lauseketta käytetään määrittämään, mihin haluat valita tiedot. From-lauseessa voit määrittää yhden tai useamman taulukon tai alakyselyn, josta tiedot valitaan, kuten näemme myöhemmin opetusohjelmissa.
Huomaa, että kaikissa seuraavissa esimerkeissä sinun on suoritettava sqlite3.exe ja avattava yhteys näytetietokantaan virtaavana:
Vaihe 1) Tässä vaiheessa
- Avaa Oma tietokone ja siirry seuraavaan hakemistoon " C: \ sqlite " ja
- Avaa sitten " sqlite3.exe ":
Vaihe 2) Avaa tietokanta " TutorialsSampleDB.db " seuraavalla komennolla:
Nyt olet valmis suorittamaan minkä tahansa tyyppisen kyselyn tietokannassa.
SELECT-lausekkeessa voit valita paitsi sarakkeen nimen myös paljon muita vaihtoehtoja valitaksesi. Seuraavasti:
VALITSE *
Tämä komento valitsee kaikki sarakkeet FROM-lausekkeen kaikista viitatuista taulukoista (tai alakyselyistä). Esimerkiksi:
VALITSE *OpiskelijoiltaINNER JOIN Osastot PÄÄLLÄ Students.DepartmentId = Departments.DepartmentId;
Tämä valitsee kaikki sarakkeet sekä opiskelijoiden että osastojen taulukoista:
SELECT -nimi. *
Tämä valitsee kaikki sarakkeet vain taulukosta "tablename". Esimerkiksi:
VALITSE Oppilaat. *OpiskelijoiltaINNER JOIN Osastot PÄÄLLÄ Students.DepartmentId = Departments.DepartmentId;
Tämä valitsee kaikki sarakkeet vain opiskelijataulukosta:
Kirjaimellinen arvo
Kirjaimellinen arvo on vakioarvo, joka voidaan määrittää select-lauseessa. Voit käyttää kirjaimellisia arvoja normaalisti samalla tavalla kuin sarakkeiden nimiä SELECT-lausekkeessa. Nämä kirjaimelliset arvot näytetään jokaiselle riville SQL-kyselyn palauttamista riveistä.
Tässä on joitain esimerkkejä erilaisista kirjaimellisista arvoista, jotka voit valita:
- Numeerinen literaali - numerot missä tahansa muodossa, kuten 1, 2,55,… jne.
- Merkkijonon literaalit - Mikä tahansa merkkijono 'USA', 'tämä on esimerkkiteksti', jne.
- NULL - NULL-arvo.
- Current_TIME - Se antaa sinulle nykyisen ajan.
- CURRENT_DATE - tämä antaa sinulle nykyisen päivämäärän.
Tämä voi olla kätevää joissakin tilanteissa, joissa joudut valitsemaan vakion arvon kaikille palautetuille riveille. Esimerkiksi, jos haluat valita kaikki opiskelijat Opiskelijat-taulukosta, uudella sarakkeella, jonka nimi on maa, joka sisältää arvon "USA", voit tehdä tämän:
SELECT *, 'USA' AS Country opiskelijoista;
Tämä antaa sinulle kaikki opiskelijoiden sarakkeet ja uuden sarakkeen "Maa" näin:
Huomaa, että tämä uusi sarake Maa ei itse asiassa ole uusi sarake, joka on lisätty taulukkoon. Se on virtuaalinen sarake, joka on luotu kyselyyn tulosten näyttämistä varten, eikä sitä luoda taulukossa.
Nimet ja aliakset
Alias on sarakkeen uusi nimi, jonka avulla voit valita sarakkeen uudella nimellä. Sarakkeiden aliakset määritetään käyttämällä avainsanaa "AS".
Esimerkiksi, jos haluat valita StudentName -sarakkeen palautettavaksi "Student Name" -tunnuksella "StudentName": n sijasta, voit antaa sille seuraavan aliaksen:
SELECT StudentName AS 'Opiskelijan nimi' opiskelijoilta;
Tämä antaa sinulle opiskelijoiden nimet nimellä "Opiskelijan nimi" eikä "Opiskelijan nimi" seuraavasti:
Huomaa, että sarakkeen nimi on edelleen " StudentName "; sarake StudentName on edelleen sama, se ei muutu aliaksen mukaan.
Alias ei muuta sarakkeen nimeä; se vain muuttaa näyttönimen SELECT-lausekkeessa.
Huomaa myös, että avainsana "AS" on valinnainen, voit lisätä aliaksen nimen ilman sitä, jotain tällaista:
SELECT StudentName 'Opiskelijan nimi' opiskelijoilta;
Ja se antaa sinulle täsmälleen saman tuotoksen kuin edellinen kysely:
Voit antaa taulukoille myös aliaksia, ei vain sarakkeita. Samalla avainsanalla "AS". Voit esimerkiksi tehdä tämän:
VALITSE s. * OPISKELIJOISTA AS;
Tämä antaa sinulle kaikki taulukon sarakkeet Opiskelijat:
Tämä voi olla erittäin hyödyllistä, jos olet liittymässä useampaan kuin yhteen pöydään; sen sijaan, että toistaisit koko taulukon nimeä kyselyssä, voit antaa jokaiselle taulukolle lyhyen aliaksen nimen. Esimerkiksi seuraavassa kyselyssä:
VALITSE Opiskelijat.Opiskelijan nimi, Laitokset.Opiskelun nimiOpiskelijoiltaINNER JOIN Osastot PÄÄLLÄ Students.DepartmentId = Departments.DepartmentId;
Tämä kysely valitsee kunkin opiskelijan nimen "Opiskelijat" -taulukosta ja sen osaston nimen "Osastot" -taulukosta:
Sama kysely voidaan kuitenkin kirjoittaa seuraavasti:
VALITSE s.Opiskelijan nimi, d. Osaston nimiOpiskelijoilta sINNER JOIN Osastot AS d ON s.DepartmentId = d.DepartmentId;
- Annoimme opiskelijoille taulukon aliaksen "s" ja osastot taulukon aliaksen "d".
- Sitten käytimme koko taulukon nimen sijasta niiden aliaksia viitataksemme niihin.
- INNER JOIN yhdistää kaksi tai useampia taulukoita yhteen ehdon avulla. Esimerkissämme olemme liittyneet Opiskelijat-taulukkoon Osastot-taulukon kanssa DepartmentId -sarakkeeseen. Sisäiselle liittymiselle on myös perusteellinen selitys "SQLite Joins" -opetusohjelmassa.
Tämä antaa sinulle tarkan tuotoksen kuin edellinen kysely:
MISSÄ
Kirjoittamalla SQL-kyselyt käyttämällä SELECT-lauseketta yksin FROM-lausekkeen kanssa, kuten näimme edellisessä osassa, saat kaikki taulukoiden rivit. Jos kuitenkin haluat suodattaa palautetut tiedot, sinun on lisättävä "WHERE" -lauseke.
WHERE-lauseketta käytetään SQL-kyselyn palauttaman tulosjoukon suodattamiseen. Näin WHERE-lauseke toimii:
- WHERE-lausekkeessa voit määrittää "lausekkeen".
- Tämä lauseke arvioidaan jokaiselle riville, joka palautetaan FROM-lausekkeessa määritetystä taulukosta.
- Lauseke arvioidaan Boolen lausekkeeksi, jonka tulos on joko tosi, väärä tai nolla.
- Sitten palautetaan vain rivit, joille lauseke on arvioitu todellisella arvolla, ja ne, joiden tulos on väärä tai tyhjä, jätetään huomioimatta eikä sisällytetä tulosjoukkoon.
- Suodataksesi tulosjoukon WHERE-lausekkeen avulla sinun on käytettävä lausekkeita ja operaattoreita.
Luettelo SQLite-operaattoreista ja niiden käytöstä
Seuraavassa osassa selitämme, kuinka voit suodattaa lausekkeen ja operaattoreiden avulla.
Lauseke on yksi tai useampi kirjaimellinen arvo tai sarake yhdistettynä toisiinsa operaattorin kanssa.
Huomaa, että voit käyttää lausekkeita sekä SELECT-lauseessa että WHERE-lauseessa.
Seuraavissa esimerkeissä kokeilemme lausekkeita ja operaattoreita sekä valinta- että WHERE-lauseessa. Osoittaakseen, kuinka he suoriutuvat.
On olemassa erityyppisiä lausekkeita ja operaattoreita, jotka voit määrittää seuraavasti:
SQLite ketjutusoperaattori "||"
Tätä operaattoria käytetään yhdistämään yksi tai useampi kirjaimellinen arvo tai sarake keskenään. Se tuottaa yhden merkkijonon kaikista ketjutetuista kirjaimellisista arvoista tai sarakkeista. Esimerkiksi:
VALITSE 'Tunnus nimellä:' || StudentId || StudentName AS StudentIdWithNameOpiskelijoilta;
Tämä yhdistää uudeksi aliakseksi " StudentIdWithName ":
- Kirjaimellinen merkkijonoarvo " Id with Name: "
- " StudentId " -sarakkeen arvolla ja
- " StudentName " -sarakkeen arvolla
SQLite CAST -operaattori:
CAST-operaattoria käytetään arvon muuntamiseen tietotyypistä toiseen tietotyyppiin.
Esimerkiksi, jos sinulla on numeerinen arvo, joka on tallennettu merkkijonoarvona, kuten tämä ' '12 .5' ', ja haluat muuntaa sen numeeriseksi arvoksi, voit tehdä tämän CAST-operaattorilla näin " CAST ('12 .5' AS TODELLINEN) ". Tai jos sinulla on desimaaliarvo, kuten 12.5, ja sinun täytyy saada vain kokonaislukuosa, voit heittää sen kokonaislukuun, kuten "CAST (12.5 AS INTEGER)".
Esimerkki
Seuraavassa komennossa yritämme muuntaa eri arvot muiksi tietotyypeiksi:
SELECT CAST ('12,5 'AS REAL) ToReal, CAST (12,5 AS INTEGER) AS ToInteger;
Tämä antaa sinulle:
Tulos on seuraava:
- CAST ('12,5 'AS REAL) - arvo '12,5' on merkkijonoarvo, se muunnetaan REAL-arvoksi.
- CAST (12.5 AS INTEGER) - arvo 12.5 on desimaaliarvo, se muunnetaan kokonaisluvuksi. Desimaaliosa katkaistaan ja siitä tulee 12.
SQLite-aritmeettiset operaattorit:
Ota kaksi tai useampia numeerisia litraaliarvoja tai numeerisia sarakkeita ja palauta yksi numeerinen arvo. SQLiten tukemat aritmeettiset operaattorit ovat:
|
Esimerkki:
Seuraavassa esimerkissä kokeillaan viittä aritmeettista operaattoria, joilla on kirjaimelliset numeeriset arvot samassa
valitse lauseke:
VALITSE 25 + 6, 25-6, 25 * 6, 25% 6, 25/6;
Tämä antaa sinulle:
Huomaa, kuinka käytimme tässä SELECT-käskyä ilman FROM-lauseketta. Ja tämä on sallittua SQLite-palvelussa, kunhan valitsemme kirjaimelliset arvot.
SQLite-vertailuoperaattorit
Vertaa kahta operandia toisiinsa ja palauta tosi tai epätosi seuraavasti:
|
Huomaa, että SQLite ilmaisee tosi arvon 1: llä ja väärän arvon 0: lla.
Esimerkki:
VALITSE10 <6 AS '<', 10 <= 6 AS '<=',10> 6 AS '>', 10> = 6 AS '> =',10 = 6 AS '=', 10 == 6 AS '==',10! = 6 AS '! =', 10 <> 6 AS '<>';
Tämä antaa jotain tällaista:
SQLite Pattern Matching -operaattorit
" LIKE " - käytetään kuvioiden sovittamiseen. " Tykkää " -toiminnon avulla voit etsiä arvoja, jotka vastaavat jokerimerkillä määritettyä mallia.
Vasemmalla oleva operandi voi olla joko merkkijonon kirjaimellinen arvo tai merkkijonon sarake. Kuvio voidaan määrittää seuraavasti:
- Sisältää kuvion. Esimerkiksi StudentName LIKE '% a%' - tämä etsii opiskelijoiden nimiä, jotka sisältävät kirjaimen "a" missä tahansa kohdassa StudentName-saraketta.
- Alkaa kuviosta. Esimerkiksi " StudentName LIKE 'a%" "- etsi opiskelijoiden nimiä, jotka alkavat kirjaimella" a ".
- Päättyy kuvion kanssa. Esimerkiksi " StudentName LIKE '% a' " - etsi opiskelijoiden nimiä, jotka päättyvät kirjaimella "a".
- Minkä tahansa merkkijonon vastaaminen merkkijonossa käyttämällä alaviivaa "_". Esimerkiksi " StudentName LIKE 'J___' " - etsi 4 merkin pituisia opiskelijoiden nimiä. Sen on aloitettava "J" -kirjaimella ja siinä voi olla vielä kolme muuta merkkiä "J" -kirjaimen jälkeen.
Esimerkkejä kuvion vastaavuudesta:
- Hanki opiskelijoiden nimet, jotka alkavat j-kirjaimella:
VALITSE StudentName opiskelijoista WHERE StudentNAME LIKE 'j%';
Tulos:
- Hanki opiskelijoiden nimet y-kirjaimella:
VALITSE StudentName opiskelijoista WHERE StudentNAME LIKE '% y';
Tulos:
- Hanki n-kirjainta sisältävät opiskelijoiden nimet:
VALITSE StudentName opiskelijoista WHERE StudentNAME LIKE '% n%';
Tulos:
"GLOB" - vastaa LIKE-operaattoria, mutta GLOB erottaa kirjainkoon, toisin kuin LIKE-operaattori. Esimerkiksi seuraavat kaksi komentoa palauttavat erilaisia tuloksia:
VALITSE 'Jack' GLOB 'j%';VALITSE 'Jack' LIKE 'j%';
Tämä antaa sinulle:
- Ensimmäinen lause palauttaa arvon 0 (väärä), koska GLOB-operaattori erottaa kirjainkoon, joten 'j' ei ole yhtä suuri kuin 'J'. Toinen lause palauttaa kuitenkin arvon 1 (tosi), koska LIKE-operaattori ei eroa kirjainkokoa, joten 'j' on yhtä suuri kuin 'J'.
Muut operaattorit:
SQLite JA
Looginen operaattori, joka yhdistää yhden tai useamman lausekkeen. Se palaa tosi, vain jos kaikki lausekkeet tuottavat "tosi" arvon. Se palauttaa epätosi kuitenkin vain, jos kaikki lausekkeet tuottavat "väärän" arvon.
Esimerkki:
Seuraava kysely etsii opiskelijoita, joiden StudentId> 5 ja StudentName alkaa kirjaimella N, palautettujen opiskelijoiden on täytettävä kaksi ehtoa:
VALITSE *OpiskelijoiltaWHERE (StudentId> 5) JA (StudentNAME LIKE 'N%');
Lähtökohtana tämä antaa yllä olevassa kuvakaappauksessa vain "Nancy". Nancy on ainoa opiskelija, joka täyttää molemmat ehdot.
SQLite TAI
Looginen operaattori, joka yhdistää yhden tai useamman lausekkeen siten, että jos jokin yhdistetyistä operaattoreista antaa tosi arvon, se palaa tosi. Kuitenkin, jos kaikki lausekkeet tuottavat epätosi, se palauttaa väärän.
Esimerkki:
Seuraava kysely etsii opiskelijoita, joiden StudentId> 5 tai StudentName alkaa kirjaimella N, palautettujen opiskelijoiden on täytettävä vähintään yksi ehdoista:
VALITSE *OpiskelijoiltaWHERE (StudentId> 5) TAI (StudentNAME LIKE 'N%');
Tämä antaa sinulle:
Tuloksena, yllä olevassa kuvakaappauksessa, tämä antaa sinulle opiskelijan nimen, jonka nimessä on kirjain "n" sekä opiskelijan tunnus, jonka arvo on yli 5.
Kuten näette, tulos on erilainen kuin kysely AND-operaattorilla.
SQLite VÄLILLÄ
VÄLILLÄ käytetään valitsemaan arvot, jotka ovat kahden arvon alueella. Esimerkiksi " X Y: n JA Z: N VÄLILLÄ " palauttaa arvon true (1), jos arvo X on kahden arvon Y ja Z välissä. " X Y: n JA Z: N VÄLILLÄ " on yhtä suuri kuin " X> = Y JA X <= Z ", X: n on oltava suurempi tai yhtä suuri kuin Y ja X on pienempi tai yhtä suuri kuin Z.
Esimerkki:
Seuraavassa esimerkkikyselyssä kirjoitamme kyselyn saadaksesi opiskelijat, joiden Id-arvo on 5 ja 8:
VALITSE *OpiskelijoiltaMissä opiskelija oli 5 ja 8 välillä;
Tämä antaa vain opiskelijoille, joilla on tunnukset 5, 6, 7 ja 8:
SQLite IN
Ottaa yhden operandin ja luettelon operandeista. Se palauttaa arvon tosi, jos ensimmäinen operandiarvo on yhtä suuri kuin yksi operandien arvo luettelosta. IN-operaattori palauttaa arvon true (1), jos operandiluettelo sisältää ensimmäisen operandin arvon sen arvoissa. Muussa tapauksessa se palauttaa arvon false (0).
Näin: " col IN (x, y, z) ". Tämä vastaa " (col = x) tai (col = y) tai (col = z) ".
Esimerkki:
Seuraava kysely valitsee opiskelijat, joiden tunnukset ovat vain 2, 4, 6, 8:
VALITSE *OpiskelijoiltaWHERE StudentId IN (2, 4, 6, 8);
Kuten tämä:
Edellinen kysely antaa tarkan tuloksen seuraavana kyselynä, koska ne vastaavat:
VALITSE *OpiskelijoiltaMissä (StudentId = 2) TAI (StudentId = 4) TAI (StudentId = 6) TAI (StudentId = 8);
Molemmat kyselyt antavat tarkan tuotoksen. Kahden kyselyn ero on kuitenkin ensimmäinen kysely, jota käytimme "IN" -operaattorilla. Toisessa kyselyssä käytimme useita "OR" -operaattoreita.
IN-operaattori vastaa useiden TAI-operaattoreiden käyttöä. " WHERE StudentId IN (2, 4, 6, 8) " vastaa " WHERE (StudentId = 2) TAI (StudentId = 4) TAI (StudentId = 6) OR (StudentId = 8) " ;
Kuten tämä:
SQLite EI SISÄÄN
"NOT IN" -operandi on IN-operaattorin vastakohta. Mutta samalla syntaksilla; siihen tarvitaan yksi operandi ja luettelo operanteista. Se palauttaa arvon tosi, jos ensimmäinen operandiarvo ei ole yhtä suuri kuin yksi operandien arvo luettelosta. ts. se palauttaa arvon true (0), jos operandiluettelo ei sisällä ensimmäistä operandia. Näin: " col NOT IN (x, y, z) ". Tämä vastaa " (col <> x) AND (col <> y) AND (col <> z) ".
Esimerkki:
Seuraava kysely valitsee opiskelijat, joiden tunnukset eivät ole yhtä kuin yksi näistä tunnuksista 2, 4, 6, 8:
VALITSE *OpiskelijoiltaMissä opiskelija EI OLE (2, 4, 6, 8);
Kuten tämä
Edellisessä kyselyssä annamme tarkan tuloksen seuraavana kyselynä, koska ne vastaavat:
VALITSE *OpiskelijoiltaMissä (StudentId <> 2) JA (StudentId <> 4) JA (StudentId <> 6) JA (StudentId <> 8);
Kuten tämä:
Yllä olevassa kuvakaappauksessa
Käytimme useita ei-yhtäläisiä operaattoreita "<>" saadaksemme luettelon opiskelijoista, jotka eivät ole yhtä suuria kuin seuraavat ID: t 2, 4, 6 tai 8. Tämä kysely palauttaa kaikki muut opiskelijat kuin nämä Id-luettelot.
SQLite ON OLEMASSA
EXISTS-operaattorit eivät ota operandeja; se vie vain SELECT-lauseen sen jälkeen. EXISTS-operaattori palauttaa arvon true (1), jos SELECT-lausekkeesta on palautettu rivejä, ja se palauttaa false (0), jos SELECT-lauseesta ei palauteta yhtään riviä.
Esimerkki:
Seuraavassa esimerkissä valitsemme osaston nimen, jos osastotunnus on opiskelijataulukossa:
Valitse osaston nimiLähtöosastot AS dMISSÄ ON (VALITSE DepartmentId opiskelijoista AS s WHERE d.DepartmentId = s.DepartmentId);
Tämä antaa sinulle:
Vain kolme osastoa " IT, fysiikka ja taide " palautetaan. Ja laitoksen nimeä " Math " ei palauteta, koska siinä ei ole opiskelijaa, joten laitetunnusta ei ole opiskelijataulukossa. Siksi EXISTS-operaattori jätti huomiotta " Math " -osaston.
SQLite EI
Kääntää edellisen operaattorin tuloksen, joka tulee sen jälkeen. Esimerkiksi:
- EI VÄLILLÄ - Se palaa tosi, jos VÄLISET palauttaa epätosi ja päinvastoin.
- EI LIKE - Se palaa tosi, jos LIKE palauttaa false ja päinvastoin.
- EI MAAILMAN - Se palaa tosi, jos GLOB palauttaa väärän ja päinvastoin.
- EI OLOSSA - Se palaa tosi, jos OLEMASSA palauttaa väärän ja päinvastoin.
Esimerkki:
Seuraavassa esimerkissä käytämme NOT-operaattoria EXISTS-operaattorin kanssa saadaksemme osastojen nimet, joita ei ole Student-taulukossa, mikä on EXISTS-operaattorin käänteinen tulos. Joten haku tehdään DepartmentId: n kautta, jota ei ole osastotaulukossa.
Valitse osaston nimiLähtöosastot AS dMissä ei ole (SELECT DepartmentIdOpiskelijoilta sMissä d.osastoId = s.osastoId);
Tuotos :
Vain matematiikan osasto palautetaan. Koska matematiikkaosasto on ainoa osasto, sitä ei ole opiskelijataulukossa.
Rajoittaminen ja tilaaminen
SQLite-tilaus
SQLite-järjestys on lajitella tulos yhden tai useamman lausekkeen perusteella. Tulosjoukon tilaamiseksi sinun on käytettävä ORDER BY -lauseketta seuraavasti:
- Ensin sinun on määritettävä ORDER BY -lauseke.
- ORDER BY -lauseke on määritettävä kyselyn lopussa; vain LIMIT-lauseke voidaan määrittää sen jälkeen.
- Määritä lauseke, josta tiedot järjestetään, tämä lauseke voi olla sarakkeen nimi tai lauseke.
- Lausekkeen jälkeen voit määrittää valinnaisen lajittelusuunnan. Joko DESC, tilaamaan datan laskeva tai ASC tilaamaan datan nouseva. Jos et määritä mitään niistä, tiedot lajitellaan nousevasti.
- Voit määrittää lisää lausekkeita "," -merkillä.
Esimerkki
Seuraavassa esimerkissä valitaan kaikki opiskelijat järjestyksessä heidän nimensä mukaan, mutta laskevassa järjestyksessä, sitten laitoksen nimen mukaan nousevassa järjestyksessä:
VALITSE s.Opiskelijan nimi, d. Osaston nimiOpiskelijoilta sINNER JOIN Osastot AS d ON s.DepartmentId = d.DepartmentIdTILAA d.DepartmentName ASC, s.StudentName DESC;
Tämä antaa sinulle:
- SQLite järjestää ensin kaikki opiskelijat laitoksen nimen mukaan nousevassa järjestyksessä
- Sitten kaikki osaston nimet, kaikki kyseisen osaston nimen alla olevat opiskelijat näytetään laskevassa järjestyksessä heidän nimensä mukaan
SQLite-raja:
Voit rajoittaa SQL-kyselysi palauttamien rivien määrää LIMIT-lausekkeen avulla. Esimerkiksi RAJA 10 antaa sinulle vain 10 riviä ja ohittaa kaikki muut rivit.
LIMIT-lausekkeessa voit valita tietyn määrän rivejä tietystä sijainnista käyttämällä OFFSET-lauseketta. Esimerkiksi " LIMIT 4 OFFSET 4 " jättää huomiotta ensimmäiset 4 riviä ja palautti 4 riviä viidennestä rivistä alkaen, joten saat rivit 5,6,7 ja 8.
Huomaa, että OFFSET-lauseke on valinnainen, voit kirjoittaa sen kuten " LIMIT 4, 4 ", ja se antaa sinulle tarkat tulokset.
Esimerkki :
Seuraavassa esimerkissä palautamme vain 3 opiskelijaa alkaen opiskelijan tunnuksesta 5 käyttämällä kyselyä:
VALITSE * OPISKELIJOISTA RAJA 4,3;
Tämä antaa sinulle vain kolme oppilasta alkaen rivistä 5. Joten se antaa sinulle rivit StudentId 5, 6 ja 7:
Kopioiden poistaminen
Jos SQL-kysely palauttaa päällekkäisiä arvoja, voit käyttää DISTINCT- avainsanaa näiden kaksoiskappaleiden poistamiseksi ja erillisten arvojen palauttamiseksi. Voit määrittää useamman kuin yhden sarakkeen DISTINCT-näppäimen jälkeen.
Esimerkki:
Seuraava kysely palauttaa päällekkäiset "osaston nimen arvot": Täällä meillä on päällekkäisiä arvoja nimillä IT, fysiikka ja taide.
Valitse d.DepartmentNameOpiskelijoilta sINNER JOIN Osastot AS d ON s.DepartmentId = d.DepartmentId;
Tämä antaa päällekkäiset arvot osaston nimelle:
Huomaa, kuinka osaston nimellä on kaksoisarvoja. Nyt käytämme DISTINCT-avainsanaa samalla kyselyllä näiden kaksoiskappaleiden poistamiseksi ja vain yksilöllisten arvojen saamiseksi. Kuten tämä:
SELECT DISTINCT d.DepartmentNameOpiskelijoilta sINNER JOIN Osastot AS d ON s.DepartmentId = d.DepartmentId;
Tämä antaa vain kolme yksilöllistä arvoa osaston nimi -sarakkeelle:
Aggregaatti
SQLite-aggregaatit ovat SQLite-sovelluksessa määriteltyjä sisäänrakennettuja toimintoja, jotka ryhmitelevät useiden rivien useita arvoja yhdeksi arvoksi.
Tässä ovat SQLiten tukemat aggregaatit:
SQLite AVG ()
Palautti kaikkien x-arvojen keskiarvon.
Esimerkki:
Seuraavassa esimerkissä saamme opiskelijoiden keskimääräisen pistemäärän saamaan kaikista kokeista:
SELECT AVG (Mark) FROM Marks;
Tämä antaa sinulle arvon "18,375":
Nämä tulokset saadaan laskemalla yhteen kaikki arvomerkit.
COUNT () - COUNT (X) tai COUNT (*)
Palauttaa x-arvon näyttökertojen kokonaismäärän. Tässä on joitain vaihtoehtoja, joita voit käyttää COUNT: n kanssa:
- COUNT (x): Laskee vain x arvot, missä x on sarakkeen nimi. Se ohittaa NULL-arvot.
- LASKE (*): Laske kaikki rivit kaikista sarakkeista.
- LASKU (DISTINCT x): Voit määrittää x: n eteen DISTINCT-avainsanan, joka saa x: n erillisten arvojen määrän.
Esimerkki
Seuraavassa esimerkissä saadaan niiden osastojen kokonaismäärä, joissa on COUNT (DepartmentId), COUNT (*) ja COUNT (DISTINCT DepartmentId), ja miten ne eroavat toisistaan:
SELECT COUNT (DepartmentId), COUNT (DISTINCT DepartmentId), COUNT (*) opiskelijoista;
Tämä antaa sinulle:
Seuraavasti:
- COUNT (DepartmentId) antaa sinulle kaikkien osastotunnusten määrän ja jättää tyhjäarvot huomiotta.
- COUNT (DISTINCT DepartmentId) antaa sinulle erilliset DepartmentId-arvot, jotka ovat vain 3. Mitkä ovat osaston nimen kolme eri arvoa. Huomaa, että opiskelijan nimessä on 8 osaston nimen arvoa. Mutta vain kolme eri arvoa, jotka ovat matematiikka, IT ja fysiikka.
- COUNT (*) laskee opiskelijataulukon rivien määrän, jotka ovat 10 riviä 10 opiskelijalle.
GROUP_CONCAT () - GROUP_CONCAT (X) tai GROUP_CONCAT (X, Y)
GROUP_CONCAT-aggregaattitoiminto yhdistää moninkertaiset arvot yhdeksi arvoksi pilkulla niiden erottamiseksi. Sillä on seuraavat vaihtoehdot:
- GROUP_CONCAT (X): Tämä yhdistää koko x: n arvon yhdeksi merkkijonoksi pilkulla "," jota käytetään erottimena arvojen välillä. NULL-arvot jätetään huomioimatta.
- GROUP_CONCAT (X, Y): Tämä yhdistää x: n arvot yhdeksi merkkijonoksi siten, että y: n arvoa käytetään erottimena kunkin arvon välillä oletuserottimen ',' sijasta. NULL-arvot myös jätetään huomioimatta.
- GROUP_CONCAT (DISTINCT X): Tämä yhdistää kaikki x: n erilliset arvot yhdeksi merkkijonoksi pilkulla "," jota käytetään erottimena arvojen välillä. NULL-arvot jätetään huomioimatta.
GROUP_CONCAT (osaston nimi) Esimerkki
Seuraava kysely yhdistää kaikki osaston nimen arvot opiskelijoista ja osastotaulukosta yhdeksi merkkipilkuksi erotettuna. Joten arvolistan palauttamisen sijaan yksi arvo kullakin rivillä. Se palauttaa vain yhden arvon yhdelle riville erottamalla kaikki arvot pilkuilla:
Valitse GROUP_CONCAT (d.DepartmentName)Opiskelijoilta sINNER JOIN Osastot AS d ON s.DepartmentId = d.DepartmentId;
Tämä antaa sinulle:
Tämä antaa sinulle luettelon 8 osaston nimiarvosta, jotka on liitetty yhdeksi merkkipilkuksi erotettuna.
GROUP_CONCAT (DISTINCT DepartmentName) -esimerkki
Seuraava kysely yhdistää osaston nimen erilliset arvot opiskelijoiden ja laitosten taulukosta yhdeksi merkkipilkuksi erotettuna:
VALITSE GROUP_CONCAT (DISTINCT d.DepartmentName)Opiskelijoilta sINNER JOIN Osastot AS d ON s.DepartmentId = d.DepartmentId;
Tämä antaa sinulle:
Huomaa, kuinka tulos on erilainen kuin edellinen tulos; Palasi vain kolme arvoa, jotka ovat erillisten osastojen nimet, ja päällekkäiset arvot poistettiin.
GROUP_CONCAT (osaston nimi, '&') esimerkki
Seuraava kysely yhdistää kaikki osaston nimi -sarakkeen arvot opiskelijoiden ja osastojen taulukosta yhdeksi merkkijonoksi, mutta erottimena pilkun sijaan merkki "&":
VALITSE GROUP_CONCAT (d.DepartmentName, '&')Opiskelijoilta sINNER JOIN Osastot AS d ON s.DepartmentId = d.DepartmentId;
Tämä antaa sinulle:
Huomaa, kuinka merkkiä "&" käytetään oletusmerkin "," sijaan erottamaan arvot.
SQLite MAX () ja MIN ()
MAX (X) palauttaa korkeimman arvon X-arvoista. MAX palauttaa NULL-arvon, jos kaikki x: n arvot ovat nollia. MIN (X) palauttaa pienimmän arvon X-arvoista. MIN palauttaa NULL-arvon, jos kaikki X: n arvot ovat nollia.
Esimerkki
Seuraavassa kyselyssä käytämme MIN- ja MAX-toimintoja saadaksemme korkeimman ja alimman merkinnän " Marks " -taulukosta:
SELECT MAX (Mark), MIN (Mark) FROM Marks;
Tämä antaa sinulle:
SQLite SUM (x), yhteensä (x)
Molemmat palauttavat kaikkien x-arvojen summan. Mutta ne eroavat toisistaan:
- SUM palauttaa arvon null, jos kaikki arvot ovat nolla, mutta Total palauttaa arvon 0.
- TOTAL palauttaa aina liukulukuarvot. SUM palauttaa kokonaisluvun arvon, jos kaikki x-arvot ovat kokonaisluku. Jos arvot eivät kuitenkaan ole kokonaisluku, se palauttaa liukulukuarvon.
Esimerkki
Seuraavassa kyselyssä käytämme SUM ja total saadaksesi kaikkien " Marks " -taulukoiden merkkien summan :
SELECT SUM (Merkitse), YHTEENSÄ (Mark) FROM Marks;
Tämä antaa sinulle:
Kuten näette, TOTAL palauttaa aina kelluvan pisteen. Mutta SUM palauttaa kokonaisluvun, koska "Mark" -sarakkeen arvot voivat olla kokonaislukuja.
Ero SUM: n ja TOTAL-esimerkin välillä:
Seuraavassa kyselyssä näytetään ero SUM: n ja TOTAL: n välillä, kun he saavat NULL-arvojen summan:
VALITSE SUMMA (Merkitse), YHTEENSÄ (Merkitse) Merkkiistä MISSÄ TestId = 4;
Tämä antaa sinulle:
Huomaa, että TestId = 4: lle ei ole merkkejä, joten testillä on nolla-arvoja. SUM palauttaa tyhjän arvon tyhjäksi, kun taas TOTAL palauttaa arvon 0.
Ryhmä BY
GROUP BY -lauseketta käytetään määrittämään yksi tai useampi sarake, jota käytetään rivien ryhmittelemiseen ryhmiin. Rivit, joilla on samat arvot, kootaan (järjestetään) ryhmiin.
Kaikille muille sarakkeille, jotka eivät sisälly ryhmään sarakkeittain, voit käyttää sille koottua funktiota.
Esimerkki:
Seuraava kysely antaa sinulle kussakin osastossa olevien opiskelijoiden kokonaismäärän.
VALITSE d.DepartmentName, COUNT (s.StudentId) AS StudentsCountOpiskelijoilta sINNER JOIN Osastot AS d ON s.DepartmentId = d.DepartmentIdRYHMÄ d. Osaston nimi;
Tämä antaa sinulle:
GROUPBY DepartmentName -lauseke ryhmittelee kaikki opiskelijat ryhmiin yksi kullekin osaston nimelle. Jokaisen "osaston" ryhmän kohdalla se laskee opiskelijat siihen.
HAVING-lauseke
Jos haluat suodattaa GROUP BY -lausekkeen palauttamat ryhmät, voit määrittää "HAVING" -lausekkeen lausekkeella GROUP BY. Ilmaisua käytetään näiden ryhmien suodattamiseen.
Esimerkki
Seuraavassa kyselyssä valitsemme ne osastot, joissa on vain kaksi opiskelijaa:
VALITSE d.DepartmentName, COUNT (s.StudentId) AS StudentsCountOpiskelijoilta sINNER JOIN Osastot AS d ON s.DepartmentId = d.DepartmentIdRYHMÄ d. Osaston nimiLASKEE (opiskelijan ID) = 2;
Tämä antaa sinulle:
Lauseke HAVING COUNT (S.StudentId) = 2 suodattaa palautetut ryhmät ja palauttaa vain ne ryhmät, joissa on täsmälleen kaksi opiskelijaa. Meidän tapauksessamme taideosastolla on 2 opiskelijaa, joten se näkyy tuloksessa.
SQLite-kysely ja alakysely
Minkä tahansa kyselyn sisällä voit käyttää toista kyselyä joko SELECT-, INSERT-, DELETE-, UPDATE- tai toisen alakyselyjen sisällä.
Tätä sisäkkäistä kyselyä kutsutaan alakyselyksi. Näemme nyt joitain esimerkkejä alakyselyjen käytöstä SELECT-lausekkeessa. Tietojen muokkausoppaassa näemme kuitenkin, kuinka voimme käyttää alakyselyjä INSERT-, DELETE- ja UPDATE-käskyjen kanssa.
Alikyselyn käyttäminen FROM-lauseesimerkissä
Seuraavaan kyselyyn sisällytetään alikysely FROM-lauseeseen:
VALITSEs.Opiskelijan nimi, t.MarkOpiskelijoilta sSISÄINEN LIITTYMINEN(VALITSE StudentId, MarkTestistä AS tINNER JOIN Merkit AS m ON t.TestId = m.TestId) ON s.OpiskelijaId = t.OpiskelijaId;
Kysely:
VALITSE StudentId, MarkTestistä AS tINNER JOIN Merkit AS m ON t.TestId = m.TestId
Yllä olevaa kyselyä kutsutaan tässä alakyselyksi, koska se on sisäkkäin FROM-lauseessa. Huomaa, että annoimme sille aliaksen nimen "t", jotta voimme viitata kyselyssä siitä palautettuihin sarakkeisiin.
Tämä kysely antaa sinulle:
Joten meidän tapauksessamme
- s.StudentName valitaan pääkyselystä, joka antaa opiskelijoiden nimet ja
- t.Merkki valitaan alakyselystä; joka antaa näiden opiskelijoiden pisteet
Alikyselyn käyttäminen WHERE-lauseesimerkissä
Seuraavaan kyselyyn sisällytetään alakysely WHERE-lausekkeeseen:
Valitse osaston nimiLähtöosastot AS dMissä ei ole (SELECT DepartmentIdOpiskelijoilta sMissä d.osastoId = s.osastoId);
Kysely:
Valitse osaston tunnusOpiskelijoilta sMissä d.DepartmentId = s.DepartmentId
Yllä olevaa kyselyä kutsutaan tässä alakyselyksi, koska se on sisäkkäin WHERE-lauseessa. Alakysely palauttaa DepartmentId-arvot, joita operaattori käyttää EI OLE.
Tämä kysely antaa sinulle:
Yllä olevassa kyselyssä olemme valinneet osaston, johon ei ole ilmoittautunut opiskelijoita. Mikä on matematiikan osasto täällä.
Aseta toiminnot - UNION, leikkaa
SQLite tukee seuraavia SET-toimintoja:
UNIONI JA UNIONIN KAIKKI
Se yhdistää yhden tai useamman tulosjoukon (joukko rivejä), jotka on palautettu useista SELECT-käskyistä, yhteen tulosjoukkoon.
UNION palauttaa erilliset arvot. UNION ALL ei kuitenkaan pidä sisällään kopioita.
Huomaa, että sarakkeen nimi on ensimmäisessä SELECT-käskyssä määritetty sarakkeen nimi.
UNIONIN esimerkki
Seuraavassa esimerkissä saamme luettelon DepartmentId-opiskelijataulukosta ja DepartmentId-luettelon saman sarakkeen osastotaulukosta:
VALITSE DepartmentId AS DepartmentIdUnioned opiskelijoistaLIITTOSELECT DepartmentId FROM osastoista;
Tämä antaa sinulle:
Kysely palauttaa vain 5 riviä, jotka ovat erilliset osastotunnusarvot. Huomaa ensimmäinen arvo, joka on nolla-arvo.
SQLite UNION ALL ALL Esimerkki
Seuraavassa esimerkissä saamme luettelon DepartmentId-opiskelijataulukosta ja DepartmentId-luettelon saman sarakkeen osastotaulukosta:
VALITSE DepartmentId AS DepartmentIdUnioned opiskelijoistaUNIONIN KAIKKISELECT DepartmentId FROM osastoista;
Tämä antaa sinulle:
Kysely palauttaa 14 riviä, 10 riviä opiskelijataulukosta ja 4 osastotaulukosta. Huomaa, että palautetuissa arvoissa on kaksoiskappaleita. Huomaa myös, että sarakkeen nimi oli ensimmäinen SELECT-käsky.
Katsotaanpa nyt, kuinka UNION antaa kaikki erilaisia tuloksia, jos korvaamme UNION ALL: lla UNION:
SQLite INTERSECT
Palauttaa arvot olemassa molemmissa yhdistetyissä tulosjoukoissa. Yhdessä yhdistetystä tulosjoukosta olemassa olevat arvot jätetään huomioimatta.
Esimerkki
Seuraavassa kyselyssä valitsemme DepartmentId-arvot, jotka ovat sekä taulukon Opiskelijat että osastot -osastossa DepartmentId-sarakkeessa:
VALITSE Oppitunnus opiskelijoistaRisteäSELECT DepartmentId FROM osastoista;
Tämä antaa sinulle:
Kysely palauttaa vain kolme arvoa 1, 2 ja 3. Mitkä ovat molemmissa taulukoissa olevat arvot.
Arvoja null ja 4 ei kuitenkaan otettu mukaan, koska nolla-arvo on vain opiskelijataulukossa eikä osastotaulukossa. Ja arvo 4 on osastotaulukossa eikä opiskelijataulukossa.
Siksi sekä arvot NULL että 4 jätettiin huomioimatta eikä sisällytetty palautettuihin arvoihin.
PAITSI
Oletetaan, että jos sinulla on kaksi riviluetteloa, luettelo1 ja luettelo2 ja haluat rivejä vain luettelosta1, jota ei ole luettelossa2, voit käyttää lauseketta "POIS". EXCEPT-lauseke vertaa kahta luetteloa ja palauttaa ne rivit, jotka ovat list1: ssä ja joita ei ole listassa2.
Esimerkki
Seuraavassa kyselyssä valitsemme DepartmentId-arvot, jotka ovat osastotaulukossa ja joita ei ole opiskelijataulukossa:
Valitse osasto ID osastoistaPAITSIVALITSE Oppitunnus opiskelijoista;
Tämä antaa sinulle:
Kysely palauttaa vain arvon 4. Mikä on ainoa arvo, joka on osastotaulukossa eikä opiskelijataulukossa.
NULL käsittely
" NULL " -arvo on erityinen arvo SQLite-ohjelmassa. Sitä käytetään edustamaan arvoa, joka ei ole tiedossa tai puuttuu. Huomaa, että nolla-arvo on täysin erilainen kuin " 0 " tai tyhjä "" arvo. Koska 0 ja tyhjä arvo on tunnettu arvo, nolla-arvoa ei kuitenkaan tunneta.
NULL-arvot edellyttävät erityistä käsittelyä SQLite-sivustossa, näemme nyt, kuinka NULL-arvoja käsitellään.
Etsi NULL-arvoja
Et voi käyttää normaaliarvo-operaattoria (=) etsimään nolla-arvoja. Esimerkiksi seuraava kysely etsii opiskelijoita, joilla on null DepartmentId-arvo:
VALITSE * OPISKELIJOISTA WHERE DepartmentId = NULL;
Tämä kysely ei anna tulosta:
Koska NULL-arvo ei ole yhtä suuri kuin muu arvo, joka itse sisälsi nolla-arvon, siksi se ei tuottanut tulosta.
- Jotta kysely toimisi, sinun on kuitenkin käytettävä "IS NULL" -operaattoria etsimään nolla-arvoja seuraavasti:
VALITSE * OPISKELIJOISTA Missä laitos on tyhjä;
Tämä antaa sinulle:
Kysely palauttaa ne opiskelijat, joilla on null DepartmentId-arvo.
- Jos haluat saada arvot, jotka eivät ole nollia, sinun on käytettävä operaattoria " EI OLE NULL ":
VALITSE * OPISKELIJOISTA Missä laitos EI OLE NULL;
Tämä antaa sinulle:
Kysely palauttaa ne opiskelijat, joilla ei ole NULL DepartmentId -arvoa.
Ehdolliset tulokset
Jos sinulla on luettelo arvoista ja haluat valita jonkin niistä joidenkin ehtojen perusteella. Tätä varten kyseisen arvon ehdon tulisi olla totta, jotta se voidaan valita.
CASE-lauseke arvioi tämän ehtoluettelon kaikille arvoille. Jos ehto on tosi, se palauttaa arvon.
Jos sinulla on esimerkiksi sarake "Arvosana" ja haluat valita tekstiarvon arvosanan perusteella seuraavasti:
- "Erinomainen", jos arvosana on korkeampi kuin 85.
- "Erittäin hyvä", jos arvosana on 70–85.
- "Hyvä", jos arvosana on 60-70.
Sitten voit käyttää CASE-lauseketta siihen.
Tätä voidaan käyttää jonkin tietyn logiikan määrittelemiseen SELECT-lauseessa, jotta voit valita tietyt tulokset riippuen tietyistä ehdoista, kuten esimerkiksi if-lauseesta.
CASE-operaattori voidaan määritellä eri syntaksilla seuraavasti:
- Voit käyttää erilaisia ehtoja:
TAPAUSMissä kunnossa1 Sitten tulos1MIKSI ehto2 Sitten tulos2WHEN condition3 THEN result3… MUUT tulosLOPPU
- Tai voit käyttää vain yhtä lauseketta ja asettaa erilaisia mahdollisia arvoja:
CASE-lausekeWHEN arvo1 Sitten tulos1WHEN arvo2 Sitten tulos2WHEN value3 THEN result3… MUUTA määritelty uudelleenLOPPU
Huomaa, että ELSE-lauseke on valinnainen.
Esimerkki
Seuraavassa esimerkissä käytämme CASE- lauseketta NULL- arvolla Opiskelijat-taulukon osastotunnussarakkeessa tekstin Ei osastoa näyttämiseen seuraavasti:
VALITSEOpiskelijan nimi,TAPAUSKUN osasto on NULL TEN 'Ei osastoa'ELSE-osastoEND AS -osastoOpiskelijoilta;
- CASE-operaattori tarkistaa DepartmentId-arvon, onko se tyhjä vai ei.
- Jos se on NULL-arvo, se valitsee kirjaimellisen arvon Ei osastoa DepartmentId-arvon sijaan.
- Jos se ei ole nolla-arvo, se valitsee DepartmentId -sarakkeen arvon.
Tämä antaa sinulle seuraavan kuvan:
Yhteinen taulukkoilmaus
Yhteiset taulukkolausekkeet (CTE) ovat alakyselyjä, jotka määritetään SQL-käskyn sisällä tietyllä nimellä.
Sillä on etu alakyselyihin verrattuna, koska se on määritelty SQL-käskyistä ja tekee kyselyistä helpommin luettavissa, ylläpidettävissä ja ymmärrettävissä.
Yhteinen taulukkolauseke voidaan määrittää asettamalla WITH-lauseke SELECT-käskyjen eteen seuraavasti:
CTEnimen kanssaKUTEN(SELECT-käsky)SELECT, UPDATE, INSERT tai päivitä käsky täällä CTE: ltä
" CTEname " on mikä tahansa nimi, jonka voit antaa CTE: lle. Voit käyttää sitä viittaamaan siihen myöhemmin. Huomaa, että voit määrittää SELECT-, UPDATE-, INSERT- tai DELETE-käskyn CTE-tiedostoille
Katsotaan nyt esimerkki CTE: n käytöstä SELECT-lausekkeessa.
Esimerkki
Seuraavassa esimerkissä määritämme CTE: n SELECT-käskystä ja käytämme sitä myöhemmin toisessa kyselyssä:
Kaikilla osastoillaKUTEN(Valitse osastotunnus, osaston nimiOsastolta)VALITSEs.StudentId,s.Opiskelijan nimi,a. osaston nimiOpiskelijoilta sINNER JOIN AllDepartments AS a ON s.DepartmentId = a.DepartmentId;
Tässä kyselyssä määritimme CTE: n ja annoimme sille nimen " AllDepartments ". Tämä CTE määritettiin SELECT-kyselystä:
Valitse osastotunnus, osaston nimiOsastolta
Kun CTE on määritelty, käytimme sitä sen jälkeen tulevassa SELECT-kyselyssä.
Huomaa, että Common table -lausekkeet eivät vaikuta kyselyn tulokseen. Se on tapa määritellä looginen näkymä tai alakysely, jotta niitä voidaan käyttää uudelleen samassa kyselyssä. Yleiset taulukkolausekkeet ovat kuin muuttuja, jonka ilmoitat ja käytät sitä uudelleen alikyselynä. Vain SELECT-käsky vaikuttaa kyselyn tulokseen.
Tämä kysely antaa sinulle:
Edistyneet kyselyt
Edistyneet kyselyt ovat kyselyitä, jotka sisältävät monimutkaisia liitoksia, alakyselyjä ja joitain aggregaatteja. Seuraavassa osassa on esimerkki edistyneestä kyselystä:
Mistä saamme
- Laitoksen nimet kaikkien opiskelijoiden kanssa kullekin osastolle
- Opiskelijoiden nimi erotettu pilkulla ja
- Näytetään laitoksella, jossa on vähintään kolme opiskelijaa
VALITSEd. osaston nimi,COUNT (s.StudentId) Opiskelijamäärä,GROUP_CONCAT (StudentName) AS -opiskelijatLähtöosastot AS dSISÄISEN LIITTYMINEN Opiskelijat AS ON ON s.DepartmentId = d.DepartmentIdRYHMÄ d. Osaston nimiLASKEE (opiskelijan ID)> = 3;
Lisäsimme JOIN-lausekkeen saadaksesi DepartmentName -osaston taulukosta. Sen jälkeen lisäsimme GROUP BY -lausekkeen, jossa on kaksi aggregaattitoimintoa:
- "COUNT" laskee kunkin osastoryhmän opiskelijat.
- GROUP_CONCAT liittää kunkin ryhmän opiskelijat pilkuilla erotettuna yhteen merkkijonoon.
- GROUP BY -ryhmän jälkeen käytimme HAVING-lauseketta osastojen suodattamiseen ja valitsimme vain ne osastot, joissa on vähintään 3 opiskelijaa.
Tulos on seuraava:
Yhteenveto:
Tämä oli johdanto SQLite-kyselyjen kirjoittamiseen ja tietokannan kyselyn perusteisiin ja palautettujen tietojen suodattamiseen. Voit nyt kirjoittaa omat SQLite-kyselysi.