SlideShare a Scribd company logo
1 of 15
Download to read offline
Consultes simples
«Select»
Miquel Boada
25-11-2016
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Objectius
1. Realització de consultes en una taula
Coneixements previs
• Model Entitat-Relació.
• Model relacional.
• Transformació del model Entitat-Relació al model relacional.
• Sistemes gestors de bases de dades (SGBD).
• Creació de base de dades.
• Creació de taules.
Requisits previs
• Ordinador amb MySQL server instal·lat.
• Client MySQL server (MySQL Workbench per la representació gràfica).
• Connexió al servidor des del client
• Una base de dades creada.
Autor: Miquel Boada Pàgina 2 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
SQL - Select
Consultes simples.....................................................................................................................................1
Objectius....................................................................................................................................................2
Coneixements previs................................................................................................................................2
Requisits previs.........................................................................................................................................2
Introducció................................................................................................................................................4
Select sintaxis............................................................................................................................................5
Consultes «simples».................................................................................................................................6
select_expr...........................................................................................................................................6
Consultes per camps. Exemples........................................................................................................6
Utilització operacions. Exemples.......................................................................................................7
Utilització funcions. Exemples...........................................................................................................7
Funcions no agregades..................................................................................................................7
Exemples funcions no agregades.............................................................................................8
Funcions agregades........................................................................................................................8
Exemples funcions agregades..................................................................................................8
Filtres....................................................................................................................................................9
Operadors en els filtres..................................................................................................................9
Operadors. Exemples................................................................................................................9
Operadors lògics...........................................................................................................................10
Operadors lògics. Exemples....................................................................................................10
Operador IN..................................................................................................................................10
Operador IN. Exemple.............................................................................................................11
Operador Like...............................................................................................................................11
Operador Like. Exemples........................................................................................................11
Precedència operadors................................................................................................................12
Valor NULL.....................................................................................................................................12
IS NULL / IS NOT NULL............................................................................................................13
IS NULL / IS NOT NULL. Exemples.....................................................................................13
Distinct...........................................................................................................................................13
Order by.............................................................................................................................................14
Order by. Exemples......................................................................................................................14
Webgrafia................................................................................................................................................15
Autor: Miquel Boada Pàgina 3 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Introducció.
Un dels objectius principals de la implementació d'una base de dades és la gestió de la
informació. Per a gestionar la informació és precís poder-la localitzar de forma eficient. Cal
tenir en compte que durant el procés de normalització s'ha dividit la informació en múltiples
taules. Una de les opcions importants que s'hauran de realitzar serà la de tornar a unir
aquesta informació per a tenir una visió global o relacionada de la mateixa. Per a consultar la
informació utilitzant el llenguatge SQL (Standard Query Language) disposem de la instrucció
«select».
Per a realitzar les diferents consultes es partirà del següent model ER i la seva conversió al
model físic.
create database dbheros;
use dbheros;
create table superhero(
nameh varchar(40), planet varchar(20) ,
intelligence decimal(4,2) not null,
strong decimal(4,2) not null,
primary key(nameh)
) engine=innodb;
La informació emmagatzemada en aquesta taula serà el resultat de l'execució de les següents
instruccions.
insert into superhero values
("Superman","earth",round(rand()*100,2),round(rand()*100,2)),
("Batman","earth",round(rand()*100,2),round(rand()*100,2)),
("Spiderman","earth",round(rand()*100,2),round(rand()*100,2)),
("Thor","earth",round(rand()*100,2),round(rand()*100,2)),
("Hal Jordan",NULL,round(rand()*100,2),round(rand()*100,2)),
("Wonder Woman","earth",round(rand()*100,2),round(rand()*100,2)),
("Captain America",NULL,round(rand()*100,2),round(rand()*100,2)),
("Martian Manhunter","Mars",round(rand()*100,2),round(rand()*100,2));
Autor: Miquel Boada Pàgina 4 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Select sintaxis
La instrucció «select» ens permet realitzar consultes en una base de dades. Les opcions més
utilitzades d'aquesta instrucció són:
SELECT
[ALL | DISTINCT ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
select_expr [, select_expr ...]
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position} [ASC | DESC], ... ]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]]
En essència, la instrucció select ens permet obtenir el valor associat a diferents columnes o
camps d'una o vàries taules. Les taules que es consultin no han d'estar obligatòriament en la
mateixa taula.
Autor: Miquel Boada Pàgina 5 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Consultes «simples»
El format de la consulta més simple, on intervingui almenys una taula, està composat per la
sentència: Select select_expr1 [,select_expr2] … from table ;
select_expr
L'expressió «select_expr » es pot substituir per a qualsevol de les següents alternatives:
nom_camp: obtenir la informació d'un camp de la taula. Els diversos camps es separaran
mitjançant una coma. Si el nom del camp conté espais1
s'ha d'incloure entre els símbols
de ` (accent obert) o bé " (cometes dobles).
* : obtenir la informació de tots els camps de la taula
camp operació camp : resultat d'aplicar un determinat càlcul a dos camps.
funció(camp) : resultat d'aplicar una determinada funció a un camp.
Consultes per camps. Exemples
use dbheros;
-- Obtenir el nom de tots els superherois de la base de dades
select nameh from superhero;
-- Obtenir el nom i el planeta on resideixen tots els herois
select nameh, planet from superhero;
-- Obtenir el nom , la força i la intel·ligència de cada un dels superherois
select nameh, strong, intelligence
from superhero;
-- Obtenir totes les dades de tots els superherois
select * from superhero;
Si una sentència «select» és molt llarga, es recomana escriure-la utilitzant diverses línies per a
millorar la legibilitat. Cal tenir en compte que el llenguatge SQL ignora totes les tabulacions,
espais sobrers (2 o més espais seguits) i salts de línia. A mode il·lustratiu en la tercera consulta
d'exemple s'ha introduït un salt de línia tot i que en aquest cas no era necessari.
1 Per a millor comoditat és preferible no utilitzar espais en blanc en els noms dels camps.
Autor: Miquel Boada Pàgina 6 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Utilització operacions. Exemples
És habitual que algunes vegades es vulgui realitzar alguna operació o càlcul entre dues dades
d'un mateix registre. Els operadors matemàtics que es disposen en el llenguatge SQL són els
habituals en la majoria dels llenguatges: + , - , / , * (multiplicació), % (mòdul).
Quan es realitza un càlcul entre 2 o més camps d'una taula podem associar un nom a aquest
càlcul. Aquest nom es podrà utilitzar posteriorment per a referenciar el càlcul i simplificar la
instrucció resultant. L'associació es farà utilitzant la paraula «AS». Si el nom que volem assignar
conté espais utilitzarem " cometes dobles o bé ` (accent obert).
-- Obtenir el nom del superheroi i la proporció entre la força i la intelligència
-- de cada un dels superherois
select nameh, strong/intelligence from superhero;
-- Obtenir el nom del superheroi i la proporció entre la força i
-- la intelligència de cada un dels superherois.
– Associar el nom "proporcio" al resultat de l'operació
select nameh, strong/intelligence as proporcio from superhero;
-- Obtenir el nom del superheroi i la proporció entre la força i la intelligència
-- de cada un dels superherois.
-- Associar el nom "proporcio força i intel·ligencia" al resultat de l'operació
select nameh, strong/intelligence as "proporcio força i intel·ligencia"
from superhero;
Utilització funcions. Exemples
De forma semblant a la d'una fulla de càlcul, podem utilitzar funcions per a realitzar càlculs o
transformacions amb els camps d'una taula. El llenguatge SQL diferencia dos tipus de
funcions:
1. Funcions no agregades
2. Funcions agregades
Funcions no agregades
Les funcions no agregades són aquelles funcions que tracten cada fila de forma individual. Si
s'aplica la funció a una consulta de 100 registres, el resultat seran 100 registres amb el valor
del camp calculat.
Autor: Miquel Boada Pàgina 7 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Exemples funcions no agregades
-- Obtenir el nom del superheroi i la proporció entre la força i la intelligència de cada un dels
superherois.
-- El càlcul de la proporció ha de ser a 2 decimals.
select nameh, round(strong/intelligence,2) as proporcio from superhero;
-- Mostrar en percentatge la proporció entre la força i la intel·ligència.
select nameh, concat(round(strong/intelligence*100,2)," %")
from superhero;
Funcions agregades
Les funcions agregades són aquelles que agrupen totes les files d'una consulta obtenint un
únic resultat; el seu resultat és una única fila amb el resultat demanat. Per exemple, «sum»
(sumatori), «count» (total de files), «avg» (mitjana) són funcions agregades.
Exemples funcions agregades
-- Obtenir el total d'herois introduïts en la taula
select count(*) from superhero;
-- Obtenir la mitjana de força i d'intel·ligència de tots els herois
select avg(strong) as "mitjana força", avg(intelligence) as "mitjana intel·ligència"
from superhero;
Podeu obtenir el llistat complet d'operacions i funcions en l'URL del producte oficial:
http://dev.mysql.com/doc/refman/5.7/en/functions.html
Autor: Miquel Boada Pàgina 8 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Filtres.
Quan es realitzen consultes a les taules moltes vegades es precisa obtenir la informació d'un
subconjunt del total de registres que conté la taula. Quan es dóna aquesta situació s'aplica un
filtre. L'aplicació dels filtres es realitza amb la clàusula «where» (on). Quan en els filtres es
volen referenciar valors alfanumèrics fixes, cal incloure aquest valor entre cometes simples
( 'caràcters ' ).
Operadors en els filtres
Alguns dels operadors de comparació que podem usar en els filtres de les consultes són:
v1=v2 : v1 i v2 han de tenir el mateix valor per tal que la condició sigui certa.
v1>v2 : v1 ha de ser més gran que v2 per tal que la condició sigui certa.
v1<v2 : v1 ha de ser més petit que v2 per tal que la condició sigui certa.
v1>=v2 : v1 ha de ser més gran o igual a v2 per tal que la condició sigui certa.
v1<=v2 : v1 ha de ser més petit o igual a v2 per tal que la condició sigui certa.
v1<>v22
: v1 i v2 han de tenir valors diferents per tal que la condició sigui certa.
v1 between min and max : el resultat és cert si el valor de v1 és més gran o igual a min i
més petit o igual a max.
IN (valor1[, valor2 ]...)
v1 LIKE v2
En els filtres es poden utilitzar també funcions o operacions. En aquest cas el més normal és
incloure l'operació o la funció en la clausula where.
Operadors. Exemples
-- Obtenir totes les dades de "batman"
select * from superhero where nameh='batman';
-- Obtenir totes les dades de tots els herois que el seu nom no sigui batman
select * from superhero where nameh<>'batman';
-- Obtenir el nom de tots els herois que tinguin una força superior a 20
select nameh from superhero where strong>20;
-- Total d'intel·ligència de tots els herois que tenen més força que intel·ligència
select sum(intelligence) from superhero where strong>intelligence;
-- Obtenir el nom de tots els herois que tinguin el doble o més de força que d'intel·ligència
select nameh from superhero where strong/intelligence>=2;
-- Obtenir el nom de tots els herois que tinguin una força entre 1 i 5 ambdós inclosos
select nameh from superhero where strong between 1 and 5;
2 També es pot utilitzar l'operador != .
Autor: Miquel Boada Pàgina 9 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Operadors lògics
Els operadors lògics permeten enllaçar diferents condicions. Els operadors lògics més comuns
en el llenguatge SQL són:
cond1 AND cond2
cond 1 OR cond2
NOT cond13
Cal tenir en compte que en el llenguatge SQL hi ha tres valors diferents que pot prendre una
condició: TRUE, FALSE i el valor especial NULL .
La taula de veritat per a cada un dels operadors lògics és:
AND OR
NOT
TRUE FALSE NULL TRUE FALSE NULL
TRUE TRUE FALSE NULL TRUE TRUE TRUE TRUE TRUE FALSE
FALSE FALSE FALSE FALSE FALSE TRUE FALSE NULL FALSE TRUE
NULL NULL FALSE NULL NULL TRUE NULL NULL NULL NULL
El tema de valors NULL es tracta posteriorment en aquest mateix document.
Operadors lògics. Exemples
-- Obtenir tota la informació de tots els herois que tenen el planeta earth assignat i que la seva
-- força sigui superior a 50
select * from superhero where strong>50 and planet='earth';
-- Obtenir el nom dels herois que no es diguin Batman o que tinguin el planeta earth assignat
select nameh from superhero where nameh<>'Batman' or planet='earth';
-- Obtenir totes les dades de tots dels herois amb una força o intel·ligència inferior a 50
-- i que tinguin el planeta 'earth' associat
select * from superhero where (strong<50 or intelligence<50) and planet='earth';
-- Obtenir el nom de tots els herois que NO tinguin una intelligencia superior a 50
-- ni una força superior a 50
select * from superhero where NOT (strong>50 or intelligence>50);
Operador IN
L'operador IN serveix per a comprovar si un valor està dins d'una seqüència de valors.
L'operador IN equival a concatenar diferents valors amb l'operador OR. Per exemple, la
sentència select … where valor IN (v1,v2,v3) equival a select … where valor=v1 or valor=v2 or valor=v3.
3 Per a tots els operadors lògics podem utilitzar la notació equivalent al llenguatge C, tot i que en el llenguatge SQL no és l'opció més
utilitzada.
Autor: Miquel Boada Pàgina 10 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Operador IN. Exemple
select * from superhero where planet IN ('Earth','Mars', 'Jupiter', 'Saturn');
Operador Like
En les consultes a bases de dades és habitual voler buscar la informació pel contingut parcial
d'una columna. Així, consultes com, tots els noms que comencen, contenen o finalitzen amb
una o vàries lletres són habituals. Quan cal realitzar consultes d'aquests tipus , l'opció més
viable és utilitzar l'operador «LIKE». Aquest operador comprova si els caràcters especificats
estan continguts en el camp.
S'utilitza el caràcter comodí % per a indicar 0 o molts caràcters. Així, per exemple, l'expressió
«ma%» està associada a totes les paraules que comencen per «ma». L'expressió %abc% està
associada a totes les paraules que contenen abc (abc) inclosa.
Tot i que és menys freqüent, podem utilitzar el caràcter '_' (guió baix) per a indicar un únic
caràcter.
Operador Like. Exemples
-- Tots els herois que el seu nom acabi amb 'man'
select * from superhero where nameh like '%man';
-- Tots els herois que tinguin una 'i' en el seu nom i assignat un planeta que començi per 'e'
select * from superhero
where nameh like '%i%' and planet like 'e%';
-- Tots els herois que el seu nom contingui les lletres 'i' i 'm' i acabi amb n
select * from superhero where nameh like '%i%m%n';
-- Tots els herois que el seu nom comenci per 'i' i tingui una longitud de 2 caràcters
select * from superhero where nameh like 'i_;
Autor: Miquel Boada Pàgina 11 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Precedència operadors
Un dels aspectes importants quan es fan consulta i que cal tenir en compte és la precedència
dels operadors, o sigui; quin és l'ordre que utilitza el llenguatge per a calcular els resultats
d'una clàusula where.
Tot i que en el llenguatge hi ha molts més operadors , en aquest document es mostren aquells
que són més habituals en les consultes ordenats pel seu ordre d'execució. Es pot trobar la
llista completa d'operadors a la plana: http://dev.mysql.com/doc/refman/5.7/en/operator-
precedence.html
1. *, /, DIV, %, MOD
2. -, +
3. = (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
4. BETWEEN, CASE, WHEN, THEN, ELSE
5. NOT
6. AND, &&
7. OR, ||
8. = (assignment), :=
En el següent vídeo es mostra la importància de la precedència dels operadors utilitzant els
operador «AND» i «OR». Com es pot veure en el vídeo, els resultats difereixen segons com es
faci la consulta: https://youtu.be/YDp-CUgT7SE
Valor NULL
El valor «NULL» és un valor especial del llenguatge SQL que s'utilitza per a indicar que el valor
d'un camp és desconegut, o sigui; no se li pot assignar cap valor ja que no el sabem. Per
exemple, en una base de dades d'una empresa concessionàira hi ha una taula «vehicle» amb la
informació dels cotxes que té a la venta. Els camps d'aquesta taula són: {bastidor (PK),
matrícula, color, model, marca}4
. Donat que la matrícula del cotxe és desconeguda fins que es
procedeixi a la venta i matriculació del cotxe, cal permetre el valor NULL (desconegut) com a
valor vàlid de camp. Tot i que l'utilització del valor NULL és un sistema molt vàlid per a indicar
la situació «desconeguda», aquest valor té una incidència directe en les consultes i cal tenir-lo
present.
Cal tenir present que el valor NULL no és un valor sobre el qual es puguin realitzar operacions.
Si es fa una operació amb valor NULL el resultat sempre és NULL. Podeu executar aquestes
instruccions per a comprovar-ho
4 S'han posat només alguns valors a mode d'exemple.
Autor: Miquel Boada Pàgina 12 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
-- Operacions amb valor NULL
select 3+NULL;
select NULL/0;
select 30*NULL;
select 5%NULL;
En el nostre exemple el camp «planet» permet valor NULL.
IS NULL / IS NOT NULL
L'expressió «IS NULL» és una expressió especial que ens permet comprovar si el valor d'un
camp és conegut o desconegut, o sigui; té valor NULL. Cal tenir en compte que la sentència
select … where nomCamp=NULL no funciona ja que no hi ha dos NULL iguals! Teniu una
demostració en el següent vídeo: https://youtu.be/uxUEEtk0Dqk
De la mateixa forma que utilitzem l'operador «IS NULL» podem utilitzar l'operador «IS NOT
NULL» per a descartar els valors NULL de la nostra consulta.
Cal tenir en compte quan es combina el valor NULL amb els operadors AND o OR, ja que
poden canviar el significat de la nostra consulta. Com s'observa en les taules de veritat TRUE
AND NULL s'evalua a NULL, la qual cosa fa que no es retorni cap resultat. Per aclarir aquest
concepte podeu consultar el següent vídeo: https://youtu.be/DszlkDqnw8I
IS NULL / IS NOT NULL. Exemples
-- Obtenir tota la informació de tots els herois que tenen assignat un planeta «desconegut»
select * from superhero where planet is null;
-- Obtenir tota la informació de tots els herois que NO tenen assignat un planeta «desconegut»
select * from superhero where planet is not null;
Distinct
Quan es seleccionen columnes i s'obtenen les files associades a les mateixes hi ha la
possibilitat que es mostrin registres duplicats. Amb l'ordre «distinct» podem evitar de forma
simple aquesta duplicació de dades.
El format de la comanda és:
select distinct col1 [,col2] … from taula
És important observar com l'ordre «distinct» es pot aplicar a més d'una columna. Cal tenir
present, però , que només actua quan totes les columnes incloses en el select tenen el mateix
valor: How distinct works (video)
Autor: Miquel Boada Pàgina 13 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Order by
Quan es fa una consulta es poden ordenar els resultats de forma ascendent o descendent per
un o varis camps. En el cas de combinar varis camps, l'ordre pot ser ascendent per una sèrie
de camps i descendent pels altres. Utilitzem «ASC» quan es vulgui ordenar de forma ascendent
(de més petit a més gran) i DESC quan es vulgui fer de forma descendent (de més gran a més
petit)
La instrucció que utilitzem per a ordenar els registres és «order by» i la seva sintaxis dins la
instrucció «select» és:
select columnes from taula where condició order by col1 [ASC|DESC] [,col2 [ASC|DESC]]...
Order by. Exemples
-- Obtenir tots els herois ordenats per la seva força ( de - a + )
select * from superhero order by strong; -- ordre per defecte ASC
-- Obtenir tots els herois de més a menys intel·ligents. Si tenen la mateixa intel·ligència,
-- el segon criteri és per la força. També de més a menys.
select * from superhero order by intelligence DESC, strong DESC;
-- Obtenir tots els herois que tinguin més intel·ligència que força. Ordenar els resultats per
-- la intel·ligència (primer els més intel·ligents). Si tenen la mateixa intel·ligència
-- per força (primer els més dèbils).
select * from superhero where intelligence>strong
order by intelligence DESC, strong;
Autor: Miquel Boada Pàgina 14 de 15
Desenvolupament aplicacions multiplataforma (DAM)
Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL
Tema 3 – Consultes simples
Webgrafia
http://dev.mysql.com/doc/refman/5.7/en/select.html
http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html
http://dev.mysql.com/doc/refman/5.7/en/operator-precedence.html
Autor: Miquel Boada Pàgina 15 de 15

More Related Content

More from Miquel Boada Artigas

Configuració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerConfiguració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerMiquel Boada Artigas
 
Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Miquel Boada Artigas
 
Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Miquel Boada Artigas
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Miquel Boada Artigas
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Miquel Boada Artigas
 
Transformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalTransformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalMiquel Boada Artigas
 
Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Miquel Boada Artigas
 
Introducció bases de dades distribuides
Introducció bases de dades distribuidesIntroducció bases de dades distribuides
Introducció bases de dades distribuidesMiquel Boada Artigas
 
Introducció bases de dades centralitzades
Introducció bases de dades centralitzadesIntroducció bases de dades centralitzades
Introducció bases de dades centralitzadesMiquel Boada Artigas
 
Sistemes gestors de bases de dades
Sistemes gestors de bases de dadesSistemes gestors de bases de dades
Sistemes gestors de bases de dadesMiquel Boada Artigas
 
Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)Miquel Boada Artigas
 

More from Miquel Boada Artigas (19)

Configuracio servei dns_linux
Configuracio servei dns_linuxConfiguracio servei dns_linux
Configuracio servei dns_linux
 
Configuracio servei dns Windows
Configuracio servei dns WindowsConfiguracio servei dns Windows
Configuracio servei dns Windows
 
Configuració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows ServerConfiguració d'un sistema d'auditoria amb Windows Server
Configuració d'un sistema d'auditoria amb Windows Server
 
Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.Monitorització en sistemes informàtics. Windows i Linux.
Monitorització en sistemes informàtics. Windows i Linux.
 
Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.Creació de taules amb integritat referencial.
Creació de taules amb integritat referencial.
 
Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.Creació de base de dades utilitzant llenguatge SQL.
Creació de base de dades utilitzant llenguatge SQL.
 
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
Instal·lació MySQL Server i Workbench. Creació de base de dades. Tipus de dad...
 
Model relacional i normalització
Model relacional i normalitzacióModel relacional i normalització
Model relacional i normalització
 
Transformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacionalTransformació model entitat-relació al model relacional
Transformació model entitat-relació al model relacional
 
Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)Model entitat relació extès (Extended Entity Relationship)
Model entitat relació extès (Extended Entity Relationship)
 
Model entitat relació (ER)
Model entitat relació (ER)Model entitat relació (ER)
Model entitat relació (ER)
 
Introducció bases de dades distribuides
Introducció bases de dades distribuidesIntroducció bases de dades distribuides
Introducció bases de dades distribuides
 
Introducció bases de dades centralitzades
Introducció bases de dades centralitzadesIntroducció bases de dades centralitzades
Introducció bases de dades centralitzades
 
Sistemes gestors de bases de dades
Sistemes gestors de bases de dadesSistemes gestors de bases de dades
Sistemes gestors de bases de dades
 
Emmagatzematge de la informació
Emmagatzematge de la informacióEmmagatzematge de la informació
Emmagatzematge de la informació
 
Història de les bases de dades
Història de les bases de dadesHistòria de les bases de dades
Història de les bases de dades
 
Model relacional i formes normals
Model relacional i formes normalsModel relacional i formes normals
Model relacional i formes normals
 
Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)Entity-Relationship Model - Model Entitat Relació (ER)
Entity-Relationship Model - Model Entitat Relació (ER)
 
Introducció a les bases de dades
Introducció a les bases de dadesIntroducció a les bases de dades
Introducció a les bases de dades
 

Recently uploaded

ELS DÉUS DE LA MITOLOGIA GREGA (Catalán).pdf
ELS DÉUS DE LA MITOLOGIA GREGA (Catalán).pdfELS DÉUS DE LA MITOLOGIA GREGA (Catalán).pdf
ELS DÉUS DE LA MITOLOGIA GREGA (Catalán).pdfMarinaRiera1
 
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfISMAELALVAREZCABRERA
 
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfISMAELALVAREZCABRERA
 
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATMECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATLasilviatecno
 
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdfESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdfErnest Lluch
 
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,Lasilviatecno
 
Sílvia_López_Competic3_bloc000002_C8.pdf
Sílvia_López_Competic3_bloc000002_C8.pdfSílvia_López_Competic3_bloc000002_C8.pdf
Sílvia_López_Competic3_bloc000002_C8.pdfsilvialopezle
 
Plans Estudi per Especialitats - El Musical
Plans Estudi per Especialitats - El MusicalPlans Estudi per Especialitats - El Musical
Plans Estudi per Especialitats - El Musicalalba444773
 
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxXARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxCRIS650557
 

Recently uploaded (11)

ELS DÉUS DE LA MITOLOGIA GREGA (Catalán).pdf
ELS DÉUS DE LA MITOLOGIA GREGA (Catalán).pdfELS DÉUS DE LA MITOLOGIA GREGA (Catalán).pdf
ELS DÉUS DE LA MITOLOGIA GREGA (Catalán).pdf
 
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
 
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdfESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
ESCOLA MEDITERRÀNIA revista Sant Jordi 2024__MOSTRA (1).pdf
 
itcs - institut tècnic català de la soldadura
itcs - institut tècnic català de la soldaduraitcs - institut tècnic català de la soldadura
itcs - institut tècnic català de la soldadura
 
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERATMECANISMES I CINEMÀTICA 1r DE BATXILLERAT
MECANISMES I CINEMÀTICA 1r DE BATXILLERAT
 
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdfESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
ESCOLAERNESTLLUCHINFORME_BAREM_RESOLTES_BAREM.pdf
 
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
SISTEMA DIÈDRIC. PLANS, PAREL·LELISME,PERPENDICULARITAT,
 
Sílvia_López_Competic3_bloc000002_C8.pdf
Sílvia_López_Competic3_bloc000002_C8.pdfSílvia_López_Competic3_bloc000002_C8.pdf
Sílvia_López_Competic3_bloc000002_C8.pdf
 
Plans Estudi per Especialitats - El Musical
Plans Estudi per Especialitats - El MusicalPlans Estudi per Especialitats - El Musical
Plans Estudi per Especialitats - El Musical
 
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptxXARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
XARXES UBANES I LA SEVA PROBLEMÀTICA.pptx
 
HISTÒRIES PER A MENUTS II. CRA Serra del Benicadell.pdf
HISTÒRIES PER A MENUTS II. CRA  Serra del Benicadell.pdfHISTÒRIES PER A MENUTS II. CRA  Serra del Benicadell.pdf
HISTÒRIES PER A MENUTS II. CRA Serra del Benicadell.pdf
 

Consultes simples mitjançant llenguatge SQL. Filtres, ordenació i aplicació de fòrmuleso

  • 2. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Objectius 1. Realització de consultes en una taula Coneixements previs • Model Entitat-Relació. • Model relacional. • Transformació del model Entitat-Relació al model relacional. • Sistemes gestors de bases de dades (SGBD). • Creació de base de dades. • Creació de taules. Requisits previs • Ordinador amb MySQL server instal·lat. • Client MySQL server (MySQL Workbench per la representació gràfica). • Connexió al servidor des del client • Una base de dades creada. Autor: Miquel Boada Pàgina 2 de 15
  • 3. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples SQL - Select Consultes simples.....................................................................................................................................1 Objectius....................................................................................................................................................2 Coneixements previs................................................................................................................................2 Requisits previs.........................................................................................................................................2 Introducció................................................................................................................................................4 Select sintaxis............................................................................................................................................5 Consultes «simples».................................................................................................................................6 select_expr...........................................................................................................................................6 Consultes per camps. Exemples........................................................................................................6 Utilització operacions. Exemples.......................................................................................................7 Utilització funcions. Exemples...........................................................................................................7 Funcions no agregades..................................................................................................................7 Exemples funcions no agregades.............................................................................................8 Funcions agregades........................................................................................................................8 Exemples funcions agregades..................................................................................................8 Filtres....................................................................................................................................................9 Operadors en els filtres..................................................................................................................9 Operadors. Exemples................................................................................................................9 Operadors lògics...........................................................................................................................10 Operadors lògics. Exemples....................................................................................................10 Operador IN..................................................................................................................................10 Operador IN. Exemple.............................................................................................................11 Operador Like...............................................................................................................................11 Operador Like. Exemples........................................................................................................11 Precedència operadors................................................................................................................12 Valor NULL.....................................................................................................................................12 IS NULL / IS NOT NULL............................................................................................................13 IS NULL / IS NOT NULL. Exemples.....................................................................................13 Distinct...........................................................................................................................................13 Order by.............................................................................................................................................14 Order by. Exemples......................................................................................................................14 Webgrafia................................................................................................................................................15 Autor: Miquel Boada Pàgina 3 de 15
  • 4. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Introducció. Un dels objectius principals de la implementació d'una base de dades és la gestió de la informació. Per a gestionar la informació és precís poder-la localitzar de forma eficient. Cal tenir en compte que durant el procés de normalització s'ha dividit la informació en múltiples taules. Una de les opcions importants que s'hauran de realitzar serà la de tornar a unir aquesta informació per a tenir una visió global o relacionada de la mateixa. Per a consultar la informació utilitzant el llenguatge SQL (Standard Query Language) disposem de la instrucció «select». Per a realitzar les diferents consultes es partirà del següent model ER i la seva conversió al model físic. create database dbheros; use dbheros; create table superhero( nameh varchar(40), planet varchar(20) , intelligence decimal(4,2) not null, strong decimal(4,2) not null, primary key(nameh) ) engine=innodb; La informació emmagatzemada en aquesta taula serà el resultat de l'execució de les següents instruccions. insert into superhero values ("Superman","earth",round(rand()*100,2),round(rand()*100,2)), ("Batman","earth",round(rand()*100,2),round(rand()*100,2)), ("Spiderman","earth",round(rand()*100,2),round(rand()*100,2)), ("Thor","earth",round(rand()*100,2),round(rand()*100,2)), ("Hal Jordan",NULL,round(rand()*100,2),round(rand()*100,2)), ("Wonder Woman","earth",round(rand()*100,2),round(rand()*100,2)), ("Captain America",NULL,round(rand()*100,2),round(rand()*100,2)), ("Martian Manhunter","Mars",round(rand()*100,2),round(rand()*100,2)); Autor: Miquel Boada Pàgina 4 de 15
  • 5. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Select sintaxis La instrucció «select» ens permet realitzar consultes en una base de dades. Les opcions més utilitzades d'aquesta instrucció són: SELECT [ALL | DISTINCT ] [HIGH_PRIORITY] [STRAIGHT_JOIN] select_expr [, select_expr ...] [FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... ] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}]] En essència, la instrucció select ens permet obtenir el valor associat a diferents columnes o camps d'una o vàries taules. Les taules que es consultin no han d'estar obligatòriament en la mateixa taula. Autor: Miquel Boada Pàgina 5 de 15
  • 6. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Consultes «simples» El format de la consulta més simple, on intervingui almenys una taula, està composat per la sentència: Select select_expr1 [,select_expr2] … from table ; select_expr L'expressió «select_expr » es pot substituir per a qualsevol de les següents alternatives: nom_camp: obtenir la informació d'un camp de la taula. Els diversos camps es separaran mitjançant una coma. Si el nom del camp conté espais1 s'ha d'incloure entre els símbols de ` (accent obert) o bé " (cometes dobles). * : obtenir la informació de tots els camps de la taula camp operació camp : resultat d'aplicar un determinat càlcul a dos camps. funció(camp) : resultat d'aplicar una determinada funció a un camp. Consultes per camps. Exemples use dbheros; -- Obtenir el nom de tots els superherois de la base de dades select nameh from superhero; -- Obtenir el nom i el planeta on resideixen tots els herois select nameh, planet from superhero; -- Obtenir el nom , la força i la intel·ligència de cada un dels superherois select nameh, strong, intelligence from superhero; -- Obtenir totes les dades de tots els superherois select * from superhero; Si una sentència «select» és molt llarga, es recomana escriure-la utilitzant diverses línies per a millorar la legibilitat. Cal tenir en compte que el llenguatge SQL ignora totes les tabulacions, espais sobrers (2 o més espais seguits) i salts de línia. A mode il·lustratiu en la tercera consulta d'exemple s'ha introduït un salt de línia tot i que en aquest cas no era necessari. 1 Per a millor comoditat és preferible no utilitzar espais en blanc en els noms dels camps. Autor: Miquel Boada Pàgina 6 de 15
  • 7. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Utilització operacions. Exemples És habitual que algunes vegades es vulgui realitzar alguna operació o càlcul entre dues dades d'un mateix registre. Els operadors matemàtics que es disposen en el llenguatge SQL són els habituals en la majoria dels llenguatges: + , - , / , * (multiplicació), % (mòdul). Quan es realitza un càlcul entre 2 o més camps d'una taula podem associar un nom a aquest càlcul. Aquest nom es podrà utilitzar posteriorment per a referenciar el càlcul i simplificar la instrucció resultant. L'associació es farà utilitzant la paraula «AS». Si el nom que volem assignar conté espais utilitzarem " cometes dobles o bé ` (accent obert). -- Obtenir el nom del superheroi i la proporció entre la força i la intelligència -- de cada un dels superherois select nameh, strong/intelligence from superhero; -- Obtenir el nom del superheroi i la proporció entre la força i -- la intelligència de cada un dels superherois. – Associar el nom "proporcio" al resultat de l'operació select nameh, strong/intelligence as proporcio from superhero; -- Obtenir el nom del superheroi i la proporció entre la força i la intelligència -- de cada un dels superherois. -- Associar el nom "proporcio força i intel·ligencia" al resultat de l'operació select nameh, strong/intelligence as "proporcio força i intel·ligencia" from superhero; Utilització funcions. Exemples De forma semblant a la d'una fulla de càlcul, podem utilitzar funcions per a realitzar càlculs o transformacions amb els camps d'una taula. El llenguatge SQL diferencia dos tipus de funcions: 1. Funcions no agregades 2. Funcions agregades Funcions no agregades Les funcions no agregades són aquelles funcions que tracten cada fila de forma individual. Si s'aplica la funció a una consulta de 100 registres, el resultat seran 100 registres amb el valor del camp calculat. Autor: Miquel Boada Pàgina 7 de 15
  • 8. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Exemples funcions no agregades -- Obtenir el nom del superheroi i la proporció entre la força i la intelligència de cada un dels superherois. -- El càlcul de la proporció ha de ser a 2 decimals. select nameh, round(strong/intelligence,2) as proporcio from superhero; -- Mostrar en percentatge la proporció entre la força i la intel·ligència. select nameh, concat(round(strong/intelligence*100,2)," %") from superhero; Funcions agregades Les funcions agregades són aquelles que agrupen totes les files d'una consulta obtenint un únic resultat; el seu resultat és una única fila amb el resultat demanat. Per exemple, «sum» (sumatori), «count» (total de files), «avg» (mitjana) són funcions agregades. Exemples funcions agregades -- Obtenir el total d'herois introduïts en la taula select count(*) from superhero; -- Obtenir la mitjana de força i d'intel·ligència de tots els herois select avg(strong) as "mitjana força", avg(intelligence) as "mitjana intel·ligència" from superhero; Podeu obtenir el llistat complet d'operacions i funcions en l'URL del producte oficial: http://dev.mysql.com/doc/refman/5.7/en/functions.html Autor: Miquel Boada Pàgina 8 de 15
  • 9. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Filtres. Quan es realitzen consultes a les taules moltes vegades es precisa obtenir la informació d'un subconjunt del total de registres que conté la taula. Quan es dóna aquesta situació s'aplica un filtre. L'aplicació dels filtres es realitza amb la clàusula «where» (on). Quan en els filtres es volen referenciar valors alfanumèrics fixes, cal incloure aquest valor entre cometes simples ( 'caràcters ' ). Operadors en els filtres Alguns dels operadors de comparació que podem usar en els filtres de les consultes són: v1=v2 : v1 i v2 han de tenir el mateix valor per tal que la condició sigui certa. v1>v2 : v1 ha de ser més gran que v2 per tal que la condició sigui certa. v1<v2 : v1 ha de ser més petit que v2 per tal que la condició sigui certa. v1>=v2 : v1 ha de ser més gran o igual a v2 per tal que la condició sigui certa. v1<=v2 : v1 ha de ser més petit o igual a v2 per tal que la condició sigui certa. v1<>v22 : v1 i v2 han de tenir valors diferents per tal que la condició sigui certa. v1 between min and max : el resultat és cert si el valor de v1 és més gran o igual a min i més petit o igual a max. IN (valor1[, valor2 ]...) v1 LIKE v2 En els filtres es poden utilitzar també funcions o operacions. En aquest cas el més normal és incloure l'operació o la funció en la clausula where. Operadors. Exemples -- Obtenir totes les dades de "batman" select * from superhero where nameh='batman'; -- Obtenir totes les dades de tots els herois que el seu nom no sigui batman select * from superhero where nameh<>'batman'; -- Obtenir el nom de tots els herois que tinguin una força superior a 20 select nameh from superhero where strong>20; -- Total d'intel·ligència de tots els herois que tenen més força que intel·ligència select sum(intelligence) from superhero where strong>intelligence; -- Obtenir el nom de tots els herois que tinguin el doble o més de força que d'intel·ligència select nameh from superhero where strong/intelligence>=2; -- Obtenir el nom de tots els herois que tinguin una força entre 1 i 5 ambdós inclosos select nameh from superhero where strong between 1 and 5; 2 També es pot utilitzar l'operador != . Autor: Miquel Boada Pàgina 9 de 15
  • 10. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Operadors lògics Els operadors lògics permeten enllaçar diferents condicions. Els operadors lògics més comuns en el llenguatge SQL són: cond1 AND cond2 cond 1 OR cond2 NOT cond13 Cal tenir en compte que en el llenguatge SQL hi ha tres valors diferents que pot prendre una condició: TRUE, FALSE i el valor especial NULL . La taula de veritat per a cada un dels operadors lògics és: AND OR NOT TRUE FALSE NULL TRUE FALSE NULL TRUE TRUE FALSE NULL TRUE TRUE TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE NULL FALSE TRUE NULL NULL FALSE NULL NULL TRUE NULL NULL NULL NULL El tema de valors NULL es tracta posteriorment en aquest mateix document. Operadors lògics. Exemples -- Obtenir tota la informació de tots els herois que tenen el planeta earth assignat i que la seva -- força sigui superior a 50 select * from superhero where strong>50 and planet='earth'; -- Obtenir el nom dels herois que no es diguin Batman o que tinguin el planeta earth assignat select nameh from superhero where nameh<>'Batman' or planet='earth'; -- Obtenir totes les dades de tots dels herois amb una força o intel·ligència inferior a 50 -- i que tinguin el planeta 'earth' associat select * from superhero where (strong<50 or intelligence<50) and planet='earth'; -- Obtenir el nom de tots els herois que NO tinguin una intelligencia superior a 50 -- ni una força superior a 50 select * from superhero where NOT (strong>50 or intelligence>50); Operador IN L'operador IN serveix per a comprovar si un valor està dins d'una seqüència de valors. L'operador IN equival a concatenar diferents valors amb l'operador OR. Per exemple, la sentència select … where valor IN (v1,v2,v3) equival a select … where valor=v1 or valor=v2 or valor=v3. 3 Per a tots els operadors lògics podem utilitzar la notació equivalent al llenguatge C, tot i que en el llenguatge SQL no és l'opció més utilitzada. Autor: Miquel Boada Pàgina 10 de 15
  • 11. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Operador IN. Exemple select * from superhero where planet IN ('Earth','Mars', 'Jupiter', 'Saturn'); Operador Like En les consultes a bases de dades és habitual voler buscar la informació pel contingut parcial d'una columna. Així, consultes com, tots els noms que comencen, contenen o finalitzen amb una o vàries lletres són habituals. Quan cal realitzar consultes d'aquests tipus , l'opció més viable és utilitzar l'operador «LIKE». Aquest operador comprova si els caràcters especificats estan continguts en el camp. S'utilitza el caràcter comodí % per a indicar 0 o molts caràcters. Així, per exemple, l'expressió «ma%» està associada a totes les paraules que comencen per «ma». L'expressió %abc% està associada a totes les paraules que contenen abc (abc) inclosa. Tot i que és menys freqüent, podem utilitzar el caràcter '_' (guió baix) per a indicar un únic caràcter. Operador Like. Exemples -- Tots els herois que el seu nom acabi amb 'man' select * from superhero where nameh like '%man'; -- Tots els herois que tinguin una 'i' en el seu nom i assignat un planeta que començi per 'e' select * from superhero where nameh like '%i%' and planet like 'e%'; -- Tots els herois que el seu nom contingui les lletres 'i' i 'm' i acabi amb n select * from superhero where nameh like '%i%m%n'; -- Tots els herois que el seu nom comenci per 'i' i tingui una longitud de 2 caràcters select * from superhero where nameh like 'i_; Autor: Miquel Boada Pàgina 11 de 15
  • 12. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Precedència operadors Un dels aspectes importants quan es fan consulta i que cal tenir en compte és la precedència dels operadors, o sigui; quin és l'ordre que utilitza el llenguatge per a calcular els resultats d'una clàusula where. Tot i que en el llenguatge hi ha molts més operadors , en aquest document es mostren aquells que són més habituals en les consultes ordenats pel seu ordre d'execució. Es pot trobar la llista completa d'operadors a la plana: http://dev.mysql.com/doc/refman/5.7/en/operator- precedence.html 1. *, /, DIV, %, MOD 2. -, + 3. = (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN 4. BETWEEN, CASE, WHEN, THEN, ELSE 5. NOT 6. AND, && 7. OR, || 8. = (assignment), := En el següent vídeo es mostra la importància de la precedència dels operadors utilitzant els operador «AND» i «OR». Com es pot veure en el vídeo, els resultats difereixen segons com es faci la consulta: https://youtu.be/YDp-CUgT7SE Valor NULL El valor «NULL» és un valor especial del llenguatge SQL que s'utilitza per a indicar que el valor d'un camp és desconegut, o sigui; no se li pot assignar cap valor ja que no el sabem. Per exemple, en una base de dades d'una empresa concessionàira hi ha una taula «vehicle» amb la informació dels cotxes que té a la venta. Els camps d'aquesta taula són: {bastidor (PK), matrícula, color, model, marca}4 . Donat que la matrícula del cotxe és desconeguda fins que es procedeixi a la venta i matriculació del cotxe, cal permetre el valor NULL (desconegut) com a valor vàlid de camp. Tot i que l'utilització del valor NULL és un sistema molt vàlid per a indicar la situació «desconeguda», aquest valor té una incidència directe en les consultes i cal tenir-lo present. Cal tenir present que el valor NULL no és un valor sobre el qual es puguin realitzar operacions. Si es fa una operació amb valor NULL el resultat sempre és NULL. Podeu executar aquestes instruccions per a comprovar-ho 4 S'han posat només alguns valors a mode d'exemple. Autor: Miquel Boada Pàgina 12 de 15
  • 13. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples -- Operacions amb valor NULL select 3+NULL; select NULL/0; select 30*NULL; select 5%NULL; En el nostre exemple el camp «planet» permet valor NULL. IS NULL / IS NOT NULL L'expressió «IS NULL» és una expressió especial que ens permet comprovar si el valor d'un camp és conegut o desconegut, o sigui; té valor NULL. Cal tenir en compte que la sentència select … where nomCamp=NULL no funciona ja que no hi ha dos NULL iguals! Teniu una demostració en el següent vídeo: https://youtu.be/uxUEEtk0Dqk De la mateixa forma que utilitzem l'operador «IS NULL» podem utilitzar l'operador «IS NOT NULL» per a descartar els valors NULL de la nostra consulta. Cal tenir en compte quan es combina el valor NULL amb els operadors AND o OR, ja que poden canviar el significat de la nostra consulta. Com s'observa en les taules de veritat TRUE AND NULL s'evalua a NULL, la qual cosa fa que no es retorni cap resultat. Per aclarir aquest concepte podeu consultar el següent vídeo: https://youtu.be/DszlkDqnw8I IS NULL / IS NOT NULL. Exemples -- Obtenir tota la informació de tots els herois que tenen assignat un planeta «desconegut» select * from superhero where planet is null; -- Obtenir tota la informació de tots els herois que NO tenen assignat un planeta «desconegut» select * from superhero where planet is not null; Distinct Quan es seleccionen columnes i s'obtenen les files associades a les mateixes hi ha la possibilitat que es mostrin registres duplicats. Amb l'ordre «distinct» podem evitar de forma simple aquesta duplicació de dades. El format de la comanda és: select distinct col1 [,col2] … from taula És important observar com l'ordre «distinct» es pot aplicar a més d'una columna. Cal tenir present, però , que només actua quan totes les columnes incloses en el select tenen el mateix valor: How distinct works (video) Autor: Miquel Boada Pàgina 13 de 15
  • 14. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Order by Quan es fa una consulta es poden ordenar els resultats de forma ascendent o descendent per un o varis camps. En el cas de combinar varis camps, l'ordre pot ser ascendent per una sèrie de camps i descendent pels altres. Utilitzem «ASC» quan es vulgui ordenar de forma ascendent (de més petit a més gran) i DESC quan es vulgui fer de forma descendent (de més gran a més petit) La instrucció que utilitzem per a ordenar els registres és «order by» i la seva sintaxis dins la instrucció «select» és: select columnes from taula where condició order by col1 [ASC|DESC] [,col2 [ASC|DESC]]... Order by. Exemples -- Obtenir tots els herois ordenats per la seva força ( de - a + ) select * from superhero order by strong; -- ordre per defecte ASC -- Obtenir tots els herois de més a menys intel·ligents. Si tenen la mateixa intel·ligència, -- el segon criteri és per la força. També de més a menys. select * from superhero order by intelligence DESC, strong DESC; -- Obtenir tots els herois que tinguin més intel·ligència que força. Ordenar els resultats per -- la intel·ligència (primer els més intel·ligents). Si tenen la mateixa intel·ligència -- per força (primer els més dèbils). select * from superhero where intelligence>strong order by intelligence DESC, strong; Autor: Miquel Boada Pàgina 14 de 15
  • 15. Desenvolupament aplicacions multiplataforma (DAM) Mòdul 2 – Bases de dades - UF2 - llenguatges SQL: DML i DDL Tema 3 – Consultes simples Webgrafia http://dev.mysql.com/doc/refman/5.7/en/select.html http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html http://dev.mysql.com/doc/refman/5.7/en/operator-precedence.html Autor: Miquel Boada Pàgina 15 de 15