1
M
a
is
S
Q
L
2Ro t eir o
• Un iã o , in t er s eçã o , d ifer en ça
• Su b co n s u lt a s
• Agr ega çã o
• Va lo r es n u ll
Leit u r a d o livr o “SQL fo r Ner d s ”: cap ít u lo 4 , “Mo r e co m p lex q u er ies ”
3
Ren o m ea çã o d e Co lu n a s
SELECT Pn o m e ASn o m ePr o d, Pr eco ASp r eco Ven d a FROM Pr o d u t o WHERE Pr eco > 1 0 0 Pro d u t o $2 03 .9 9 t elevis ao $1 49 .9 9 cam er a p r eco Ven d a n o m ePr od Co n s u lt a co m r en o m eação Pro d u t o Hit ach i elet r on ico s $2 03 .99 t elevis ao Can o n fot ogr afia $1 49 .99 ca m era Far b er p a p elar ia $2 9.99 la p iseir a Far b er p a p elar ia $1 9.99 la p is Fa b rica n t e Cat ego ria
Pr eco PNom e 4
Un iã o , In t er s eçã o ,
Difer en ça
(SELECT n o m e FROM Pes s oaWHERE cid ad e= “Cu r it ib a”) UNION
(SELECT n o m e
FROM Pes s oa , Com p r a
WHERE co m p r ad o r = n o m e AND lo ja= “Po n t o Fr io ”) Da m es m a fo r m a, vo cê p o d e u s ar INTERSECT e EXCEPT. Os t ip o s / n o m es d o s at r ib u t o s d evem s er o s m es m o s . Cas o co n t r ár io : r en am e.
Co m p r a (co m p r ad o r , ven d ed or , lo ja, p r o d u t o ) Pes s o a(n o m e, t el, cid ad e)
5 (SELECT DISTINCT R.A
FROM R)
INTERSECT ( (SELECT S.A FROM S) UNION
(SELECT T.A FROM T))
6
Pa r a Co n s er va r Du p lica çõ es
(SELECT n o m e FROM Pes s oa
WHERE cid ad e= “Cu r it ib a”) UNION ALL
(SELECT n o m e
FROM Pes s oa , Com p r a
WHERE co m p r ad o r = n o m e AND lo ja= “Po n t o Fr io ”) Co m p r a (co m p r ad o r , ven d ed o r , lo ja,
p r o d u t o )
Pes s o a(n o m e, t el, cid ad e)
7
Su b co n s u lt a s
Com p r a (com p r ad or , ven d ed or , loja, p r od u t o) Pes s oa(n om e, t el, cid ad e, cp f)
Um a s u b co n s u lt a p r o d u z in d o u m valo r ú n ico :
Nes t e cas o , a s u b co n s u lt a r et o r n a u m ú n ico
valo r .
Se r et o r n ar m ais d e u m ,
er r o em t em p o d e
execu ção .
SELECT Co m p r a.p r o d u t o FROM Co m p r a WHERE co m p r ad o r = (SELECT n o m e FROM Pes s o a WHERE cp f = ‘1 2 3 4 5 6 7 8 9 ‘); 8Co m p r a (co m p r ad o r , ven d ed or , lo ja, p r o d u t o ) Pes s o a(n o m e, t el, cid ad e, cp f)
A m es m a con s u lt a p o d e s er es cr it a s em u s ar s u b co n s u lt a:
Es t a co n s u lt a é eq u ivalen t e a an t er io r s e cp f fo r u m a ch ave e a ch ave ‘1 2 3 4 5 6 7 8 9 ’ exis t ir n a b as e d e d ad o s ; cas o co n t r ár io s ão d ifer en t es .
SELECT Com p r a.p r o d u t o FROM Com p r a, Pes s o a
9
Su b con s u lt as q u e r et or n am
r elações
SELECT Com p an h ia.n o m e FROM Com p an h ia, Pr o d u t o
WHERE Com p an h ia.n u m Cia= Pr o d u t o .fab r ican t e AND Pr o d u t o.n o m e IN
(SELECT Co m p r a.p r o d u t o FROM Com p r a
WHERE Com p r a.co m p r ad o r = ‘Jo ao ‘); En co n t r e o n o m e d as co m p an h ias q u e fab r icam p r od u t o s co m p r ad o s p o r 'Jo ao '.
Es t a s u b co n s u lt a r et o r n a u m co n ju n t o d e valo r es . Não o co r r er ão m ais er r o s em t em p o d e execu ção.
Pr o d u t o (n om e, p r eco , cat ego r ia, fab r ican t e) Co m p an h ia (n u m Cia, n o m e, valo r Acao , p ais ) Co m p r a (co m p r ad o r , ven d ed or , lo ja, p r o d u t o )
1 0
Su b con s u lt as q u e r et or n am
r elações
SELECT Com p an h ia.n o m e
FROM Com p an h ia, Pr o d u t o , Com p r a
WHERE Com p an h ia.n u m Cia = Pr o d u t o .fab r ican t e AND Pr o d u t o.n o m e = Co m p r a.p r od u t o AND Co m p r a.com p r ad o r = ‘Jo ao ’
Eq u ivalen t e a:
Es t a co n s u lt a é eq u ivalen t e a an t er io r ?
Ten h a cu id ad o co m d u p licaçõ es !
1 1
Evit a n d o d u p lica çõ es
SELECT Com p an h ia.n om e
FROM Com p an h ia, Pr od u t o, Com p r a
WHERE Com p an h ia.n u m Cia= Pr od u t o.fabr ican t e AND Pr od u t o.n o m e = Co m p r a.p r od u t o AND Com p r a.com p r ad or = ‘Jo ao’
Multip las cóp ias
Um a cóp ia SELECT DISTINCT Com p an h ia.n om e
FROM Com p an h ia, Pr od u t o, Com p r a
WHERE Com p an h ia.n u m Cia= Pr od u t o.fabr ican t e AND Pr od u t o.n o m e = Co m p r a.p r od u t o AND Com p r a.com p r ad or = ‘Jo ao’
1 2
Rem o ven d o Du p lica çõ es
Ago r a elas s ão eq u ivalen t es SELECT DISTINCT Com p an h ia.n om e
FROM Com p an h ia, Pr od u t o, Com p r a
WHERE Com p an h ia.n u m Cia= Pr od u t o.fabr ican t e AND Pr od u t o.n o m e = Co m p r a.p r od u t o AND Com p r a.com p r ad or = ‘Jo ao’
SELECT DISTINCT Com p an h ia.n om e
FROM Com p an h ia, Pr od u t o
WHERE Com p an h ia.n u m Cia= Pr od u t o.fab r ican t e AND Pr od u t o.n om e IN
(SELECT Com p r a.p r od u t o FROM Com p r a
WHERE Com p r a.com p r ad or = ‘Joao‘);
1 3
Su b con s u lt as q u e r et or n am
r elações
SELECT n o m e FROM Pr o d u t o
WHERE p r eco > ALL (SELECT p r eco FROM Pr o d u t o
WHERE fab r ican t e= ‘Far b er ’) Pr o d u t o ( n o m e, p r eco , cat ego r ia, fab r ican t e) En co n t r e t od os o s p r o d u t o s q u e s ão m ais ca r o s q u e t o d os o s p r od u t o s fab r icad o s p ela “Far b er ”
Vo cê t am b ém p o d e u s ar : s > ALL R s > ANY R EXISTS R 1 4
INTERSECT e EXCEPT:
u t iliz a n d o EXISTS
(SELECT R.A, R.B FROM R) INTERSECT (SELECT S.A, S.B FROM S) SELECT R.A, R.B FROM R WHERE EXISTS(SELECT * FROM SWHERE R.A= S.A a n d R.B= S.B)
(SELECT R.A, R.B FROM R) EXCEPT (SELECT S.A, S.B FROM S) SELECT R.A, R.B FROM R WHERE
NOT EXISTS(SELECT * FROM S
WHERE R.A= S.A a n d R.B= S.B)
1 5
Co n d içõ es em Tu p la s
SELECT DISTINCT Co m p an h ia.n o m e FROM Co m p an h ia, Pr o d u t o
WHERE Com p an h ia.n u m Cia = Pr o d u t o .fab r ican t e AND (Pr o d u t o .n o m e,p r eco ) IN
(SELECT Com p r a.p r o d u t o , Co m p r a.p r eco ) FROM Co m p r a
WHERE Com p r a.co m p r a d o r = “Jo ao ”); Pr o d u t o (n o m e, p r eco , cat ego r ia, fab r ican t e) Co m p an h ia (n u m Cia, n o m e, valo r Acao , p ais ) Co m p ra (co m p r ad o r , ven d ed or , lo ja, p r o d u t o , p r eco)
1 6
Co n s u lt a s Co r r ela cio n a d a s
SELECTDISTINCT t it u lo FROM Film e AS x WHERE a n o < > ANY (SELECT an o FROM Film e WHERE t it u lo = x.t it u lo ); Film e (t it u lo , an o , d ir et or , d u r acao)En co n t r e o s film es cu jo t ít u lo ap ar eça m ais d e u m a vez ..
No t e :
(1 ) es co p o d as var iáveis
(2 ) p o d e s er es cr it o co m u m ú n ico SFW
1 7 8 0
Rich a rd Lin kla t er 20 04
b efor e s u n s et
10 5 Rich a rd Lin kla t er 19 95 b efor e s u n r is e 10 6 Pet er Ch els om 20 04 s h a ll we d a n ce 13 6 Ma s s ayu ki Su o 19 96 d u r aca o d ir et or an o t it u lo s h all we d an ce Film e SELECTDISTINCT t it u lo FROM Film e AS x WHERE a n o < > ANY (SELECT a n o FROM Film e WHERE t it u lo = x.t it u lo ); 1 8
Co n s u lt a s Co m p lexa s
Co r r ela cio n a d a s
Pr o d u t o ( n o m e, p r eco , cat ego r ia, fab r ican t e, an o )
• En con t r e os p r od u t os (e s eu s fab r ican t es ) q u e s ão m ais car o s q u e t o d o s o s p r o d u t o s feit o s p elo m es m o fab r ican t e an t es d e 1 9 7 2 .
SELECT DISTINCT n o m e, fa b r ica n t e FROM Pr o d u t o AS x
WHERE p r eco > ALL (SELECT p r eco FROM Pr o d u t o AS y
WHERE x.fa b r ica n t e = y.fa b r ica n t e AND y.a n o < 1 9 7 2 );
1 9
Divis ã o
Pr o d u t o ( n o m e, p r eco , cat ego r ia, fab r ican t e) Co m p r a (co m p r ad o r , ven d ed or , lo ja, p r o d u t o )
• En con t r e as p es s oas q u e com p r ar am t od os os p r od u t os cad as t r ad o s .
SELECT DISTINCT co m p r a d o r FROM Co m p r a AS c1
WHERE NOT EXISTS ((SELECT n o m e FROM Pr o d u t o ) EXCEPT (SELECT p r o d u t o FROM Co m p r a c2
WHERE c1 .co m p r a d o r = c2 .co m p r a d o r ))
Ver ifica s e o co n ju n t o d e p r o d u t o s co m p r ad o s p o r u m a p es s o a in clu i t o d o s o s p r o d u t o s exis t en t es .
2 0
Divis ã o – s em u t iliz a r EXCEPT
Pr o d u t o ( n o m e, p r eco , cat ego r ia, fab r ican t e) Co m p r a (co m p r ad o r , ven d ed or , lo ja, p r o d u t o )
• En con t r e as p es s oas q u e com p r ar am t od os os p r od u t os cad as t r ad o s .
SELECT DISTINCT co m p r a d o r FROM Co m p r a AS c1
WHERE NOT EXISTS (SELECT n o m e
FROM Pr o d u t o AS p WHERE NOT EXISTS (SELECT p r o d u t o FROM Co m p r a c2
WHERE c1 .co m p r a d o r = c2 .co m p r a d o r AND p .n o m e = c2 .p r o d u t o ))
Ver ifica s e n ão exis t e n en h u m p r od u t o q u e n ão t en h a s id o co m p r ad o p o r u m a p es s oa .
2 1
Exer cício s
Pr o d u t o (p n o m e, p r eco , cat ego r ia, fab r ican t e) Co m p r a (co m p r ad o r , ven d ed o r , lo ja, p r o d u t o ) Co m p an h ia (cn om e, valo r Acao , p ais )
Pes s o a (n o m ePes s , t el, cid ad e)
Ex #6 : En con t r e t od as as p es s oas q u e com p r ar am p r od u t os jap on es es , m as q u e n ão com p r ar am p r od u t os b r as ileir os .
Ex #7 : En con t r e o n om e d as p es s oas q u e com p r ar am p r od u t os jap on es es e br as ileir os .
Ex #8 : En con t r e o n om e e a cid ad e on d e m or am p es s oas q u e s ão as ú n icas m o r ad or as d es t a cid ad e cad as t r ad as n o s is t em a.
Ex #9 : En con t r e o n om e d as p es s oas q u e t en h am ou t r os m or ad or es d a m es m a cid ad e cad as t r ad os n o s is t em a.
Car r egar o b an co d e d ad o s “BDPro d u t o ”
2 2
Agr ega çã o
SELECT Avg(p r eco ) FROM Pr o d u t o
WHERE fab r ican t e= “Toyo t a”
SQL d á s u p o r t e a d iver s as o p er açõ es d e agr egação : SUM, MIN, MAX, AVG, COUNT
2 3
Agr ega çã o : Co u n t
SELECT Co u n t (*) FROM Pr o d u t o WHERE an o > 1 9 9 5 Co m exceção d e COUNT, t o d as as o u t r as op er a çõ es d e agr egação ap licam - s e a u m ú n ico at r ib u t o .2 4
Agr ega çã o : Co u n t
COUNT co n s id er a d u p licaçõ es a n ão s er q u e s eja exp licit am en t e d efin id o p ar a n ão co n s id er á- las . SELECT Co u n t (cat ego r ia) o m es m o q u e Co u n t (*)
FROM Pr o d u t o WHERE an o > 1 9 9 5 As s im é m elh o r :
SELECT Co u n t (DISTINCT cat ego r ia) FROM Pr o d u t o
2 5
Agr ega çã o Sim p les
Co m p r a(p r o d u t o , d at a , p r eco , q u an t id ad e)
Exem p lo 1 : en co n t r e o t ot al d e ven d as d e t o d a a b as e d e d ad o s .
SELECT Su m (p r eco * q u an t id ad e) FROM Com p r a
Exem p lo 1 ’: en co n t r e o t o t al d e ven d as d e leit e SELECT Su m (p r eco * q u an t id ad e)
FROM Com p r a WHERE p r o d u t o = ‘leit e’
2 6
Agr ega çõ es Sim p les
Co m p r a Pr o d u t o Da t a Pr eco Qu an t id a d e leit e 2 0 / 1 0 0 .8 5 2 0 b an an a 2 2 / 1 0 0 .5 2 7 b an an a 1 9 / 1 0 0 .5 2 1 7 leit e 2 1 / 1 0 0 .8 5 1 5 2 7Agr u p a m en t o e Agr ega çã o
Ger alm en t e, n ó s q u er em os agr egar algu m as p ar t es d a r elação :
Co m p r a(p r o d u t o , d at a, p r eco , q u an t id ad e)
Exam p le 2 : e n c o n tre o to tal d e v e n das p o r p ro d u to ap ó s 1 / 1 0 .
SELECT p r o d u t o , Su m (p r eco *q u an t id ad e) AS ven d aTo t al FROM Co m p r a
WHERE d at a > “1 / 1 0 ” GROUPBY p r o d u t o
Vam o s ver o q u e is t o s igin ifica...
2 8
Agr u p a m en t o e Agr ega çã o
1 . Execu t e as cláu s u las FROM e WHERE.
2 . Agru p e as lin h as p elo valor d os at r ib u t o s em GROUPBY 3 . Selecio n e u m a t u p la em cad a gr u p o e ap liq u e a o p er ação d e agr egação
SELECT p o d e t er (1 ) at r ib u t o s agr u p ad o s ou (2 ) aggr egad o s .
2 9
Pr im e ir o e xe cu t e a s clá u s u la s
FROM-WHERE (d a t a > “1 / 1 0 ”) e d e p o is
a gr u p e p o r p r o d u t o :
Pr o d u t o Dat a Pr eco Qu an t id ad e b an an a 1 9 / 1 0 0 .5 2 1 7 b an an a 2 2 / 1 0 0 .5 2 7 leit e 2 0 / 1 0 0 .8 5 2 0 leit e 2 1 / 1 0 0 .8 5 1 5 3 0Dep o is , ca lcu le a a gr ega çã o
p r od u t o ven d aTot al
leit e $ 2 9 .7 5 b an an a $ 1 2 .4 8
SELECT p r od u t o, Su m (p r eco*q u an t id ad e) AS ven d aTot al
FROM Com p r a WHERE d at a > “1/ 1 0” GROUPBY p r od u t o 3 1
GROUP BY v.s . Co n s u lt a s
An in h a d a s
SELECT DISTINCT x.p r o d u t o ,(SELECT Su m (y.p r eco *y.q u a n t id ad e) FROM Co m p r a y
WHERE x.p r o d u t o = y.p r o d u t o
AND y.d at a > ‘1 / 1 0 ’) as t o t al FROM Co m p r a x
WHERE x.d at a > “1 / 1 0 ”
SELECT p r o d u t o , Su m (p r eco *q u an t id ad e) AS ven d aTo t al FROM Com p r a
WHERE d at a > “1 / 1 0 ” GROUPBY p r o d u t o
3 2
Ou t r o Exem p lo
SELECT p r o d u t o , Su m (p r eco * q u an t id ad e) AS t o t alVen d a Ma x(q u an t id ad e) AS q t d eMax FROM Co m p r a
GROUP BY p r o d u t o
Par a cad a p r o d u t o , q u al o t o t al d e ven d a s e a m a ior q u a n t id ad e ven d id a?
Pr od u t o t ot a lVen d a q t d eMa x
b a n an a $ 1 2 .4 8 1 7
3 3
A Clá u s u la HAVING
SELECT p r o d u t o , Su m (p r eco * q u an t id ad e) FROM Com p r a WHERE d at a > “1 / 9 ” GROUPBY p r o d u t o HAVING Su m (q u an t id ad e) > 3 0 Qu al o t o t al d e ven d as p o r p r o d u t o , co n s id er an d o s o m en t e aq u eles q u e p elo m en o s 3 0 u n id ad es fo r am ven d id a s .A cláu s u la HAVING co n t ém co n d ições s ob r e agr egad o s .
3 4
A fo r m a ger a l p a r a
Agr u p a m en t o e Agr ega çã o
SELECT
S
FROM
R
1,…,R
nWHERE
C1
GROUP BY
a
1,…,a
kHAVING
C2
S = p o d e co n t e r a t r ib u t o s a1,…,ak e/ o u a gr ega d o s , m a s NÃO
PODE CONTER NENHUM OUTRO ATRIBUTO C1 = q u a lq u er co n d içã o s o b r e a t r ib u t o s d e R1,…,Rn
C2 = q u a lq u er co n d içã o s o b r e a gr ega d o s
Po r q u e ?
3 5
A fo r m a ger a l p a r a
Agr u p a m en t o e Agr ega çã o
SELECT S FROM R1,…,Rn WHERE C1 GROUP BY a1,…,ak HAVING C2 Pa s s o s d e a va lia çã o :8. Execu t e a p a r t e FROM- WHERE p a r t , e o b t en h a u m a r ela çã o co m t o d o s o s a t r ib u t o s em R1,…,Rn
9. Agr u p e p elo s a t r ib u t o s a1,…,ak
10. Ca lcu le o s a gr ega d o s em C2 e m a n t en h a a p en a s o s gr u p o s q u e s a t is fa z em C2 11. Ca lcu le o s a gr ega d o s em S e r et o r n e o r es u lt a d o 3 6
Agr ega çã o
Au t o r (id Au t o r , n o m e)
Do cu m e n t o (id Do c, t it u lo )
Au t o r ia (id Au t o r , id Do c)
Vo ca b u la r io (id Do c, p a la vr a )
3 7 Au t o r (id Au t o r ,n o m e ) Au t o r ia (id Au t o r , id Do c)• En co n t r e o s a u t o r es q u e es cr ever a m
p e lo m e n o s 1 0 d o cu m e n t o s :
• Ten t a t iva 1 : co m co n s u lt a a n in h a d a
SELECTDISTINCT Au t o r .n o m e FROM Au t o rWHERE co u n t (SELECT Au t o r ia.id Do c FROM Au t o r ia
WHERE Au t o r .id Au t o r= Au t o r .id Au t o r ) > 1 0 Co n s u lt a es cr it a p o r u m n o vat o 3 8 Au t o r (id Au t o r ,n o m e ) Au t o r ia (id Au t o r , id Do c)
• En co n t r e o s a u t o r es q u e es cr ever a m
p e lo m e n o s 1 0 d o cu m e n t o s :
• Ten t a t iva 2 : co m GROUP BY
SELECT Au t o r .n o m e FROM Au t o r , Au t or ia
WHERE Au t o r .id Au t o r = Au t o r ia.id Au t o r GROUP BY Au t o r .id Au t o r , Au t o r .n o m e HAVING co u n t (Au t o r ia.id Do c) > 1 0
Es cr it a p o r u m exp er t
Não h á n eces s id ad e d e DISTINCT: au t o m á t ico d evid o o GROUP BY 3 9 Au t o r (id Au t o r ,n o m e ) Au t o r ia (id Au t o r , id Do c) Vo ca b u la r io (id Do c, p a la vr a )
• En co n t r e o s a u t o r es q u e t em u m
vo ca b u lá r io a cim a d e 1 0 0 0 0
p a la vr a s :
SELECT Au t o r .n o m eFROM Au t o r , Au t o r ia, Vo cab u la rio WHERE Au t o r .id Au t o r = Au t o r ia.id Au t o r AND Au t o r ia.id Do c= Vo ca b u lar io .id Do c GROUP BY Au t o r .id Au t o r , Au t o r .n o m e
HAVING co u n t (d is t in ct Vo cab u lar io .p alavr a) > 1 0 0 0 0 Pr es t e at en çã o n as d u as ú lt im as con s u lt as : em b o r a elas p o s s am s er es cr it as u t iliz an d o co n s u lt a s an in h ad as , é m elh o r u t iliz ar GROUP BY.
4 0
Exer cício s
Pr o d u t o (p n o m e, p r eco , cat ego r ia, fab r ican t e) Co m p r a (co m p r ad o r , ven d ed o r , lo ja, p r o d u t o ) Co m p an h ia (cn om e, valo r Acao , p ais )
Pes s o a (n o m ePes s , t el, cid ad e)
Ex # 1 0 : Par a cad a ven d ed o r , es cr eva o s eu n o m e e a s o m a d as ven d as r ealiz ad as .
Ex # 1 1 : Par a cad a co m p r ad o r , es cr eva o s eu n o m e e a m éd ia d e co m p r as r ealiz ad as p o r cat ego r ia d e p r o d u t o .
Ex # 1 2 : Par a cad a cat ego r ia d e p r o d u t o , o b t er o s eu n o m e, s u a m éd ia d e p r eço s , m aio r e m en o r p r eço .
4 1
Va lo r es N u ll
80 Rich ar d Lin klat er 2 00 4
b efor e s u n s et
1 05 Rich ar d Lin klat er b efor e s u n ris e 1 06 n u ll 2 00 4 s h all we d an ce n u ll Ma s s ayu ki Su o 1 99 6 d u r aca o d iret o r a n o t it u lo s h a ll we d an ce Film e n u ll Um n u ll p o d e s ign ificar q u e: • o valor n ão exis t e OU
• o valor exis t e m as ain d a n ão é con h ecid o
4 2
Va lo r es N u ll
• Se o va lo r d e x fo r N u ll en t ã o a
exp r es s ã o 4 *(3 - x)/ 7 r e s u lt a e m
N u ll
• Se o va lo r d e x fo r N u ll en t ã o o t es t e
x= “Jo a o ” r e s u lt a e m
DESCONHECIDO
• Em SQL h á 3 va lo r es b o o lea n o s :
FALSO = 0
DESCONHECIDO =
0 .5
VERDADEIRO = 1
4 3Va lo r es N u ll
• C1 AND C2 = m in (C1 , C2 )
• C1 OR C2 = m ax(C1, C2)
• NOT C1 = 1 – C1
Regr a em SQL: in clu i s o m en t e t u p las q u e
r es u lt am em VERDADEIRO
SELECT
*
FROM
Pes s o a
WHERE
(id ad e < 2 5 ) AND
(alt u ra > 1 5 0 OR p es o > 8 0 )
P.ex. id a d e= 2 0 a lt u r a = NULL p es o = 9 0 4 4Va lo r es N u ll
Co m p o r t a m en t o n ã o in t u it ivo :
Algu m a s p e s s o a s n ã o s ã o in clu íd a s
n o r es u lt a d o !
SELECT *
FROM Pes s o a
WHERE id a d e < 2 5 OR id a d e > = 2 5
4 5Va lo r es N u ll
É p o s s ível t es t ar s e u m valo r é n u lo
exp licit am en t e:
– x IS NULL – x IS NOT NULLAgo r a o r es u lt ad o co n t ém t o d as as p es s o as .
SELECT
*
FROM
Pes s o a
WHERE
id ad e < 2 5 OR id ad e > = 2 5
OR id ad e
IS NULL
4 6Va lo r es N u ll em Ju n çõ es
Pr o d u t o (n o m e , ca t ego r ia ) Co m p r a (n o m ePr o d , lo ja ) O m e s m o q u e: Ma s p r o d u t o s q u e n u n ca fo r a m ven d id o s n ã o a p a r ece m n o r es u lt a d o ! SELECT Pr o d u t o .n o m e, Co m p r a .lo ja FROM Pr o d u t o JOIN Co m p r a ON Pr o d u t o .n o m e = Co m p r a .n o m ePr o d SELECT Pr o d u t o .n o m e, Co m p r a .lo ja FROM Pr o d u t o , Co m p r a WHERE Pr o d u t o .n o m e = Co m p r a .n o m e Pr o d 4 7Va lo r es N u ll e Ou terjoin s
Left o u t er jo in s em SQL: Pr o d u t o (n o m e, cat ego r ia) Co m p r a(n o m ePr o d , loja)SELECT Pr o d u t o .n o m e, Co m p r a.loja
FROM Pr o d u t o LEFT OUTER JOIN Co m p r a ON Pr o d u t o .n om e = Co m p r a.n om ePr o d 4 8 elet ro n icos t elevisa o fo t o gra fia cam era p ap ela ria lap is
cat ego ria n o m e Pon t o Frio cam era Rit z cam era lap is lojae n o m ePr od NULL t elevisa o Pon t o Frio cam era Rit z cam era Cu lt u ra lap is loja n o m e Pr o d u t o Co m p r a Cu lt u r a SELECT Pr o d u t o .n o m e, Co m p r a.lo ja
FROM Pr o d u t o LEFT OUTER JOIN Co m p r a ON Pr o d u t o .n o m e = Co m p r a.n o m ePr o d
4 9