(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'