SELECT: diferència entre les revisions
De FFAWiki
Cap resum de modificació |
Cap resum de modificació |
||
(Hi ha 2 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
:Definició: | :Definició: | ||
::camps que volem que ens tregui per pantalla | ::Mostra els camps que volem que ens tregui per pantalla, s'utilitza per seleccionar dades d'una base de dades. Les dades retornades s’emmagatzemen en una taula de resultats, anomenada conjunt de resultats o result-set en anlges. | ||
:Exemple: | :Exemple: (Base de dades sanitat) | ||
::SELECT * FROM doctor; | |||
:: | ::En aquest cas no tenim filtre en el SELECT per lo que mostra tots els camps de la taula doctor | ||
'''Eines que es poden utilitzar:''' | |||
====COUNT(*)==== | ====COUNT(*)==== | ||
Línia 14: | Línia 15: | ||
:Definició: | :Definició: | ||
::Compta les files que s’imprimeixen | ::Compta les files que s’imprimeixen, en general la funció COUNT() retorna el nombre de files que coincideix amb un criteri especificat. | ||
:Exemple: (Base de dades sanitat) | |||
: | ::SELECT count(especialitat) FROM doctor WHERE especialitat='Pediatria'; | ||
:: | ::Conta totes aquelles especialitats dels doctors les quals son Pediatria. | ||
Línia 27: | Línia 30: | ||
::Agrupa el camp que s’especifiqui traient els que estan repetits (si s’han de mostrar més d’un camp no es molt recomanat, millor GROUP BY) | ::Agrupa el camp que s’especifiqui traient els que estan repetits (si s’han de mostrar més d’un camp no es molt recomanat, millor GROUP BY) | ||
:Exemple: | :Exemple: (Base de dades sanitat) | ||
::SELECT DISTINCT(especialitat) FROM doctor; | |||
:: | ::Mostra les especialitats de la taula doctors que son diferents (Per dir d'alguna manera les agrupa). | ||
Línia 36: | Línia 41: | ||
:Definició: | :Definició: | ||
:: | ::Extreu de tot aquell camp o valor de tipus (datetime, date, time...). | ||
: | :'''Maneres de fer-lo servir: ''' | ||
::date_part('field', source) | |||
::field = microseconds | milliseconds | second | minute | hour | day | week | month | quarter (Quart d'un any) | year | decade (Decada, cada 10) | century (secle, cada 100) | millennium (mileni, cada 1000) | |||
:::SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40'); -> Retorna: 16 (Quan no li fiques un camp de la base de dades s'ha d'especificar que és el valor que li poses en aquest cas un temps) | |||
:::SELECT date_part('hour', INTERVAL '4 hours 3 minutes'); -> Retorna: 4 (Quan no li fiques un camp de la base de dades s'ha d'especificar que és el valor que li poses en aquest cas un interval) | |||
:: | :Exemple: (Base de dades empresa) | ||
::SELECT DATE_PART('YEAR',com_data) FROM comanda; -> Retorna: tots els anys de la columne com_data de la taula comanda (En aquest cas s'utilitzen dades d'una taula) | |||
====COALESCE==== | ====COALESCE==== | ||
Línia 47: | Línia 61: | ||
:Definició: | :Definició: | ||
::Mostra el primer valor de la llista separats per coma que no sigui null | ::Mostra el primer valor de la llista (COALESCE'''(comissio,0)''', el que esta en nagreta) es la llista separats per coma que no sigui null | ||
:Exemple: | :Exemple: (base de dades empresa) | ||
[[Fitxer:Coalesce-ex.jpeg|esquerra|600px|]] | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
:: | ::En aquest cas volem sumar el salari mes la comisio, pero no tots tenen comisio (son camps nulls) per tan utilitzarem COALESCE que el que fa es agafar el pimer valor que no sigui null de la llista COALESCE'''(comissio,0)''', el que esta en nagreta es la llista. | ||
:::SELECT cognom,salari+COALESCE(comissio,0) as sou FROM emp; | |||
====UPPER()==== | ====UPPER()==== | ||
Línia 62: | Línia 94: | ||
:Exemple: | :Exemple: | ||
:: | ::Exemple amb un text qualsevol: | ||
:::SELECT UPPER('hola, estas a ffawiki') as TEXT; -> Resultat: HOLA, ESTAS A FFAWIKI | |||
::Exemple amb un camp d'una taula: (base de dades empresa) | |||
:::SELECT UPPER(cognom) as COGNOM FROM emp; | |||
====LOWER()==== | ====LOWER()==== | ||
Línia 73: | Línia 110: | ||
:Exemple: | :Exemple: | ||
:: | ::Exemple amb un text qualsevol: | ||
:::SELECT UPPER('HOLA, ESTAS A FFAWIKI') as TEXT; -> Resultat: hola, estas a ffawiki | |||
::Exemple amb un camp d'una taula: (base de dades empresa) | |||
====CASE (CASE camp1 WHEN valor1 THEN mostra1 WHEN valor2 THEN mostra2 END)==== | :::SELECT LOWER(cognom) as COGNOM FROM emp; | ||
====CASE (CASE camp1 WHEN valor1 THEN mostra1 WHEN valor2 THEN mostra2 ELSE mostra3 END)==== | |||
:Definició: | :Definició: | ||
::Si cambia un valor del camp especificat si surt entre els valors especificats (when valor) per el que se li digui (then valor) , per acabar s’ha de posar END i tancar parèntesis | ::Si cambia un valor del camp especificat si surt entre els valors especificats (when valor) per el que se li digui (then valor) , per acabar s’ha de posar END i tancar parèntesis. '''L'ELSE no es obligatori''' | ||
:Exemple: (Base de dades videoclub) | |||
::SELECT codipeli,titol,(case codigenere when 1 then 'Brus Lee' when 2 then 'Stalone' when 3 then 'Al pacino' END) from pelicula; | |||
: | ::: Enves de dirte un numero et diu el nom d'un actor | ||
: | [[Fitxer:Case-ex.jpeg|esquerra|1200px|]] | ||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
<br> | |||
====SUM()==== | ====SUM()==== | ||
Línia 91: | Línia 146: | ||
:Definició: | :Definició: | ||
::Suma tots els camps o valors entre parèntesis separats per comes | ::Suma tots els camps o valors entre parèntesis separats per comes. | ||
:Exemple: | :Exemple: (Base de dades Sanitat) | ||
:: | ::Sumarem els llits que te cada hospital | ||
:::SELECT hospital_cod,sum(qtat_llits) as llits FROM sala GROUP BY hospital_cod; | |||
====AVG()==== | ====AVG()==== | ||
Línia 104: | Línia 160: | ||
::Fa la mitjana dels camps o valors entre parèntesis separats per comes | ::Fa la mitjana dels camps o valors entre parèntesis separats per comes | ||
:Exemple: | :Exemple: (Base de dades empresa) | ||
:: | ::Fa la mitjana dle que cobren tots els empleats | ||
:::SELECT ofici,AVG(salari) FROM emp GROUP BY ofici; | |||
====AS==== | ====AS==== | ||
Línia 115: | Línia 172: | ||
::A l’hora de mostrar camps que tinguin alguna funció d’agregació si es posa (camp as alies) quan mostri les files el nom de la fila serà l’alies especificat | ::A l’hora de mostrar camps que tinguin alguna funció d’agregació si es posa (camp as alies) quan mostri les files el nom de la fila serà l’alies especificat | ||
:Exemple: | :Exemple: (Base de dades empresa) | ||
::Posem un alies (mitjana_sou) a la mitjana dels salaris | |||
:: | :::SELECT ofici,AVG(salari) AS mitjana_sou FROM emp GROUP BY ofici; |
Revisió de 12:31, 13 gen 2021
- Definició:
- Mostra els camps que volem que ens tregui per pantalla, s'utilitza per seleccionar dades d'una base de dades. Les dades retornades s’emmagatzemen en una taula de resultats, anomenada conjunt de resultats o result-set en anlges.
- Exemple: (Base de dades sanitat)
- SELECT * FROM doctor;
- En aquest cas no tenim filtre en el SELECT per lo que mostra tots els camps de la taula doctor
Eines que es poden utilitzar:
COUNT(*)
- Definició:
- Compta les files que s’imprimeixen, en general la funció COUNT() retorna el nombre de files que coincideix amb un criteri especificat.
- Exemple: (Base de dades sanitat)
- SELECT count(especialitat) FROM doctor WHERE especialitat='Pediatria';
- Conta totes aquelles especialitats dels doctors les quals son Pediatria.
DISTINCT
- Definició:
- Agrupa el camp que s’especifiqui traient els que estan repetits (si s’han de mostrar més d’un camp no es molt recomanat, millor GROUP BY)
- Exemple: (Base de dades sanitat)
- SELECT DISTINCT(especialitat) FROM doctor;
- Mostra les especialitats de la taula doctors que son diferents (Per dir d'alguna manera les agrupa).
DATE_PART(,)
- Definició:
- Extreu de tot aquell camp o valor de tipus (datetime, date, time...).
- Maneres de fer-lo servir:
- date_part('field', source)
- field = microseconds | milliseconds | second | minute | hour | day | week | month | quarter (Quart d'un any) | year | decade (Decada, cada 10) | century (secle, cada 100) | millennium (mileni, cada 1000)
- SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40'); -> Retorna: 16 (Quan no li fiques un camp de la base de dades s'ha d'especificar que és el valor que li poses en aquest cas un temps)
- SELECT date_part('hour', INTERVAL '4 hours 3 minutes'); -> Retorna: 4 (Quan no li fiques un camp de la base de dades s'ha d'especificar que és el valor que li poses en aquest cas un interval)
- Exemple: (Base de dades empresa)
- SELECT DATE_PART('YEAR',com_data) FROM comanda; -> Retorna: tots els anys de la columne com_data de la taula comanda (En aquest cas s'utilitzen dades d'una taula)
COALESCE
- Definició:
- Mostra el primer valor de la llista (COALESCE(comissio,0), el que esta en nagreta) es la llista separats per coma que no sigui null
- Exemple: (base de dades empresa)
- En aquest cas volem sumar el salari mes la comisio, pero no tots tenen comisio (son camps nulls) per tan utilitzarem COALESCE que el que fa es agafar el pimer valor que no sigui null de la llista COALESCE(comissio,0), el que esta en nagreta es la llista.
- SELECT cognom,salari+COALESCE(comissio,0) as sou FROM emp;
UPPER()
- Definició:
- Passa tot el text entre parèntesis a majúscules, també poden ser camps d’una taula
- Exemple:
- Exemple amb un text qualsevol:
- SELECT UPPER('hola, estas a ffawiki') as TEXT; -> Resultat: HOLA, ESTAS A FFAWIKI
- Exemple amb un camp d'una taula: (base de dades empresa)
- SELECT UPPER(cognom) as COGNOM FROM emp;
LOWER()
- Definició:
- Passa tot el text entre parèntesis a minúscules, també poden ser camps d’una taula
- Exemple:
- Exemple amb un text qualsevol:
- SELECT UPPER('HOLA, ESTAS A FFAWIKI') as TEXT; -> Resultat: hola, estas a ffawiki
- Exemple amb un camp d'una taula: (base de dades empresa)
- SELECT LOWER(cognom) as COGNOM FROM emp;
CASE (CASE camp1 WHEN valor1 THEN mostra1 WHEN valor2 THEN mostra2 ELSE mostra3 END)
- Definició:
- Si cambia un valor del camp especificat si surt entre els valors especificats (when valor) per el que se li digui (then valor) , per acabar s’ha de posar END i tancar parèntesis. L'ELSE no es obligatori
- Exemple: (Base de dades videoclub)
- SELECT codipeli,titol,(case codigenere when 1 then 'Brus Lee' when 2 then 'Stalone' when 3 then 'Al pacino' END) from pelicula;
- Enves de dirte un numero et diu el nom d'un actor
SUM()
- Definició:
- Suma tots els camps o valors entre parèntesis separats per comes.
- Exemple: (Base de dades Sanitat)
- Sumarem els llits que te cada hospital
- SELECT hospital_cod,sum(qtat_llits) as llits FROM sala GROUP BY hospital_cod;
AVG()
- Definició:
- Fa la mitjana dels camps o valors entre parèntesis separats per comes
- Exemple: (Base de dades empresa)
- Fa la mitjana dle que cobren tots els empleats
- SELECT ofici,AVG(salari) FROM emp GROUP BY ofici;
AS
- Definició:
- A l’hora de mostrar camps que tinguin alguna funció d’agregació si es posa (camp as alies) quan mostri les files el nom de la fila serà l’alies especificat
- Exemple: (Base de dades empresa)
- Posem un alies (mitjana_sou) a la mitjana dels salaris
- SELECT ofici,AVG(salari) AS mitjana_sou FROM emp GROUP BY ofici;