- De SQL-clausule helpt ons een set of bundels records uit de tabel op te halen.
- De SQL-clausule helpt ons een voorwaarde op te geven voor de kolommen of de records van een tabel.
Verschillende clausules beschikbaar in de Structured Query Language zijn als volgt:
- WAAR CLAUSULE
- GROEPEREN OP CLAUSULE
- HEBBEN CLAUSULE
- BESTEL PER CLAUSULE
Laten we elke clausule één voor één bekijken met een voorbeeld. We zullen de MySQL-database gebruiken voor het schrijven van de query's in voorbeelden.
1. WAAR-CLAUSULE
Er wordt een WHERE-clausule in SQL gebruikt bij de SELECT-query, een van de taalopdrachten voor gegevensmanipulatie. WHERE-clausules kunnen worden gebruikt om het aantal rijen dat in de resultatenset moet worden weergegeven te beperken. Dit helpt doorgaans bij het filteren van de records. Het retourneert alleen die query's die voldoen aan de specifieke voorwaarden van de WHERE-clausule. De WHERE-clausule wordt gebruikt in de SELECT-, UPDATE-, DELETE-instructie, enz.
WHERE-clausule met SELECT-query
Het asterisk-symbool wordt gebruikt met een WHERE-clausule in een SELECT-query om alle kolomwaarden voor elke record uit een tabel op te halen.
Syntaxis van de Where-clausule met een selectiequery om alle kolomwaarden voor elke record uit een tabel op te halen:
SELECT * FROM TABLENAME WHERE CONDITION;
Als we volgens de vereiste alleen selectieve kolommen willen ophalen, gebruiken we de onderstaande syntaxis:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Beschouw de werknemerstabel met de volgende gegevens:
E_ID | Naam | Salaris | Stad | Aanduiding | Datum van toetreding | Leeftijd |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Mumbai | Projectleider | 20-06-2021 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Systeemingenieur | 24-12-2019 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Manager | 15-08-2021 | 26 |
4 | Anoesjka Tripathi | 90000 | Mumbai | Softwaretesters | 13-06-2021 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Projectleider | 09-08-2020 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Manager | 17-07-2019 | 26 |
7 | Baviskars stem | 55000 | Jaipur | Systeemingenieur | 2021-10-10 | 24 |
8 | Daar is Sjeik | 45000 | Pune | Software ontwikkelaar | 10-09-2020 | 26 |
9 | Swati Kumari | 50000 | Pune | Softwaretesters | 01-01-2021 | 25 |
10 | Mayuri Patel | 60000 | Mumbai | Projectleider | 02-10-2020 | 24 |
elf | Simran Khanna | 45500 | Kolhapur | HR | 02-01-2019 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Software ontwikkelaar | 10-09-2016 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Projectleider | 10-11-2017 | 25 |
vijftien | Mohini Sjah | 38000 | Pune | Software ontwikkelaar | 05-03-2019 | twintig |
Voorbeeld 1:
Schrijf een query om al die records op te halen van een werknemer waarbij het salaris van de werknemer groter is dan 50.000.
Vraag:
mysql> SELECT * FROM employees WHERE Salary > 50000;
De bovenstaande zoekopdracht toont al die records van een werknemer waarbij het salaris van een werknemer hoger is dan 50.000. Salaris onder 50.000 wordt niet weergegeven volgens de voorwaarden.
U krijgt de volgende uitvoer:
Volgens de verwachte output worden alleen die records weergegeven waarbij het salaris van een werknemer groter is dan 50.000. Er zijn zes records in de tabel van de werknemer die aan de gegeven voorwaarde voldoen.
Voorbeeld 2:
Schrijf een query om het record van de werknemer bij te werken en stel de bijgewerkte naam in als 'Harshada Sharma', waarbij de stadsnaam van de werknemer Jaipur is.
Vraag:
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
Met de bovenstaande zoekopdracht wordt de naam van de werknemer bijgewerkt naar 'Harshada Sharma', waarbij de stad van de werknemer Jaipur is.
Om te verifiëren of records zijn bijgewerkt of niet, voeren we een selectiequery uit.
mysql> SELECT * FROM employees;
Er is slechts één record in de tabel van de werknemer waarin de stad van de werknemer 'Jaipur' is. De id van het record is 3, wat aan de gegeven voorwaarde voldoet. Daarom wordt, volgens de gegeven voorwaarde, de naam van de werknemer met werknemers-ID 3 nu gewijzigd in 'Harshada Sharma'.
Voorbeeld 3:
Schrijf een query om het record van een werknemer te verwijderen waarvan de indiensttredingsdatum '2013-12-12' is.
Vraag:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
Met bovenstaande zoekopdracht worden de werknemersgegevens verwijderd van de werknemer wiens indiensttreding '2013-12-12' is.
Om de resultaten van de bovenstaande zoekopdracht te verifiëren, zullen we de selectiequery uitvoeren.
mysql> SELECT *FROM employees;
Er is slechts één record in de tabel van de werknemer waarbij de indiensttredingsdatum van de werknemer '2013-12-12' is. De ID van het record is 13, wat aan de gegeven voorwaarde voldoet. Daarom wordt, volgens de gegeven voorwaarde, de werknemer met werknemers-id 13 nu uit de werknemerstabel verwijderd.
2. GROEPEREN OP CLAUSULE
De Group By-clausule wordt gebruikt om vergelijkbare soorten records in de groepen in de Structured Query Language te rangschikken. De Group by-clausule in de Structured Query Language wordt gebruikt met Select Statement. De Group by-clausule wordt na de Where-clausule in de SQL-instructie geplaatst. De Group By-clausule wordt speciaal gebruikt met de aggregatiefunctie, d.w.z. max (), min (), avg (), sum (), count () om het resultaat te groeperen op basis van een of meer dan één kolom.
De syntaxis van de Group By-clausule:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
De bovenstaande syntaxis selecteert alle gegevens of records uit de tabel, maar rangschikt al deze gegevens of records in de groepen op basis van de kolomnaam die in de query wordt gegeven.
De syntaxis van de Group By-clausule met aggregatiefuncties:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Laten we de Group By-clausule begrijpen met behulp van voorbeelden.
Beschouw de werknemerstabel met de volgende gegevens:
E_ID | Naam | Salaris | Stad | Aanduiding | Datum van toetreding | Leeftijd |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Mumbai | Projectleider | 20-06-2021 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Systeemingenieur | 24-12-2019 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Manager | 15-08-2021 | 26 |
4 | Anoesjka Tripathi | 90000 | Mumbai | Softwaretesters | 13-06-2021 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Projectleider | 09-08-2020 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Manager | 17-07-2019 | 26 |
7 | Baviskars stem | 55000 | Jaipur | Systeemingenieur | 2021-10-10 | 24 |
8 | Daar is Sjeik | 45000 | Pune | Software ontwikkelaar | 10-09-2020 | 26 |
9 | Swati Kumari | 50000 | Pune | Softwaretesters | 01-01-2021 | 25 |
10 | Mayuri Patel | 60000 | Mumbai | Projectleider | 02-10-2020 | 24 |
elf | Simran Khanna | 45500 | Kolhapur | HR | 02-01-2019 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Software ontwikkelaar | 10-09-2016 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Projectleider | 10-11-2017 | 25 |
vijftien | Mohini Sjah | 38000 | Pune | Software ontwikkelaar | 05-03-2019 | twintig |
Voorbeeld 1:
Schrijf een query om alle records van de werknemerstabel weer te geven, maar groepeer de resultaten op basis van de leeftijdskolom.
Vraag:
mysql> SELECT * FROM employees GROUP BY Age;
De bovenstaande zoekopdracht toont alle records van de werknemerstabel, maar gegroepeerd op leeftijdskolom.
U krijgt de volgende uitvoer:
Voorbeeld 2:
Schrijf een query om alle records van de werknemerstabel weer te geven, gegroepeerd op functie en salaris.
Vraag:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
De bovenstaande zoekopdracht toont alle records van de werknemerstabel, maar gegroepeerd op de salaris- en aanwijzingskolom.
U krijgt de volgende uitvoer:
Voorbeelden van een Group By-clausule die gebruikmaakt van aggregatiefuncties
Voorbeeld 1:
Schrijf een query om het aantal werknemers weer te geven dat onder een bepaalde benaming werkt en groepeer de resultaten op aanduiding van de werknemer.
Vraag:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
De bovenstaande zoekopdracht toont de aanduiding met het respectievelijke aantal medewerkers dat onder die aanduiding werkt. Al deze resultaten worden gegroepeerd in de aanduidingskolom.
U krijgt de volgende uitvoer:
Afhankelijk van de verwachte output wordt de aanduiding met het betreffende aantal medewerkers weergegeven.
Voorbeeld 2:
Schrijf een query om de som van het salaris van een werknemer weer te geven volgens de stad, gegroepeerd op leeftijd van de werknemer.
blokkeer YouTube-advertenties op Android
Vraag:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
De bovenstaande zoekopdracht berekent eerst de som van de salarissen die in elke stad werken, en vervolgens wordt de salarissom weergegeven met het betreffende salaris, maar gegroepeerd op leeftijdskolom.
U krijgt de volgende uitvoer:
Volgens de verwachte output wordt de som van het werknemerssalaris weergegeven volgens de stad waartoe de werknemer behoort. Als twee werknemers tot dezelfde stad behoren, bevinden ze zich in één groep.
3. MET CLAUSULE:
Wanneer we voorwaarden aan de kolom van de tabel moeten plaatsen, gebruiken we de WHERE-clausule in SQL. Maar als we op dat moment een voorwaarde voor een kolom in de Group By-clausule willen gebruiken, gebruiken we de HAVING-clausule met de Group By-clausule voor kolomvoorwaarden.
Syntaxis:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Beschouw de werknemerstabel met de volgende gegevens:
E_ID | Naam | Salaris | Stad | Aanduiding | Datum van toetreding | Leeftijd |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Mumbai | Projectleider | 20-06-2021 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Systeemingenieur | 24-12-2019 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Manager | 15-08-2021 | 26 |
4 | Anoesjka Tripathi | 90000 | Mumbai | Softwaretesters | 13-06-2021 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Projectleider | 09-08-2020 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Manager | 17-07-2019 | 26 |
7 | Baviskars stem | 55000 | Jaipur | Systeemingenieur | 2021-10-10 | 24 |
8 | Daar is Sjeik | 45000 | Pune | Software ontwikkelaar | 10-09-2020 | 26 |
9 | Swati Kumari | 50000 | Pune | Softwaretesters | 01-01-2021 | 25 |
10 | Mayuri Patel | 60000 | Mumbai | Projectleider | 02-10-2020 | 24 |
elf | Simran Khanna | 45500 | Kolhapur | HR | 02-01-2019 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Software ontwikkelaar | 10-09-2016 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Projectleider | 10-11-2017 | 25 |
vijftien | Mohini Sjah | 38000 | Pune | Software ontwikkelaar | 05-03-2019 | twintig |
Voorbeeld 1:
Schrijf een query om de naam van de werknemers, het salaris en de stad weer te geven waar het maximale salaris van de werknemer groter is dan 40.000, en groepeer de resultaten op aanduiding.
Vraag:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
U krijgt de volgende uitvoer:
Uit de bovenstaande uitvoer blijkt dat de werknemersnaam, het salaris en de stad van een werknemer waarbij het werknemerssalaris hoger is dan 40.000, gegroepeerd op aanduiding. (Medewerkers met een soortgelijke aanduiding worden in één groep geplaatst, medewerkers met een andere aanduiding worden apart geplaatst).
Voorbeeld 2:
Schrijf een zoekopdracht om de naam van werknemers en de aanduiding weer te geven waarbij de som van het salaris van een werknemer groter is dan 45.000 en groepeer de resultaten per stad.
Vraag:
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
U krijgt de volgende uitvoer:
De bovenstaande uitvoer toont de naam, de aanduiding en het salaris van een werknemer. De som van het salaris is groter dan 45.000, gegroepeerd per stad. (Medewerkers met vergelijkbare steden worden in één groep geplaatst en werknemers met een andere stad die niet vergelijkbaar zijn, worden afzonderlijk geplaatst).
4. BESTEL PER CLAUSULE
Wanneer we iets in SQL willen sorteren, gebruiken we de ORDER BY-clausule. De ORDER BY-clausule in SQL helpt ons de gegevens te sorteren op basis van de specifieke kolom van een tabel. Dit betekent dat alle gegevens die zijn opgeslagen in de specifieke kolom waarop we de ORDER BY-clausule uitvoeren, worden gesorteerd. De corresponderende kolomwaarden worden weergegeven in de volgorde waarin we de waarden in de eerdere stap hebben verkregen.
Zoals we allemaal weten, betekent sorteren in OPLOPENDE VOLGORDE of AFDAALENDE VOLGORDE. Op dezelfde manier sorteert ORDER BY CLAUSE de gegevens in oplopende of aflopende volgorde, afhankelijk van onze vereisten. De gegevens worden telkens in oplopende volgorde gesorteerd ASC-trefwoord wordt gebruikt met ORDER by-clausule, en de DESC-trefwoord sorteert de records in aflopende volgorde.
Standaard wordt het sorteren in de SQL gedaan met behulp van de ORDER BY-clausule in ASCENDING-volgorde als we de sorteervolgorde niet hebben vermeld.
Voordat we naar het voorbeeld van de ORDER BY-clausule gaan om de records te sorteren, zullen we eerst naar de syntaxis kijken, zodat we het voorbeeld gemakkelijk kunnen doorlopen.
Syntaxis van de ORDER BY-clausule zonder het trefwoord asc en desc:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
Syntaxis van de ORDER BY-clausule om in oplopende volgorde te sorteren:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
Syntaxis van de ORDER BY-clausule om in aflopende volgorde te sorteren:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Stel dat we een werknemerstabel hebben met de volgende gegevens:
E_ID | Naam | Salaris | Stad | Aanduiding | Datum van toetreding | Leeftijd |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Mumbai | Projectleider | 20-06-2021 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Systeemingenieur | 24-12-2019 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Manager | 15-08-2021 | 26 |
4 | Anoesjka Tripathi | 90000 | Mumbai | Softwaretesters | 13-06-2021 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Projectleider | 09-08-2020 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Manager | 17-07-2019 | 26 |
7 | Baviskars stem | 55000 | Jaipur | Systeemingenieur | 2021-10-10 | 24 |
8 | Daar is Sjeik | 45000 | Pune | Software ontwikkelaar | 10-09-2020 | 26 |
9 | Swati Kumari | 50000 | Pune | Softwaretesters | 01-01-2021 | 25 |
10 | Mayuri Patel | 60000 | Mumbai | Projectleider | 02-10-2020 | 24 |
elf | Simran Khanna | 45500 | Kolhapur | HR | 02-01-2019 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Software ontwikkelaar | 10-09-2016 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | HR | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Projectleider | 10-11-2017 | 25 |
vijftien | Mohini Sjah | 38000 | Pune | Software ontwikkelaar | 05-03-2019 | twintig |
Voorbeeld 1:
Schrijf een query om de records in oplopende volgorde van de werknemersaanduiding uit de werknemerstabel te sorteren.
Vraag:
mysql> SELECT * FROM employees ORDER BY Designation;
Hier in een SELECT-query wordt een ORDER BY-clausule toegepast op de kolom 'Aanduiding' om de records te sorteren, maar we hebben het ASC-trefwoord na de ORDER BY-clausule niet gebruikt om in oplopende volgorde te sorteren. Gegevens worden dus standaard in oplopende volgorde gesorteerd als we geen asc-trefwoord opgeven.
U krijgt de volgende uitvoer:
Volgens de verwachte output worden de records weergegeven in oplopende volgorde van de aanduiding van de werknemer.
Voorbeeld 2:
Schrijf een query om de naam en het salaris van de werknemer weer te geven in oplopende volgorde van het salaris van de werknemer uit de werknemerstabel.
Vraag:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Hier wordt in een SELECT-query een ORDER BY-clausule toegepast op de kolom 'Salaris' om de records te sorteren. We hebben het trefwoord ASC gebruikt om het salaris van de werknemer in oplopende volgorde te sorteren.
U krijgt de volgende uitvoer:
Alle gegevens worden weergegeven in oplopende volgorde van het salaris van de medewerker.
Voorbeeld 3:
Schrijf een query om de gegevens te sorteren in aflopende volgorde van de werknemersnaam die is opgeslagen in de werknemerstabel.
Vraag:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Hier hebben we de ORDER BY-clausule gebruikt met de SELECT-query toegepast op de kolom Naam om de gegevens te sorteren. We hebben het sleutelwoord DESC na de ORDER BY-clausule gebruikt om gegevens in aflopende volgorde te sorteren.
U krijgt de volgende uitvoer:
Alle records worden weergegeven in aflopende volgorde van de naam van de werknemer.