- Az SQL záradék segít lekérni egy rekordkészletet vagy -csomagokat a táblából.
- Az SQL záradék segít feltételt megadni a tábla oszlopaiban vagy rekordjaiban.
A Strukturált lekérdezési nyelvben elérhető különböző záradékok a következők:
- AHOL ZÁRADÉK
- CSOPORTOSÍTÁS ZÁRADÉK SZERINT
- BESZÁMÍTÁS
- RENDELÉS ZÁRADÉKKAL
Lássuk az egyes tagmondatokat egyenként egy példával. A példákban a lekérdezések írásához MySQL adatbázist fogunk használni.
1. WHERE ZÁRADÉK
Az SQL-ben egy WHERE záradékot használnak a SELECT lekérdezéssel, amely az egyik adatkezelési nyelvi parancs. A WHERE záradékokkal korlátozható az eredményhalmazban megjelenítendő sorok száma, általában segít a rekordok szűrésében. Csak azokat a lekérdezéseket adja vissza, amelyek megfelelnek a WHERE záradék speciális feltételeinek. A WHERE záradékot a SELECT, UPDATE, DELETE stb. utasításokban használják.
WHERE záradék a SELECT lekérdezéssel
A Csillag szimbólum a WHERE záradékkal együtt használatos a SELECT lekérdezésben, hogy a tábla minden rekordjához tartozó összes oszlopértéket lekérje.
A where záradék szintaxisa kiválasztási lekérdezéssel az összes rekord összes oszlopértékének lekéréséhez egy táblázatból:
SELECT * FROM TABLENAME WHERE CONDITION;
Ha a követelménynek megfelelően csak szelektív oszlopokat szeretnénk lekérni, akkor az alábbi szintaxist használjuk:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Tekintsük az alkalmazottak táblázatát a következő adatokkal:
E_ID | Név | Fizetés | Város | Kijelölés | Csatlakozás dátuma | Kor |
---|---|---|---|---|---|---|
1 | Saksi Kumari | 50000 | Mumbai | Projekt menedzser | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Rendszer mérnök | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Menedzser | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Mumbai | Szoftvertesztelők | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Projekt menedzser | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Menedzser | 2019-07-17 | 26 |
7 | Baviskar hangja | 55000 | Jaipur | Rendszer mérnök | 2021-10-10 | 24 |
8 | Ott van Sheik | 45000 | Pune | Szoftvermérnök | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Szoftvertesztelők | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Mumbai | Projekt menedzser | 2020-10-02 | 24 |
tizenegy | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Szoftverfejlesztő | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Projekt menedzser | 2017-11-10 | 25 |
tizenöt | Mohini Shah | 38000 | Pune | Szoftverfejlesztő | 2019-03-05 | húsz |
1. példa:
Írjon lekérdezést, hogy lekérje az összes olyan alkalmazott nyilvántartását, ahol az alkalmazott fizetése meghaladja az 50 000-et.
Lekérdezés:
mysql> SELECT * FROM employees WHERE Salary > 50000;
A fenti lekérdezés megjeleníti az összes olyan alkalmazott nyilvántartását, ahol a munkavállaló fizetése meghaladja az 50 000-et. 50 000 alatti fizetés nem jelenik meg a feltételek szerint.
húrhoz hasonlítani
A következő kimenetet kapod:
Az elvárt teljesítmény szerint csak azok a rekordok jelennek meg, ahol a munkavállaló fizetése meghaladja az 50000-et. A munkavállalói táblázatban hat olyan rekord található, amely megfelel az adott feltételnek.
2. példa:
Írjon lekérdezést az alkalmazott nyilvántartásának frissítéséhez, és állítsa be a frissített nevet „Harshada Sharma”-ra, ahol az alkalmazott városának neve Jaipur.
Lekérdezés:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
A fenti lekérdezés az alkalmazott nevét „Harshada Sharma”-ra frissíti, ahol az alkalmazott városa Jaipur.
Annak ellenőrzésére, hogy a rekordok frissültek-e vagy sem, kiválasztási lekérdezést futtatunk.
mysql> SELECT * FROM employees;
Csak egy olyan bejegyzés található az alkalmazottak táblázatában, ahol az alkalmazott városa „Jaipur”. A rekord azonosítója 3, amely megfelel az adott feltételnek. Ezért az adott feltételnek megfelelően a 3. alkalmazotti azonosítóval rendelkező alkalmazott neve „Harshada Sharma”-ra módosul.
3. példa:
Írjon lekérdezést egy olyan munkavállaló rekordjának törléséhez, ahol a munkavállaló csatlakozási dátuma „2013-12-12”.
Lekérdezés:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
A fenti lekérdezés törli annak a munkavállalónak a munkavállalói adatait, akinek a csatlakozási dátuma '2013-12-12'.
java int karakterláncként
A fenti lekérdezés eredményének ellenőrzéséhez végrehajtjuk a kiválasztási lekérdezést.
mysql> SELECT *FROM employees;
Csak egy olyan rekord van a munkavállalói táblázatban, ahol a munkavállaló csatlakozási dátuma '2013-12-12'. A rekord azonosítója 13, ami megfelel az adott feltételnek. Ezért az adott feltételnek megfelelően a 13-as alkalmazotti azonosítójú munkavállaló törlésre kerül a munkavállalói táblából.
2. CSOPORTOSÍTÁS ZÁRADÉK SZERINT
A Group By záradék a hasonló típusú rekordok csoportokba rendezésére szolgál a Strukturált lekérdezési nyelvben. A Strukturált lekérdezési nyelv Csoportosítási záradéka a Select utasítással együtt használatos. A záradék szerinti csoportosítás az SQL utasításban a where záradék után kerül elhelyezésre. A Group By záradékot kifejezetten az összesítő függvénnyel használják, azaz max (), min (), átlag (), összeg (), count () az eredmény csoportosítására egy vagy több oszlop alapján.
A Group By záradék szintaxisa:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
A fenti szintaxis az összes adatot vagy rekordot kijelöli a táblából, de az összes adatot vagy rekordot csoportokba rendezi a lekérdezésben megadott oszlopnév alapján.
A Group By záradék szintaxisa aggregált függvényekkel:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Értsük meg a Group By záradékot példák segítségével.
Tekintsük az alkalmazottak táblázatát a következő adatokkal:
E_ID | Név | Fizetés | Város | Kijelölés | Csatlakozás dátuma | Kor |
---|---|---|---|---|---|---|
1 | Saksi Kumari | 50000 | Mumbai | Projekt menedzser | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Rendszer mérnök | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Menedzser | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Mumbai | Szoftvertesztelők | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Projekt menedzser | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Menedzser | 2019-07-17 | 26 |
7 | Baviskar hangja | 55000 | Jaipur | Rendszer mérnök | 2021-10-10 | 24 |
8 | Ott van Sheik | 45000 | Pune | Szoftvermérnök | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Szoftvertesztelők | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Mumbai | Projekt menedzser | 2020-10-02 | 24 |
tizenegy | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Szoftverfejlesztő | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Projekt menedzser | 2017-11-10 | 25 |
tizenöt | Mohini Shah | 38000 | Pune | Szoftverfejlesztő | 2019-03-05 | húsz |
1. példa:
Írjon lekérdezést az alkalmazottak tábla összes rekordjának megjelenítéséhez, de csoportosítsa az eredményeket az életkor oszlop alapján.
Lekérdezés:
mysql> SELECT * FROM employees GROUP BY Age;
A fenti lekérdezés megjeleníti az alkalmazottak tábla összes rekordját, de az életkor oszlop szerint csoportosítva.
A következő kimenetet kapod:
2. példa:
Írjon lekérdezést az alkalmazottak tábla összes rekordjának megjelenítéséhez, megnevezés és fizetés szerint csoportosítva.
Lekérdezés:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
A fenti lekérdezés megjeleníti az alkalmazottak tábla összes rekordját, de a fizetés és megnevezés oszlop szerint csoportosítva.
A következő kimenetet kapod:
Példák az összesített függvényeket használó Group By záradékra
1. példa:
Írjon lekérdezést az adott megjelölésen dolgozó alkalmazottak számának felsorolásához, és csoportosítsa az eredményeket az alkalmazott megnevezése szerint.
hogyan határozzuk meg a monitor méretét
Lekérdezés:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
A fenti lekérdezés megjeleníti a megnevezést az adott megjelölésen dolgozó alkalmazottak számával. Mindezek az eredmények a jelölési oszlop szerint lesznek csoportosítva.
A következő kimenetet kapod:
A várható teljesítménynek megfelelően megjelenik a jelölés a megfelelő alkalmazottak számával.
2. példa:
Írjon lekérdezést, hogy megjelenítse a munkavállaló fizetésének összegét a város szerint, a munkavállaló életkora szerint csoportosítva.
Lekérdezés:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
A fenti lekérdezés először kiszámolja az egyes városokban dolgozó fizetések összegét, majd megjeleníti a bérösszeget az adott fizetéssel, de életkor oszlop szerint csoportosítva.
A következő kimenetet kapod:
A várható teljesítmény szerint a munkavállalói fizetés összege jelenik meg a város szerint, amelyhez a munkavállaló tartozik. Ha két alkalmazott ugyanahhoz a városhoz tartozik, akkor egy csoportba kerülnek.
3. BEKÖTÉS:
Ha bármilyen feltételt kell elhelyeznünk a tábla oszlopában, akkor az SQL-ben a WHERE záradékot használjuk. Ha azonban bármilyen feltételt szeretnénk használni egy oszlopon a Group By záradékban, akkor a HAVING záradékot a Group By záradékkal együtt használjuk az oszlopfeltételekhez.
Szintaxis:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Tekintsük az alkalmazottak táblázatát a következő adatokkal:
E_ID | Név | Fizetés | Város | Kijelölés | Csatlakozás dátuma | Kor |
---|---|---|---|---|---|---|
1 | Saksi Kumari | 50000 | Mumbai | Projekt menedzser | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Rendszer mérnök | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Menedzser | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Mumbai | Szoftvertesztelők | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Projekt menedzser | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Menedzser | 2019-07-17 | 26 |
7 | Baviskar hangja | 55000 | Jaipur | Rendszer mérnök | 2021-10-10 | 24 |
8 | Ott van Sheik | 45000 | Pune | Szoftvermérnök | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Szoftvertesztelők | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Mumbai | Projekt menedzser | 2020-10-02 | 24 |
tizenegy | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Szoftverfejlesztő | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Projekt menedzser | 2017-11-10 | 25 |
tizenöt | Mohini Shah | 38000 | Pune | Szoftverfejlesztő | 2019-03-05 | húsz |
1. példa:
Írjon lekérdezést az alkalmazottak nevének, fizetésének és városának megjelenítéséhez, ahol a munkavállaló maximális fizetése meghaladja a 40 000-et, és csoportosítsa az eredményeket megnevezések szerint.
Lekérdezés:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
A következő kimenetet kapod:
A fenti kimenet azt mutatja, hogy a munkavállaló neve, fizetése és városa annak az alkalmazottnak, akinél a munkavállaló fizetése meghaladja a 40 000-et, megnevezés szerint csoportosítva. (A hasonló beosztású munkavállalók egy csoportba, a más megjelölésűek külön kerülnek elhelyezésre).
tigris oroszlán különbség
2. példa:
Írjon lekérdezést az alkalmazottak nevének és megnevezésének megjelenítéséhez, ahol egy alkalmazott fizetésének összege nagyobb, mint 45000, és csoportosítsa az eredményeket városok szerint.
Lekérdezés:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
A következő kimenetet kapod:
A fenti kimenet mutatja az alkalmazott nevét, megnevezését és fizetését. A fizetés összege városonkénti csoportosításban meghaladja a 45000-et. (A hasonló városokkal rendelkező munkavállalók egy csoportba kerülnek, a nem hasonló városokkal rendelkezők pedig külön kerülnek elhelyezésre).
4. RENDELÉS ZÁRADÉKKAL
Amikor bármit rendezni akarunk az SQL-ben, az ORDER BY záradékot használjuk. Az ORDER BY záradék az SQL-ben segít az adatok rendezésében a tábla adott oszlopa alapján. Ez azt jelenti, hogy abban az oszlopban tárolt összes adat, amelyen az ORDER BY záradékot végrehajtjuk, rendezve lesz. A megfelelő oszlopértékek abban a sorrendben jelennek meg, ahogyan az előző lépésben megkaptuk az értékeket.
Mint mindannyian tudjuk, a szortírozás NÖVEKVŐ vagy CSÖKKENŐ RENDBEN. Ugyanígy az ORDER BY CLAUSE az adatokat növekvő vagy csökkenő sorrendbe rendezi a követelményeink szerint. Az adatok növekvő sorrendben lesznek rendezve, amikor a ASC kulcsszó az ORDER by záradékkal együtt használatos, és a DESC kulcsszó csökkenő sorrendbe rendezi a rekordokat.
Alapértelmezés szerint az SQL-ben a rendezés az ORDER BY záradékkal történik NÖVEKEDŐ sorrendben, ha nem említettük a rendezési sorrendet.
Mielőtt az ORDER BY záradék példája felé haladnánk a rekordok rendezésére, először a szintaxist nézzük meg, így könnyű lesz végigmenni a példán.
Az ORDER BY záradék szintaxisa asc és desc kulcsszó nélkül:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
Az ORDER BY záradék szintaxisa növekvő sorrendben:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
Az ORDER BY záradék szintaxisa a csökkenő sorrendbe rendezéshez:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Tegyük fel, hogy van egy alkalmazotti táblázatunk a következő adatokkal:
E_ID | Név | Fizetés | Város | Kijelölés | Csatlakozás dátuma | Kor |
---|---|---|---|---|---|---|
1 | Saksi Kumari | 50000 | Mumbai | Projekt menedzser | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Rendszer mérnök | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Menedzser | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Mumbai | Szoftvertesztelők | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Projekt menedzser | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60 000 | Bangalore | Menedzser | 2019-07-17 | 26 |
7 | Baviskar hangja | 55000 | Jaipur | Rendszer mérnök | 2021-10-10 | 24 |
8 | Ott van Sheik | 45000 | Pune | Szoftvermérnök | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Szoftvertesztelők | 2021-01-01 | 25 |
10 | Mayuri Patel | 60 000 | Mumbai | Projekt menedzser | 2020-10-02 | 24 |
tizenegy | Simran Khanna | 45500 | Kolhapur | HR | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Szoftverfejlesztő | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Projekt menedzser | 2017-11-10 | 25 |
tizenöt | Mohini Shah | 38000 | Pune | Szoftverfejlesztő | 2019-03-05 | húsz |
1. példa:
Írjon lekérdezést, hogy a rekordokat az alkalmazottak táblájából az alkalmazott megnevezésének növekvő sorrendjében rendezze.
Lekérdezés:
mysql> SELECT * FROM employees ORDER BY Designation;
Itt a SELECT lekérdezésben egy ORDER BY záradék kerül alkalmazásra a „Designation” oszlopban a rekordok rendezéséhez, de nem használtuk az ASC kulcsszót az ORDER BY záradék után a növekvő sorrendben történő rendezéshez. Tehát alapértelmezés szerint az adatok növekvő sorrendben lesznek rendezve, ha nem adunk meg asc kulcsszót.
A következő kimenetet kapod:
A várható kimenetnek megfelelően a rekordok a munkavállaló megnevezése szerint növekvő sorrendben jelennek meg.
2. példa:
Írjon lekérdezést az alkalmazott nevének és fizetésének az alkalmazottak táblájából az alkalmazott fizetése szerinti növekvő sorrendben történő megjelenítéséhez.
Lekérdezés:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Itt a SELECT lekérdezésben egy ORDER BY záradék kerül alkalmazásra a „Bérek” oszlopban a rekordok rendezéséhez. Az ASC kulcsszót használtuk a dolgozók fizetésének növekvő sorrendbe rendezésére.
A következő kimenetet kapod:
linux parancsikonok
Az összes rekord a munkavállaló fizetése szerinti növekvő sorrendben jelenik meg.
3. példa:
Írjon lekérdezést az adatok csökkenő sorrendbe rendezéséhez az alkalmazottak táblájában tárolt alkalmazott neve szerint.
Lekérdezés:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Itt az ORDER BY záradékot használtuk a Név oszlopban alkalmazott SELECT lekérdezéssel az adatok rendezésére. Az ORDER BY záradék után a DESC kulcsszót használtuk az adatok csökkenő sorrendbe rendezéséhez.
A következő kimenetet kapod:
Az összes rekord az alkalmazott nevének csökkenő sorrendjében jelenik meg.