- La clàusula SQL ens ajuda a recuperar un conjunt o paquets de registres de la taula.
- La clàusula SQL ens ajuda a especificar una condició a les columnes o els registres d'una taula.
Les diferents clàusules disponibles al llenguatge de consulta estructurat són les següents:
- ON CLÀUSULA
- GRUP PER CLÀUSULA
- TENIR CLÀUSULA
- ORDRE PER CLÀUSULA
Vegem cada clàusula una per una amb un exemple. Utilitzarem la base de dades MySQL per escriure les consultes en exemples.
1. ON CLÀUSULA
S'utilitza una clàusula WHERE a SQL amb la consulta SELECT, que és una de les ordres del llenguatge de manipulació de dades. Les clàusules WHERE es poden utilitzar per limitar el nombre de files que es mostraran al conjunt de resultats, generalment ajuda a filtrar els registres. Només retorna aquelles consultes que compleixen les condicions específiques de la clàusula WHERE. La clàusula WHERE s'utilitza a les sentències SELECT, UPDATE, DELETE, etc.
clàusula WHERE amb la consulta SELECT
El símbol d'asterisc s'utilitza amb una clàusula WHERE en una consulta SELECT per recuperar tots els valors de columna de cada registre d'una taula.
Sintaxi de la clàusula where amb una consulta de selecció per recuperar tots els valors de columna per a cada registre d'una taula:
SELECT * FROM TABLENAME WHERE CONDITION;
Si segons el requisit, només volem recuperar columnes selectives, utilitzarem la sintaxi següent:
SELECT COLUMNNAME1, COLUMNNAME2 FROM TABLENAME WHERE CONDITION;
Considereu la taula dels empleats amb les dades següents:
E_ID | Nom | Sou | ciutat | Designació | Data_d'unió | Edat |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombai | Gestor de projectes | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Enginyer de sistemes | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Gerent | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombai | Provadors de programari | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Gestor de projectes | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Gerent | 2019-07-17 | 26 |
7 | la veu de Baviskar | 55000 | Jaipur | Enginyer de sistemes | 2021-10-10 | 24 |
8 | Hi ha Sheik | 45000 | Pune | Enginyer de software | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Provadors de programari | 2021-01-01 | 25 |
10 | Mayuri Patel | 60000 | Bombai | Gestor de projectes | 2020-10-02 | 24 |
11 | Simran Khanna | 45500 | Kolhapur | RRHH | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Desenvolupador de programari | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | RRHH | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Gestor de projectes | 2017-11-10 | 25 |
15 | Mohini Shah | 38000 | Pune | Desenvolupador de programari | 2019-03-05 | 20 |
Exemple 1:
Escriviu una consulta per recuperar tots aquells registres d'un empleat on el salari dels empleats sigui superior a 50.000.
Consulta:
mysql> SELECT * FROM employees WHERE Salary > 50000;
La consulta anterior mostrarà tots aquells registres d'un empleat on el sou d'un empleat sigui superior a 50.000. No es mostrarà un salari inferior a 50.000 segons les condicions.
Obtindreu la següent sortida:
Segons la sortida esperada, només es mostren aquells registres on el sou d'un empleat és superior a 50.000. Hi ha sis registres a la taula de l'empleat que compleixen la condició donada.
Exemple 2:
Escriviu una consulta per actualitzar el registre de l'empleat i establiu el nom actualitzat com a 'Harshada Sharma', on el nom de la ciutat de l'empleat és Jaipur.
Consulta:
com actualitzar en java
mysql> UPDATE employees SET Name = 'Harshada Sharma' WHERE City = 'Jaipur';
La consulta anterior actualitzarà el nom de l'empleat a 'Harshada Sharma', on la ciutat de l'empleat és Jaipur.
Per verificar si els registres estan actualitzats o no, executarem una consulta de selecció.
mysql> SELECT * FROM employees;
Només hi ha un registre a la taula de l'empleat on la ciutat de l'empleat és 'Jaipur'. L'identificador del registre és 3, que compleix la condició donada. Per tant, segons la condició donada, el nom de l'empleat amb l'identificador de l'empleat 3 ara es canvia a 'Harshada Sharma'.
Exemple 3:
Escriviu una consulta per suprimir el registre d'un empleat on la data d'incorporació de l'empleat és '2013-12-12'.
Consulta:
mysql> DELETE FROM employees WHERE Date_of_Joining = '2013-12-12';
La consulta anterior suprimirà les dades de l'empleat de l'empleat la data d'incorporació del qual és '2013-12-12'.
Per verificar els resultats de la consulta anterior, executarem la consulta de selecció.
mysql> SELECT *FROM employees;
Només hi ha un registre a la taula de l'empleat on la data d'incorporació de l'empleat és '2013-12-12'. L'identificador del registre és 13, que compleix la condició donada. Per tant, segons la condició donada, l'empleat amb l'identificador d'empleat 13 ara s'elimina de la taula de l'empleat.
2. GRUP PER CLÀUSULA
La clàusula Group By s'utilitza per organitzar tipus similars de registres en els grups en el llenguatge de consulta estructurat. La clàusula Grup per al llenguatge de consulta estructurat s'utilitza amb la instrucció Select. Agrupar per clàusula es col·loca després de la clàusula where a la sentència SQL. La clàusula Group By s'utilitza especialment amb la funció d'agregació, és a dir, max (), min (), avg (), sum (), count () per agrupar el resultat en funció d'una o més d'una columna.
La sintaxi de la clàusula Group By:
SELECT * FROM TABLENAME GROUP BY COLUMNNAME;
La sintaxi anterior seleccionarà totes les dades o registres de la taula, però organitzarà totes aquestes dades o registres en els grups en funció del nom de columna donat a la consulta.
La sintaxi de la clàusula Group By amb funcions d'agregació:
SELECT COLUMNNAME1, Aggregate_FUNCTION (COLUMNNAME) FROM TABLENAME GROUP BY COLUMNNAME;
Entenem la clàusula Group By amb l'ajuda d'exemples.
Considereu la taula d'empleats amb les dades següents:
E_ID | Nom | Sou | ciutat | Designació | Data_d'unió | Edat |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombai | Gestor de projectes | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Enginyer de sistemes | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Gerent | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombai | Provadors de programari | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Gestor de projectes | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Gerent | 2019-07-17 | 26 |
7 | la veu de Baviskar | 55000 | Jaipur | Enginyer de sistemes | 2021-10-10 | 24 |
8 | Hi ha Sheik | 45000 | Pune | Enginyer de software | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Provadors de programari | 2021-01-01 | 25 |
10 | Mayuri Patel | 60000 | Bombai | Gestor de projectes | 2020-10-02 | 24 |
11 | Simran Khanna | 45500 | Kolhapur | RRHH | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Desenvolupador de programari | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | RRHH | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Gestor de projectes | 2017-11-10 | 25 |
15 | Mohini Shah | 38000 | Pune | Desenvolupador de programari | 2019-03-05 | 20 |
Exemple 1:
Escriviu una consulta per mostrar tots els registres de la taula d'empleats, però agrupa els resultats en funció de la columna d'edat.
Consulta:
mysql> SELECT * FROM employees GROUP BY Age;
La consulta anterior mostrarà tots els registres de la taula d'empleats però agrupats per la columna d'edat.
Obtindreu la següent sortida:
Exemple 2:
Escriu una consulta per mostrar tots els registres de la taula d'empleats agrupats per la designació i el salari.
Consulta:
mysql> SELECT * FROM employees GROUP BY Salary, Designation;
La consulta anterior mostrarà tots els registres de la taula d'empleats però agrupats per la columna salari i designació.
Obtindreu la següent sortida:
Exemples de clàusula Group By utilitzant funcions d'agregació
Exemple 1:
Escriu una consulta per enumerar el nombre d'empleats que treballen en una designació concreta i agrupa els resultats per designació de l'empleat.
Consulta:
mysql> SELECT COUNT (E_ID) AS Number_of_Employees, Designation FROM employees GROUP BY Designation;
La consulta anterior mostrarà la designació amb el nombre respectiu d'empleats que treballen en aquesta designació. Tots aquests resultats s'agruparan per la columna de designació.
Obtindreu la següent sortida:
Segons la sortida esperada, es mostra la designació amb el recompte d'empleats respectiu.
Exemple 2:
Escriviu una consulta per mostrar la suma del sou d'un empleat segons la ciutat agrupada per l'edat d'un empleat.
Consulta:
mysql> SELECT SUM (Salary) AS Salary, City FROM employees GROUP BY City;
La consulta anterior calcularà primer la suma dels sous que treballen a cada ciutat, i després mostrarà la suma salarial amb el salari respectiu però agrupat per la columna d'edat.
Obtindreu la següent sortida:
Segons la producció esperada, es mostra la suma del salari de l'empleat segons la ciutat a la qual pertany l'empleat. Si dos empleats pertanyen a la mateixa ciutat, estaran en un sol grup.
3. TENIR CLÀUSULA:
Quan necessitem posar alguna condició a la columna de la taula, fem servir la clàusula WHERE en SQL. Però si volem utilitzar qualsevol condició en una columna de la clàusula Group By en aquell moment, utilitzarem la clàusula HAVING amb la clàusula Group By per a les condicions de la columna.
Sintaxi:
TABLENAME GROUP BY COLUMNNAME HAVING CONDITION;
Considereu la taula d'empleats amb les dades següents:
E_ID | Nom | Sou | ciutat | Designació | Data_d'unió | Edat |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombai | Gestor de projectes | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Enginyer de sistemes | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Gerent | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombai | Provadors de programari | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Gestor de projectes | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Gerent | 2019-07-17 | 26 |
7 | la veu de Baviskar | 55000 | Jaipur | Enginyer de sistemes | 2021-10-10 | 24 |
8 | Hi ha Sheik | 45000 | Pune | Enginyer de software | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Provadors de programari | 2021-01-01 | 25 |
10 | Mayuri Patel | 60000 | Bombai | Gestor de projectes | 2020-10-02 | 24 |
11 | Simran Khanna | 45500 | Kolhapur | RRHH | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Desenvolupador de programari | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | RRHH | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Gestor de projectes | 2017-11-10 | 25 |
15 | Mohini Shah | 38000 | Pune | Desenvolupador de programari | 2019-03-05 | 20 |
Exemple 1:
Escriviu una consulta per mostrar el nom dels empleats, el sou i la ciutat on el salari màxim de l'empleat sigui superior a 40.000 i agrupeu els resultats per designació.
Consulta:
mysql> SELECT Name, City, MAX (Salary) AS Salary FROM employees GROUP BY Designation HAVING MAX (Salary) > 40000;
Obtindreu la següent sortida:
La sortida anterior mostra que el nom de l'empleat, el sou i la ciutat d'un empleat on el salari de l'empleat és superior a 40.000 agrupats per designació. (Els empleats amb una designació similar es col·loquen en un grup, i els que tenen una altra designació es col·loquen per separat).
Exemple 2:
Escriviu una consulta per mostrar el nom dels empleats i la designació on la suma del sou d'un empleat sigui superior a 45.000 i agrupeu els resultats per ciutat.
Consulta:
convertint int a doble java
mysql> SELECT Name, Designation, SUM (Salary) AS Salary FROM employees GROUP BY City HAVING SUM (Salary) > 45000;
Obtindreu la següent sortida:
La sortida anterior mostra el nom de l'empleat, la designació i el sou d'un empleat. La suma del salari és superior a 45.000 agrupats per ciutat. (Els empleats amb ciutats similars es col·loquen en un grup i els que no són similars es col·loquen per separat).
4. ORDRE PER CLÀUSULA
Sempre que volem ordenar qualsevol cosa en SQL, fem servir la clàusula ORDER BY. La clàusula ORDER BY en SQL ens ajudarà a ordenar les dades en funció de la columna específica d'una taula. Això vol dir que s'ordenaran totes les dades emmagatzemades a la columna específica sobre la qual estem executant la clàusula ORDER BY. Els valors de columna corresponents es mostraran en la seqüència en què hem obtingut els valors en el pas anterior.
Com tots sabem, ordenar vol dir en ORDRE ASCENDENT o ORDRE DESCENDENT. De la mateixa manera, ORDRE PER CLÀUSULA ordena les dades en ordre ascendent o descendent segons el nostre requeriment. Les dades s'ordenaran en ordre ascendent sempre que paraula clau ASC s'utilitza amb la clàusula ORDER by i el paraula clau DESC ordenarà els registres en ordre descendent.
Per defecte, l'ordenació a l'SQL es farà mitjançant la clàusula ORDER BY en ordre ASCENDING si no hem mencionat l'ordre d'ordenació.
Abans d'anar cap a l'exemple de la clàusula ORDER BY per ordenar els registres, primer, mirarem la sintaxi perquè ens sigui fàcil passar per l'exemple.
Sintaxi de la clàusula ORDER BY sense la paraula clau asc i desc:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMNAME;
Sintaxi de la clàusula ORDER BY per ordenar en ordre ascendent:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME ASC;
Sintaxi de la clàusula ORDER BY per ordenar en ordre descendent:
SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME ORDER BY COLUMN_NAME DESC;
Penseu que tenim una taula d'empleats amb les dades següents:
E_ID | Nom | Sou | ciutat | Designació | Data_d'unió | Edat |
---|---|---|---|---|---|---|
1 | Sakshi Kumari | 50000 | Bombai | Gestor de projectes | 2021-06-20 | 24 |
2 | Tejaswini Naik | 75000 | Delhi | Enginyer de sistemes | 2019-12-24 | 23 |
3 | Anuja Sharma | 40000 | Jaipur | Gerent | 2021-08-15 | 26 |
4 | Anushka Tripathi | 90000 | Bombai | Provadors de programari | 2021-06-13 | 24 |
5 | Rucha Jagtap | 45000 | Bangalore | Gestor de projectes | 2020-08-09 | 23 |
6 | Rutuja Deshmukh | 60000 | Bangalore | Gerent | 2019-07-17 | 26 |
7 | la veu de Baviskar | 55000 | Jaipur | Enginyer de sistemes | 2021-10-10 | 24 |
8 | Hi ha Sheik | 45000 | Pune | Enginyer de software | 2020-09-10 | 26 |
9 | Swati Kumari | 50000 | Pune | Provadors de programari | 2021-01-01 | 25 |
10 | Mayuri Patel | 60000 | Bombai | Gestor de projectes | 2020-10-02 | 24 |
11 | Simran Khanna | 45500 | Kolhapur | RRHH | 2019-01-02 | 26 |
12 | Shivani Wagh | 50500 | Delhi | Desenvolupador de programari | 2016-09-10 | 25 |
13 | Kiran Maheshwari | 50000 | Nashik | RRHH | 2013-12-12 | 23 |
14 | Tejal Jain | 40000 | Delhi | Gestor de projectes | 2017-11-10 | 25 |
15 | Mohini Shah | 38000 | Pune | Desenvolupador de programari | 2019-03-05 | 20 |
Exemple 1:
Escriviu una consulta per ordenar els registres en ordre ascendent de la designació de l'empleat de la taula d'empleats.
Consulta:
mysql> SELECT * FROM employees ORDER BY Designation;
Aquí, en una consulta SELECT, s'aplica una clàusula ORDER BY a la columna 'Designació' per ordenar els registres, però no hem utilitzat la paraula clau ASC després de la clàusula ORDER BY per ordenar en ordre ascendent. Així, per defecte, les dades s'ordenaran en ordre ascendent si no especifiquem la paraula clau asc.
Obtindreu la següent sortida:
Segons la sortida esperada, els registres es mostren en ordre ascendent de la designació de l'empleat.
Exemple 2:
Escriviu una consulta per mostrar el nom i el sou de l'empleat en ordre ascendent del sou de l'empleat a la taula d'empleats.
Consulta:
mysql> SELECT Name, Salary FROM employees ORDER BY Salary ASC;
Aquí, en una consulta SELECT, s'aplica una clàusula ORDER BY a la columna 'Salari' per ordenar els registres. Hem utilitzat la paraula clau ASC per ordenar el salari de l'empleat en ordre ascendent.
Obtindreu la següent sortida:
Tots els registres es mostren en ordre ascendent del salari de l'empleat.
Exemple 3:
Escriviu una consulta per ordenar les dades en ordre descendent del nom de l'empleat emmagatzemat a la taula d'empleats.
Consulta:
mysql> SELECT * FROM employees ORDER BY Name DESC;
Aquí hem utilitzat la clàusula ORDER BY amb la consulta SELECT aplicada a la columna Nom per ordenar les dades. Hem utilitzat la paraula clau DESC després de la clàusula ORDER BY per ordenar les dades en ordre descendent.
Obtindreu la següent sortida:
Tots els registres es mostren en ordre descendent del nom de l'empleat.