Anda di halaman 1dari 20

SQL (ORACLE)

(En algunos SQL las ordenes acaban en ; . En otros no)


A) TIPOS DE DATOS
A.1) ESTANDAR
TIPO DE DATO CARACTERISTICAS
CHAR(n) Cadenas de longitud fija. Tam mx: !! caracteres Si se "uiere meter una cadena ms
grande "ue el cam#o E$$%$
VARCHAR2(n) Cadenas de longitud &ariable. Tam mx: ''' caracteres.
LONG Son los cam#os memo. Tam mx: (b () de ''' millones de caracteres). Tienen
muc*as restricciones (no se #ueden meter dentro de condiciones en la SELECT+,)
NUMBER Cual"uier ti#o de n-mero. .ormato: /012E$ 3(4#recisi5n63+ 4escala67)7
4#recisi5n6: n8 de cifras "ue tiene el n8+ inclu9endo los decimales. (&alores #ermitidos
son entre : 9 ;<). =or defecto es el mximo (;<). Si se inclu9e este #armetro+ el n8 es
un decimal de coma fija. Si no se inclu9e+ el n8 es de coma flotante.
4escala6: /8 de decimales. >alores #osibles (de ?<@ a :A)(si no se #one escala+ n8
decimales B ')
DATE .ec*as.
ISNULL Cam#os con &alores nulos
a) Los datos de ti#o CCD$+ >D$CCD$ 9 L%/( &an entre comillas sim#les (E E). =ara meter una comilla sim#le *a9 "ue
#onerla dos &eces seguidas.
b) =ara meter fec*as se usa este formato Fd EaGo?mes?diaEH .
Ejempl!
UPDATE DATOS SET FECHA = {d '1997-12-31'} WHERE FECHA IS NULL;
c) En cam#os /012E$ se usa el #unto #ara se#arar los decimales (da igual como estI la configuaci5n regional de
JindoKs).
"#m$ %e &'$#%$# n
(
en )$mp( n'm*#+)(
V$l# Op)+ne( ele&+%$( C,m e( $lm$)en$%
745123!"9 NU#$ER 745123!"9
745123!"9 NU#$ER%9& 7451234
745123!"9 NU#$ER%9!2& 745123!"9
745123!"9 NU#$ER%9!1& 745123!9 %'(d)*d(+&
745123!"9 NU#$ER%& ERROR, E-CESO DE PRECISION
1
745123!"9 NU#$ER%15!1& 745123!" %*) '(d)*d(+&
745123!"9 NU#$ER%7!-2& 7451..
2
745123!"9 NU#$ER%7!2& ERROR, E-CESO DE PRECISION
745123!"9 NU#$ER%7!-7& ERROR, E-CESO DE PRECISION
745123!"9 NU#$ER%"!-7& 1.......
A.2) NO ESTANDAR
T+p( %e %$-( e(pe)+$le( %el (+(-em$ ((,l p$#$ ORACLE)!
RO.ID! Dlmacena la direcci5n fLsica de cada tu#la de la base de datos
"#m$% p#! 3identificador de blo"ue7.3identificador de tu#la7.3identificador de fic*ero7
RO.NUM! =ara cada tu#la #or consulta de&uel&e un n8 indicando el orden en "ue %$DCLE selecciona la tu#la desde una
tabla o resultado de un M%N/ de &arias tablas.
SECUENCIAS! Es un objeto de la base de datos desde el "ue un usuario #uede generar enteros -nicos.
.ormato #ara crear secuencia: C$EDTE SEQ0E/CE 4nombre secuencia6 3N/C$E1E/T 2O 4entero67 3STD$T JNTC
4entero67 31DP>DL0E 4entero67 31N/>DL0E 4entero67 3COCLE Q /%COCLE7
.ormato #ara borrar secuencia: R$%= SEQ0E/CE 4nombre secuencia6
Sacar &alor actual de la secuencia: 4nombre secuencia6.C0$$>DL
Sacar siguiente &alor de la secuencia: 4nombre secuencia6./EPT>DL
TABLA DUAL! Tabla creada automticamente #or %$DCLE en el diccionario de datos. Es accesible #or todos los usuarios.
Tiene un solo cam#o 9 un solo registro. Es una tabla comodLn.
Ejempl(!
SELECT ADD/#ONTHS%S0SDATE!2& 12(34+ d( 4)5 6 2 7(8(81 FRO# DUAL;
TABLA TAB! Tabla creada automticamente. Tiene los nombres de las tablas
TABLA COL! Tabla creada automticamente. Tiene los nombres de los cam#os de todas las tablas.
1
Si el (n de dgitos de la parte entera) > (precisin - escala), se produce un error de exceso de precisin.
2
Si escala es < 0 , se redondean las ultimas ciras de la parte entera
B) DE"INICIONES
ALIAS SINONIMOS (S/NON/M)! Sir&e #ara no tener "ue usar nombres largos a la *ora de usar cam#os de tablas
*ec*as #or otros usuarios
INDICES (INDE0)! Los Lndices son estructuras "ue #ro#orcionan un acceso r#ido a las filas de una tabla en base a los
&alores de una o ms columnas. Todos los datos estn ordenados #ara tardar menos en buscarlos Son trans#arentes al
usuario. La p#+n)+p$l 1en-$j$ es "ue se tarda menos tiem#o en buscar datos. El p#+n)+p$l +n)n1en+en-e es el tiem#o
#erdido en actualiSar Lndices cada &eS "ue se aGadenTeditanTeliminan registros.
TRANSACCIONES! Conjunto de instrucciones de L1R ejecutadas unas tras otras. Si las transacciones no son
com#letas (se #roduce cual"uier error) se debe dar marc*a atrs. ($%LL2DCU)
VISTAS (VIE.)! Las &istas son tablas &irtuales formadas a tra&Is de una consulta a #artir de otras tablas 9To &istas
existentes en la base de datos. Sir&e #ara crear es"uemas externos.
SUBCONSULTAS! =ermiten el encadenamiento de &arias consultas dentro de la misma SELECT. Ca9 &arios ti#os:
Subconsulta mediante comparadores: Se usan los o#eradores 6+ 4+ 46 si el &alor "ue de&uel&e la subconsulta es -nico.
Si no es -nico+ se debe usar 3/%T7 N/
Subconsultas con ALL (Operador / del A.R ): La condici5n debe cum#lirse #ara todos los &alores de la subconsulta.
Subconsultas con ANY: La condici5n debe cum#lirse #ara alg-n &alor de la subconsulta.
Subconsultas anidadas correlacionadas: 0na subconsulta anidada es correlacionada si se e&al-a una &eS #or cada
tu#la #rocesada en la sentencia #adre. Selecciona el registro de la consulta #rinci#al si la subconsulta de&uel&e alg-n
&alor.
"#m$-! SELECT 4cam#os6 .$%1 4tabla:6 4alias:6
JCE$E 4ex#r6 3/%T7 EPNSTS (SELECT 4cam#os6 .$%1 4tabla6 4alias6
JCE$E 4alias6.4cam#o6 4o#erador6 4alias:6.4cam#o6)
C) COMANDOS DEL SQL DE ORACLE (ORDENADOS A 2 3)
- A -
ALTER TABLE! 1odifica estructura de la tabla (#oneT"uita cam#os+ #oneT"uita Lndices+,). /o se #ueden destruir cam#os
con esta orden. DRR se #one al aGadir o editar cam#os.
"#m$-! DLTE$ TD2LE 4nombre tabla6 3DRR (4nombre cam#o 9 caracterLsticas6)7
3R$%= =$N1D$O UEO73R$%= .%$EN(/ UEO73 4definir cla&e #rimaria6734definir cla&e fornea67
Ejempl(!
ALTER TA$LE 9':(;+ ADD %9'(3<) NU#$ER%&&
ALTER TA$LE 9':(;+ ADD %9'(3<) CHEC= 9'(3<) > 5&
ALTER TA$LE 9':(;+ FOREI?N =E0 (*/'(@<)* %'(@<)*& REFERENCES '(@<)*(8
ALTER TA$LE 9':(;+ DROP FOREI?N =E0 %'(@<)*&
ALTER TA$LE '(2('(*3<+ +dd 9'<7+'5 A(5 %3B+C(/(DE&
ALTER TA$LE 9':(;+ FOREI?N =E0 3<:d+d REFERENCES '(@<)*(8 ALTER TA$LE 9':(;+
FOREI?N =E0 3<:d+d %3<:d+d& REFERENCES '(@<)*(8
- C -
COMMIT! Transacci5n realiSada con Ixito. "#m$-! C%11NT 3J%$U7. Ejempl! CO##IT
CREATE INDE0! Crea fic*eros de Lndice.
"#m$-! C$EDTE N/REP 4nombre Lndice6 %/ 4nombre tabla6 (4cam#os "ue forman la cla&e6) 3DSC Q RESC7
DSC ordena de 4 a 6 ; RESC ordena de 6 a 4.
Ejempl!
CREATE INDE- OFI/IND ON )2<3<*+8 %NO#$/OF&
CREATE S/NON/M! Sir&e #ara #oner un nombre ms corto a las tablas de otros usuarios
"#m$-! C$EDTE SO/%/O1 4nombre6 .%$ 4tabla6 Crea sin5nimo
Ejempl! CREATE S0NON0# FENTAS FOR AD#I/PP,FENTAS
CREATE TABLE! Crea tablas &acLas.
"#m$- 1! C$EDTE TD2LE 4nombre
;
6 (4definici5n de columnas6)+ 4cla&e #rinci#al6+ 4cla&e fornea6+ 4cam#os "ue no
#ueden tener &alores du#licados6) crea una tabla nue&a
"#m$- 2! C$EDTE TD2LE 4nue&a tabla6 DS 4una SELECT6 crea una co#ia de una tabla
4%e5+n+)+,n %e )$mp(6! >an entre ( ) 9 se#arados #or comas. .ormado #or: 4nombre cam#o6 4ti#o dato6 3JNTC
RE.D0LT V4&alor #or defecto6V73/%T /0LL7.
4)l$1e p#+n)+p$l6! =$N1D$O UEO 4nombre columna6
4)l$1e 5#7ne$6! .%$EN(/ UEO 4nombre cam#o6 $E.E$E/CES T% 4nombre tabla6 %/ RELETE 3$EST$NCT Q
CDSCDRE Q SET /0LL7
4)$mp( 8'e n p'e%en -ene# 1$l#e( %'pl+)$%(6! 0/NQ0E 4nombre cam#o6
La cla&e #rinci#al debe ser /%T /0LL
La cla&e fornea no debe ser /%T /0LL
La cla&e debe existir
Si no se indica ti#o de borrado+ se elige $EST$NCTER
Ejempl!
CREATE TA$LE )2<3<*+8
%COD/OF INTE?ER NOT NULL! =rimer cam#o
RE?ION FARCHAR2%2.& WITH DEFAULT 1ESTE1 NOT NULL!
CIUDAD FARCHAR2%2.& NOT NULL!
DIR INTE?ER! 0ltimo cam#o
PRI#AR0 =E0 %COD/OF&! Cla&e #rinci#al
FOREI?N =E0 ESTA/EN %DIR& Cla&e fornea
REFERENCES DIRECCIONES %tra tabla
ON DELETE CASCADE& Ti#o de borrado #ara cla&es forneas
CREATE VIE.! Crea una &ista. Las &istas son tablas &irtuales formadas a tra&Is de una consulta a #artir de otras tablas
9To &istas existentes en la base de datos. Sir&e #ara crear es"uemas externos.
"#m$-!
C$EDTE >NEJ 3%$ $E=LDCE7 3.%$CE Q /%.%$CE7 4nombre de &ista6 3(4nombre cam#os6)7
DS 4a"uL &a una SELECT6
3JNTC CCECU %=TN%/ 3C%/ST$DNT 4restricci5n677
Los nombres de columnas son o#cionales. Si se #onen se deben #oner todos o ninguno (s5lo el nombre del cam#o
Es obligatorio cuando se de&uel&e un &alor calculado+ es decir cuando la columna *a sido calculada dentro de la &ista.
Es obligatorio cuando sacamos una &ista "ue combina diferentes tablas
Op)+ne(9
!
"n #$%&'" se pueden poner nom(res de !0 caracteres m)ximo. "n otros S*+, se pueden poner - o -. 'os
nom(res no de(en producir conlictos (por e./ coincidir con una pala(ra cla0e)
OR REPLACE! Si existiese una &ista con ese mismo nombre+ con esta o#ci5n se reem#laSa el nombre. Nndica "ue existe
9a una &ista con el mismo nombre 9 "ue sea sustituida #or otra.
"ORCE! Crea la &ista aun"ue no existan los objetos.
NO"ORCE! .unciona al re&Is "ue .%$CE.
.ITH CHEC: OPTION! >alida las tu#las #ara saber si esas tu#las se #ueden meter+ modificar+,
CONSTRAINT 4#e(-#+))+,n6! =one restricciones. Se usa en casos mu9 es#eciales.
Ejempl %e 1+(-$ ;#+<n-$l (-%( l( )$mp()!
CREATE FIEW )2<3<*+8/(8E( AS SELECT G FRO# )2<3<*+8 WHERE '(@<)* = '(8E('
Ejempl %e 1+(-$ 1e#-+)$l ((e e(pe)+5+)$n )$mp()!
CREATE FIEW )2<3<*+8/(8E( AS SELECT 3)d/)2<! *)7/)2< FRO# )2<3<*+8
Ejempl %e 1+(-$ m+=-$ (e( ;#+<n-$l > 1e#-+)$l $ l$ 1e<) ((e e(pe)+5+)$n )$mp()!
CREATE FIEW )2<3<*+8/(8E( AS SELECT 3)d/)2<! *)7/)2< FRO# )2<3<*+8 WHERE 3)d/)2< IN
H1!2!"!9I
- D -
DELETE "ROM! Elimina registros de una tabla.
"#m$- 1! RELETE .$%1 4tabla6 3JCE$E 4condici5n67
"#m$- 2! RELETE .$%1 4tabla6 3JCE$E 4a"uL &a una SELECT67
Si no se #one la condici5n se borran todos.
Ejempl(!
DELETE FRO# J:(@)8
WHERE %3)d K 1.&
DELETE FRO# CI.71
WHERE FLD4 IN %SELECT FLD4 FRO# CI.71 WHERE FLD4 NOT LI=E '-L'&;
(El+m+n$ #e&+(-#( en $l?$#$ne(@p#1@)$?@;+(- (+ n e=+(-en #e&+(-#( en pe%+%(@p#1@)$? )n el )%+& +n%+)$%)
d(B(E( 2')7 +B;+'+*(8/9')C/3+;/4<8E
M4('( 3)d/+B;+'+* = 'd(d(d(' +*d 3)d/9')C((d)' = 'PERSONA4' AND
%8(B(3E 3):*E%G& 2')7 +B;+'+*(8/9')C/B<*/4<8E
M4('( 3)d/+B;+'+* = 'd(d(d(' +*d 3)d/9')C((d)' = 'PERSONA4'& = .;
DROP INDE0! Elimina el Lndice. "#m$-! R$%= N/REP 4nombre Lndice6
Ejempl! DROP INDE- *dD/7)E)
DROP S/NON/M! Elimina el sin5nimo. "#m$-! R$%= SO/%/O1 4nombre6
Ejempl! DROP S0NON0# C(*E+8
DROP TABLE! Elimina una tabla. Se #ierden todos los datos de la tabla
"#m$-! R$%= TD2LE 4nombre tabla6 3CDSCDRE C%/ST$DN/T7
CASCADE CONSTRAINT! Se borran todas las restricciones de integridad referencial "ue *acen referencia a la cla&e
#rimaria o -nica de la tabla a borrar. Se le indica al sistema "ue se conocen las restricciones+ #ero "ue aun asL se "uiere
eliminar.
Ejempl! DROP TA$LE 7)E)8 CASCADE CONSTRAINT
DROP VIE.! Todas las referencias "ue #ertenecen a la &ista se deben redefinir o eliminar #ara e&itar errores+
Si se tiene una &ista definida sobre otra 9 desa#arece la W+ entonces la :W &ista no funciona.
"#m$-! R$%= >NEJ 4nombre de &ista6
Ejempl! DROP FIEW C<8E+/.1
- G -
GRANT...ON...TO! Se dan #ri&ilegios de acceso a un usuario #ara las tablas seleccionadas.
"#m$-! ($D/T 4#ermisos6 %/ 4objeto6 T% 3 =02LNC Q 4 usuarios67 3JNTC ($D/T %=TN%/7
.ITH GRANT OPTION! Los usuarios seleccionados #ueden dar #ri&ilegios a otros.
PERMISOS QUE SE PUEDEN USAR CON GRANT A REVO:E
PERMISOS QUE HACE CADA UNO
ALTER DGadir T eliminar cam#os 9 renombrar tablas
ALL Todos los #ermisos
DELETE 2orrar registros
INDE0 Crear Lndices
INSERTB()$mp()C Nnsertar registros
RE"ERENCES Crear referencias (cla&es externas))
SELECT B()$mp()C =ermite lectura de cam#os de tablas (=or defecto: Todos)
UPDATEB()$mp()C =ermite modificar datos de cam#os de tablas (=or defecto: Todos)
Ejempl!
?RANT UPDATE%(79'(8+! 3B<(*E(& ON 3B<(*E(8 TO ')d)B2)
?RANT ALL TO )83+'
- I -
INSERT INTODVALUES! 1ete &alores en una tabla. Los coloca donde le #areSca.
"#m$- 1 ('n #e&+(-#)! N/SE$T N/T% 4nombre tabla6 3(4Lista de cam#os6)7 >DL0ES (4Lista de &alores6).
"#m$- 2 (m');( #e&+(-#()! N/SE$T N/T% TD2LD 4una SELECT6
Si el cam#o es carcter (>D$CCD$+ CCD$ o L%/() se debe #oner entre comillas.
Si el cam#o es numIrico (/012E$)+ no se #one comillas.
En los cam#os carcter se #uede meter el /0LL+ #ero si se *a definido antes al cam#o con la o#ci5n /%T /0LL+ da
error.
Si no se inclu9en los cam#os+ se refiere a todos los cam#os. Nnflu9e el orden en "ue se colocaron en la tabla.
Ejempl!
INSERT INTO 3)34(8 %#ARCA! #ODELO& FALUES %'CITROEN'! 'N-'& Nnserta un registro
INSERT INTO 9')C((d)'(8 FALUES %'P1'! 'TO#AS'! 'A'! '$IL$AO'& Nnserta un registro
INSERT INTO 911 SELECT G FRO# 91. WHERE 3)d/9')C = 'S1'
- L -
LOC: TABLE! Se usa #ara blo"uear una tabla o &ista. El objeti&o es garantiSar "ue durante el tiem#o "ue se trabaje con
ella la tabla /o es modificada #or el usuario 9 %tros usuarios no #uedan acceder a la tabla. =ara #oder realiSar esta
o#eraci5n basta con tener alg-n #ri&ilegio.
Los blo"ueos se #ueden "uitar con C%11NT X $%LL2DCU
"#m$-! L%CU TD2LE 34es"uema6.34tabla6 Q 4&ista677 N/ 4modo blo"ueo6 1%RE 3/%JDNT7
Op)+ne(!
4m% ?l8'e6! %#eraciones #ermitidas mientras dura el blo"ueo.
NO.AIT! /o es#era *asta "ue finalice el blo"ueo (si no se #one esta o#ci5n 9 se intenta entrar una tabla blo"ueada el
S(2R se "ueda es#erando *asta "ue termine el blo"ueo)
T+p %e ?l8'e E5e)-( 8'e -+ene e(e ?l8'e en l$ ?$(e %e %$-(
RO. SHARE (mEn+m) /i&el mLnimo de blo"ueo. Se usa #ara modificar algunas filas. Los dems usuarios #ueden
consultar o modificar otras filas. Los otros no #ueden usar L%CU , EPCL0SN>E.
RO. E0CLUSIVE Es como la anterior #ero #ro*ibe "ue otros usuarios blo"ueen la tabla #ara uso com#artido.
SHARE /o deja "ue otros usuarios blo"ueen la tabla de forma ms restringida (=ermite blo"ueos de
menor o igual ni&el). =ermite "ue los usuarios &ean la tabla+ #ero las actualiSaciones s5lo se
#ueden realiSar sobre filas es#ecLficas.
SHARE RO. E0CLUSIVE /o #ermite ms blo"ueos sobre la tabla. =ermite "ue se &ean los registros
E0CLUSIVE (m7=+m) /i&el mximo de blo"ueo. El usuario "ue realiSa el blo"ueo es el -nico "ue #uede *acer
o#eraciones sobre la tabla. Los otros usuarios no #ueden *acer nada.
Ejempl(!
LOC= TA$LE 7)E)8 IN SHARE #ODE NOWAIT
LOC= TA$LE 3)34(8 IN ROW SHARE #ODE
- R -
RENAME! Cambia el nombre de una tabla. "#m$-! $E/D1E 4tabla:6 T% 4tabla6
Ejempl!
RENA#E E791 TO E793
REVO:EDOND"ROM! Quita #ermisos. "#m$-! $E>%UE 4#ermisos6 %/ 4tabla6 .$%1 F=02LNC Q 4usuarios6H
3CDSCDRE C%/ST$DN/TS7
Los #ermisos son los mismos "ue los de ($D/T.
CDSCDRE C%/ST$DN/TS elimina todas las referencias
Ejempl! REFO=E ALL ON J:(@)8 FRO# 9<3*<3
ROLLBAC:! Se *a #roducido un error en la transacci5n. /o guarda los cambios realiSados.
"#m$-! $%LL2DCU 3J%$U7 3T% 4#unto de referencia67.
Los #untos de referencia sir&en #ara di&idir una transacci5n grande en &arias #artes. Si se usa la o#ci5n T% 4#unto de
ref6 no re#ite toda la transacci5n desde el #rinci#io. (lo *ace desde ese #unto)
Ejempl! ROLL$AC=
- S -
SAVEPOINT! Crea #untos de referencia. "#m$-! SD>E=%N/T 4nombre #unto de referencia6
Ejempl! SAFEPOINT 91
SELECTD"ROM! Selecciona los datos "ue interesan de una tabla o muc*as. Se #arece a la orden SET .NLTE$ T% del
d2ase
"#m$-! SELECT 3RNSTN/CT7 4YQ lista de cam#os6 3ex#resiones
@
7 33DS7 V4alias6V7 6
1
'os campos 2 las ta(las se ponen separados por comas
.$%1 4tablas6 33DS7 4alias67
3JCE$E 4condici5n67
3($%0= 2O 4lista de cam#os6
3CD>N/( 4 condici5n677
3%$RE$ 2O 4lista de cam#os6 3DSC Q RESC7 7
3N/T% TE1= 4 nombre tabla tem#oral67
3F0/N%/ 3DLL7 Q N/TE$SECT Q 1N/0SH 4otra select67
1) OPCON!S "#! P#!$!N PON!RS! !N%R! S!L!C% Y &RO'
F! Todos los cam#os
DISTINCT! /o muestra datos re#etidos (cam#os con el mismo &alor).
DISTINCTRO.! /o muestra datos re#etidos (registros con el mismo &alor).
4l+(-$ %e )$mp(6! Cam#os "ue se &an a usar.
4e=p#e(+ne(6! Dl #oner una ex#resi5n se consigue crear un nue&o cam#o en memoria en "ue se guarda el resultado de
esa ex#resi5n. Se #ueden usar los o#eradores )+ ?+ T+,
4$l+$(6! %tra forma de llamar a las tablas. =rimero se #one la tabla "ue se &a a usar 9 des#uIs el alias se#arado #or un
es#acio.
Ejempl(! SELECT E<9)! *)7;'( FRO# TA$LA T1 (B +B<+8 (8 T1
(. PON!R CON$CON!S CON )*!R!
Se #ueden usar los o#eradores l5gicos D/R+ %$ 9 /%T #ara unir condiciones 9 tambiIn >+ < + <=+ >=+ = + Z= 9 <>
%tras #osibilidades son:
4)$mp6 BNOTC BET.EEN 41$l16 AND 41$l26! S5lo selecciona los registros "ue el contenido del cam#o estI entre
4&al:6 9 4&al6. =uede ser un n8 o una fec*a.
4)$mp6 BNOTC IN (4l+(-$ %e 1$l#e(6)! Se seleccionan los registros en "ue el contenido del cam#o coincida con alguno
de los &alores #uestos des#uIs de N/.
4)$mp6 BNOTC LI:E G4)$%en$6H! Se seleccionan todos los registros "ue el contenido del cam#o sea 4cadena6.
Cm%+ne(
I
! @! Sustitu9e un carcter. J! Sustitu9e &arios caracteres
4)$mp6 BNOTC MATCHES G4)$%en$6H! Se seleccionan todos los registros "ue el contenido del cam#o sea 4cadena6.
Cm%+ne(! K! Sustitu9e un carcter. F! Sustitu9e &arios caracteres.
4)$mp6 IS BNOTC NULL! Se selecciona los cam#os "ue su contenido sea /0LL.
SCAPE L4)$#7)-e#6L! Si encuentra ese carcter+ "ue salte
(.1. PON!R #NA S!L!C% $!N%RO $! #NA CON$CON
Se usa cuando se debe #oner una funci5n (1DP+1N/... ) dentro de una ex#resi5n.
Ejempl! (L$ SELECT 8'e e(-7 %en-# %e l$ )n%+)+,n (ele))+n$ el 1$l# m7=+m %el )$mp UNIDADES )'$n%
NUMSTOC: e( M. E(-$ SELECT %e1'el1e 'n nN)
SELECT N/ARTICULO FRO# ARTICULO
WHERE NU#/STOC= = 9 AND CANTIDAD = %SELECT #A-%UNIDADES& FRO# ARTICULO
WHERE NU#/STOC= = 9 &
Ejempl! (Sele))+n$ -%( l( #e&+(-#( 8'e -en&$n N@ARTICULO +&'$l $ 1O11) (En e(-e ejempl (e p'e%e )n(e&'+#
l m+(m pn+en% SELECT 'A+(PR!CO,%O%AL)... en 1e< %e ALL (SELECT PR!CO,%O%AL ...) > pne# P en
1e< %e 6.)
SELECT N/ARTICULO FRO# ARTICULO
WHERE PRECIO/TOTAL > ALL %SELECT PRECIO/TOTAL FRO# ARTICULO
WHERE N/ARTICULO = 1.11&
=oniendo N/ en &eS de 6 + la condici5n se cum#le cuando #recio total coincida con una lista de &alores.
ALL! La condici5n debe cum#lirse en todos los registros seleccionados.
SOMEQAN/! La condici5n debe cum#lirse #or lo menos en un registro.
(.-. #SAR !+S%S CON #NA S!L!C% $!N%RO $! #NA CON$CON:
Re&uel&e &erdadero cuando *a9 alg-n registro "ue cum#la la condici5n #uesta en la SELECT.
Ejempl!
SELECT A,*)7;'( FRO# 9')C((d)'(8 A
WHERE E-ISTS %SELECT G FRO# 9(d<d)8 $
WHERE $,PO = 'P2' AND A,SO = $,SO&
.. A/R#PAR N&OR'ACON CON /RO#P 0Y
:) /o #uede tener columnas "ue no *a9an sido #uestas al comienSo de la SELECT.
) Se #uede #oner un n8 #ara referirse a los cam#os (orden en "ue estn colocados en memoria).
Ejempl! SELECT N#AT!NO#$RE!CURSO!DIRECCION!?RUPO FRO# ALU#NOS
?ROUP $0 3!5 %E8 B) 7<87) P:( 9)*(' CURSO!?RUPO&
1. PON!R CON$CON!S CON *A2N/
Sir&e #ara #oner condiciones a los gru#os (ace#ta o rec*aSa gru#os de filas)
Se #ueden #oner cam#os "ue no estIn dentro de esos gru#os.
3. OR$!NAR CA'POS CON OR$!R 0Y
:) /8 mximo de cam#os "ue #ueden ordenarse: < cam#os.
) Longitud mxima entre todos los cam#os a ordenar: :' b9tes.
3
4ara desacti0ar los comodines de '56" 2 7%8&9"S, poner delante del comodn una : (;)
;) Ngual "ue en ($%0= 2O se #ueden #oner n-meros enteros en &eS de los nombres de las columnas.
4. CR!AR #NA %A0LA %!'PORAL CON N%O %!'P
Se crea una tabla tem#oral con los cam#os 9 registros "ue *an sido seleccionados en la SELECT.
5. #NR $OS S!L!C% (CON #NON 6 N%!RS!C%7 'N#S)
UNION (pe#$%# )! Ra los registros "ue salen en la :W select ) los registros "ue salen en la W select. /o *a9 registros
re#etidos.
UNION ALL (pe#$%# )! Ra los registros "ue salen en la :W select ) los registros "ue salen en la W select. =uede *aber
registros re#etidos.
INTERSECT (pe#$%# )! Ra los registros "ue estn a la &eS en la :W 9 en la W select
MINUS (pe#$%# 2)! $egistros "ue estn en la :W select 9 no estn en la W
Cn%+)+ne(!
/8 de columnas de las dos SELECT debe ser igual. Cada columna debe ser del mismo ti#o 9 longitud.
%$RE$ 2O solo #uede estar en la -ltima SELECT. Se deben usar los n8s en &eS de los nombres de columnas
0/N%/ no saca los re#etidos+ #ara "ue los sa"ue+ usar 0/N%/ DLL
=ara N/TE$SECT ocurre lo mismo "ue #ara 0/N%/
8. SA0!R CO'O S! LLA'AN LAS %A0LAS (ORACL! 4.9)
SELECT Y .$%1 TD2
Ejempl!
SELECT G FRO# TA$
TNA#E TA$T0PE CLUSTERID
------------------------------ ------- ---------
PRUE$A TA$LE
REFERENCIA TA$LE
TA$LA/NULOS TA$LE
19. SA0!R CO'O S! LLA'AN LOS CA'POS (ORACL! 4.9)
SELECT Y .$%1 C%L
JCE$E T/D1E B E4nombre de la tabla en ma9-sculas6E
Ejempl!
SELECT G FRO# COL WHERE TNA#E = 'REFERENCIA';
TNA#E COLNO CNA#E COLT0PE WIDTH SCALE PRECISION NULLS DEFAULTFAL
------------- ----- -------------- -------- ----- ----- --------- ----------- ----------
REFERENCIA 1 CLAFE/E-T CHAR 2 NOT NULL
REFERENCIA 2 NO#$RE FARCHAR2 2. NOT NULL
REFERENCIA 3 F/DEFECTO FARCHAR2 2. NOT NULL 'E+)'
REFERENCIA 4 COD FARCHAR2 1. NOT NULL 'G,G'
O-#( ejempl( (l( %( p#+me#( ;$)en l m+(m)!
SELECT CODI?O! %PRECIO G 1,1& 1PRECIO CON IFA1 FRO# ARTICULOS;
SELECT CODI?O! %PRECIO G 1,1& AS 1PRECIO CON IFA1 FRO# ARTICULOS;
8(B(3E +,2Bd2 3)d<@) 2')7 +4.53 +
M4('( +,2Bd1 = %8(B(3E (79'(8+/:8:+'<) 2')7 9+'+7(E')8/3)7:*<3+& +*d
+,2Bd21 K> %8(B(3E E<9)/9')C((d)' 2')7 9+'+7(E')8/3)7:*<3+&;
SELECT DESCRIPCION FRO# AL#ACENES
WHERE COD/DELE?ACION IN %SELECT FLD2 3)d/d(B(@ FRO# AH.3" d(B(@
WHERE FLD1 = %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&
AND FLD1. = . &;
Ejempl( )n UNION!
(Se '($ el RR p$#$ j'n-$# l( %$-( %e S )$mp()
SELECT %FLD7 QQ ' ' QQ FLD5 QQ ' ' QQ FLD& 1APELLIDOS 0 NO#$RE1 FRO# AH.32
WHERE FLD3 = 'F'
UNION
SELECT %FLD5& FRO# AH.32
WHERE FLD3 = 'R'
Un$ SELECT &+&$n-e B)m?+n$ 1$#+$( -$?l$( > '($ 'n UNIONC
SELECT SSLO?IN COD/USUARIO! AL,TIPO/#OF! AL,FECHA/#OF! AL,USUARIO!
D?,FLD4 1DELE?ACION1!
A#,DESCRIPCION!
AR,COD/ARTICULO! AR,TIPO/ARTICULO!
AL,CANTIDAD!
PRF,FLD7 QQ ' ' QQ PRF,FLD5 QQ ' ' QQ PRF,FLD 1NO#$RE/PROFEEDOR1!
#O,DESCRIPCION
FRO# AL#ACEN AL!
AL#ACENES A#!
ARTICULOS AR!
AH.3" D?!
AH.53 PR!
AH.32 PRF!
#OTIFOS/#OF #O
WHERE
%D?,FLD1 = %SELECT E#PRESA/USUARIO
FRO# PARA#ETROS/CO#UNICA& AND D?,FLD1. = .& AND
%AL,COD/DELE?ACION = D?,FLD2& AND
%AL,COD/AL#ACEN = A#,COD/AL#ACEN& AND
%AL,COD/ARTICULO = AR,COD/ARTICULO& AND
%AL,COD/PROFEEDOR = PR,FLD2& AND
%PR,FLD1 = PRF,FLD1& AND
%PR,FLD2 = PRF,FLD2& AND
%PR,FLD1 = %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%PR,FLD21 K> %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%PRF,FLD3 = 'F'& AND
%AL,COD/#OTIFO/#OF = #O,COD/#OTIFO/#OF&
UNION
SELECT SSLO?IN COD/USUARIO! AL,TIPO/#OF! AL,FECHA/#OF! AL,USUARIO!
D?,FLD4 1DELE?ACION1!
A#,DESCRIPCION!
AR,COD/ARTICULO! AR,TIPO/ARTICULO!
AL,CANTIDAD!
PRF,FLD5 1NO#$RE/PROFEEDOR1!
#O,DESCRIPCION
FRO# AL#ACEN AL!
AL#ACENES A#!
ARTICULOS AR!
AH.3" D?!
AH.53 PR!
AH.32 PRF!
#OTIFOS/#OF #O
WHERE
%D?,FLD1 = %SELECT E#PRESA/USUARIO
FRO# PARA#ETROS/CO#UNICA& AND D?,FLD1. = .& AND
%AL,COD/DELE?ACION = D?,FLD2& AND
%AL,COD/AL#ACEN = A#,COD/AL#ACEN& AND
%AL,COD/ARTICULO = AR,COD/ARTICULO& AND
%AL,COD/PROFEEDOR = PR,FLD2& AND
%PR,FLD1 = PRF,FLD1& AND
%PR,FLD2 = PRF,FLD2& AND
%PR,FLD1 = %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%PR,FLD21 K> %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%PRF,FLD3 = 'R'& AND
%AL,COD/#OTIFO/#OF = #O,COD/#OTIFO/#OF&
;
Dl ejecutar la select+ sale:
En-e# 1$l'e 5# LOGIN! @ (se mete una cadena a mano 9 se #ulsa E/TE$)
Un$ SELECT &+&$n-e B)m?+n$ 1$#+$( -$?l$( > '($ 'n UNIONC
SELECT 'F' TIPO/PER! COUNT%G& AS CUANTOS
FRO# AL#ACEN AL! AL#ACENES A#! ARTICULOS AR! AH.3" D?!
AH.53 PR! AH.32 PRF! #OTIFOS/#OF #O
WHERE
%D?,FLD1 = %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%D?,FLD1. = .& AND
%AL,COD/DELE?ACION = D?,FLD2& AND
%AL,COD/AL#ACEN = A#,COD/AL#ACEN& AND
%AL,COD/ARTICULO = AR,COD/ARTICULO& AND
%AL,COD/PROFEEDOR = PR,FLD2& AND
%PR,FLD1 = PRF,FLD1& AND
%PR,FLD2 = PRF,FLD2& AND
%PR,FLD1 = %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%PR,FLD21 K> %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%AL,COD/#OTIFO/#OF = #O,COD/#OTIFO/#OF& AND
%PRF,FLD3 = 'F'&
UNION
SELECT 'R' TIPO/PER! COUNT%G& AS CUANTOS
FRO# AL#ACEN AL! AL#ACENES A#! ARTICULOS AR! AH.3" D?!
AH.53 PR! AH.32 PRF! #OTIFOS/#OF #O
WHERE
%D?,FLD1 = %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%D?,FLD1. = .& AND
%AL,COD/DELE?ACION = D?,FLD2& AND
%AL,COD/AL#ACEN = A#,COD/AL#ACEN& AND
%AL,COD/ARTICULO = AR,COD/ARTICULO& AND
%AL,COD/PROFEEDOR = PR,FLD2& AND
%PR,FLD1 = PRF,FLD1& AND
%PR,FLD2 = PRF,FLD2& AND
%PR,FLD1 = %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%PR,FLD21 K> %SELECT E#PRESA/USUARIO FRO# PARA#ETROS/CO#UNICA&& AND
%AL,COD/#OTIFO/#OF = #O,COD/#OTIFO/#OF& AND
%PRF,FLD3 = 'R'& ;
Sale una cosa #arecida a esto:
T CUANTOS
- ---------
F 31
R .
(Se '($n SELECT( %en-# %e l( .HERE)
Se p'e%e '($# P > 46 p#8'e l$ -$?l$ PARAMETROS@COMUNICA (,l -+ene 'n #e&+(-#
SELECT 'FT 'QQ%;,FLD7 QQ ' ' QQ ;,FLD5 QQ ' ' QQ ;,FLD& #I-
FRO# AH.53 +! AH.32 ;
WHERE ;,FLD3 = 'F' AND
+,2Bd1 = ;,2Bd1 AND
+,2Bd2 = ;,2Bd2 AND
+,2Bd1 = %8(B(3E (79'(8+/:8:+'<) 2')7 9+'+7(E')8/3)7:*<3+& +*d
+,2Bd21 K> %8(B(3E E<9)/9')C((d)' 2')7 9+'+7(E')8/3)7:*<3+&
UNION
SELECT 'RT 'QQ;,FLD5 FRO# AH.53 +! AH.32 ;
WHERE ;,FLD3 = 'R' AND
+,2Bd1 = ;,2Bd1 AND
+,2Bd2 = ;,2Bd2 AND
+,2Bd1 = %8(B(3E (79'(8+/:8:+'<) 2')7 9+'+7(E')8/3)7:*<3+& +*d
+,2Bd21 K> %8(B(3E E<9)/9')C((d)' 2')7 9+'+7(E')8/3)7:*<3+&
ORDER $0 #I-;
(O-# ejempl. U($ %( 1e)e( l$ m+(m$ -$?l$)
SELECT A,G ! $,FECHA/INFOR#E! $,ENTRADA/CONFOR#E! $,RESPONSA$LE/CONFOR#E!
$,ENTRADA/NO! $,RESPONSA$LE/NO
FOR# INFOR#E/INSPECCION A! INFOR#E/INSPECCION/$
WHERE A,NU#/INFOR#E = $,NU#/INFOR#E AND
A,NU#/INFOR#E = 1 AND $,NU#/INFOR#E = 2;
(O-# ejempl. Cmp#'e?$ (+ l 8'e %e1'el1e l$ SELECT $n+%$%$ e('n O)
8(B(3E 3)d/+B;+'+*! 3)d/9')C((d)' 2')7 +B;+'+*(8/9')C/3+;/4<8E
M4('( 3)d/+B;+'+* = 'd(d(d(' +*d 3)d/9')C((d)' = 'PERSONA4' AND
%8(B(3E 3):*E%G& 2')7 +B;+'+*(8/9')C/B<*/4<8E
M4('( 3)d/+B;+'+* = 'd(d(d(' +*d 3)d/9')C((d)' = 'PERSONA4'& = .;
- U -
UPDATEDSETDB.HEREC! $eem#laSa los &alores de los registros.
"#m$- 1! 0=RDTE 4nombre tabla6 SET (4cam#os6)B(4&alores6) 3JCE$E 4condici5n67
"#m$- 2! 0=RDTE 4nombre tabla6 SET (4cam#os6)B(4&alores6) 3JCE$E 4a"uL &a una SELECT67
Si no se le #onen condiciones reem#laSa todos los registros.
Ejempl(!
UPDATE 9')d:3E)8
SET (D<8E(*3<+8 = (D<8E(*3<+8 - 1. 6 4
WHERE <d/2+; = 'UAS' AND <d/9')d:3E) = '-=47'
UPDATE (79B(+d)8
SET 3)7(*E = 'NO CO##ENT' Cambian todos
UPDATE (79B(+d)8
SET 8:(Bd) = 8:(Bd) - %8:(Bd) G .,1.&
WHERE *)7;'( = 'PEPE'
UPDATE (79B(+d)8
SET 8:(Bd) = 1.....
WHERE 8:(Bd) IS NULL
UPDATE E'+;+J+d)'(8
SET 8:(Bd) = 8:(Bd) 6 1...
WHERE 3)d/E IN %SELECT 3)d/E FRO# )2<3<*+8
WHERE 3<:d+d = '#ADRID'&
- (otros) -
QF D FQ! Sir&e #ara crear comentarios. El comentario #uede ocu#ar &arias lLneas. "#m$-! QY (comentario) YT
Ejempl!
VGGG
GGG CO#ANDO SUL USADO PARA ELI#INAR PROFEEDORES
GGGV
22 ! Sir&e #ara crear comentarios. "#m$-! 22 4comentario6
Ejempl!
-- S(B(33<)*+ B)8 '(@<8E')8 (* P:( EDAD K 25 5 B)8 )'d(*+ 9)' +9(BB<d)8
D) "UNCIONES
D.1) "UNCIONES NUMERICAS
ABS( )! Re&uel&e el &alor absoluto de un n8 . "#m$-! D2S(4n86)
CEIL( )! Re&uel&e un entero 6B n8 . "#m$-! CENL(4n86)
"LOOR( )! Re&uel&e un entero 4B n8 . "#m$-! .L%%$(4n86)
MOD( )! Re&uel&e el resto de la di&isi5n n8: T n8. "#m$-! 1%R(4n8:6+4n86)
PO.ER( )! Re&uel&e n8:
n8
. "#m$-! =%JE$(4n8:6+4n86)
ROUND( )! Re&uel&e el n8 n redondeado con m decimales. "#m$-! $%0/R(4n86+ 34n8 decimales67)
SIGN( )! Re&uel&e el signo de n (n8 4 ' ?:; n8 B ' '; n8 6 ' :). "#m$-! SN(/(4n86)
TRUNC( )! Re&uel&e el n8 n con m decimales (#or defecto+ mB'). Si m es negati&o trunca m dLgitos a la iS"uierda del #unto
decimal. "#m$-! T$0/C(4n86+4n8 decimales6)
Ejempl(!
SELECT TRUNC%457! -3&! TRUNC%457,"9! 1& FRO# DUAL; de&uel&e @''' 9 @![A.<
SELECT TRUNC%457,555&! TRUNC%1! -2& FRO# DUAL; de&uel&e @![A 9 '
SQRT( )! Re&uel&e la raLS cuadrada de un n8 . "#m$-! SQ$T(4n86)
D.2) "UNCIONES DE GRUPOS
AVG( )! Re&uel&e la media. "#m$-! D>((4cam#o numIricoTlista de &alores6)
COUNT( )! Re&uel&e el n8 de &alores no nulos en los registros recu#erados. "#m$-! C%0/T(F4cam#o6Q YH)
DISTINCT( )! Contar los distintos. 3no existe en el SQL de DCCESS 7. "#m$-! RNSTN/CT(F4cam#o6Q YH)
MA0( )! Re&uel&e el &alor mximo. "#m$-! 1DP(4cam#o6)
MIN( )! Re&uel&e el &alor mLnimo. "#m$-! 1N/(4cam#o6)
SUM( )! Re&uel&e la suma de todos los registros del gru#o. "#m$-! S01(4cam#o6)
D.S) "UNCIONES DE CONVERSION DE TIPOS DE DATOS
TO@CHAR( )! Con&ierte un n8 o una fec*a en una cadena. "#m$-! T%\CCD$(4n86).
OOOO DGo (@ cifras) CC@ Cora (reloj @ *oras)
OO DGo ( cifras) CC Cora (reloj : *oras)
11 1es (:?:) 1N 1inuto
R Ria semana (n8) 3: B lunes7 SS Segundo
RR Ria (:?;:)
RRR /8 dia del aGo (:?;[[)
Q /8 trimestre (:?@)
Ejempl! TO/CHAR%1...&
TO@DATE( )! Con&ierte una cadena en una fec*a. "#m$-! T%\RDTE(4cadena6). Ejempl! TO/DATE%'.1-DEC-
97'&
TO@NUMBER( )! Con&ierte una cadena en un n8. "#m$-! T%\/012E$(4cadena6). Ejempl! TO/NU#$ER%'1...'&
D.T) "UNCIONES DE CADENAS
INITCAP( )! El #rimer carcter en ma9-sculas. "#m$-! N/NTCD=(4cadena6)
INSTR( )! Com#rueba si una cadena est dentro de otra. Se busca la ocurrencia n8 n em#eSando desde 4inicio6.
"#m$-! N/ST$(V4cadena donde se busca6V+V4cadena buscada6V+4inicio6+4n8 ocurrencia6)
LENGTH( )! Longitud de una cadena. "#m$-! LE/(TC(4cadena6)
LO.ER( )! =asa la cadena a min-sculas. "#m$-! L%JE$(4cadena6)
LPAD( )! $ellena una columna #or la iS"uierda con el carcter indicado.
(a) Si n8 6 longitud del cam#o: los es#acios "ue sobran se rellenan #or la iS"uierda con el carcter indicado.
(b) Si n8 B longitud del cam#o: sin cambios
(c) Si n8 4 longitud del cam#o: de&uel&e los #rimeros caracteres del cam#o
"#m$-! L=DR(4cam#o6+ 4n86+4carcter6)
Ejempl(!
SELECT LPAD%'S1'! 1. '/'& FRO# DUAL 3Esta select de&uel&e la cadena E\\\\\\\\S:E 7
SELECT LPAD%'123457"9.'! 2! '/'& FRO# DUAL 3Esta select de&uel&e la cadena E:E 7
SELECT LPAD%1...! 7! 'G'& FRO# DUAL 3Esta select de&uel&e la cadena EYYY:'''E 7
Ejempl!8(B(3E B9+d%3)d/:8:+'<)! 2! '/'& 2')7 B<8E/7)C<7<(*E)8;
LTRIM( )! Elimina los es#acios de la . "#m$-! LT$N1(4cam#o carcter6)
REPLACE( )! Cace Ebuscar 4cad:6 9 cambiarla #or 4cad6E dentro de 4cadena6.
"#m$-! $E=LDCE(V4cadena6V+V4cad:6V+V4cad6V)
Ejempl! SELECT REPLACE%'SCOTT'!'S'!'$O0'& FRO# DUAL
RPAD( )! Dumenta el tamaGo de una columna. Los es#acios "ue sobran se rellenan #or la derec*a.
(a) Si n8 6 longitud del cam#o: los es#acios "ue sobran se rellenan #or la derec*a con el carcter indicado.
(b) Si n8 B longitud del cam#o: sin cambios
(c) Si n8 4 longitud del cam#o: de&uel&e los #rimeros caracteres del cam#o
"#m$-! $=DR(4columna6+ 4anc*o del cam#o6+4carcter6)
Ejempl(!
SELECT RPAD%'S1'! 1. '/'& FRO# DUAL 3Esta select de&uel&e la cadena E S:\\\\\\\\E 7
SELECT RPAD%'S1'! 1. '/-'& FRO# DUAL 3Esta select de&uel&e la cadena E S:\?\?\?\?E 7
SELECT RPAD%'S1'! 12! '/- '& FRO# DUAL 3Esta select de&uel&e la cadena E S:\? \? \? \E 7
SELECT RPAD%'123457"9.'! 2! '/'& FRO# DUAL 3Esta select de&uel&e la cadena E:E 7
RTRIM( )! Elimina los es#acios de la . "#m$-! $T$N1(4cam#o carcter6)
SOUNDE0( )! 2usca #alabras "ue suenen igual (en inglIs). "#m$-! S%0/REP(V4cadena6V)
Ejempl!
SELECT +9(BB<d)8 FRO# (79B(+d)8
WHERE SOUNDE-%+9(BB<d)8& = SOUNDE-%1S#0THE1&
SUBSTR( )! Re&uel&e un #edaSo de una cadena. "#m$-! S02ST$(4cadena6+4inicio6+4n8 caracteres6)
TRIM( )! Elimina los es#acios de la 9 (es como *acer un '8$57($8$57(<)) ). "#m$-! T$N1(4cam#o carcter6)
Ejempl!
SELECT '==>' QQ TRI#%SU$STR%DESCRIPCION! 1! 4.&& QQ 'K==' 1S<* (89+3<)81
FRO# +B7+3(*(8
WHERE CODI?O LI=E 'A/$/'
S<* (89+3<)8
--------------------------------------------------
==>AB7+3W* d( B+ 3+BB( $'+C) #:'<BB)K==
==>AB7+3W* d( B+ 3+BB( S+<*X d( $+'+*d+K==
UPPER( )! =asa la cadena a ma9-sculas. "#m$-! 0==E$(4cadena6)
D.T) "UNCIONES DE "ECHA
ADD@MONTHS( )! Suma n meses a una fec*a. "#m$-! DRR\1%/TCS(4fec*a6+4n8 meses6)
DA/( )! RLa del mes. "#m$-! RDO(4fec*a6)
LAST@DA/( )! /8 de dLas del mes. "#m$-! LDST\RDO(4fec*a6).
Ejempl! SELECT LAST/DA0%S0SDATE& FRO# DUAL
MONTH( )! 1es de la fec*a. "#m$-! 1%/TC(4fec*a6)
MONTHS@BET.EEN( )! Re&uel&e n8 de meses "ue *a9 entre dos fec*as. (fec*a ? fec*a:)
"#m$-! 1%/TCS\2ETJEE/(4una fec*a6+4otra fec*a6)
S/SDATE! .ec*a del sistema. "#m$-! SOSRDTE. Ejempl! SELECT S0SDATE FRO# DUAL
.EE:DA/( )! RLa de la semana ('domingo+ [sbado)
/EAR( )! DGo de la fec*a. "#m$-! OED$(4fec*a6)
E) SQL PLUS
E.1) PRINCIPALES COMANDOS
(nN)! 1uestra la linea n8 del buffer. El n8 debe ser ma9or de '.
Ejempl (p#+me# (e eje)'-$ e(-e )m$n%)!
SUL> SELECT N/ARTICULO FRO# ARTICULO
WHERE PRECIO/TOTAL > ALL %SELECT PRECIO/TOTAL FRO# ARTICULO
WHERE N/ARTICULO = 1.11&;
SQL6 :
1G SELECT N/ARTICULO FRO# ARTICULO
SQL6
2G WHERE PRECIO/TOTAL > ALL %SELECT PRECIO/TOTAL FRO# ARTICULO
SQL6 !
S=?'[: Nn&alid line number 3da error #or "ue el comando tiene menos de ! lLneas7
DESC! >er estructura de una tabla. "#m$-! RESC 4tabla6
Ejempl(!
DESC AL#ACEN;
(Esto es lo "ue SQL =L0S saca #or #antalla)
N+7( N:BBY T59(
----------------------------------------------------- -------- ---------------
COD/#OTIFO/#OF FARCHAR2%2&
COD/AL#ACEN NOT NULL FARCHAR2%1.&
COD/DELE?ACION NOT NULL FARCHAR2%3&
COD/ARTICULO NOT NULL FARCHAR2%1.&
FECHA/#OF DATE
COD/PROFEEDOR FARCHAR2%15&
USUARIO FARCHAR2%2.&
CANTIDAD NU#$ER
TIPO/#OF FARCHAR2%1&
DESCRIBE! >er estructura de una tabla. "#m$-! RESC$N2E 4tabla6
Ejempl(!
DESCRI$E COL;
(Esto es lo "ue SQL =L0S saca #or #antalla)
N+7( N:BBY T59(
----------------------------------------------------- -------- ------------------
TNA#E NOT NULL FARCHAR2%3.&
COLNO NOT NULL NU#$ER
CNA#E NOT NULL FARCHAR2%3.&
COLT0PE FARCHAR2%1.&
WIDTH NOT NULL NU#$ER
SCALE NU#$ER
PRECISION NU#$ER
NULLS FARCHAR2%19&
DEFAULTFAL LON?
CHARACTER/SET/NA#E FARCHAR2%44&
DESCRI$E TA$;
(Esto es lo "ue SQL =L0S saca #or #antalla)
N+7( N:BBY T59(
----------------------------------------------------- -------- ------------------
TNA#E NOT NULL FARCHAR2%3.&
TA$T0PE FARCHAR2%7&
CLUSTERID NU#$ER
DE"INE@EDITOR! Se indica a SQL =L0S el editor de textos "ue se &a a usar. "#m$-! define\editor B 4editor de texto6
Ejempl(!
d(2<*(/(d<E)' = C< Si ests usando %racle de 0/NP
d(2<*(/(d<E)' = *)E(9+d Si ests usando %racle #ara JindoKs
ED R EDIT! Editar fic*ero .SQL indicado. El editor de textos usado se indica con %e5+ne@e%+-#. Si no se indica fic*ero+ SQL
=L0S usa un fic*ero tem#oral (D.NERT.20.)
"#m$-! ERNT 34fic*ero67
E0IT! Sale de SQL =L0S
GET! Lle&a al buffer el fic*ero .SQL indicado. "#m$-! (ET 4fic*ero6
HELP! 1uestra la a9uda (si est dis#onible).
LIST! Sir&e #ara &er ultimo comando metido+ #ero no lo ejecuta. "#m$-! LNST
QUIT! Sale de SQL =L0S
RUN! Ejecuta el -ltimo comando metido. (*a9 "ue usarlo cuando el comando no acaba en ; )
Ejempl!
SUL> SELECT N/ARTICULO FRO# ARTICULO
WHERE PRECIO/TOTAL > ALL %SELECT PRECIO/TOTAL FRO# ARTICULO
WHERE N/ARTICULO = 1.11&
SUL> ':*
SAVE! (rabar fic*ero. La o#ci5n $E=LDCE sir&e #ara sobreescribir el fic*ero.
"#m$-! SD>E 4nombre6 3$E=LDCE7
Ejempl! SAFE CTZTE#P,T-T REPLACE
SET SQLPROMPT! Cambia el #rom#t usado #or SQL =L0S. "#m$-! SET SQL=$%1=T 4cadena6
Ejempl!
SET SQL=$%1=T SQL66 3el #rom#t #asa a ser VSQL66V7
START! Ejecuta un fic*ero de texto con ordenes SQL. Si la extensi5n del fic*ero no es .SQL *a9 "ue indicarlo.
"#m$-! STD$T 4fic*ero6 4args6
4args6 son &alores #ara &ariables usadas en el fic*ero SQL
Ejempl(!
START 9'@..1;
START 9'@d(9E 1.;
SPOOL! (uarda el resultado de una SELECT en un fic*ero o en la im#resora. =ara terminar se usa S=%%L %.. (con
fic*eros) o S=%%L %0T (con im#resoras)
"#m$- 1! S=%%L 4fic*ero6
"#m$- 2! S=%%L %/
E.2) GENERACION DE IN"ORMES
BREA:! >isualiSa ru#turas de control acti&as
BREA: ON! Sir&e #ara organiSar las filas recu#eradas en gru#os.
"#m$-! 2$EDU %/ 4columnaT$%JT=D(ET$E=%$T6 4acci5n a tomar6
Cosas "ue se #ueden #oner des#uIs de %/:
4)l'mn$(6! Crea un nue&o gru#o cada &eS "ue cambia el &alor de esa columna. Se #uede unar &arias columnas.
Ejem#lo: %/ ciudad %/ cod#ostal :8 agru#a #or ciudad 9 des#uIs #or codigo #ostal
RO.! Crea un gru#o #ara cada fila recu#erada.
PAGE! Crea una ru#tura #or #gina
REPORT! Crea un gru#o al final del informa
Dcciones a tomas
S:IP! Salta una lLnea
S:IP 4nN6! Salta n lLneas
PAGE! Salto de #gina
BTITLE! Sir&e #ara configurar el #ie de #gina del informe. El texto mostrado #uede ser una cadena de caracteres o una
&ariable de ti#o caracter
Op)+ne(!
ONQO""! Dcti&aTdesacti&a el #ie de #gina
COL4nN6! Texto colocado en la columna indicada
S:IP 4nN6! Salta n lLneas antes de im#rimir el texto
LE"T! Texto alineado a la iS"uierda
CENTER! Texto centrado
RIGHT! Texto alineado a la derec*a
Ejempl!
$TITLE CENTER 'C)*2<d(*3<+B';
CLEAR BREA:S! Elimina cual"uier ti#o de ru#tura acti&a.
COLUMN! Se modifica la &isualiSaci5n de una columna. Esto no cambia los datos+ es s5lo una mscara.
"#m$-! C%L01/ 4columna6
.%$1DT 4formato6
CEDRN/( E4cabecera6E
FJ$D==ER Q J%$R\J$D==ER Q T$0/CDTEH
/0LL E4texto6E
LNUE 4columna6
F=$N/T Q /%=$N/TH
%/ T %..
/EJLN/E
Op)+ne(!
"ORMAT! Sir&e #ara formatear columnas.
Caracteres es#eciales:
Y A4nN6! >ariable alfanumIrica de n #osiciones
Y M! /-meros. /o rellena con ceros a la iS"uierda
Y O! /-meros. $ellena con ceros a la iS"uierda.
Y U! Nndica la #osicion del signo del ]
Y . ! Nnserta el #unto decimal
Y V ! Nnserta el se#arador de miles.
Y B ! Cambia los blancos a la iS"uierda de la columna #or ceros.
Y MI! 0sa el ? #ara indicar "ue la columna tiene n8s negati&os
Y PR! 0sa 4 9 6 #ara indicar "ue la columna tiene n8s negati&os
HEADING! Cabecera de la columna. >a entre comillas sim#les. El #i#eline sir&e #ara di&idir la cabecera en &arias
lineas.
Ej: ESDLD$N% Q 1E/S0DLE en una linea a#arece ESDLD$N%E 9 debajo a#arece E1E/S0DLE
.RAPPED R .ORD@.RAPPED R TRUNCATE! Como se alinea la columna si el &alor contenido es ma9or "ue el
es#ecificado en formato.
NULL ! Si en la columna existen &alores nulos los reem#laSa #or el texto indicado
LI:E! La columna tiene el mismo formato "ue la columna indicada
PRINT R NOPRINT! Es#ecifica si la columna se im#rime o no. Se utiliSa cuando una columna es necesaria en una
select (ej ($%0= 2O) #ero no desea &isualiSarse.
ON Q O""! Dcti&aTdesacti&a el formateo de una columna tem#oralmente.
NE.LINE! (enera una linea en blanco antes de em#eSar a escribir el contenido de la columna
Ejempl!
COLU#N ENA#E HEADIN? 'NO#$REQE#PLEADO' FOR#AT A"
COLU#N DEPTNO HEADIN? 'DEPARTA#ENTO' FOR#AT 99;
COLU#N SAL
HEADIN? 'SALARIOQ#ENSUAL'
FOR#AT [9!999,99;
COMPUTE! >er todos los com#utes acti&os
COMPUTE ... O" ... ON! Saca el mLnimo+ mximo+ media+... de los registros "ue forman un gru#o
"#m$-! C%1=0TE 4funci5n6 %. 4cam#o6 %/ 4gru#o (un gru#o creado con 2$EDU)6
"'n)+ne(!
1DP: 1ximo
1N/: 1Lnimo
D>(: 1edia
S01: Suma
STR: Res&iaci5n estandar
>D$: >arianSa
C%0/T: n8 de filas #or gru#o
Ejempl! CO#PUTE #A- OF 8+B+'<) ON d(9E*);
CLEAR COMPUTES! Eliminar todos los com#utes acti&os
SET LINESI3E! /8 caracteres #or lLnea. =or defecto es <'+ el mximo es ^^^
"#m$-! SET LN/ESN_E 4n86
SET PAGESI3E! /8 lLneas #or #gina+ inclu9endo tLtulos 9 marcas de #gina. =or defecto es !
SET HEADING ONQO""! Dcti&aTdesacti&a utiliSaci5n de cabeceras de columna. =or defecto est a %/
SET VARIABLE W1$l#W! 1ete un &alor en la &ariable indicada. Reben corres#onderse los ti#os de datos.
SET NULL W-e=-W! >alor #ara nulos. =or defecto es cadena &acia.
SET ECHO ONQO""! >isualiSar &alores "ue se estn ejecutando desde dentro de un fic*ero. =or defecto es %..
SET "EEDBAC: ONQO""! Re&uel&e n8 de registros seleccionados+ eliminados+... =or defecto est a %/
SET VERI"/ ONQO""! Nndicador del &alor antiguo 9 nue&o de una &ariable cuando se usa X&ariable. =or defectoest a %/
SET .RAP ONQO""! Elimina es#acios entre lLneas.
SHO. 41$#+$?le6! >er &alor de la &ariable indicada
SHO. ALL! >er &alor de todas las &ariables.
TTITLE! Sir&e #ara configurar el encabeSado del informe. El texto mostrado #uede ser una cadena de caracteres o una
&ariable de ti#o caracter
Op)+ne(!
ONQO""! Dcti&aTdesacti&a el encabeSado
COL4nN6! Texto colocado en la columna indicada
S:IP 4nN6! Salta n lLneas antes de im#rimir el texto
LE"T! Texto alineado a la iS"uierda
CENTER! Texto centrado
RIGHT! Texto alineado a la derec*a
Ejempl!
TTITLE LEFT 'D<3, 9"' CENTER 'I*2)'7( d( C(*E+8';
E.S) VARIABLES
Si se #one X4nombre6+ cuando se mete dentro de una SQL+ el SQL =L0S #edir el &alor de esa &ariable.
Si se #one XX4nombre6+ el &alor de la &ariable no se #ierde. Sir&e #ara usar el mismo &alor en &arias ordenes SQL
D los fic*eros .SQL se les #uede #asar directamente el &alor de las &ariables. Se deben #oner des#uIs de STD$T
4nombre fic*ero6 9 se#aradas #or es#acios.
Ejempl!
SELECT G FRO# d(9E
WHERE d(9E*) = S*:7d(9E;
Dl ejecutarlo a#arece ...
"nter 0alue or numdept/ = se mete un n8+ cadena+,
/%TD: Si se "uiere meter una cadena *a9 "ue incluir las E E (Ej: E=aco el LocoE) o #oner la &ariable entre E E
Ejempl!
SELECT +,2Bd2 3)d<@) FRO# +4.53 +! +4.32 ;
WHERE +,2Bd2 = ;,2Bd2 +*d
+,2Bd1 = %8(B(3E (79'(8+/:8:+'<) 2')7 9+'+7(E')8/3)7:*<3+& +*d
+,2Bd21 K> %8(B(3E E<9)/9')C((d)' 2')7 9+'+7(E')8/3)7:*<3+& +*d
%
%;,2Bd3 = 'R' +*d ;,2Bd5 = 'SN)7;'(' & )'
%;,2Bd3 = 'F' +*d ;,2Bd7QQ' 'QQ;,2Bd5QQ' 'QQ;,2Bd = 'SN)7;'(' &
&;
Dl ejecutarlo a#arece &eces VEnter &alue for nombreV
Res#ues de meter el &alor sale algo #arecido a esto:
old [: (b.fld; B EME and b.fld! B EX/ombreE ) or
neK [: (b.fld; B EME and b.fld! B ERelegado @E ) or
") OPERADORES SQL
!P ! %#erador de asignaci5n. Ejempl! rec\read :B rec\read ) :
4 V 4P V 6V 6P V P V 4 6 V XP > YP ! Se usan #ara com#arar n8s+ cadenas+ fec*as+, (ZB+ 46 9 `B *acen lo mismo (distinto))
Ejempl( (el 2N > SN ;$)en l m+(m)!
SELECT CODI?O! %PRECIO G 1,1& 1PRECIO CON IFA1 FRO# ARTICULOS
WHERE PRECIO >= 15... AND PRECIO K= 2....;
SELECT CODI?O! %PRECIO G 1,1& 1PRECIO CON IFA1 FRO# ARTICULOS
WHERE PRECIO \= 15...
SELECT CODI?O! %PRECIO G 1,1& 1PRECIO CON IFA1 FRO# ARTICULOS
WHERE PRECIO K> 15...
Z 2 F Q ! Son los o#eradores numIricos "ue #ermite %racle.
Ejempl(!
SELECT CODI?O! PRECIO! %PRECIO G .,9.& 1DESPUES DEL DESCUENTO1 FRO# ARTICULOS;
SELECT TO/DATE%'1V7+'V2...'& - TO/DATE%'1V7+'V1999'& 1DIF FECHAS1 FRO# DUAL;
(Z)P ! aaa 3lo &i en una select+ #uede "ue sir&e #ara *acer los VLE.T M%N/V del Dccess7
RR ! %#erador usado #ara unir cadenas o cam#os caracter. (son dos #i#es seguidos)
Ejempl!
SELECT NIF! APE1 QQ ' ' QQ APE2 QQ '! ' QQ NO#$RE AS NO#$RE/CO#PLETO
FRO# DATOS/PERS;
W W ! Se usa en alias de cam#os (cuando tienen es#acios o caracteres "ue dan #roblemas)
Ejempl!
SELECT NIF AS 1N] d( NIF1! APE1! APE2! NO#$RE FRO# DATOS/PERS;
L L ! Relimitador de cadenas.
Ejempl!
INSERT INTO CLIENTES %NO#$RE! APELLIDOS& FALUES %'DRACULA'! NULL&;
ALL ((ele)-( $n+%$%$() ! Se usa cuando se "uiere "ue el &alor de un cam#o sea ma9or+ menor+, a todos los &alores "ue
de&uel&a la SELECT.
"#m$-! 4o#erador6 DLL (4una SELECT6)
N-$! El 4o#erador6 #uede ser 6 + 4+ 6B + 4B 9 46 3tambiIn se #uede usar B + #ero es #oco #rctico7.
Ejempl!
SELECT DESCRIPCION FRO# ARTICULO
WHERE PRECIO/TOTAL > ALL %SELECT PRECIO/TOTAL FRO# ARTICULO
WHERE COD/ARTICULO LI=E 'CDRL'&
ANDV ORV NOT ! %#eradores l5gicos. Si no *a9 #arIntesis se ejecutan en este orden: /%T+ D/R+ %$
Ejempl!
SELECT CODI?O! %PRECIO G 1,1& 1PRECIO CON IFA1 FRO# ARTICULOS
WHERE PRECIO >= 15... AND PRECIO K= 2....;
BET.EEN! El n8 T fec*a debe estar entre dos &alores.
Ejempl!
SELECT CODI?O! %PRECIO G 1,1& 1PRECIO CON IFA1 FRO# ARTICULOS
WHERE PRECIO $ETWEEN 15... AND 2....;
IN ! Se usa #ara indicar una lista de &alores. =ueden ser n-meros+ cadenas+ fec*as+, o una SELECT
Se usa #rinci#almente en el comando SELECT 9 0=RDTE
Ejempl(!
(Selecciona los registros >ue su &#,=%'7%&"? o su &#,=,"'"*%&5#? sea @001@)
SELECT G FRO# AL#ACENES WHERE '..1' IN %COD/AL#ACEN! COD/DELE?ACION&;
(Selecciona los registros >ue su &#,=%'7%&"? sea @001@ o @00!@)
SELECT G FRO# AL#ACENES WHERE COD/AL#ACEN IN %'..1'! '..3'&;
("l 5? se usa con una S"'"&8 para indicar >ue registros 0an a (orrarse)
DELETE FRO# CI.71 WHERE FLD4 IN %SELECT FLD4 FRO# CI.71 WHERE FLD4 NOT LI=E '-L'&;
("l 5? se usa con una S"'"&8 para indicar >ue registros 0an a modiicarse)
UPDATE E'+;+J+d)'(8
SET 8:(Bd) = 8:(Bd) 6 1...
WHERE 3)d/E NOT IN %SELECT 3)d/E FRO# )2<3<*+8
WHERE 3<:d+d = '#ADRID'&;
LI:E! Se usa con cadenas. Los comodines "ue #ueden usarse son EbE (&arios caracteres) 9 subra9ado (un caracter).
Ejempl!
SELECT DISTINCT APELLIDO FRO# CLIENTES WHERE APELLIDO LI=E 1#L1
SELECT DISTINCT APELLIDO FRO# CLIENTES WHERE APELLIDO NOT LI=E 1LN1
G) ACCEDER A ORACLE CON VISUAL BASIC [
G.1) CONE0IONES
a) Refinir una &ariable de ti#o Connection o DR%R2.Connection (lo normal es "ue sea una &ariable global) 3el %R2C debe
*aberse creado antes en el #anel de control7
Ejempl! P:;B<3 d;O'+3B( A8 N(M ADOD$,C)**(3E<)*&
b) Configurar conexi5n 3o#cional7
Ejempl!
d;O'+3B(,C)**(3E<)*SE'<*@ = 1P')C<d('=#SDAORA,1;P+88M)'d=9+*(B;1 S /
1U8(' ID=9+*(B;D+E+ S):'3(=9+*(B;L)3+B( Id(*E<2<('=3."21 'KG>
'KG> E8E) 9:(d( 8(' :* )'<@(* d( d+E)8 OD$C %3'(+d) d(8d( (B 9+*(B d( 3)*E')B&
P:;B<3 d;O'+3B( A8 N(M ADOD$,C)**(3E<)*&
c) Dbrir conexi5n.
c.:) Si la #ro#iedad .ConnectionString es una cadena &acia+ la conexi5n debe abrirse con
4objeto connection6.%#en V4cadena de conexi5n6V.
c.) Si la #ro#iedad .ConnectionString no es una cadena &acia+ la conexi5n debe abrirse con
4objeto connection6.%#en.
Ejempl(!
d;O'+3B(,O9(*
d;O'+3B(,O9(* 1P')C<d('=#SDAORA,1;P+88M)'d=9+*(B;1 S /
1U8(' ID=9+*(B;D+E+ S):'3(=9+*(B;L)3+B( Id(*E<2<('=3."21
d) Dcceder a datos usando recordsets (&er (.)
e) Cerrar la conexion
Ejempl! d;O'+3B(,CB)8(
N-$(! =ara saber si la conexi5n est abierta o no+ mira la #ro#iedad S-$-e del objeto Connection 3o DR%R2.Connection7. Si
esa #ro#iedad &ale '+ la conexi5n est cerrada.
Si eso #asa cuando se est intentando leerTgrabar en una tabla+ a#arece el error AH\OOOTOOI
G.2) RECORDSETS
a) Refinir una &ariable de ti#o $ecordset o DR%R2.$ecordset (Ej: Rim rec2uscador as /eK $ecordset)
b) 1eter comando SQL en una &ariable de ti#o carcter (#or ejem#lo+ una SELECT) 3o#cional7
c) Dbrir el recordset (se #uede elegir el ti#o de recordset antes de abrirlo o en el momento en "ue se abre+ #ero no des#uIs).
3#or moti&os #racticos (&elocidad)+ elegir ti#o de blo"ueo ES5lo lecturaE ($%L)]Re$%Onl>) 9 ti#o de recordset EStaticE
($%OpenS-$-+))7.
F)'7+E)T K'(3)'d8(E>,O9(* 1K3)7+*d) SUL>1! KE<9) '(3)'d8(E>! KE<9) ;B)P:()>
Ejempl!
D<7 '(3 +8 N(M ADOD$,R(3)'d8(E
D<7 8E'SUL +8 SE'<*@
'------------------------------
'd;O'+3B( (8 B+ 3)*(D<^* :8+d+ %:* );J(E) C)**(3E<)*&
8E'SUL = 18(B(3E G 2')7 B<8E+/J:(@)8 1 S C;C'L2 S /
1M4('( E<9) = '1 S R(9B+3(%EDET<9),T(DE! 1'1!1''1& S 1'1
'(3,O9(* 8E'SUL! d;O'+3B(! +dO9(*SE+E<3! +dL)3AR(+dO*B5
G.S) E^ECUTAR COMANDOS SQL SIN USAR RECORDSETS
GGG E8E) )3:''( 9)' P:( 8( :8+ (B 7WE)d) ED(3:E( d( B+8 3)*(D<)*(8
a) 1eter comando SQL en una &ariable de ti#o carcter (#or ejem#lo+ un N/SE$T) 3o#cional7
b) Cacer esto: 4objeto connection6.Execute V4comando SQL6V
G.T) TRUCOS
A) DATOS DE TIPO NUMERICO
La forma ms sim#le de con&ertir los n8s de las textbox (o cual"uier otro control) al formato usado #or %racle es:
SE'%CD;B%K*]>&&
La funci5n Str( ) con&ierte un n8 en una cadena 9 siem#re usa el #unto como se#arador de decimales.
Ejempl! SE'%CD;B%EDET)E+B,T(DE&&
B) DATOS DE TIPO CARACTER
La forma ms sim#le es usar la funci5n $E=LDCE del >isual 2asic. Se le ordena "ue bus"ue una comilla sim#le 9 la cambie
#or dos comillas sim#les.
Ejempl! 8E'SUL = 8E'SUL S 1'1 S R(9B+3(%EDEN)7;'(,T(DE!1'1!1''1& S 1'1
C) DATOS DE TIPO "ECHA
Y 0na forma ms sim#le es usar {d 'ao-mes-dia'}. Tiene una #ega: /o funciona si la usas en SQL?=L0S.
Ejempl!
D<7 8E'T(79 A8 SE'*@
'----------------------------------------
'3)@( B+ 2(34+ d(B dEP<3A(' 5 B+ d+ :* 2)'7+E)
8E'SUL = 1SELECT G FRO# PEDIDOS1 S C;C'L2 S 1 WHERE COD/PEDIDO IS NOT NULL 1
I2 %N)E I8N:BB%dE9F(34+I*<3<),F+B:(&& T4(*
8E'T(79 = F)'7+E%dE9F(34+I*<3<),F+B:(!1'5555-77-dd'1&
8E'SUL = 8E'SUL S 1AND 1 S C;C'L2 S /
1 FECHA >= {d 1 S 8E'T(79 S 1}1
E*d I2
I2 %N)E I8N:BB%dE9F(34+F<*,F+B:(&& T4(*
8E'T(79 = F)'7+E%dE9F(34+F<*,F+B:(!1'5555-77-dd'1&
8E'SUL = 8E'SUL S 1AND 1 S C;C'L2 S /
1 FECHA K= {d 1 S 8E'T(79 S 1}1
E*d I2
'E8E) 9:(d( P:(d+' +8<T
' SELECT G FRO# PEDIDOS
' WHERE COD/PEDIDO IS NOT NULL AND
' FECHA >= {d '1999-.7-31'} AND
' FECHA K= {d '2...-.1-.2'&
Y %tra o#ci5n es usar la funci5n TO@DATE( ) . La fec*a debe #asarse en formato $_2me(2%+$ #ara e&itar #roblemas
(V9999TmmTddV o V9999?mm?ddV)
Ejempl!
D<7 8E'T(79 A8 SE'*@
'----------------------------------------
'3)@( B+ 2(34+ d(B dEP<3A(' 5 B+ d+ :* 2)'7+E)
8E'SUL = 1SELECT G FRO# PEDIDOS1 S C;C'L2 S 1 WHERE COD/PEDIDO IS NOT NULL 1
I2 %N)E I8N:BB%dE9F(34+I*<3<),F+B:(&& T4(*
8E'T(79 = F)'7+E%dE9F(34+I*<3<),F+B:(!1'5555-77-dd'1&
8E'SUL = 8E'SUL S 1AND 1 S C;3'B2 S /
1 FECHA >= TO/DATE%1 S 8E'T(79 S 1!'5555-77-dd'&1
E*d I2
I2 %N)E I8N:BB%dE9F(34+F<*,F+B:(&& T4(*
8E'T(79 = F)'7+E%dE9F(34+F<*,F+B:(!1'5555-77-dd'1&
8E'SUL = 8E'SUL S 1AND 1 S C;3'B2 S /
1 FECHA K= TO/DATE%1 S 8E'T(79 S 1!'5555-77-dd'&1
E*d I2
'E8E) 9:(d( P:(d+' +8<T
' SELECT G FRO# PEDIDOS
' WHERE COD/PEDIDO IS NOT NULL AND
' FECHA >= TO/DATE%'1999-.7-31'! '5555-77-dd'& AND
' FECHA K= TO/DATE%'2...-.1-.2'! '5555-77-dd'&
Y %tra o#ci5n es usar la funci5n TO@CHAR( ) . La fec*a debe #asarse en formato aGo?mes?dia. Se a#ro&ec*a "ue las
cadenas se com#aran #or su c5digo DSCNN. (Ej: VV 6 V'V)
Ejempl!
D<7 8E'T(79 A8 SE'*@
'----------------------------------------
'3)@( B+ 2(34+ d(B dEP<3A(' 5 B+ d+ :* 2)'7+E)
8E'SUL = 1SELECT G FRO# PEDIDOS1 S C;C'L2 S 1 WHERE COD/PEDIDO IS NOT NULL 1
I2 %N)E I8N:BB%dE9F(34+I*<3<),F+B:(&& T4(*
8E'T(79 = F)'7+E%dE9F(34+I*<3<),F+B:(!1'5555-77-dd'1&
8E'SUL = 8E'SUL S 1AND 1 S C;3'B2 S /
1 TO/CHAR%FECHA! '5555-77-dd'& >= 1 S 8E'T(79
E*d I2
I2 %N)E I8N:BB%dE9F(34+F<*,F+B:(&& T4(*
8E'T(79 = F)'7+E%dE9F(34+F<*,F+B:(!1'5555-77-dd'1&
8E'SUL = 8E'SUL S 1AND 1 S C;3'B2 S /
1 TO/CHAR%FECHA! '5555-77-dd'& K= 1 S 8E'T(79
E*d I2
'E8E) 9:(d( P:(d+' +8<T
' SELECT G FRO# PEDIDOS
' WHERE COD/PEDIDO IS NOT NULL AND
' TO/CHAR%FECHA! '5555-77-dd'& >= '1999-.7-31' AND
' TO/CHAR%FECHA! '5555-77-dd'& K= '2...-.1-.2'

Anda mungkin juga menyukai