DML (Data Modeling Language).
SELECT
Totes aquestes funcions s’apliquen sobre una columna excepte count que ho fa sobre totes les files.
- WHERE
- AND i OR
- Expresions : > , < , <> , etc...
Tal com he dit, aquestes sentències
permeten manipular les dades i no les taules on es guarden aquestes dades. La
sentència principal d’aquest grup i la més potent de tot el llenguatge SQL és
SELECT. Altres sentències d’aquest grup són INSERT, DELETE i UPDATE.
La sentència SELECT és una de les
més potents de SQL i permet quasi realitza qualsevol tipus de consulta sobre
les taules. L’ estructura bàsica és la següent:
La paraula SELECT seguida d’allò que volen obtenir de
la taula. Aquesta part és obligatòria
La paraula FROM seguida de la taula o taules d’on es
vol recuperar les dades. Aquesta part és obligatòria.
La paraula WHERE seguida d’un criteri de selecció o
condició. Aquesta part és opcional
La paraula ORDER BY seguida del criteri d’ordenació.
Aquesta part és opcional.
Així doncs la seva sintaxi és:
SELECT [COLUMNES] FROM [TAULA] WHERE [CONDICIO] ORDER
BY [ORDRE]
Quan volem que ens torni totes les columnes podem
usar l’asterisc en comptes d’escriure una a una les columnes de la taula.
Ara posaré un exemple. Suposem que tenim la següent
taula o relació:
Llibre(codi_llibre, codi_autor, Títol, Preu,
codi_editorial)
I volem que ens retorni totes les característiques
del llibres que valen més de 20 euros. La sentència seria:
SELECT * FORM Llibre WHERE Preu> 20;
Tal com he dit amb la clàusula ORDER BY seguida de la
columna per la qual volem ordenar podem tornar els resultats ordenats, ja que
si no els resultats es retornen en qualsevol ordre i fins i tot de diferent
manera en cada consulta. Per defecte, ordena de menor o menor, però si volem
podem afegir la paraula reservada DESC i llavors la ordenació serà descendent.
Per exemple, ara volem la mateixa consulta anterior
però ordenada per preu, i que primer ens mostri els més cars.
SELECT * FORM llibre Where Preu > 20 ORDER BY Preu
DESC;
Si especifiquem quines columnes volem que ens retorni
ens les retornarà amb el nom original de la taula. Però aquest nom també el
podem canviar.
SELECT Preu AS Precio Where
També podem descartar els valors repetits mitjançant
amb la paraula reservada DISTINCT. Per
exemple, volem saber de quins autors tenim llibres en la nostra base de dades
SELECT DISTINCT codi_autor FROM Llibre
Amb SQL podem fer consultes més sofisticades que les
que he mostrat. Per fer-ho ens ajudarem dels predicats.
–
Predicats de comparació:
> =, < , >=, <=
–
Predicat NULL / NOT NULL
–
ANY, SOME, ALL
–
IN
–
BETWEEN
–
LIKE
El llenguatge SQL proporciona una sèrie de funcions
d’agregació que permet efectuar diverses operacions amb les dades d’una base de
dades. Les principals són:
–
COUNT: ens dona el número total de files seleccionades
–
MIN: ens dóna el valor mínim d’una columna.
–
MAX: ens dóna el valor màxim d’una columna.
–
AVG: calcula el valor mitjà d’una columna
–
SUM: suma els valors d’una columna
–
COUNT(*): compta totes les files
–
COUNT(DISTINCT columna):només compta els valors si no són
repetits
–
COUNT(columna): no compta els valors nuls.
També en una sentència podem fer grups de files:
- La clàusula GROUP BY: permet agrupar files segons les columnes indicades en aquesta clàusula
- La clàusula HAVING especifica condicions de cerca per els grups de files, fa la mateixa funció que WHERE però dins de l’agrupació.
Resum
SELECT : principal sentència SQL. Permet recuperar dades.
SELECT : principal sentència SQL. Permet recuperar dades.
FROM : de quina taula volem recuperar.
Selecció de les columnes :
* : l’asteric torna totes les columnes
Columna1, columna2, columna n : columnes separades per comes.
WHERE: quines condicions
Estructura:
SELECT nom camps FROM nom taula WHERE condició
Exemples
Exemples
Torna totes les columnes de la taula Productes
SELECT Preu, Quantitat FROM Productes
Torna les columnes Preu i Quantitat de la taula Productes
SELECT Nom FROM Productes WHERE Preu > 100
Torna el nom del producte, de la taula productes que el seu Preu sigui superior a 100
Condicions
Condicions
SELECT nom camps FROM nom taula WHERE condició AND condició
SELECT nom camps FROM nom taula WHERE condició OR condició
SELECT Nom FROM Productes WHERE Preu > 100 Or Tipus=“Memòria”
Torna el nom del producte, de la taula productes que el seu Preu sigui superior a 100 o que sigui de tipus Memòria.
Consultes simples
SELECT Nom “Nom del Producte” FROM Productes WHERE Preu > 100 Or Tipus=“Memòria”
Consultes simples
SELECT Nom “Nom del Producte” FROM Productes WHERE Preu > 100 Or Tipus=“Memòria”
Torna el nom del producte en una nova columna que es dius “Nom del Producte”, de la taula productes que el seu Preu sigui superior a 100 o que sigui de tipus Memòria.
Like / NOT Like
% per indicar qualsevol cadena de zero o més caràcters.
_ per indicar qualsevol caràcter
LIKE 'Torres' Compara amb la cadena ‘Torres’.
LIKE 'Torr%' Compara amb qualsevol cadena iniciada per ‘Torr’.
LIKE '%S%' Compara amb tota cadena que contingui una ‘S’.
LIKE '_o%' Compara amb qualsevol cadena que tingui una ‘o’per segon caràcter.
LIKE '__' Compara amb qualsevol cadena de dos caràcters.
BETWEEN /IN /NOT
Conjunt d’operadors de comparació:
[NOT] BETWEEN <valor_1> AND <valor_2>que permet efectuar la comparació entre dos valors.
[NOT] IN (llista_valors)
que permet comparar amb una llista de valors.
IS [NOT] NULL
que permet reconèixer si estem davant d’un valor NULL.
ANY/ALL
<comparador genèric> ANY (llista_valors_de_SELECT)
<comparador genèric> ANY (llista_valors_de_SELECT)
que permet efectuar una comparació genèrica (=, <>, !=, >,<, >=, <=) amb qualsevol dels valors de la dreta.
<comparador genèric> ALL (llista_valors_de_SELECT)
que permet efectuar una comparació genèrica (=, <>, !=, >,<, >=, <=) amb tots els valors de la dreta.
Observem que:
=ANY és equivalent a IN
!=ALL és equivalent a NOT IN
COUNT/DISTINCT
COUNT/DISTINCT
COUNT(*)--> compta registres.* --> ho compta tot
COUNT (id_producte) (sobre la taula productes)compta quants productes hi ha en la taula.DISTINCT--> elimina repetits. Més lent. Internament executa primer l’ordre ORDER BY.
select nom from productes;
Torna tots els noms de productes.
select distinct nom from productes;
select distinct nom from productes;
Torna tots els noms de productes sense repetits
ORDER BY
Permet ordenar els resultats
Permet ordenar els resultats
ASC -->Ascendent (per defecte)
DESC --> Descent
Estructura:
SELECT columna1, columna2 FROM nom taula WHERE condició ORDER BY columna1 ASC/DESC, columna2 ASC/DESC
select codi_producte, titol, preu from productes
select codi_producte, titol, preu from productes
order by preu, titol;
Mostrar els codis, títols i preus dels productes ordenats de forma ascendent pel seu preu i ordenatspel títol quan tinguin el mateix preu.
select codi_producte, titol from productes
order by length(titol) DESC;
Mostrar el codi i el títol dels productes ordenats de forma descendent per la longitud del seu títol.
FUNCIONS INCORPORADES
AVG --> mitjana
Mostrar els codis, títols i preus dels productes ordenats de forma ascendent pel seu preu i ordenatspel títol quan tinguin el mateix preu.
select codi_producte, titol from productes
order by length(titol) DESC;
Mostrar el codi i el títol dels productes ordenats de forma descendent per la longitud del seu títol.
FUNCIONS INCORPORADES
AVG --> mitjana
SELECT AVG(Preu) “Preu mig” FROM PRODUCTES
AVG (preu) (sobre la taula productes) retorna el preu mitjà de tots els productes seleccionats que tenen preu (els nuls s’ignoren). Retorna NUL si no hi ha capregistre seleccionat.
Retorna el preu més alt.
MIN() --> valor mínim
SUM() --> suma valors
AVG (preu) (sobre la taula productes) retorna el preu mitjà de tots els productes seleccionats que tenen preu (els nuls s’ignoren). Retorna NUL si no hi ha capregistre seleccionat.
MAX() --> valor màxim
SELECT MAX(preu) "Preu màxim“ FROM ProductesRetorna el preu més alt.
MIN() --> valor mínim
SUM() --> suma valors
LENGHT (cad)--> longitut d’una paraula
LENGTH("Diumenge") retorna 8
SELECT nom FROM PRODUCTES WHERE Length(nom) > 10
SELECT nom FROM PRODUCTES WHERE Length(nom) > 10
TRIM() -->elimina els espais blancs
TRIM(' Hola ') retorna 'Hola‘
SELECT TRIM(Nom) FROM PRODUCTES
UCASE(), --> converteix a majúscules.
UCASE ('Avui') retorna 'AVUI‘
SELECT UCASE(Nom) FROM PRODUCTES
Cap comentari:
Publica un comentari a l'entrada