- SQL klauzula palīdz mums no tabulas izgūt ierakstu kopu vai komplektus.
- SQL klauzula palīdz mums norādīt nosacījumu tabulas kolonnās vai ierakstos.
Strukturētā vaicājuma valodā ir pieejamas šādas klauzulas:
- KUR KLAUSA
- GRUPA PĒC KLAUZAS
- IZKLAUSUMS
- PASŪTĪJUMS PĒC KLAUZA
Apskatīsim katru klauzulu pa vienam ar piemēru. Vaicājumu rakstīšanai piemēros izmantosim MySQL datu bāzi.
1. KUR KLAUZA
WHERE klauzula SQL tiek izmantota ar vaicājumu SELECT, kas ir viena no datu apstrādes valodas komandām. WHERE klauzulas var izmantot, lai ierobežotu rezultātu kopā parādāmo rindu skaitu, tas parasti palīdz ierakstu filtrēšanā. Tas atgriež tikai tos vaicājumus, kas atbilst WHERE klauzulas īpašajiem nosacījumiem. WHERE klauzula tiek izmantota priekšrakstos SELECT, UPDATE, DELETE utt.
WHERE klauzula ar vaicājumu SELECT
Zvaigznītes simbols tiek izmantots kopā ar klauzulu WHERE SELECT vaicājumā, lai izgūtu visas kolonnu vērtības katram ierakstam no tabulas.
Sintakse klauzulai kur ar atlases vaicājumu, lai izgūtu visas kolonnas vērtības katram ierakstam no tabulas:
SELECT * FROM TABLENAME WHERE CONDITION;
Ja saskaņā ar prasību mēs vēlamies izgūt tikai selektīvas kolonnas, mēs izmantosim tālāk norādīto sintaksi:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Apsveriet darbinieku tabulu ar šādiem datiem:
E_ID | Vārds | Alga | Pilsēta | Apzīmējums | Pievienošanās_datums | Vecums |
---|---|---|---|---|---|---|
1 | Sakši Kumari | 50 000 | Mumbaja | Projektu menedžeris | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75 000 | Deli | Sistēmas inženieris | 2019-12-24 | 23 |
3 | Anuja Šarma | 40 000 | Džaipura | Pārvaldnieks | 2021-08-15 | 26 |
4 | Anuška Tripathi | 90 000 | Mumbaja | Programmatūras testētāji | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45 000 | Bengalūra | Projektu menedžeris | 2020-08-09 | 23 |
6 | Rutuja Dešmuha | 60 000 | Bengalūra | Pārvaldnieks | 2019-07-17 | 26 |
7 | Baviskara balss | 55 000 | Džaipura | Sistēmas inženieris | 2021-10-10 | 24 |
8 | Tur ir šeiks | 45 000 | Pune | Programmētājs | 2020-09-10 | 26 |
9 | Svati Kumari | 50 000 | Pune | Programmatūras testētāji | 2021-01-01 | 25 |
10 | Maiju Patels | 60 000 | Mumbaja | Projektu menedžeris | 2020-10-02 | 24 |
vienpadsmit | Simrans Hanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Šivani Vaga | 50500 | Deli | Programmatūras izstrādātājs | 2016-09-10 | 25 |
13 | Kirans Mahešvari | 50 000 | Našiks | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40 000 | Deli | Projektu menedžeris | 2017-11-10 | 25 |
piecpadsmit | Mohini Šahs | 38 000 | Pune | Programmatūras izstrādātājs | 2019-03-05 | divdesmit |
1. piemērs:
Uzrakstiet vaicājumu, lai izgūtu visus tos darbinieka ierakstus, kuru darbinieka alga ir lielāka par 50 000.
Vaicājums:
tīģeris salīdzinājumā ar lauvu
mysql> SELECT * FROM employees WHERE Salary > 50000;
Iepriekš minētajā vaicājumā tiks parādīti visi tie darbinieka ieraksti, kuros darbinieka alga ir lielāka par 50 000. Zem 50 000 alga atbilstoši nosacījumiem netiks rādīta.
Jūs saņemsiet šādu izvadi:
Atbilstoši paredzamajai produkcijai tiek rādīti tikai tie ieraksti, kuros darbinieka alga ir lielāka par 50000. Darbinieku tabulā ir seši ieraksti, kas atbilst dotajam nosacījumam.
2. piemērs:
Uzrakstiet vaicājumu, lai atjauninātu darbinieka ierakstu, un iestatiet atjaunināto vārdu kā “Harshada Sharma”, kur darbinieka pilsētas nosaukums ir Džaipura.
Vaicājums:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
Iepriekš minētais vaicājums atjauninās darbinieka vārdu uz 'Harshada Sharma', kur darbinieka pilsēta ir Džaipura.
Lai pārbaudītu, vai ieraksti ir atjaunināti, mēs izpildīsim atlases vaicājumu.
mysql> SELECT * FROM employees;
Darbinieku tabulā ir tikai viens ieraksts, kurā darbinieka pilsēta ir 'Jaipur'. Ieraksta id ir 3, kas atbilst dotajam nosacījumam. Tādējādi saskaņā ar norādīto nosacījumu darbinieka vārds ar darbinieka ID 3 tagad ir mainīts uz “Harshada Sharma”.
3. piemērs:
Uzrakstiet vaicājumu, lai dzēstu darbinieka ierakstu, kurā darbinieka pievienošanās datums ir “2013-12-12”.
Vaicājums:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
Iepriekš minētais vaicājums izdzēsīs tā darbinieka informāciju, kura pievienošanās datums ir “2013-12-12”.
Lai pārbaudītu iepriekš minētā vaicājuma rezultātus, mēs izpildīsim atlases vaicājumu.
mysql> SELECT *FROM employees;
Darbinieku tabulā ir tikai viens ieraksts, kurā darbinieka pievienošanās datums ir '2013-12-12'. Ieraksta id ir 13, kas atbilst dotajam nosacījumam. Tāpēc atbilstoši dotajam nosacījumam darbinieks ar darbinieka ID 13 tagad tiek dzēsts no darbinieka tabulas.
2. GRUPĒŠANA PĒC KLAUZAS
Grupēšanas klauzula tiek izmantota, lai līdzīga veida ierakstus sakārtotu grupās strukturētā vaicājuma valodā. Strukturētā vaicājuma valodas klauzula Grupēšana pēc tiek izmantota kopā ar Atlasīt paziņojumu. Grupēšana pēc klauzulas tiek novietota aiz kur klauzulas SQL priekšrakstā. Grupēšanas klauzula tiek īpaši izmantota ar apkopošanas funkciju, t.i., max (), min (), vid. (), summa (), count (), lai grupētu rezultātu, pamatojoties uz vienu vai vairākām kolonnām.
Grupas pēc klauzulas sintakse:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
Iepriekš minētā sintakse atlasīs visus datus vai ierakstus no tabulas, bet visus šos datus vai ierakstus sakārtos grupās, pamatojoties uz vaicājumā norādīto kolonnas nosaukumu.
Grupas pēc klauzulas sintakse ar apkopotajām funkcijām:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Ar piemēru palīdzību sapratīsim klauzulu Group By.
Apsveriet darbinieku tabulu ar šādiem datiem:
E_ID | Vārds | Alga | Pilsēta | Apzīmējums | Pievienošanās_datums | Vecums |
---|---|---|---|---|---|---|
1 | Sakši Kumari | 50 000 | Mumbaja | Projektu menedžeris | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75 000 | Deli | Sistēmas inženieris | 2019-12-24 | 23 |
3 | Anuja Šarma | 40 000 | Džaipura | Pārvaldnieks | 2021-08-15 | 26 |
4 | Anuška Tripathi | 90 000 | Mumbaja | Programmatūras testētāji | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45 000 | Bengalūra | Projektu menedžeris | 2020-08-09 | 23 |
6 | Rutuja Dešmuha | 60 000 | Bengalūra | Pārvaldnieks | 2019-07-17 | 26 |
7 | Baviskara balss | 55 000 | Džaipura | Sistēmas inženieris | 2021-10-10 | 24 |
8 | Tur ir šeiks | 45 000 | Pune | Programmētājs | 2020-09-10 | 26 |
9 | Svati Kumari | 50 000 | Pune | Programmatūras testētāji | 2021-01-01 | 25 |
10 | Maiju Patels | 60 000 | Mumbaja | Projektu menedžeris | 2020-10-02 | 24 |
vienpadsmit | Simrans Hanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Šivani Vaga | 50500 | Deli | Programmatūras izstrādātājs | 2016-09-10 | 25 |
13 | Kirans Mahešvari | 50 000 | Našiks | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40 000 | Deli | Projektu menedžeris | 2017-11-10 | 25 |
piecpadsmit | Mohini Šahs | 38 000 | Pune | Programmatūras izstrādātājs | 2019-03-05 | divdesmit |
1. piemērs:
Uzrakstiet vaicājumu, lai parādītu visus darbinieku tabulas ierakstus, bet grupējiet rezultātus, pamatojoties uz vecuma kolonnu.
Vaicājums:
mysql> SELECT * FROM employees GROUP BY Age;
Iepriekš minētajā vaicājumā tiks parādīti visi darbinieku tabulas ieraksti, taču tie būs sagrupēti pēc vecuma kolonnas.
Jūs saņemsiet šādu izvadi:
2. piemērs:
Uzrakstiet vaicājumu, lai parādītu visus darbinieku tabulas ierakstus, kas sagrupēti pēc apzīmējuma un algas.
Vaicājums:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
Iepriekš minētajā vaicājumā tiks parādīti visi darbinieku tabulas ieraksti, bet tie ir sagrupēti pēc algas un apzīmējuma kolonnas.
Jūs saņemsiet šādu izvadi:
Grupas pēc klauzulas piemēri, izmantojot apkopotās funkcijas
1. piemērs:
Uzrakstiet vaicājumu, lai uzskaitītu darbinieku skaitu, kas strādā ar noteiktu apzīmējumu, un grupējiet rezultātus pēc darbinieka apzīmējuma.
Vaicājums:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
Iepriekš minētajā vaicājumā tiks parādīts apzīmējums ar attiecīgo darbinieku skaitu, kas strādā ar šo apzīmējumu. Visi šie rezultāti tiks sagrupēti pēc apzīmējumu kolonnas.
Jūs saņemsiet šādu izvadi:
Atbilstoši paredzamajai produkcijai tiek parādīts apzīmējums ar attiecīgo darbinieku skaitu.
2. piemērs:
Uzrakstiet vaicājumu, lai parādītu darbinieka algas summu atbilstoši pilsētai, kas sagrupēta pēc darbinieka vecuma.
Vaicājums:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
Iepriekš minētais vaicājums vispirms aprēķinās katrā pilsētā strādājošo algu summu un pēc tam parādīs algas summu ar attiecīgo algu, bet sagrupētu pēc vecuma kolonnas.
java tipa mainīgais
Jūs saņemsiet šādu izvadi:
Atbilstoši paredzamajai produkcijai tiek parādīta darbinieku algas summa atbilstoši pilsētai, kurai darbinieks pieder. Ja divi darbinieki pieder vienai pilsētai, tad viņi būs vienā grupā.
3. Klauzula, kurā ir ietverta:
Kad tabulas kolonnā ir jāievieto kādi nosacījumi, mēs izmantojam WHERE klauzulu SQL. Bet, ja mēs vēlamies izmantot jebkuru nosacījumu kolonnai klauzulā Group By, kolonnas nosacījumiem mēs izmantosim klauzulu HAVING kopā ar klauzulu Group By.
Sintakse:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Apsveriet darbinieku tabulu ar šādiem datiem:
E_ID | Vārds | Alga | Pilsēta | Apzīmējums | Pievienošanās_datums | Vecums |
---|---|---|---|---|---|---|
1 | Sakši Kumari | 50 000 | Mumbaja | Projektu menedžeris | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75 000 | Deli | Sistēmas inženieris | 2019-12-24 | 23 |
3 | Anuja Šarma | 40 000 | Džaipura | Pārvaldnieks | 2021-08-15 | 26 |
4 | Anuška Tripathi | 90 000 | Mumbaja | Programmatūras testētāji | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45 000 | Bengalūra | Projektu menedžeris | 2020-08-09 | 23 |
6 | Rutuja Dešmuha | 60 000 | Bengalūra | Pārvaldnieks | 2019-07-17 | 26 |
7 | Baviskara balss | 55 000 | Džaipura | Sistēmas inženieris | 2021-10-10 | 24 |
8 | Tur ir šeiks | 45 000 | Pune | Programmētājs | 2020-09-10 | 26 |
9 | Svati Kumari | 50 000 | Pune | Programmatūras testētāji | 2021-01-01 | 25 |
10 | Maiju Patels | 60 000 | Mumbaja | Projektu menedžeris | 2020-10-02 | 24 |
vienpadsmit | Simrans Hanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Šivani Vaga | 50500 | Deli | Programmatūras izstrādātājs | 2016-09-10 | 25 |
13 | Kirans Mahešvari | 50 000 | Našiks | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40 000 | Deli | Projektu menedžeris | 2017-11-10 | 25 |
piecpadsmit | Mohini Šahs | 38 000 | Pune | Programmatūras izstrādātājs | 2019-03-05 | divdesmit |
1. piemērs:
Uzrakstiet vaicājumu, lai parādītu darbinieku vārdus, algu un pilsētu, kurā darbinieka maksimālā alga ir lielāka par 40 000, un grupējiet rezultātus pēc apzīmējuma.
Vaicājums:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
Jūs saņemsiet šādu izvadi:
Iepriekšējā izvade parāda, ka darbinieka vārds, alga un pilsēta darbiniekam, ja darbinieka alga ir lielāka par 40 000, grupēti pēc apzīmējuma. (Darbinieki ar līdzīgu apzīmējumu tiek ievietoti vienā grupā, un tie, kuriem ir cits apzīmējums, tiek ievietoti atsevišķi).
2. piemērs:
Uzrakstiet vaicājumu, lai parādītu darbinieku vārdus un apzīmējumu, kur darbinieka algas summa ir lielāka par 45000, un grupējiet rezultātus pēc pilsētām.
Vaicājums:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
Jūs saņemsiet šādu izvadi:
Iepriekš redzamajā izvadē tiek parādīts darbinieka vārds, nosaukums un darbinieka alga. Algas summa ir lielāka par 45 000, grupējot pa pilsētām. (Darbinieki ar līdzīgām pilsētām tiek ievietoti vienā grupā, un tie, kuriem ir atšķirīga pilsēta, nav līdzīgi, tiek ievietoti atsevišķi).
4. PASŪTĪJUMS PĒC KLAUNU
Ikreiz, kad vēlamies kaut ko kārtot SQL, mēs izmantojam klauzulu ORDER BY. ORDER BY klauzula SQL palīdzēs mums kārtot datus, pamatojoties uz konkrēto tabulas kolonnu. Tas nozīmē, ka tiks sakārtoti visi dati, kas tiek glabāti konkrētajā kolonnā, kurā mēs izpildām ORDER BY klauzulu. Atbilstošās kolonnas vērtības tiks parādītas tādā secībā, kādā mēs ieguvām vērtības iepriekšējā darbībā.
Kā mēs visi zinām, šķirošana nozīmē vai nu AUGULĒJOŠĀ, vai DILĒJĀ SEKĀRĪTĀ. Tādā pašā veidā ORDER BY CLAUSE sakārto datus augošā vai dilstošā secībā atbilstoši mūsu prasībām. Dati tiks sakārtoti augošā secībā, kad tiks veikta ASC atslēgvārds tiek lietots ar ORDER ar klauzulu, un DESC atslēgvārds sakārtos ierakstus dilstošā secībā.
Pēc noklusējuma kārtošana SQL tiks veikta, izmantojot klauzulu ORDER BY ASCENDING secībā, ja mēs neesam minējuši kārtošanas secību.
Pirms pāriet uz ORDER BY klauzulas piemēru, lai sakārtotu ierakstus, vispirms apskatīsim sintaksi, lai mums būtu viegli iet cauri piemēram.
Klauzulas ORDER BY sintakse bez asc un desc atslēgvārda:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
Klauzulas ORDER BY sintakse, lai kārtotu augošā secībā:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
Klauzulas ORDER BY sintakse, lai kārtotu dilstošā secībā:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Apsveriet, ka mums ir darbinieku tabula ar šādiem datiem:
E_ID | Vārds | Alga | Pilsēta | Apzīmējums | Pievienošanās_datums | Vecums |
---|---|---|---|---|---|---|
1 | Sakši Kumari | 50 000 | Mumbaja | Projektu menedžeris | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75 000 | Deli | Sistēmas inženieris | 2019-12-24 | 23 |
3 | Anuja Šarma | 40 000 | Džaipura | Pārvaldnieks | 2021-08-15 | 26 |
4 | Anuška Tripathi | 90 000 | Mumbaja | Programmatūras testētāji | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45 000 | Bengalūra | Projektu menedžeris | 2020-08-09 | 23 |
6 | Rutuja Dešmuha | 60 000 | Bengalūra | Pārvaldnieks | 2019-07-17 | 26 |
7 | Baviskara balss | 55 000 | Džaipura | Sistēmas inženieris | 2021-10-10 | 24 |
8 | Tur ir šeiks | 45 000 | Pune | Programmētājs | 2020-09-10 | 26 |
9 | Svati Kumari | 50 000 | Pune | Programmatūras testētāji | 2021-01-01 | 25 |
10 | Maiju Patels | 60 000 | Mumbaja | Projektu menedžeris | 2020-10-02 | 24 |
vienpadsmit | Simrans Hanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Šivani Vaga | 50500 | Deli | Programmatūras izstrādātājs | 2016-09-10 | 25 |
13 | Kirans Mahešvari | 50 000 | Našiks | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40 000 | Deli | Projektu menedžeris | 2017-11-10 | 25 |
piecpadsmit | Mohini Šahs | 38 000 | Pune | Programmatūras izstrādātājs | 2019-03-05 | divdesmit |
1. piemērs:
Uzrakstiet vaicājumu, lai kārtotu ierakstus darbinieku tabulas darbinieka apzīmējuma augošā secībā.
Vaicājums:
mysql> SELECT * FROM employees ORDER BY Designation;
Šeit SELECT vaicājumā kolonnai “Apzīmējums” tiek lietota klauzula ORDER BY, lai kārtotu ierakstus, taču mēs neizmantojām ASC atslēgvārdu aiz klauzulas ORDER BY, lai kārtotu augošā secībā. Tātad, ja mēs nenorādīsim asc atslēgvārdu, pēc noklusējuma dati tiks sakārtoti augošā secībā.
Jūs saņemsiet šādu izvadi:
Saskaņā ar paredzamo rezultātu ieraksti tiek parādīti augošā secībā pēc darbinieka apzīmējuma.
2. piemērs:
Uzrakstiet vaicājumu, lai darbinieku tabulā parādītu darbinieka vārdu un algu darbinieka algas augošā secībā.
Vaicājums:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Šeit SELECT vaicājumā ORDER BY klauzula tiek piemērota kolonnai 'Alga', lai kārtotu ierakstus. Esam izmantojuši ASC atslēgas vārdu, lai sakārtotu darbinieka algu augošā secībā.
Jūs saņemsiet šādu izvadi:
Visi ieraksti tiek parādīti darbinieka algas augošā secībā.
3. piemērs:
Uzrakstiet vaicājumu, lai kārtotu datus dilstošā secībā pēc darbinieku tabulā saglabātā darbinieka vārda.
Vaicājums:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Šeit mēs izmantojām klauzulu ORDER BY ar vaicājumu SELECT, kas tiek lietots kolonnā Nosaukums, lai kārtotu datus. Mēs esam izmantojuši atslēgvārdu DESC pēc klauzulas ORDER BY, lai kārtotu datus dilstošā secībā.
Jūs saņemsiet šādu izvadi:
Visi ieraksti tiek parādīti darbinieka vārda dilstošā secībā.