- SQL-lause auttaa meitä hakemaan tietueiden joukon tai nippuja taulukosta.
- SQL-lause auttaa meitä määrittämään ehdon taulukon sarakkeissa tai tietueissa.
Strukturoidussa kyselykielessä käytettävissä olevat eri lausekkeet ovat seuraavat:
- MISSÄ CLAUSE
- RYHMÄ LAUSEKSI
- ON LAUSEKE
- TILAUS LAUKSELLA
Katsotaan jokainen lause yksitellen esimerkin kanssa. Käytämme MySQL-tietokantaa kyselyjen kirjoittamiseen esimerkeissä.
1. MISSÄ LAUSE
SQL:n WHERE-lausetta käytetään SELECT-kyselyn kanssa, joka on yksi tiedonkäsittelykielen komennoista. WHERE-lauseilla voidaan rajoittaa tulosjoukossa näytettävien rivien määrää, se yleensä auttaa tietueiden suodatuksessa. Se palauttaa vain ne kyselyt, jotka täyttävät WHERE-lauseen erityisehdot. WHERE-lausetta käytetään SELECT-, UPDATE-, DELETE-käskyissä jne.
WHERE-lause SELECT-kyselyllä
Asterisk-symbolia käytetään WHERE-lauseen kanssa SELECT-kyselyssä kaikkien sarakearvojen noutamiseen jokaiselle tietueelle taulukosta.
Syntaksi jossa-lauseessa valintakyselyn kanssa jokaisen tietueen kaikkien sarakearvojen hakemiseksi taulukosta:
SELECT * FROM TABLENAME WHERE CONDITION;
Jos vaatimuksen mukaan haluamme hakea vain valikoituja sarakkeita, käytämme alla olevaa syntaksia:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Harkitse työntekijätaulukkoa, jossa on seuraavat tiedot:
E_ID | Nimi | Palkka | Kaupunki | Nimitys | Liittymispäivämäärä | Ikä |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50 000 | Mumbai | Projektipäällikkö | 20.6.2021 | 24 |
2 | Tejaswini Naik | 75 000 | Delhi | Järjestelmäinsinööri | 24.12.2019 | 23 |
3 | Anuja Sharma | 40 000 | Jaipur | Manager | 15.8.2021 | 26 |
4 | Anushka Tripathi | 90 000 | Mumbai | Ohjelmistojen testaajat | 13.6.2021 | 24 |
5 | Rucha Jagtap | 45 000 | Bangalore | Projektipäällikkö | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Manager | 17.7.2019 | 26 |
7 | Baviskarin ääni | 55 000 | Jaipur | Järjestelmäinsinööri | 10.10.2021 | 24 |
8 | Siellä on Sheik | 45 000 | Pune | Ohjelmistoinsinööri | 2020-09-10 | 26 |
9 | Swati Kumari | 50 000 | Pune | Ohjelmistojen testaajat | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Mumbai | Projektipäällikkö | 2020-10-02 | 24 |
yksitoista | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50 500 | Delhi | Ohjelmistokehittäjä | 10.9.2016 | 25 |
13 | Kiran Maheshwari | 50 000 | Nashik | HR | 12.12.2013 | 23 |
14 | Tejal Jain | 40 000 | Delhi | Projektipäällikkö | 10.11.2017 | 25 |
viisitoista | Mohini Shah | 38 000 | Pune | Ohjelmistokehittäjä | 05-03-2019 | kaksikymmentä |
Esimerkki 1:
Kirjoita kysely hakeaksesi kaikki tietueet työntekijästä, jonka työntekijän palkka on yli 50 000.
Kysely:
mysql> SELECT * FROM employees WHERE Salary > 50000;
Yllä oleva kysely näyttää kaikki ne työntekijän tietueet, joiden työntekijän palkka on yli 50 000. Alle 50 000 palkkaa ei näytetä ehtojen mukaisesti.
Saat seuraavan tulosteen:
Odotetun tuoton mukaan näytetään vain ne tietueet, joissa työntekijän palkka on suurempi kuin 50000. Työntekijätaulukossa on kuusi tietuetta, jotka täyttävät annetun ehdon.
pinoa javassa
Esimerkki 2:
Kirjoita kysely päivittääksesi työntekijän tietueen ja aseta päivitetyksi nimeksi 'Harshada Sharma', jossa työntekijän kaupungin nimi on Jaipur.
Kysely:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
Yllä oleva kysely päivittää työntekijän nimeksi 'Harshada Sharma', jossa työntekijän kaupunki on Jaipur.
Suoritamme valintakyselyn tarkistaaksemme, onko tietueita päivitetty vai ei.
mysql> SELECT * FROM employees;
Työntekijän taulukossa on vain yksi tietue, jossa työntekijän kaupunki on 'Jaipur'. Tietueen id on 3, mikä täyttää annetun ehdon. Tästä syystä työntekijän nimi, jonka työntekijätunnus on 3, muutetaan annettujen ehtojen mukaisesti nimellä 'Harshada Sharma'.
Esimerkki 3:
Kirjoita kysely poistaaksesi työntekijän tietueen, jossa työntekijän liittymispäivä on '2013-12-12'.
Kysely:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
Yllä oleva kysely poistaa sen työntekijän työntekijätiedot, jonka liittymispäivä on '2013-12-12'.
Varmistaaksemme yllä olevan kyselyn tulokset, suoritamme valintakyselyn.
mysql> SELECT *FROM employees;
Työntekijätaulukossa on vain yksi tietue, jossa työntekijän liittymispäivä on '2013-12-12'. Tietueen id on 13, mikä täyttää annetun ehdon. Siksi työntekijän taulukosta poistetaan annettujen ehtojen mukaisesti työntekijä, jonka työntekijätunnus on 13.
2. RYHMÄLAUSEKE
Group By -lausetta käytetään järjestämään samankaltaisia tietueita ryhmiin Structured Query Languageissa. Strukturoidun kyselykielen Group by -lausetta käytetään Select-lausekkeen kanssa. Group by lause sijoitetaan where-lauseen jälkeen SQL-käskyssä. Group By -lausetta käytetään erityisesti koontifunktion kanssa, eli max (), min (), keskiarvo (), summa (), count () tuloksen ryhmittelemiseksi yhden tai useamman sarakkeen perusteella.
Group By -lauseen syntaksi:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
Yllä oleva syntaksi valitsee kaikki tiedot tai tietueet taulukosta, mutta se järjestää kaikki tiedot tai tietueet ryhmiin kyselyssä annetun sarakkeen nimen perusteella.
Group By -lauseen syntaksi, jossa on koostefunktioita:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Ymmärretään Group By -lausetta esimerkkien avulla.
Harkitse työntekijätaulukkoa, jossa on seuraavat tiedot:
E_ID | Nimi | Palkka | Kaupunki | Nimitys | Liittymispäivämäärä | Ikä |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50 000 | Mumbai | Projektipäällikkö | 20.6.2021 | 24 |
2 | Tejaswini Naik | 75 000 | Delhi | Järjestelmäinsinööri | 24.12.2019 | 23 |
3 | Anuja Sharma | 40 000 | Jaipur | Manager | 15.8.2021 | 26 |
4 | Anushka Tripathi | 90 000 | Mumbai | Ohjelmistojen testaajat | 13.6.2021 | 24 |
5 | Rucha Jagtap | 45 000 | Bangalore | Projektipäällikkö | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Manager | 17.7.2019 | 26 |
7 | Baviskarin ääni | 55 000 | Jaipur | Järjestelmäinsinööri | 10.10.2021 | 24 |
8 | Siellä on Sheik | 45 000 | Pune | Ohjelmistoinsinööri | 2020-09-10 | 26 |
9 | Swati Kumari | 50 000 | Pune | Ohjelmistojen testaajat | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Mumbai | Projektipäällikkö | 2020-10-02 | 24 |
yksitoista | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50 500 | Delhi | Ohjelmistokehittäjä | 10.9.2016 | 25 |
13 | Kiran Maheshwari | 50 000 | Nashik | HR | 12.12.2013 | 23 |
14 | Tejal Jain | 40 000 | Delhi | Projektipäällikkö | 10.11.2017 | 25 |
viisitoista | Mohini Shah | 38 000 | Pune | Ohjelmistokehittäjä | 05-03-2019 | kaksikymmentä |
Esimerkki 1:
Kirjoita kysely näyttääksesi kaikki työntekijätaulukon tietueet, mutta ryhmittele tulokset ikäsarakkeen perusteella.
Kysely:
mysql> SELECT * FROM employees GROUP BY Age;
Yllä oleva kysely näyttää kaikki työntekijätaulukon tietueet, mutta ne on ryhmitelty ikäsarakkeen mukaan.
Saat seuraavan tulosteen:
Esimerkki 2:
Kirjoita kysely näyttääksesi kaikki työntekijätaulukon tietueet ryhmiteltynä nimityksen ja palkan mukaan.
Kysely:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
Yllä oleva kysely näyttää kaikki työntekijätaulukon tietueet, mutta ne on ryhmitelty palkka- ja nimityssarakkeen mukaan.
Saat seuraavan tulosteen:
Esimerkkejä Group By -lauseesta, jossa käytetään koostefunktioita
Esimerkki 1:
Kirjoita kysely listataksesi tietyn nimityksen parissa työskentelevien työntekijöiden lukumäärän ja ryhmittele tulokset työntekijän nimityksen mukaan.
Kysely:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
Yllä oleva kysely näyttää nimityksen ja vastaavan määräyksen parissa työskentelevien työntekijöiden lukumäärän. Kaikki nämä tulokset ryhmitellään nimisarakkeen mukaan.
Saat seuraavan tulosteen:
Odotetun tuoton mukaisesti merkintä ja vastaava työntekijämäärä näytetään.
Esimerkki 2:
Kirjoita kysely nähdäksesi työntekijän palkan summa kaupungin mukaan ryhmiteltynä työntekijän iän mukaan.
Kysely:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
Yllä oleva kysely laskee ensin kussakin kaupungissa työskentelevien palkkojen summan ja näyttää sitten palkkasumman vastaavalla palkalla, mutta ryhmiteltynä ikäsarakkeen mukaan.
Saat seuraavan tulosteen:
Odotetun tuoton mukaan näytetään työntekijän palkan summa sen kaupungin mukaan, johon työntekijä kuuluu. Jos kaksi työntekijää kuuluu samaan kaupunkiin, he kuuluvat yhteen ryhmään.
3. OTTAMISLAUSEKE:
Kun meidän on asetettava ehtoja taulukon sarakkeeseen, käytämme SQL:n WHERE-lausetta. Mutta jos haluamme käyttää mitä tahansa ehtoa Group By -lauseen sarakkeessa tuolloin, käytämme HAVING-lausetta Group By -lauseen kanssa sarakkeen ehdoissa.
Syntaksi:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Harkitse työntekijätaulukkoa, jossa on seuraavat tiedot:
E_ID | Nimi | Palkka | Kaupunki | Nimitys | Liittymispäivämäärä | Ikä |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50 000 | Mumbai | Projektipäällikkö | 20.6.2021 | 24 |
2 | Tejaswini Naik | 75 000 | Delhi | Järjestelmäinsinööri | 24.12.2019 | 23 |
3 | Anuja Sharma | 40 000 | Jaipur | Manager | 15.8.2021 | 26 |
4 | Anushka Tripathi | 90 000 | Mumbai | Ohjelmistojen testaajat | 13.6.2021 | 24 |
5 | Rucha Jagtap | 45 000 | Bangalore | Projektipäällikkö | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Manager | 17.7.2019 | 26 |
7 | Baviskarin ääni | 55 000 | Jaipur | Järjestelmäinsinööri | 10.10.2021 | 24 |
8 | Siellä on Sheik | 45 000 | Pune | Ohjelmistoinsinööri | 2020-09-10 | 26 |
9 | Swati Kumari | 50 000 | Pune | Ohjelmistojen testaajat | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Mumbai | Projektipäällikkö | 2020-10-02 | 24 |
yksitoista | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50 500 | Delhi | Ohjelmistokehittäjä | 10.9.2016 | 25 |
13 | Kiran Maheshwari | 50 000 | Nashik | HR | 12.12.2013 | 23 |
14 | Tejal Jain | 40 000 | Delhi | Projektipäällikkö | 10.11.2017 | 25 |
viisitoista | Mohini Shah | 38 000 | Pune | Ohjelmistokehittäjä | 05-03-2019 | kaksikymmentä |
Esimerkki 1:
Kirjoita kysely näyttääksesi työntekijöiden nimet, palkan ja kaupungin, jossa työntekijän enimmäispalkka on suurempi kuin 40 000, ja ryhmittele tulokset nimikkeiden mukaan.
Kysely:
npm välimuistin tyhjennysvoima
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
Saat seuraavan tulosteen:
Yllä oleva tulos osoittaa, että työntekijän nimi, palkka ja kaupunki, jos työntekijän palkka on yli 40 000 ryhmiteltynä nimityksen mukaan. (Samanlaisen nimityksen työntekijät sijoitetaan yhteen ryhmään ja muulla nimikkeellä saaneet sijoitetaan erikseen).
Esimerkki 2:
Kirjoita kysely näyttääksesi työntekijöiden nimet ja nimitykset, joissa työntekijän palkan summa on suurempi kuin 45000 ja ryhmittele tulokset kaupungeittain.
Kysely:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
Saat seuraavan tulosteen:
Yllä oleva tulos näyttää työntekijän nimen, nimityksen ja työntekijän palkan. Palkkasumma on yli 45 000 kaupungeittain ryhmiteltynä. (Työntekijät, joilla on samanlaisia kaupunkeja, sijoitetaan yhteen ryhmään ja ne, joilla on eri kaupunki, eivät ole samanlaisia, sijoitetaan erikseen).
4. TILAUS LAUKSESTA
Aina kun haluamme lajitella jotain SQL:ssä, käytämme ORDER BY -lausetta. SQL:n ORDER BY -lause auttaa meitä lajittelemaan tiedot taulukon tietyn sarakkeen perusteella. Tämä tarkoittaa, että kaikki tiedot, jotka on tallennettu tiettyyn sarakkeeseen, jossa suoritamme ORDER BY -lauseen, lajitellaan. Vastaavat sarakkeen arvot näytetään siinä järjestyksessä, jossa olemme saaneet arvot aikaisemmassa vaiheessa.
Kuten kaikki tiedämme, lajittelu tarkoittaa joko NOusevassa tai LASKEVAssa järjestyksessä. Samalla tavalla ORDER BY CLAUSE lajittelee tiedot nousevaan tai laskevaan järjestykseen vaatimuksemme mukaisesti. Tiedot lajitellaan nousevaan järjestykseen aina, kun ASC-avainsana käytetään ORDER by -lauseen kanssa, ja DESC avainsana lajittelee tietueet laskevaan järjestykseen.
Oletusarvoisesti lajittelu tapahtuu SQL:ssä käyttämällä ORDER BY -lausetta ASCENDING-järjestyksessä, jos emme maininneet lajittelujärjestystä.
Ennen kuin siirrymme ORDER BY -lauseen esimerkkiin tietueiden lajittelemiseksi, tarkastelemme ensin syntaksia, jotta esimerkin läpikäyminen on helppoa.
ORDER BY -lauseen syntaksi ilman asc- ja desc-avainsanaa:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
ORDER BY -lauseen syntaksi nousevaan järjestykseen:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
ORDER BY -lauseen syntaksi laskevaan järjestykseen:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Oletetaan, että meillä on työntekijätaulukko, jossa on seuraavat tiedot:
E_ID | Nimi | Palkka | Kaupunki | Nimitys | Liittymispäivämäärä | Ikä |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50 000 | Mumbai | Projektipäällikkö | 20.6.2021 | 24 |
2 | Tejaswini Naik | 75 000 | Delhi | Järjestelmäinsinööri | 24.12.2019 | 23 |
3 | Anuja Sharma | 40 000 | Jaipur | Manager | 15.8.2021 | 26 |
4 | Anushka Tripathi | 90 000 | Mumbai | Ohjelmistojen testaajat | 13.6.2021 | 24 |
5 | Rucha Jagtap | 45 000 | Bangalore | Projektipäällikkö | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Manager | 17.7.2019 | 26 |
7 | Baviskarin ääni | 55 000 | Jaipur | Järjestelmäinsinööri | 10.10.2021 | 24 |
8 | Siellä on Sheik | 45 000 | Pune | Ohjelmistoinsinööri | 2020-09-10 | 26 |
9 | Swati Kumari | 50 000 | Pune | Ohjelmistojen testaajat | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Mumbai | Projektipäällikkö | 2020-10-02 | 24 |
yksitoista | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50 500 | Delhi | Ohjelmistokehittäjä | 10.9.2016 | 25 |
13 | Kiran Maheshwari | 50 000 | Nashik | HR | 12.12.2013 | 23 |
14 | Tejal Jain | 40 000 | Delhi | Projektipäällikkö | 10.11.2017 | 25 |
viisitoista | Mohini Shah | 38 000 | Pune | Ohjelmistokehittäjä | 05-03-2019 | kaksikymmentä |
Esimerkki 1:
Kirjoita kysely lajitellaksesi tietueet työntekijän taulukon työntekijämäärityksen nousevaan järjestykseen.
Kysely:
mysql> SELECT * FROM employees ORDER BY Designation;
Tässä SELECT-kyselyssä ORDER BY -lausetta käytetään sarakkeessa 'Designation' tietueiden lajitteluun, mutta emme käyttäneet ASC-avainsanaa ORDER BY -lauseen jälkeen lajitteluun nousevaan järjestykseen. Joten oletusarvoisesti tiedot lajitellaan nousevaan järjestykseen, jos emme määritä asc-avainsanaa.
Saat seuraavan tulosteen:
Odotetun tuoton mukaisesti tietueet näytetään nousevassa järjestyksessä työntekijän nimeämisen mukaan.
Esimerkki 2:
Kirjoita kysely näyttääksesi työntekijän nimi ja palkka työntekijän palkan mukaisessa nousevassa järjestyksessä työntekijätaulukosta.
Kysely:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Tässä SELECT-kyselyssä ORDER BY -lausetta sovelletaan Palkka-sarakkeeseen tietueiden lajittelemiseksi. Olemme käyttäneet ASC-avainsanaa työntekijän palkan lajittelussa nousevaan järjestykseen.
Saat seuraavan tulosteen:
Kaikki tietueet näkyvät työntekijän palkan nousevassa järjestyksessä.
Esimerkki 3:
Kirjoita kysely lajitellaksesi tiedot työntekijätaulukkoon tallennetun työntekijän nimen mukaiseen laskevaan järjestykseen.
Kysely:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Tässä olemme käyttäneet ORDER BY -lausetta Nimi-sarakkeen SELECT-kyselyn kanssa tietojen lajitteluun. Olemme käyttäneet DESC-avainsanaa ORDER BY -lauseen jälkeen lajitellaksemme tiedot laskevaan järjestykseen.
Saat seuraavan tulosteen:
Kaikki tietueet näytetään työntekijän nimen mukaisessa laskevassa järjestyksessä.