consultas en sql server

samparedeschaves7 534 views 21 slides Oct 02, 2014
Slide 1
Slide 1 of 21
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21

About This Presentation

No description available for this slideshow.


Slide Content

Departrmnrotr
 
r
Departamento de Lenguajes y Sistemas Informáticos 
E.T.S. Ingeniería Informática. Universidad de Sevilla 
r
 dmLrgnujLrsnySnmniriIjarftátorcnduEELr
Tlf/Faxr.TfrTTírtU.rrrE-mailrEiuvEiualianirrrWebr///aEiualiani
r
 
 
Faxacar-jpnjunyWLr
-jbByQe,uSL
r
r
r
r
r
r
r
r
r
r
r
r
r
r
r
r
r
r
r
r
r
r
Bases de Datos 
r
SQL 
r
r
r
r
r
r
r
cnduEEL2rBS,l0ynroááír
7roááíatáatr

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Deparormnrotr
 
 
1 SQL (STRUCTURED QUERY LANGUAGE).........................................3  
1.1 O
BJETIVOS Y ALCANCE DE SQL ..............................................................................3 
1.2 E
VOLUCIÓN DEL MODELO RELACIONAL .................................................................4 
2 DEFINICIÓN DE DATOS EN SQL (DDL) ...........................................4  
2.1 DOMINIOS
 SQL2.................................................................................................4 
2.2 CREATE
 TABLE ..................................................................................................5 
3 CONSULTAS SIMPLES............................................................................5  
3.1 CONSULTAS
 DE VARIAS TABLAS....................................................................6 
3.2 EXISTS ..................................................................................................................6 
3.3 IN...........................................................................................................................6 
3.4 ANY,
 ALL ..............................................................................................................7 
3.5 BETWEEN............................................................................................................8 
3.6 LIMITACIÓN
 DE LA LISTA DE RESULTADOS..............................................8 
3.7 SUBCADENAS
 (LIKE).........................................................................................9 
3.8 ORDENACIÓN
 (ORDER BY).............................................................................9 
4 CONSULTAS AVANZADAS...................................................................10  
4.1 JOIN
 NATURAL Y OUTER JOIN ..................................................................... 10 
4.2 FUNCIONES
 AGREGADAS.............................................................................. 11 
4.3 GROUP
 BY .......................................................................................................... 12 
4.4 EJEMPLO............................................................................................................ 13 
5 ACTUALIZACIÓN DE DATOS.............................................................14  
5.1 INSERT............................................................................................................... 14 
5.2 DELETE.............................................................................................................. 14 
5.3 UPDATE.............................................................................................................. 14 
6 VISTAS......................................................................................................14  
7 SINTAXIS SQL-2 .....................................................................................15  
7.1 I
NTRODUCCIÓN .................................................................................................... 15 
7.2 L
ENGUAJE DE DEFINICIÓN DE DATOS (DDL) ..................................................... 15 
7.3 L
ENGUAJE DE MANIPULACIÓN DE DATOS (DML)................................................ 17 
 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
DeparUrmnrotr
 
1 SQL (Structured Query Language) 
1.1 Objetivos y alcance de SQL 
a+ c1(rnirljrEnjplLRnrni,ejmLyC-cYVrALyLrmnbujuSuNjrQLjuAlELSuNjrnjrcG)3rynELSuBjLEniar
)+
FEr3s(rmnrc1(rnirljrEnjplLRnrmnrniAnSubuSLSuNjOrnirmnSuy2rELirnJAyniuBjnirmnbujnjrnErynilE,LmBr
niAnyLmB2r mnRLjmBr Ólnr nEr cG)3r inr njSLyplnr mnr yniBEdnyr nEr QnRByr QM,BmBr ALyLr nRnSl,Lyr muS4Lr
niAnSubuSLSuNjCBA,uQu5LSuNjrmnrELrSBjilE,LVOrni,BirQM,BmBirpnjnyLmBirAByrnEril0iui,nQLrmnrAyBSniBr
mnrSBjilE,LirinrmnjBQujLjrAELjni
t
rmnrLSSniBrBrAELjnirmnrnRnSlSuNjrmnrELrSBjilE,Lar
SV
(LrpyLQe,uSLr3s(rni,er0LiLmLrnjrnErSeESlEBrynELSuBjLErByunj,LmBrLr,lAELiar
mV
DnyQu,nPr
• 3nbujuSuNjrmnr,L0ELir6rdui,Liar
• FiAnSubuSLyrljrQBmnEBrmnrinplyumLmrmnrLSSniBrLrEBirmL,BirCmnbujuSuNjrmnrlilLyuBi2rjudnEnirmnr
Ll,Byu5LSuNjrBrLSSniBrLrEBirmL,BiVar
• 3nbujuyryni,yuSSuBjnirmnruj,npyumLmrmnSELyL,udLar
• FiAnSubuSLyr,yLjiLSSuBjniar
• FEr3s(rmnrc1(rAlnmnrinyrl,uEu5LmBrnjrEnjplLRnirmnrAyBpyLQLSuNjrmnrAyBANiu,BrpnjnyLEr
SBQBr Xr Br DLiSLEr Br 0unjr njr EnjplLRnir niAnSWbuSBir mnEr bL0yuSLj,nr CAanRar D(Ic1(r njr
Yg X(F2rxg 8c Xxrc1(rnjrscKc1(rcnydnyVaar
                                                
 
t
r9jrAELjrmnrnRnSlSuNjrmnrljLrSBjilE,LrnirljrAyBpyLQLrLr0LRBrjudnE2rpnjnyLmBrAByrnEril0iui,nQLrmnrAyBSniBrmnrSBjilE,Lir
mnErcG)3rynELSuBjLEarr Fi,nr AELjrmnrLSSniBrSBj,unjnrnErQM,BmBrmnrLSSniBrLrEBirmL,BirnjrbljSuNjrmnrELriu,lLSuNjrmnEr
niÓlnQLrmnrELr0LinrmnrmL,BiCniÓlnQLruj,nyjB2rmBjmnrbuplyLjrmn,LEEnirmnrWjmuSni2rmuynSSuBjLQunj,B2rn,SaVr6rilrdBElQn,yWLr
CdBEZQnjnirmnrmL,BirmnrELir,L0ELirnjrELr0LinrmnrmL,BiVaar

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Deparfrmnrotr
 
1.2 Evolución del modelo relacional 
t.ó_rKrt.íár
E
r
clypnrnErQBmnEBr
r
r
t.íárararar
Er
3niLyyBEEBir,nNyuSBir
r
r
r
t.íUrKrt.í_r
E
r
DyB,B,uABirC-jpyni2riui,nQLrg2rn,SararaVr
r
r













t.í_r
E
r
1)Fr
r
t.í.r
Er
YyLSEnr
r
t._ár
Er
-jpynir
r
t._tr
Er
c1(r
r
r
t._or
E
r
3)or
r
t._ór
Er
c1(Ir 8cr
t._ír
Er
c1(r-cYrC.áíTVr
t._.r
Er
c1(r mmnjmlQr
t._.r
Er
sLjubuni,BrmnrEBircG)Yr










t..ár
E
r
sBmnEBrgnELSuBjLEr7nyiuNjror
t..ár
Er
sLjubuni,BrmnrEBircG)YKrUGr
t..or
Er
c1(r.or
t..Tr
Er
U
ny
rsLjubuni,Br














r
t...r E
r
c1(rUr
r
2 Definición de datos en SQL (DDL) 
2.1 DOMINIOS SQL2 
Fjrc1(ornirABiu0EnrmnSELyLyrljrdominior6rliLyrilrjBQ0ynarr
 
CREATE DOMAIN rhnombre_dominioHrASrhtipo_datosG6 
r
Fj,ynrEBir,uABirmnrmL,BirmuiABju0EnirALyLrL,yu0l,Birni,ejrEBirjlQMyuSBi2rSLmnjLrmnrSLyLS,nyni2r
SLmnjLrmnr0u,2rbnS4Lr6r4ByLarr
r
a+
(Bir,uABirmnrdatos numéricosrujSEl6njrjZQnyBirnj,nyBirmnrmudnyiBir,LQL*BirC-8xFGFgr
Br -8x2r 6r cs ((-8xVr 6r jZQnyBir ynLEnir mnr mudnyiLir AynSuiuBjnir C=(Y x2r gF (2r
3Y9)(Fr DgFX-c-Y8Var DBmnQBir mnSELyLyr jZQnyBir SBjr bByQL,Br nQAEnLjmBr
3FX-s (Cu2RVr Cr Br 3FXCu2RVr 89sFg-XCu2RVV2r mBjmnr ur CAynSuiuNjVr nir nEr jZQnyBr ,B,LEr mnr
mWpu,BirmnSuQLEnir6rRrCniSLELVrnErjZQnyBrmnrmWpu,BirÓlnrLALynSnjrmniAlMirmnErAlj,BrmnSuQLEar
)+
(Bir,uABirmnrcadena de caracteresr,unjnjrEBjpu,lmrbuRLrCX> gCjVrBrX> g XxFgCjVrBr
dLyuL0Enr7 gX> grCjVrBrX> gr7 gz-8GrCjVrBrX> g XxFgr7 gz-8GrCjVar

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
DeparTrmnrotr
 
SV
(Bir,uABirmnrmL,Birmnrcadena de bitr,unjnjrEBjpu,lmrbuRLrjrC)-xCjVVrBrC)-xr7 gz-8GrCjVVar
mV
c1(orSlnj,LrSBjrjlndBir,uABirmnrmL,BirALyLrfecha y horar3 xFr6rx-sFar
FRarr
CREATE DOMAIN ruQABy,nirASrDECIMALC.2fVO 
2.2 CREATE TABLE 
(Lrni,ylS,lyLrmnrmL,BiriBABy,LmLrAByrc1(rnirELrtabla SBQBriBABy,nrLrELrmnbujuSuNjrmnrljLrynELSuNjr
mnErQBmnEBrgsI)ar
r
(Lruji,ylSSuNjrCREATE TABLEriuydnrALyLrniAnSubuSLyrljLrjlndLr,L0ELrr
r
CREATE DOMAIN  SBmupBirAS 7 gX> gCfVr8Yxr89((Or
CREATE DOMAIN  jBQ0yni AS 7 gX> gCoáVOr
CREATE DOMAIN  SLj,umLmni AS -8xFGFgOr
 
CREATE TABLErAyBmlS,Bir( 
r r Dumr rr SBmupBi2r
r r Dmnirr r jBQ0yni2r
r r DAniBr rr SLj,umLmni2r
r r DAynSuBr SLj,umLmni2r
PRIMARY KEYrCAumVr)Or
3 Consultas simples 
(Lrinj,njSuLr0eiuSLrALyLrynSlAnyLyrujbByQLSuNjrnjrc1(rnirELrinj,njSuLrSELECTar
SELECTrrhlista de atributosHr
FROM r hlista de tablasHr
WHEREr hcondiciónHr
 
Productos
r
  
r
r
r
r
r
a+
3niSyuASuNjr6rSNmupBrmnrAun5Lirmnr,BmLirELirAun5LirnJui,nj,nia
 
SELECTrAmniS2rAumrr
FROMrrrrDyBmlS,BiOr
r
r
r
r
pdesc  pid 
xnEnduiByrstr Dtr
xnEnduiByrsor Dor
xnEnduiByrsUr DUr
sujurxqóír Dtár
sujurxqó_r Dttr
)+ Dun5LirC,BmBirEBirL,yu0l,BiVrmnrAniBrQL6ByrBruplLErLrUáar
SELECT *  
FROMrrrrDyBmlS,Bir
WHERErAAniBr
≥rUáOr
r
pid
  pdesc  ppeso pprecio 
Dor xnEnduiByrsor Uá rí_ááár
DUr xnEnduiByrsUr UT r.íááár
r
pid  pdesc  ppeso  pprecio 
Dtr xnEnduiByrstr oí r Tóááár
Dor xnEnduiByrsor Uá r í_ááár
DUr xnEnduiByrsUr UT r .íááár
Dtársujurxqóír to rttoááár
Dttrsujurxqó_r tá rtfoááár

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Deparórmnrotr
 
3.1 CONSULTAS DE VARIAS TABLAS 
a+ XNmupBirmnrEBirLEQLSnjnirÓlnr,unjnjrnJui,njSuLirmnErAyBmlS,BrMxnEnduiByrsoNr6rSLj,umLmr
Ólnr,unjnjrnjri,BSOar
r
AExistenciasr
Aid  pid  acant 
 or Dtr tTó r
 or Dor toUf r
 or DUr ó. r
 or Dtár toá r
 or Dttr UfT r
 Ur DUr Tááá r
 fr Dtr oáá r
 fr Dor .Tó r
 fr DUr tUf r
 fr Dtár toá r
 fr Dttr Tfo r
r
r
r
Almacenes 
aid  adir  aloc 
 or XIar)LRL2rfr  ESLEermnrGlLmLuyLr
 Ur DBEupBjBrXLEBjpn2r8toILr cnduEELr
 fr Da-ar yQuEEL2r KfTr GyLjLmLr
r
Productos 
pid  pdesc  ppeso  pprecio 
Dtr xnEnduiByrstr oí r Tóááár
Dor xnEnduiByrsor Uá r í_ááár
DUr xnEnduiByrsUr UT r .íááár
Dtár sujurxqóír to rttoááár
Dttr sujurxqó_r tá rtfoááár
r
r
SELECTr FaLum2rLSLj,r
FROMrrrr FJui,njSuLir F2rDyBmlS,BirDr
WHEREr FaAumrPrDaAumr
ANDrrrrrrrAmniSrPrMxnEnduiByrsoNOr
r
AE.aid
 acant 
 or toUf r
 fr .Tó r
r
3.2 EXISTS 
(LrbljSuNjrEXISTSriuydnrALyLrSBQAyB0LyriurnErynilE,LmBrmnrljLrSBjilE,LrLjumLmLrSBj,unjnr
,lAELiar
gniSyu0unjmBrELrnJAyniuNjrLj,nyuByPr
a+
XNmupBirmnrEBirLEQLSnjnirÓlnr,unjnjrnJui,njSuLirmnErAyBmlS,BrMxnEnduiByrsoNr6rSLj,umLmr
Ólnr,unjnjrnjri,BSOar
 
SELECTrLum2rLSLj,r
FROMr FJui,njSuLir Fr
WHERErEXISTS ( SELECTrQr
FROMrDyBmlS,BirDr
WHERErrDaAumrPr FaAumr
ANDrAmniSrPrMxnEnduiByrsoNr)rOr
r
)+
XNmupBirmnrEBirLEQLSnjnirÓlnrjBr,unjnjrnJui,njSuLirmnrAyBmlS,Biar
SELECTrLumr
FROMr EQLSnjnir r
WHERErNOT EXISTS ( SELECTrQrFROMr nJui,njSuLir Fr
WHERErr FaLumrPr aLumr)rOr
 
3.3 IN 
FErBAnyLmByrmnrSBQALyLSuNjr-8rAnyQu,nrSBQALyLyrljrdLEByrujmudumlLErdrCpnjnyLEQnj,nrljr
jBQ0ynr mnr L,yu0l,BVr SBjr ljr SBjRlj,Br mnr dLEBynir 7r CpnjnyLEQnj,nr ljLr SBjilE,Lr LjumLmLVar
3ndlnEdnrxg9FriurdrnirljBrmnrEBirnEnQnj,Birmnr7ar

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Deparírmnrotr
 
FirABiu0EnryniSyu0uyELrELrSBjilE,LrLj,nyuByrl,uEu5LjmBrnErBAnyLmByrmnrSBQALyLSuNjrINar
a+
XNmupBirmnrEBirLEQLSnjnirÓlnr,unjnjrnJui,njSuLirmnErAyBmlS,BrMxnEnduiByrsoNr6rSLj,umLmr
Ólnr,unjnjrnjri,BSOar
 
SELECTrLum2rLSLj,r
FROMr FJui,njSuLirr
WHERErAumrINrrr( SELECTrAumr
FROMrDyBmlS,Birr
WHERErAmniSrPrMxnEnduiByrsoNr)rOr
r
xLQ0uMjrnirABiu0Enrl,uEu5Lyr-8rSBjrljrSBjRlj,BrnJAEWSu,BrmnrdLEByniPr
r
)+
XNmupBr6rAniBrmnrEBirAyBmlS,BirSl6BrAniBrinLrtá2rtorBroí
 
SELECTrAAum2rAAniBr
FROMrDyBmlS,Birr
WHERErAAniBrINrrr(tá2rto2roí)rOr
r
ppid  ppeso 
Dtr oí r
Dtár to r
Dttr tá r
3.4 ANY, ALL 
DnyQu,njrSBQALyLyrljrdLEByrujmudumlLErdrCjBQ0ynrmnrL,yu0l,BVrSBjrljrSBjRlj,BrmnrdLEBynir7r
CSBjilE,LrLjumLmLVar
FErBAnyLmByr=ANYrmndlnEdnrxg9FriurnErdLEByrmnrdrniruplLErLrLEpZjrdLEByrmnErSBjRlj,Br7arFir
nÓludLEnj,nrLr-8ar
r
a+
XNmupBirmnrEBirLEQLSnjnirÓlnr,unjnjrnJui,njSuLirmnErAyBmlS,BrMxnEnduiByrsoNr6rSLj,umLmr
Ólnr,unjnjrnjri,BSOar
 
SELECTrLum2rLSLj,r
FROMr FJui,njSuLirr
WHERErAumrPANYr( SELECTrAumr
FROMrDyBmlS,Birr
WHERErAmniSrPrMxnEnduiByrsoNr)rOr
r
r
FErBAnyLmByrPALLrmndlnEdnrxg9FriurnErdLEByrmnrdrniruplLErLr,BmBirEBirdLEBynirmnErSBjRlj,Br
7arr
Y,yBirBAnyLmBynirÓlnrinrAlnmnjrl,uEu5LyrSBjrANYr6rSBjrALLriBjrH2rHP2rh2rhPr6rhHar
r
FEr BAnyLmByr H ((r mndlnEdnr xg9Fr iur nEr dLEByr mnr dr nirQL6Byr Ólnr ,BmBir EBir dLEBynir mnEr
SBjRlj,Br7ar
r
)+
3niSyuASuNjrmnrEBirAyBmlS,BirmnrAynSuBrilAnyuByrLr,BmBirEBirAyBmlS,BirÓlnr,unjnrnEr
LEQLSnjrM oNar
r
SELECTrAmniSr
FROMrDyBmlS,Birrr
WHERErAAynSuBr> ALLrr( SELECTrAAynSuBr
FROMrDyBmlS,BirD2r nJui,njSuLir Frr
WHERErDaAumrPr FaAumr 83rLumrrPrM oNr)rOr
r

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Depar_rmnrotr
 
3.5 BETWEEN 
SV XNmupBr6rAniBrmnrEBirAyBmlS,BirSl6BrAniBrni,Mrnj,ynrtár6roíar
r
SELECTrAAum2rAAniBr
FROMrDyBmlS,Birr
WHERErAAniBrr
BETWEENrtá AND oíOr
ppid  ppeso 
Dtr oí r
Dtár to r
Dttr tá r
3.6 LIMITACIÓN DE LA LISTA DE RESULTADOS  
DLyLrEuQu,LyrEBirynilE,LmBirmnrljLrSBjilE,LrinrAlnmnjrl,uEu5LyrELirALEL0yLirSELdnr3-cx-8Xxr6r
xYDar
r
DISTINCT.rFEuQujLrELir,lAELirynAn,umLirmnErynilE,LmBrmnrljLrSBjilE,La 
rr
a+
XNmupBr6rEBSLEumLmrmnrEBirLEQLSnjnirÓlnr,unjnjrLEpZjrAyBmlS,BrnjrnJui,njSuLar
AExistenciasr
aid  pid  acant 
 or Dtr tTó r
 or Dor toUf r
 or DUr ó. r
 or Dtár toá r
 or Dttr UfT r
 Ur DUr Tááá r
 fr Dtr oáá r
 fr Dor .Tó r
 fr DUr tUf r
 fr Dtár toá r
 fr Dttr Tfo r
r
r
r
r
r
r
r
r
Almacenes 
aid  Adir  aloc 
 or XIar)LRL2rfr  ESLEermnrGlLmLuyLr
 Ur DBEupBjBrXLEBjpn2r8toILr cnduEELr
 fr Da-ar yQuEEL2r KfTr GyLjLmLr
r
 
SELECT DISTINCTr aLum2rLEBSr
FROMrrrr FJui,njSuLir F2r EQLSnjnir r
WHEREr FaLumrPr aLumOr
r
aid  Aloc 
 or  ESLEermnrGlLmLuyLr
 Ur cnduEELr
 fr GyLjLmLr
 
 
TOP
2
.
 r(uQu,LrnErjZQnyBrmnrbuELiarr
SELECT TOPr8rrhlista de atributosHrEuQu,LrnErjZQnyBrmnrbuELirLrQBi,yLyrLr8ar
r
)+
FjrELrSBjilE,LrLj,nyuByrB0,njnyriNEBrELirmBirAyuQnyLirbuELiar
 
SELECT DISTINCTrTOP 2  aLum2rLEBSr
FROMrrrr FJui,njSuLir F2r EQLSnjnir r
WHEREr FaLumrPr aLumOr
r
aid  Aloc 
 or  ESLEermnrGlLmLuyLr
 Ur cnduEELr
 
 
                                                 
2
 TOP no es estándar. No se puede utilizar en WinRDBi 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Depar.rmnrotr
 
3.7 SUBCADENAS (LIKE) 
DLyLrSBQALyLyrSLmnjLirmnrSLyLS,nynirinrl,uEu5LrnErBAnyLmByrmnrSBQALyLSuNjrLIKE.r
(LirSLmnjLirALySuLEnirinrniAnSubuSLjrQnmuLj,nrEBirSLyLS,nyniryninydLmBirRr6rrKar
r
a+
XNmupBirmnrAun5LirSl6LrmniSyuASuNjrnQAun5LrAByrMxnEnduiByNr
Productos 
Pid  pdesc  ppeso  pprecio 
Dtr xnEnduiByrstr oí r Tóááár
Dor xnEnduiByrsor Uá r í_ááár
DUr xnEnduiByrsUr UT r .íááár
Dtár sujurxqóír to rttoááár
Dttr sujurxqó_r tá rtfoááár
r
SELECTrAumr
FROMrDyBmlS,Bir
WHERErAmniSrLIKErMxnEnduiByRNOr
r
pid 
Dtr
Dor
DUr
r
)+
XNmupBr mnr AyBmlS,Bir Ólnr njr ELr mniSyuASuNjr ujSEl6njrMxqNr inplumBr AByr ljr SLyeS,nyr 6r
,nyQujLrnjrM_Nar
r
SELECTrAumr
FROMrDyBmlS,Bir
WHERErAmniSrLIKErMRxqS_NOr
r
pid 
Dttr
r
3.8 ORDENACIÓN (ORDER BY) 
a+ XNmupBrmnrLEQLSnjnir6rSLj,umLmrmnrSLmLrAyBmlS,BrÓlnr,unjnjrnjri,BSO2rBymnjLmBrAByr
LEQLSMjr 6r mnj,yBr mnr SLmLr LEQLSMjr AByr SLj,umLmr mnr QL6Byr Lr QnjByar XBjiumnyLjmBr
ZjuSLQnj,nrEBirAyBmlS,BirSl6LirSLj,umLmnirnjri,BSOrnjrSLmLrLEQLSMjrni,Mjrnj,ynroáár6r
oááárrrr
AExistencias 
aid  pid  acant 
 or Dtr tTó r
 or Dor toUf r
 or DUr ó. r
 or Dtár toá r
 or Dttr UfT r
 Ur DUr Tááá r
 fr Dtr oáá r
 fr Dor .Tó r
 fr DUr tUf r
 fr Dtár toá r
 fr Dttr Tfo r
r
r
SELECTrLum2rAum2rLSLj,r
FROMr FJui,njSuLir
WHERErLSLj,rBETWEENroáá AND oááár
ORDER BYrLum2rLSLj,rDESCOr
r
 
aid  pid  acant 
 or Dor toUf r
 or Dttr UfT r
 fr Dor .Tó r
 fr Dttr Tfo r
 fr Dtr oáá r

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Departármnrotr
 
4 Consultas avanzadas 
4.1 JOIN NATURAL y OUTER JOIN 
a+ XNmupBrmnrLEQLSMj2rSNmupBr6rmniSyuASuNjrmnErAyBmlS,Br6rSLj,umLmrnjri,BSOar
 
AExistenciasr
aid  pid  acant 
 or Dtr tTó r
 or Dor toUf r
 or DUr ó. r
 or Dtár toá r
 or Dttr UfT r
 Ur DUr Tááá r
 fr Dtr oáá r
 fr Dor .Tó r
 fr DUr tUf r
 fr Dtár toá r
 fr Dttr Tfo r
r
r
r
r
r
r
Productos 
pid  pdesc  ppeso  pprecio 
Dtr xnEnduiByrstr oí r Tóááár
Dor xnEnduiByrsor Uá r í_ááár
DUr xnEnduiByrsUr UT r .íááár
Dtár sujurxqóír to rttoááár
Dttr sujurxqó_r tá rtfoááár
 
SELECTrLum2r FaAum2rAmniS2rLSLj,r
FROMr FJui,njSuLir F2rDyBmlS,BirDr
WHEREr FaAumrPrDaAumOr
r
cnr Alnmnr niAnSubuSLyr AyuQnyBr ELr ynljuNjr mnr ELir ynELSuBjnir  FJui,njSuLir 6r DyBmlS,Bir 6r
inEnSSuBjLyrElnpBrEBirL,yu0l,Bir6r,lAELirmninLmLiar(LrSBjilE,LrÓlnmLyWLPr
SELECTrLum2r FaAum2rAmniS2rLSLj,r
FROMrCr FJui,njSuLirASr FrJOINrDyBmlS,BirASrDrONr FaAumrPrDaAumrVOr
CTY-8rnirnÓludLEnj,nrLr-88FgrTY-8Vr
r
FErynilE,LmBrinyePr
r
Aid  AE.pid  pdesc  acant 
 or Dtr xnEnduiByrstr tTó r
 or Dor xnEnduiByrsor toUf r
 or DUr xnEnduiByrsUr ó. r
 or Dtár sujurxqóír toá r
 or Dttr sujurxqó_r UfT r
 Ur DUr xnEnduiByrsUr Tááá r
 fr Dtr xnEnduiByrstr oáá r
 fr Dor xnEnduiByrsor .Tó r
 fr DUr xnEnduiByrsUr tUf r
 fr Dtár sujurxqóír toá r
 fr Dttr sujurxqó_r Tfo r
r
⇒r  ErujSEluyrnErAyBmlS,BrjlndBrP20rnjrELr,L0ELrDyBmlS,BiPrr
r
Productos 
pid  Pdesc  ppeso  pprecio 
Dtr xnEnduiByrstr oí r Tóááár
Dor xnEnduiByrsor Uá r í_ááár
DUr xnEnduiByrsUr UT r .íááár
Dtár sujurxqóír to rttoááár
Dttr sujurxqó_r tá rtfoááár
P20  Equipo Nuevo  10   100 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Departtrmnrotr
 
(LrSBjilE,LPr
SELECTrLum2r FaAum2rAmniS2rLSLj,r
FROMrCr FJui,njSuLirASr FrJOINrDyBmlS,BirASrDrONr FaAumrPrDaAumrVOr
r
3ndlnEdnrnErQuiQBrynilE,LmBrLj,nyuByar8BrinrduilLEu5LrELr,lAELrjlndLr6LrÓlnrjBr,unjnr
SByyniABjmnjSuLrnjrELr,L0ELr FJui,njSuLiarr
r
DLyLrÓlnrLALyn5SLrmuS4Lr,lAELrinrl,uEu5LrnErRBujrnJ,nyjBrAByrELrmnynS4Lar
SELECTrLum2r FaAum2rAmniS2rLSLj,r
FROMrCr FJui,njSuLirASr FrRIGHT JOINrDyBmlS,BirASrDrONr FaAumrPrDaAumrVOr
r
FErynilE,LmBrinyePr
r
aid  AE.pid
  pdesc  acant 
 or Dtr xnEnduiByrstr tTó r
 or Dor xnEnduiByrsor toUf r
 or DUr xnEnduiByrsUr ó. r
 or Dtár sujurxqóír toá r
 or Dttr sujurxqó_r UfT r
 Ur DUr xnEnduiByrsUr Tááá r
 fr Dtr xnEnduiByrstr oáá r
 fr Dor xnEnduiByrsor .Tó r
 fr DUr xnEnduiByrsUr tUf r
 fr Dtár sujurxqóír toá r
 fr Dttr sujurxqó_r Tfo r
r   Equipo Nuevo  r
r
Cg-G>xrTY-8rnirnÓludLEnj,nrLrg-G>xrY9xFgrTY-8Vr
r
3nruplLErbByQLrALyLrB0,njnyrELir,lAELirmnr FJui,njSuLirÓlnrjBr,njpLjrSByyniABjmnjSuLirnjr
DyBmlS,Birinrl,uEu5LyLrnErLEFT JOIN  
C(F=xrTY-8rnirnÓludLEnj,nrLr(F=xrY9xFgrTY-8Vr
4.2 FUNCIONES AGREGADAS 
COUNTrmndlnEdnrnErjZQnyBrmnrbuELirBrdLEBynirniAnSubuSLmBirnjrljLrSBjilE,Lar
SUM, MAX, MIN, AVGrinrLAEuSLjrLrljrSBjRlj,BrBrQlE,uSBjRlj,BrmnrdLEBynirjlQMyuSBir6r
mndlnEdnjr yniAnS,udLQnj,nr ELr ilQL2r nEr dLEByr QeJuQB2r nEr QWjuQBr 6r nEr AyBQnmuBr mnr muS4Br
dLEBynia 
Fi,LirbljSuBjnirinrAlnmnjrliLyrSBjrELrSEelilELrSELECTrBrSBjrELrSEelilELrHAVINGar
r
a+
8lQnyBrmnrAyBmlS,BirÓlnrnJui,njar
r
pid  pdesc  ppeso  pprecio 
Dtr xnEnduiByrstr oí r Tóááár
Dor xnEnduiByrsor Uá r í_ááár
DUr xnEnduiByrsUr UT r .íááár
Dtár sujurxqóír to rttoááár
Dttr sujurxqó_r tá rtfoááár
 
SELECTrCOUNT (*)r
FROMrDyBmlS,BirOr
r
COUNT (*)
 
Tr
r
r

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Departormnrotr
 
)+
XLESlELyrELrilQLrmnrELirSLj,umLmni2rELrSLj,umLmrQeJuQL2rELrQWjuQL2rELrQnmuLr6rSBj,Lyr
,BmBirEBirAyBmlS,BirÓlnrnJui,njrnjri,BSOar
r
aid  pid  Acant 
 or Dtr tTó r
 or Dor toUf r
 or DUr ó. r
 or Dtár toá r
 or Dttr UfT r
 Ur DUr Tááá r
 fr Dtr oáá r
 fr Dor .Tó r
 fr DUr tUf r
 fr Dtár toá r
 fr Dttr Tfo r
r
SELECTrSUMCLSLj,V2rMAXCLSLj,V, MINCLSLj,V, AVGCLSLj,V2rCOUNTCQVr
FROMr FJui,njSuLirOr
r
SUM(acant)  MAX(acant)  MIN(acant)
 AVG(acant) COUNT(*) 
__íór Tááár ó.r _íor ttr
r
SV
XBj,LyrEBirAyBmlS,BirmnrEBirÓlnr4L6LrnJui,njSuLrnjrLEpZjrLEQLSMjar
SELECTrCOUNT /DISTINCT AumVr
FROMr FJui,njSuLirOr
r
COUNT (*)
 
Tr
4.3 GROUP BY 
XlLjmBr inr ÓlunyLr LAEuSLyr ELir bljSuBjnir LpynpLmLir Lril0pylABir mnr ,lAELir mnr ljLr ynELSuNjr
LpylALynQBir ELir ,lAELir Ólnr ,unjnjr nEr QuiQBr dLEByr ALyLr Suny,Bir L,yu0l,Biar (Bir EELQLynQBir
L,yu0l,BirmnrLpylALSuNjr6rABmynQBirLAEuSLyrELirrbljSuBjnirLrSLmLrljBrmnrmuS4BirpylABiar
r
DLyLrniAnSubuSLyrEBiratributos de agrupaciónrinrl,uEu5LrELrSEelilELrGROUP BYar
(BirL,yu0l,BirmnrLpylALSuNjrAlnmnjrLALynSnyrnjrELrSEelilELrcF(FXxar
r
a+
XLESlELyrALyLrSLmLrLEQLSMjrnErjZQnyBrmnrAyBmlS,Birnjri,BSOr6rELrSLj,umLmr,B,LEar
r
aid  pid  acant 
 or Dtr tTó r
 or Dor toUf r
 or DUr ó. r
 or Dtár toá r
 or Dttr UfT r
 Ur DUr Tááá r
 fr Dtr oáá r
 fr Dor .Tó r
 fr DUr tUf r
 fr Dtár toá r
 fr Dttr Tfo r
r
SELECTrLum2rCOUNTCQV2rSUMCLSLj,Vr
FROMr FJui,njSuLirr
GROUP BYrLumOr
r
aid  COUNT(*)
 SUM(acant) 
 or Tr t.of r
 Ur tr Tááá r
 fr Tr t.To r

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
HAVINGDN ONtGN
 
HAVING 
HAVINGr niAnSubuSLr ljLr SBjmuSuNjr iB0ynr nEr pylABr mnr ,lAELirsp%mns %N sNms sN asg%dN  ON g%pN
L,yu0l,BirmnrLpylALSuNjrCSELinirmnrnÓludLEnjSuLVarcNEBrEBirpylABirÓlnrSlQAELjrELrSBjmuSuNjr
nj,yLyejrnjrnErynilE,LmBrmnrELrSBjilE,Lar
)+
DLyLr ELir ,unjmLir Ólnr 4L6Ljr 4nS4Br Qeir mnr ljr AnmumBr LEr QuiQBr LEQLSMjr SLESlELyr ELr
msc'n s N'%'sgN1O n sINN
N
Pedidos 
pdid  tid  aid  pid  cant
 fecha 
H5GóN!GN rtN HGN Góó NGóuGtuóDN
H5tóN!GN rtN HtN GLó NGtuGtuóDN
H5DóN!tN rtN HGóN Ló NGluGtuóDN
H5lóN!tN rlN HGGN jó NGGuGtuóDN
H5LóN!lN rtN HGóN Dó NGóuGtuóDN
H5CóN!lN rlN HGGN tL NGDuGtuóDN
H5jóN!lN rtN HGGN ló NGluGtuóDN
 
SELECTNNNNNNNN'n (Nsn (NSUM/smsc'+N
FROMNN HO n %pNN
GROUP BYNNNsn (N'n N
HAVING  COUNT/Q+NGNG6N
N
tid  aid  SUM(acant)
 
!GN rtN tLó N
!lN rtN Gtó N
 
4.4 EJEMPLO 
a+  EQLSMjrSBjrQL6ByrjZQnyBrmnrAyBmlS,Biar
• Utilizando ALL
 
SELECTr FaLum2rclQC FaLSLj,Vrr
FROMNr N
GROUP BY r Isn N
HAVING Sum/r Ismsc'+N>=NNALLN/SELECT Sum/r Ismsc'+NN
FROM r N
GROUP BYNr Isn +6N
N
• Utilizando TOP
 
SELECT  FaLum2rclQC FaLSLj,Vrr
FROMNr N
GROUP BYNr Isn N
HAVING Sum/r Ismsc'+N NPNN /NSELECT TOP 1 Sum/r Ismsc'+NNNN
        FROM Nr NN
        GROUP BY Nr Isn NORDER BYNGNDESC+6N
 
• Mediante SELECT anidados
 
SELECTr FaLum2rilQC FaLSLj,Vr
FROMNr N
GROUP BYNr Isn N
HAVING sum/smsc'+NNN PN /NSELECT  Max/'%'sg+NN
N N N N FROMN/NSELECTNSum/o7Ismsc'+NspN'%'sgNN
N N N N N N FROM r NNN
            GROUP BYNr Isn   )   ); 
 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Departfrmnrotr
 
5 Actualización de datos 
5.1 INSERT  
cuydnrALyLrL*Lmuyr,lAELirrLrELr)3r
INSERT INTOrr DyBmlS,Birr
VALUESrr CDoá2rXLmnjLr táá2roá2oááVOr
r
cnrAlnmnjrL*LmuyrQZE,uAEnirbuELirl,uEu5LjmBrELrSELZilELrcF(FXxar
r
INSERT INTOrr DyBmlS,BDnmumBirCDum2r8BQ0yn2rDynSuBVrr
SELECT  Dum2rDmniS2rDAynSuBr
FROMrr DyBmlS,Bir
WHERErr AAynSuBrHUáOr
r
r
5.2 DELETE 
FEuQujLr,lAELirmnrljLrynELSuNjar(LrnEuQujLSuNjrAlnmnrAyBALpLyinrLr,lAELirmnrB,yLirynELSuBjniriur,LEr
LSSuNjrni,erniAnSubuSLmLrnjrELiryni,yuSSuBjnirmnruj,npyumLmrynbnynjSuLEar
DELETE FROM r DyBmlS,Birr
WHERErr AAynSuBrHUáOr
r
r
5.3 UPDATE  
sBmubuSLrEBirdLEBynirmnrEBirL,yu0l,Biar
UPDATE r DyBmlS,Birr
SET     AAynSuBrProáár
WHERErr AumrPrMDtNOr
r
UPDATE r DyBmlS,Birr
SET     AAynSuBrPrAAynSuBrQrtaor
WHERErr AumrrrIN r CSELECTrAumr FROM AnmumBiVrOr
r
r
r
6 Vistas  
9jLrdui,LrnirljLrni,ylS,lyLr,L0lELyrmnyudLmLrmnrB,yLir,L0ELiarr9jLrdui,LrjBrinrQL,nyuLEu5Lrnjrc1(Orinr
pnjnyLrnjrnErQBQnj,BrmnrilrnRnSlSuNjar
rrrrrCREATE VIEWrrDyBmlS,BSAnmumBr
r r AS SELECTrrD3aAmum2rD3aAum2rDaAmniS2rD3aSLj,umLmr
r r FROMrr AyBmlS,BirD2rAnmumBirD3r
r r WHERErr DaAumrPrD3aAumOr

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
DepartTrmnrotr
 
7 Sintaxis SQL-2 
7.1 Introducción 
Se presenta un resumen de la sintaxis de SQL según el estándar ISO 9075 (SQL-92),dividido en: 
- Lenguaje de Definición de Datos (LDD), 
- Lenguaje de Manipulación de Datos (LMD), y 
- Lenguaje de Administración de Datos (LAD). 
La nomenclatura utilizada es una extensión de la Forma Normal de Backus (BNF) siendo: 
< >   representa los símbolos no terminales del lenguaje 
::=   es el operador de definición 
[ ]   indica elementos opcionales 
{}   agrupa elementos en una fórmula 
|   indica una alternativa 
...   indica repetición: 
7.2 Lenguaje de Definición de Datos (DDL) 
<definición de esquema >::= 
CREATE SCHEMA <cláusula de nombre de esquema> 
[ <elemento de esquema> ... ] 
<cláusula de nombre de esquema> ::= 
<nombre de esquema> 
| AUTHORIZATION <id. de autorización de usuario> 
|<nombre de esquema> AUTHORIZATION <id. de autorización de usuario> 
<elemento de esquema> ::= 
<definición de dominio> 
| <definición de tabla> 
| <definición de vista> 
| <definición de aserción> 
<definición de dominio> ::= 
CREATE DOMAIN <nombre de dominio> [ AS ] <tipo de datos> 
[ <cláusula de defecto> ] 
[ <restricción de dominio> ] 
<cláusula de defecto> ::= 
DEFAULT <opción por defecto> 
<opción por defecto> ::= 
<literal> 
|<función de valor tiempo/fecha> 
| USER 
| SYSTEM 
| USER 
| NULL 
<restricción de dominio> ::= 
[ <definición de nombre de restricción> ] 
< definición de restricción de verificación> 
[ <atributos de restricción> ] 
<definición de nombre de restricción> ::= 
CONSTRAINT <nombre de restricción> 
<definición de restricción de verificación> ::= 
CHECK <parent. izq.> <condición de búsqueda> <parent. dcho.> 
<atributos de restricción> ::= 
<tiempo de verificación de restricción> [ [NOT] DEFERRABLE ] 
| [ [NOT] DEFERRABLE ] <tiempo de verificación de restricción> 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Departórmnrotr
 
<tiempo de verificación de restricción> ::= 
INITIALLY DEFERRED 
| INITIALLY INMEDIATE 
<definición de tabla> ::= 
CREATE [ {GLOBAL|LOCAL} TEMPORARY ] TABLE <nombre d e tabla> 
<lista de elementos de tabla> 
<lista de elementos de tabla> ::= 
<paréntesis izq.> <elemento de tabla> 
[{<coma> <elemento de tabla>} ... ] <paréntesisdcho.> 
<elemento de tabla> ::= 
<definición de columna> 
| <definición de restricción de tabla> 
<definición de columna> ::= 
<nombre de columna> { <tipo de datos> | <nombre de dominio>} 
[ <claúsula de defecto> ] 
[ <definición de restricción de columna> .... ] 
<definición de restricción de columna> ::= 
[ <definición de nombre de restricción> ] 
<restricción de columna> 
[ <atributos de restricción> ] 
<restricción de columna> ::= 
NOT NULL 
| <especificación de unicidad> 
| <especificación de referencia> 
| <definición de restricción de verificación> 
<definición de restricción de tabla> ::= 
[ <nombre de definición de restricción> ] 
<restricción de tabla> 
[ <atributos de restricción> ] 
<restricción de tabla> ::= 
<definición de restricción de unicidad> 
| <definición de restricción referencial> 
| <definición de restricción de verificación> 
<definición de restricción de unicidad> ::= 
<especificación de unicidad> 
<parent. izq.> <lista de columnas únicas> <parent. dcho.> 
<especificación de unicidad> ::= 
UNIQUE | PRIMARY KEY 
<lista de columnas únicas> ::= <lista de nombre de columnas> 
<definición de restricción referencial> ::= 
FOREIGN KEY <parent. izq.> <columnas que ref.> <parent. dcho.> 
<especificación de la referencia> 
<especificación de la referencia> ::= 
REFERENCES <columnas y tabla referenciadas> 
[ <acción referencial disparada> ] 
<columnas que ref.> ::= <lista de columnas de referencia> 
<columnas y tabla referenciadas> ::= 
<nombre de tabla> [ <parent. izq.> <lista de columnas de referencia> <parent. dcho.> ] 
<lista de columnas de referencia> ::= <lista de nombres de columnas> 
<acción referencial disparada> ::= 
<regla de modificación> [ <regla de borrado> ] 
| <regla de borrado> [regla de modificación] 
<regla de modificación> ::= ON UPDATE <acción referencial> 
<regla de borrado> ::= ON DELETE <acción referencial> 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Departírmnrotr
 
<acción referencial> ::= 
CASCADE 
| SET NULL 
| SET DEFAULT 
<definición de vista> ::= 
CREATE VIEW <nombre de tabla> 
[ <parent. izq.> <lista de columnas de vista> <parent. dcho.>] 
AS <expresión de consulta> 
[ WITH CHECK OPTION ] 
<lista de columnas de vista> ::= <lista de nombres de columnas> 
<definición de aserción> ::= 
CREATE ASSERTION <nombre de restricción> 
<verificación de aserción> [ <atributos de restricción> ] 
<verificación de aserción> ::= 
CHECK <parent. izq.> <condición de búsqueda> <parent. dcho.> 
7.3 Lenguaje de Manipulación de Datos (DML) 
<expresión de consulta>::= 
<expresión de consulta de no combinación> 
| <tabla combinada> 
<expresión de consulta de no combinación> ::= 
<término de consulta de no combinación> 
| <expresión de consulta> UNION [ALL] 
[ <especificación de correspondencia> ] <término de consulta> 
| <expresión de consulta> EXCEPT [ALL] 
[ <especificación de correspondencia> ] <término de consulta> 
<término de consulta> ::= 
<término de consulta de no combinación> 
| <tabla combinada> 
<término de consulta de no combinación> ::= 
<primario de consulta de no combinación> 
|<términodeconsulta> INTERSECT [ALL] 
[ <especificación de correspondencia> ] <primario de consulta> 
<primario de consulta> ::= 
<primario de consulta de no combinación> 
| <tabla combinada> 
<primario de consulta de no combinación> ::= 
<tabla simple> 
| <parent. izq.> <expresión de combinación de no consulta> <parent. dcho.> 
<tabla simple> ::= 
<especificación de consulta> 
| <constructor de valor de tabla> 
| <tabla explícita> 
<tabla explícita> ::= TABLE <nombre de tabla> 
<especificación de correspondencia> ::= 
CORRESPONDING [ BY <parent. izq.> <lista de columnas que corresponden><parent. dcho.> ] 
<lista de columnas que corresponden> ::= <lista de columnas> 
<constructor de valor de tabla> ::= 
VALUES <lista de constructores de valores de tabla> 
<lista de constructores de valores de tabla> ::= 
<constructor de valor de fila> [ { <coma> <constructor de valor de fila> ... } 
<constructor de valor de fila> ::= 
<elemento constructor de valor de fila> 
| <parent. izq.> <lista de constructores de valor de fila> <parent. dcho.> 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Depart_rmnrotr
 
| <subconsulta de fila> 
<lista de constructores de valor de fila> ::= 
<elemento constructor de valor de fila> 
[ {<coma> <elemento constructor de valor de fila>} ... ] 
<elemento constructor de valor de fila> ::= 
<expresión de valor> 
| <especificación de nulos> 
| DEFAULT 
<especificación de nulos> ::= NULL 
<subconsulta de fila> ::= <subconsulta> 
<subconsulta> ::= <parent. izq.> <expresión de consulta> <parent. dcho.> 
<especificación de consulta> ::= 
SELECT [<cuantificador de conjunto>] <lista de consulta> <expresión de tabla> 
<lista de consulta> ::= 
<asterisco> 
| <sublista de consulta> [{<coma> <sublista de consulta>} ...] 
<sublista de consulta> ::= 
<columna derivada> 
| <calificador> <punto> <asterisco> 
<columna derivada> ::= <expresión de valor> [<cláusula as>] 
<cláusula as> ::= [AS] <nombre de columna> 
<cuantificador de conjunto> ::= DISTINCT | ALL 
<expresión de tabla> ::= 
<cláusula from> 
[ <cláusula where> ] 
[ <cláusula group by> ] 
[ <cláusula having>] 
<cláusula from> ::= FROM <referencia a tabla> [ { <coma> <referencia a tabla> } ... ] 
<referencia a tabla> ::= 
<nombre de tabla> [ [AS] <nombre de correlación> 
[<parent. izq.> <lista de columnas derivadas> <parent. dcho.]] 
| <tabla derivada> [AS] <nombre de correlación> 
[<parent. izq.> <lista de columnas derivadas> <parent. dcho.] 
| <tabla combinada> 
<tabla derivada> ::= <subconsulta de tabla> 
<lista de columnas derivadas> ::= <lista de nombres de columnas> 
<lista de nombres de columnas> ::= 
<nombre de columna> [ { <coma> <nombre de columna> } ... ] 
<nombre de correlación> ::= <identificador> 
<calificador> ::= 
<nombre de tabla> 
| <nombre de correlación> 
<tabla combinada> ::= 
<combinación cruzada> 
| <combinación calificada> 
| <parent. izq.> <tabla combinada> <parent. dcho.> 
<combinación cruzada> ::= 
<referencia a tabla> CROSS JOIN <referencia a tabla> 
<combinación calificada> ::= 
<referencia a tabla> [NATURAL] [<tipo de combinación>] JOIN <referencia a tabla> 
[<especificación de combinación>] 
<especificación de combinación> ::= 
<condición de combinación> 
| <combinación de columnas nominadas> 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
Depart.rmnrotr
 
<condición de combinación> ::= ON <condición de búsqueda> 
<combinación de columnas nominadas> ::= 
USING <parent. izq.> <lista de columnas de combinación> <parent. dcho.> 
<tipo de combinación> ::= 
INNER 
| <tipo de combinación externa> [OUTER] 
| UNION 
<tipo de combinación externa> ::= 
LEFT 
| RIGHT 
| FULL 
<lista de columnas de combinación> ::= <lista de nombres de columnas> 
<cláusula where> ::= WHERE <condición de búsqueda> 
<cláusula group by> ::= 
GROUP BY <lista de referencias a columna de agrupamiento> 
<lista de referencias a columna de agrupamiento> ::= 
<referencia a columna de agrupamiento>[{<coma><referencia a columnas de agrupamiento>}...] 
<referencia a columna de agrupamiento> ::= 
<referencia a columnas> 
<referencias a columnas> ::= 
[ <calificador> <punto> ] <nombre de columnna> 
<cláusula having> ::= HAVING <condición de búsqueda> 
<condición de búsqueda> ::= 
<término booleano> 
| <condición de búsqueda> OR <término booleano> 
<término booleano> ::= 
<factor booleano> 
| <factor booleano> AND <factor booleano> 
<factor booleano> ::= 
[ NOT ] <test booleano> 
<test booleano> ::= 
<primario booleano> [ IS [ NOT ] <valor lógico> ] 
<valor lógico> ::= 
TRUE 
| FALSE 
| UNKNOWN 
<primario booleano> ::= 
<predicado> 
| <parent. izq.> <condición de búsqueda> <parent. dcho.> 
<predicado> ::= 
<predicado de comparación> 
| <predicado entre> 
| <predicado en> 
| <predicado parece> 
| <predicado de nulidad> 
| <predicado de comparación cuantificada> 
| <predicado existe> 
| <predicado de unicidad> 
| <predicado de concordancia> 
| <predicado de solapamiento> 
<predicado de comparación> ::= 
<constructor de valor de fila> <operación de comparación> <constructor de valor de fila> 
<predicado entre> ::= 
<constructor de valor de fila> ::= [ NOT ] BETWEEN 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
HAVINtóN ONtGN
 
<constructor de valor de fila> AND <constructor de valor de fila> 
<predicado en> ::= 
<constructor de valor de fila> 
[ NOT ] IN <valor de predicado en> 
<valor de predicado en> ::= 
<subconsulta de tabla> 
| <parent. izq.> <lista de valores en> <parent. dcho.> 
<lista de valores en> ::= 
<expresión de valor> { <coma> <expresión de valor> } ... 
<predicado parece> ::= 
valor de concordancia> [ NOT ] LIKE <patrón> 
<valor de concordancia> ::= <expresión de valores caracter> 
<patrón> ::= <expresión de valores caracter> 
<predicado de nulidad> ::= 
constructor de valor de fila> IS [ NOT ] NULL 
<predicado de comparación cuantificada> ::= 
constructor de valor de fila> <operación de comparación> 
<cuantificador> <subconsulta de tabla> 
<cuantificador> ::= <todos> | <algunos> 
<todos> ::= ALL 
<algunos> ::= SOME | ANY 
<predicado existe> ::= EXISTS <subconsulta de tabla> 
<predicado de unicidad> ::= UNIQUE <subconsulta de tabla> 
<predicado de concordancia> ::= 
<constructor de valor de fila>MATCH[ UNIQUE ][ PARTIAL | FULL]<subconsulta de tabla> 
<predicado de solapamiento> ::= 
<constructor de valor de fila 1> OVERLAPS <constructor de valor de fila 2> 
<constructor de valor de fila 1> ::= <constructor de valor de fila> 
<constructor de valor de fila 2> ::= <constructor de valor de fila> 
 
Otras sentencias de manipulación de datos son las siguientes: 
<sentencia de borrado: con búsqueda> ::= 
DELETE FROM <nombre de tabla> 
[WHERE <condición de búsqueda>] 
<sentencia de inserción> ::= 
INSERT INTO <nombre de tabla> 
<fuente y columnas de inserción> 
<fuente y columnas de inserción> ::= 
[ <parent. izq.> <lista de columnas de inserción> <parent. dcho.>] <expresión de consulta> 
| DEFAULT VALUES 
<lista de columnas de inserción> ::= 
<lista de nombres de columnas> 
<sentencia de modificación: con búsqueda> ::= 
UPDATE <nombre de tabla> 
SET <lista de cláusula de conjunto> 
[WHERE <condición de búsqueda>] 
<lista de cláusula de conjunto> ::= 
<cláusula de conjunto> [ {<coma> <cláusula de conjunto>}...] 
<cláusula de conjunto> ::= 
<nombre de columna> <operador igual> <fuente de modificación> 
<fuente de modificación> ::= 
<expresión de valor> 
| <especificación de nulos> 
| DEFAULT 

Bases de Datos 
Sevilla, octubre 2007, V 2007.10.1 
SQL 
 
HAVINtGN ONtGN
 
 
Lenguaje de Administración de Datos 
<sentencia de concesión> ::= 
GRANT <privilegios> ON <nombre de objeto> 
TO <concedido> [{<coma> <concedido> } ... ] 
[WITH GRANT OPTION] 
<nombre de objeto> ::= 
[ TABLE ] <nombre de tabla> 
| DOMAIN <nombre de dominio> 
<sentencia de revocación> ::= 
REVOKE [GRANT OPTION FOR ] <privilegios> 
ON <nombre de objeto> 
FROM <concedido> [ { <coma> <concedido> } ... ] <comportamiento al borrar> 
<privilegios> ::= 
ALL PRIVILEGES 
| <lista de acciones> 
<lista de acciones> ::= <acción> [ { <coma> <acción> } ... ] 
<acción> ::= 
SELECT 
| DELETE 
| INSERT [ <parent. izq.> <lista de nombres de columnas> <parent. dcho.> ] 
| UPDATE [ <parent. izq.> <lista de nombres de columnas> <parent. dcho.> ] 
| REFERENCES[ <parent.izq.> <lista de nombresdecolumnas> <parent. dcho.> ] 
| USAGE 
<concedido> ::= 
PUBLIC 
| <id. de autorización de usuario> 
 
Anotaciones: 
1.- Relativas al <tipo de datos> 
a) En SQL-92, además de los tipos de datos del SQL-89 (INTEGER, SMALLINT,CHARACTER, DECIMAL, 
NUMERIC,  REAL,  FLOAT  y  DOUBLE  PRECISION)  también  se  admiten  los  siguientes:  CHARACTER 
VARYING, DATE, TIME, BIT, TIMESTAMP,INTERVAL y BIT VARYING. 
b) Los tipos BIT y BIT VARYING contienen bits pero no son interpretados por el SGBD; INTERVAL expresa la 
diferencia  entre  fechas  u  horas;  y  TIMESTAMP  contiene  año,  mes,  día,  hora,  minutos,  segundos  y, 
opcionalmente, fracciones de segundo. 
2.- Relativas a <expresión de valor> 
a)  Una  <expresión  de  valor>  es  cualquier  expresión  que  dé  como  resultado  un  valor  numérico,carácter,  hora, 
fecha o intervalo. Puede ser tan simple como un dígito o tan complejo como una subconsulta. 
3.- Relativas a la <definición de restricción referencial> 
a)  Si <columnas y tabla referenciada> especifica una <lista de columnas de referencia>, ésta debe ser idéntica a 
una  <lista  de  columnas  únicas>  en  una  <definición  de  restricción  de  unicidad>  de  la  tabla  referenciada.  Se 
puede establecer una restricción referencial con conjuntos de columnas únicas sin que sean necesariamente la 
clave primaria. En caso de no especificar la <lista de columnas referencia> se entenderá que referencia a la 
clave primaria. 
b) En caso de no especificar la <acción referencial disparada> se considera que ésta es restringida. 
c) Las propuestas del estándar son más completas, incluyendo otros aspectos de las restricciones de integridad 
referencial como el tipo de concordancia (si todos los valores de la columnas que referencian pueden ser nulos 
o  no  nulos  o  ambas  cosas)  y  el  modo  de  restricción (diferida,  si  se  verifica  al  finalizar  la  transacción  o 
inmediata, si se efectúa al finalizar cada sentencia). 
4.- Relativas a la <operación de comparación>.Las operaciones de comparación son las usuales: =, >, <, >=, <=, <> . 
5.- Relativas a la dinámica. Existen además operaciones relacionadas con manejo de cursores.  
Tags