logo

SQL SĄLYGOS

  • SQL sąlyga padeda mums iš lentelės gauti įrašų rinkinį ar paketus.
  • SQL sąlyga padeda mums nurodyti sąlygą lentelės stulpeliuose arba įrašuose.

Struktūrinės užklausos kalboje galimos įvairios sąlygos:

  1. KUR SĄLYGA
  2. GRUPĖ PAGAL SĄLYGĄ
  3. TURIMAS SĄLYGĄ
  4. UŽSAKYMAS PAGAL SĄLYGĄ

Pažiūrėkime kiekvieną sakinį po vieną su pavyzdžiu. Užklausoms rašyti pavyzdžiuose naudosime MySQL duomenų bazę.

1. KUR SĄLYGA

SQL sąlyga WHERE naudojama su SELECT užklausa, kuri yra viena iš duomenų apdorojimo kalbos komandų. WHERE sąlygos gali būti naudojamos norint apriboti rezultatų rinkinyje rodomų eilučių skaičių, paprastai tai padeda filtruoti įrašus. Jis grąžina tik tas užklausas, kurios atitinka specifines WHERE sąlygos sąlygas. WHERE sakinys naudojamas sakiniuose SELECT, UPDATE, DELETE ir kt.

WHERE sąlyga su SELECT užklausa

Žvaigždutės simbolis naudojamas su WHERE sąlyga SELECT užklausoje, kad būtų galima gauti visas kiekvieno įrašo stulpelių reikšmes iš lentelės.

Sintaksė, kur sąlyga su pasirinkimo užklausa, norint gauti visas kiekvieno įrašo stulpelių reikšmes iš lentelės:

 SELECT * FROM TABLENAME WHERE CONDITION; 

Jei pagal reikalavimą norime gauti tik atrankinius stulpelius, tada naudosime žemiau pateiktą sintaksę:

 SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION; 

Apsvarstykite darbuotojų lentelę su šiais duomenimis:

E_ID vardas Atlyginimas Miestas Paskyrimas Prisijungimo_data Amžius
1 Sakšis Kumaris 50 000 Mumbajus Projekto vadovas 2021-06-20 24
2 Tejaswini Naik 75 000 Delis Sistemos inžinierius 2019-12-24 23
3 Anuja Šarma 40 000 Džaipuras Vadovas 2021-08-15 26
4 Anuška Tripathi 90 000 Mumbajus Programinės įrangos testuotojai 2021-06-13 24
5 Rucha Jagtap 45 000 Bengalūras Projekto vadovas 2020-08-09 23
6 Rutuja Deshmukh 60 000 Bengalūras Vadovas 2019-07-17 26
7 Baviskaro balsas 55 000 Džaipuras Sistemos inžinierius 2021-10-10 24
8 Ten Šeikas 45 000 Pune Programinės įrangos inžinierius 2020-09-10 26
9 Swati Kumari 50 000 Pune Programinės įrangos testuotojai 2021-01-01 25
10 Mayuri Patel 60 000 Mumbajus Projekto vadovas 2020-10-02 24
vienuolika Simranas Khanna 45500 Kolhapuras HR 2019-01-02 26
12 Šivanis Vagas 50 500 Delis Programinės įrangos kūrėjas 2016-09-10 25
13 Kiranas Maheshwari 50 000 Našikas HR 2013-12-12 23
14 Tejal Jain 40 000 Delis Projekto vadovas 2017-11-10 25
penkiolika Mohini Shah 38 000 Pune Programinės įrangos kūrėjas 2019-03-05 dvidešimt

1 pavyzdys:

Parašykite užklausą, kad gautumėte visus tuos darbuotojo įrašus, kurių darbuotojo atlyginimas yra didesnis nei 50 000.

Užklausa:

 mysql> SELECT * FROM employees WHERE Salary > 50000; 

Aukščiau pateiktoje užklausoje bus rodomi visi tie darbuotojo įrašai, kai darbuotojo atlyginimas yra didesnis nei 50 000. Žemesnis už 50 000 atlyginimas pagal sąlygas nebus rodomas.

Gausite tokią išvestį:

SQL SĄLYGOS

Pagal numatomą produkciją rodomi tik tie įrašai, kuriuose darbuotojo atlyginimas didesnis nei 50 000. Darbuotojo lentelėje yra šeši įrašai, kurie atitinka duotą sąlygą.

2 pavyzdys:

Parašykite užklausą, kad atnaujintumėte darbuotojo įrašą, ir nustatykite atnaujintą pavadinimą kaip „Harshada Sharma“, kur darbuotojo miesto pavadinimas yra Džaipuras.

Užklausa:

 mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur'; 

SQL SĄLYGOS

Aukščiau pateikta užklausa atnaujins darbuotojo vardą į „Harshada Sharma“, kur darbuotojo miestas yra Džaipuras.

Norėdami patikrinti, ar įrašai atnaujinti, ar ne, vykdysime pasirinkimo užklausą.

 mysql> SELECT * FROM employees; 

SQL SĄLYGOS

Darbuotojų lentelėje yra tik vienas įrašas, kuriame darbuotojo miestas yra „Džaipuras“. Įrašo ID yra 3, kuris atitinka pateiktą sąlygą. Taigi, atsižvelgiant į pateiktą sąlygą, darbuotojo vardas su darbuotojo ID 3 dabar pakeistas į „Harshada Sharma“.

3 pavyzdys:

Parašykite užklausą, kad ištrintumėte darbuotojo įrašą, kai darbuotojo prisijungimo data yra „2013-12-12“.

Užklausa:

 mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12'; 

SQL SĄLYGOS

Aukščiau pateikta užklausa ištrins darbuotojo, kurio prisijungimo data yra „2013-12-12“, darbuotojo duomenis.

Norėdami patikrinti aukščiau pateiktos užklausos rezultatus, vykdysime pasirinkimo užklausą.

 mysql> SELECT *FROM employees; 

SQL SĄLYGOS

Darbuotojų lentelėje yra tik vienas įrašas, kuriame darbuotojo prisijungimo data yra '2013-12-12'. Įrašo ID yra 13, o tai atitinka pateiktą sąlygą. Todėl pagal pateiktą sąlygą darbuotojas, kurio darbuotojo ID 13, dabar yra ištrintas iš darbuotojo lentelės.

2. GRUPĖ PAGAL SĄLYGĄ

Sąlyga „Group By“ naudojama panašių tipų įrašams suskirstyti į grupes Struktūrinės užklausos kalboje. Struktūrinės užklausos kalbos sąlyga „Grupuoti pagal“ naudojama su „Select Statement“. Grupavimas pagal sakinį SQL sakinyje dedamas po kur sakinio. Sąlyga Grupuoti pagal yra specialiai naudojama su agregavimo funkcija, ty max (), min (), vidurkis (), suma (), skaičius (), kad rezultatas būtų sugrupuotas pagal vieną ar daugiau nei vieną stulpelį.

Grupės pagal sakinio sintaksė:

 SELECT * FROM TABLENAME GROUP BY COLUMNNAME; 

Aukščiau pateikta sintaksė atrinks visus duomenis ar įrašus iš lentelės, tačiau visus tuos duomenis ar įrašus suskirstys į grupes pagal užklausoje pateiktą stulpelio pavadinimą.

Sąlygos „Group By“ sintaksė su agregacinėmis funkcijomis:

 SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME; 

Supraskime sakinį „Group By“ naudodami pavyzdžius.

Apsvarstykite darbuotojų lentelę su šiais duomenimis:

E_ID vardas Atlyginimas Miestas Paskyrimas Prisijungimo_data Amžius
1 Sakšis Kumaris 50 000 Mumbajus Projekto vadovas 2021-06-20 24
2 Tejaswini Naik 75 000 Delis Sistemos inžinierius 2019-12-24 23
3 Anuja Sharma 40 000 Džaipuras Vadovas 2021-08-15 26
4 Anuška Tripathi 90 000 Mumbajus Programinės įrangos testuotojai 2021-06-13 24
5 Rucha Jagtap 45 000 Bengalūras Projekto vadovas 2020-08-09 23
6 Rutuja Deshmukh 60 000 Bengalūras Vadovas 2019-07-17 26
7 Baviskaro balsas 55 000 Džaipuras Sistemos inžinierius 2021-10-10 24
8 Ten Šeikas 45 000 Pune Programinės įrangos inžinierius 2020-09-10 26
9 Swati Kumari 50 000 Pune Programinės įrangos testuotojai 2021-01-01 25
10 Mayuri Patel 60 000 Mumbajus Projekto vadovas 2020-10-02 24
vienuolika Simranas Khanna 45500 Kolhapuras HR 2019-01-02 26
12 Šivanis Vagas 50 500 Delis Programinės įrangos kūrėjas 2016-09-10 25
13 Kiranas Maheshwari 50 000 Našikas HR 2013-12-12 23
14 Tejal Jain 40 000 Delis Projekto vadovas 2017-11-10 25
penkiolika Mohini Shah 38 000 Pune Programinės įrangos kūrėjas 2019-03-05 dvidešimt

1 pavyzdys:

Parašykite užklausą, kad būtų rodomi visi darbuotojų lentelės įrašai, bet sugrupuokite rezultatus pagal amžiaus stulpelį.

Užklausa:

 mysql> SELECT * FROM employees GROUP BY Age; 

Aukščiau pateiktoje užklausoje bus rodomi visi darbuotojų lentelės įrašai, tačiau sugrupuoti pagal amžiaus stulpelį.

Gausite tokią išvestį:

SQL SĄLYGOS

2 pavyzdys:

Parašykite užklausą, kad būtų rodomi visi darbuotojų lentelės įrašai, sugrupuoti pagal paskirtį ir atlyginimą.

Užklausa:

 mysql> SELECT * FROM employees GROUP BY Salary, Designation; 

Aukščiau pateiktoje užklausoje bus rodomi visi darbuotojų lentelės įrašai, tačiau sugrupuoti pagal atlyginimo ir paskyrimo stulpelį.

Gausite tokią išvestį:

SQL SĄLYGOS

Sąlygos „Group By“ pavyzdžiai, naudojant suvestines funkcijas

1 pavyzdys:

Parašykite užklausą, kad nurodytumėte darbuotojų, dirbančių pagal tam tikrą paskirtį, skaičių ir sugrupuokite rezultatus pagal darbuotojo paskyrimą.

Užklausa:

 mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation; 

Aukščiau pateiktoje užklausoje bus rodomas paskyrimas su atitinkamu darbuotojų, dirbančių su tuo paskyrimu, skaičiumi. Visi šie rezultatai bus sugrupuoti pagal žymėjimo stulpelį.

Gausite tokią išvestį:

SQL SĄLYGOS

Atsižvelgiant į numatomą produkciją, rodomas žymėjimas su atitinkamu darbuotojų skaičiumi.

2 pavyzdys:

Parašykite užklausą, kad būtų rodoma darbuotojo atlyginimo suma pagal miestą, sugrupuota pagal darbuotojo amžių.

Užklausa:

 mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City; 

Aukščiau pateikta užklausa pirmiausia apskaičiuos kiekviename mieste dirbančių atlyginimų sumą, o tada parodys atlyginimo sumą su atitinkamu atlyginimu, bet sugrupuotą pagal amžiaus stulpelį.

Gausite tokią išvestį:

SQL SĄLYGOS

Pagal numatomą produkciją rodoma darbuotojo atlyginimo suma pagal miestą, kuriam darbuotojas priklauso. Jei du darbuotojai priklauso tam pačiam miestui, jie bus vienoje grupėje.

3. TURĖTI SĄLYGĄ:

Kai mums reikia pateikti bet kokias sąlygas lentelės stulpelyje, naudojame WHERE sąlygą SQL. Bet jei tuo metu norime naudoti bet kurią sąlygą stulpelyje, esančiame sąlygoje Group By, stulpelio sąlygoms naudosime sąlygą HAVING su sąlyga Group By.

Sintaksė:

 TABLENAME GROUP BY COLUMNNAME HAVING CONDITION; 

Apsvarstykite darbuotojų lentelę su šiais duomenimis:

E_ID vardas Atlyginimas Miestas Paskyrimas Prisijungimo_data Amžius
1 Sakšis Kumaris 50 000 Mumbajus Projekto vadovas 2021-06-20 24
2 Tejaswini Naik 75 000 Delis Sistemos inžinierius 2019-12-24 23
3 Anuja Šarma 40 000 Džaipuras Vadovas 2021-08-15 26
4 Anuška Tripathi 90 000 Mumbajus Programinės įrangos testuotojai 2021-06-13 24
5 Rucha Jagtap 45 000 Bengalūras Projekto vadovas 2020-08-09 23
6 Rutuja Deshmukh 60 000 Bengalūras Vadovas 2019-07-17 26
7 Baviskaro balsas 55 000 Džaipuras Sistemos inžinierius 2021-10-10 24
8 Ten Šeikas 45 000 Pune Programinės įrangos inžinierius 2020-09-10 26
9 Swati Kumari 50 000 Pune Programinės įrangos testuotojai 2021-01-01 25
10 Mayuri Patel 60 000 Mumbajus Projekto vadovas 2020-10-02 24
vienuolika Simranas Khanna 45500 Kolhapuras HR 2019-01-02 26
12 Šivanis Vagas 50 500 Delis Programinės įrangos kūrėjas 2016-09-10 25
13 Kiranas Maheshwari 50 000 Našikas HR 2013-12-12 23
14 Tejal Jain 40 000 Delis Projekto vadovas 2017-11-10 25
penkiolika Mohini Shah 38 000 Pune Programinės įrangos kūrėjas 2019-03-05 dvidešimt

1 pavyzdys:

Parašykite užklausą, kad būtų rodomi darbuotojų vardai, atlyginimas ir miestas, kuriame darbuotojo maksimalus atlyginimas yra didesnis nei 40 000, ir sugrupuokite rezultatus pagal paskirtį.

Užklausa:

 mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000; 

Gausite tokią išvestį:

SQL SĄLYGOS

Aukščiau pateikta produkcija rodo, kad darbuotojo vardas, pavardė, atlyginimas ir miestas darbuotojo, kurio darbuotojo atlyginimas didesnis nei 40 000, sugrupuoti pagal paskirtį. (Darbuotojai, turintys panašų paskyrimą, patenka į vieną grupę, o turintys kitą - atskirai).

2 pavyzdys:

Parašykite užklausą, kad būtų rodomi darbuotojų vardai ir pavardės, kai darbuotojo atlyginimo suma didesnė nei 45000, ir sugrupuokite rezultatus pagal miestą.

Užklausa:

 mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000; 

Gausite tokią išvestį:

SQL SĄLYGOS

Aukščiau pateikta produkcija rodo darbuotojo vardą, pavardę ir darbuotojo atlyginimą. Atlyginimo suma didesnė nei 45000, sugrupuota pagal miestus. (Darbuotojai, turintys panašius miestus, talpinami į vieną grupę, o turintys kitą miestą nepanašūs – atskirai).

4. UŽSAKYMAS PAGAL SĄLYGĄ

Kai norime ką nors rūšiuoti SQL, naudojame sąlygą ORDER BY. SQL sąlyga ORDER BY padės mums rūšiuoti duomenis pagal konkretų lentelės stulpelį. Tai reiškia, kad visi duomenys, saugomi konkrečiame stulpelyje, kuriame vykdome sąlygą ORDER BY, bus surūšiuoti. Atitinkamos stulpelių reikšmės bus rodomos tokia seka, kokia buvo gautos ankstesniame žingsnyje.

Kaip mes visi žinome, rūšiavimas reiškia arba DIDĖJANTI, arba MAŽĖJANTI. Lygiai taip pat ORDER BY CLAUSE rūšiuoja duomenis didėjimo arba mažėjimo tvarka pagal mūsų reikalavimą. Duomenys bus rūšiuojami didėjančia tvarka, kai bus ASC raktinis žodis naudojamas su ORDER pagal sąlygą, ir DESC raktinis žodis surūšiuos įrašus mažėjančia tvarka.

Pagal numatytuosius nustatymus rūšiavimas SQL bus atliekamas naudojant sąlygą ORDER BY ASCENDING tvarka, jei nepaminėjome rūšiavimo tvarkos.

Prieš pereidami prie ORDER BY sakinio pavyzdžio, norėdami rūšiuoti įrašus, pirmiausia pažiūrėsime į sintaksę, kad mums būtų lengva pereiti prie pavyzdžio.

ORDER BY sakinio sintaksė be „asc“ ir „desc“ raktinių žodžių:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME; 

ORDER BY sakinio sintaksė rūšiuoti didėjančia tvarka:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC; 

ORDER BY sakinio sintaksė, skirta rūšiuoti mažėjančia tvarka:

 SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC; 

Apsvarstykite, kad turime darbuotojų lentelę su šiais duomenimis:

E_ID vardas Atlyginimas Miestas Paskyrimas Prisijungimo_data Amžius
1 Sakšis Kumaris 50 000 Mumbajus Projekto vadovas 2021-06-20 24
2 Tejaswini Naik 75 000 Delis Sistemos inžinierius 2019-12-24 23
3 Anuja Šarma 40 000 Džaipuras Vadovas 2021-08-15 26
4 Anuška Tripathi 90 000 Mumbajus Programinės įrangos testuotojai 2021-06-13 24
5 Rucha Jagtap 45 000 Bengalūras Projekto vadovas 2020-08-09 23
6 Rutuja Deshmukh 60 000 Bengalūras Vadovas 2019-07-17 26
7 Baviskaro balsas 55 000 Džaipuras Sistemos inžinierius 2021-10-10 24
8 Ten Šeikas 45 000 Pune Programinės įrangos inžinierius 2020-09-10 26
9 Swati Kumari 50 000 Pune Programinės įrangos testuotojai 2021-01-01 25
10 Mayuri Patel 60 000 Mumbajus Projekto vadovas 2020-10-02 24
vienuolika Simranas Khanna 45500 Kolhapuras HR 2019-01-02 26
12 Šivanis Vagas 50 500 Delis Programinės įrangos kūrėjas 2016-09-10 25
13 Kiranas Maheshwari 50 000 Našikas HR 2013-12-12 23
14 Tejal Jain 40 000 Delis Projekto vadovas 2017-11-10 25
penkiolika Mohini Shah 38 000 Pune Programinės įrangos kūrėjas 2019-03-05 dvidešimt

1 pavyzdys:

Parašykite užklausą, kad surūšiuotumėte įrašus didėjančia darbuotojo paskyrimo tvarka iš darbuotojų lentelės.

Užklausa:

 mysql> SELECT * FROM employees ORDER BY Designation; 

Užklausoje SELECT stulpelyje „Paskirtis“ taikoma sąlyga ORDER BY, kad būtų galima rūšiuoti įrašus, bet nenaudojome ASC raktinio žodžio po ORDER BY, kad rūšiuotume didėjančia tvarka. Taigi, pagal numatytuosius nustatymus duomenys bus rūšiuojami didėjančia tvarka, jei nenurodysime asc raktinio žodžio.

Gausite tokią išvestį:

SQL SĄLYGOS

Atsižvelgiant į numatomą produkciją, įrašai rodomi didėjančia darbuotojo paskyrimo tvarka.

2 pavyzdys:

Parašykite užklausą, kad iš darbuotojų lentelės būtų rodomas darbuotojo vardas ir atlyginimas darbuotojo atlyginimo didėjimo tvarka.

Užklausa:

 mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC; 

Čia SELECT užklausoje stulpelyje „Atlyginimas“ taikoma sąlyga ORDER BY, kad būtų rūšiuojami įrašai. ASC raktažodį naudojome darbuotojo atlyginimo rūšiavimui didėjimo tvarka.

Gausite tokią išvestį:

SQL SĄLYGOS

Visi įrašai rodomi darbuotojo atlyginimo didėjimo tvarka.

3 pavyzdys:

Parašykite užklausą, kad surūšiuotumėte duomenis mažėjančia darbuotojų lentelėje saugomo darbuotojo vardo tvarka.

Užklausa:

 mysql> SELECT * FROM employees ORDER BY Name DESC; 

Duomenims rūšiuoti naudojome sąlygą ORDER BY su stulpelyje Pavadinimas pritaikyta užklausa SELECT. Naudojome raktinį žodį DESC po sakinio ORDER BY norėdami surūšiuoti duomenis mažėjančia tvarka.

Gausite tokią išvestį:

SQL SĄLYGOS

Visi įrašai rodomi darbuotojo vardo mažėjimo tvarka.

numeris į eilutę java