Tipo Dato VARCHAR2(size [BYTE | CHAR]) Descripcin Cadena de caracteres de longitud varia le !ue tiene co"o ta"a#o "$%i"o el valor de size en BYTE o CHAR& El ta"a#o "$%i"o es de '((( )tes o caracteres* ) la "+ni"a es de , )te o un car$cter& -e de e es.eci/icar el ta"a#o de .ara VARCHAR2& Cadena de caracteres 1nicode de longitud varia le con size co"o "$%i"o ta"a#o de longitud& El n2"ero de )tes !ue .ueden ser 3asta dos veces el ta"a#o de codi/icaci4n A5,61T7,6 ) tres veces el ta"a#o de la codi/icaci4n 1T78& El ta"a#o "$%i"o est$ deter"inado .or la de/inici4n del 9uego de caracteres nacional* con un l+"ite "$%i"o de '((( )tes& -e de e es.eci/icar el size de 0VARCHAR2& 02"ero con . .recisi4n (.arte entera) ) s escala (.arte deci"al)& 5a .recisi4n . .uede variar de , a ;8& 5a s escala .uede variar desde <8' 3asta ,2=& Tanto la .recisi4n ) la escala se encuentran en d+gitos deci"ales& 1n valor nu">rico re!uiere , a 22 )tes& 1n su ti.o del ti.o de datos 01:BER con .recisi4n .& 1n valor de co"a /lotante se re.resenta interna"ente co"o un 01:BER& 5a .recisi4n . .uede variar desde , 3asta ,26 d+gitos inarios& 1n valor /lotante re!uiere , a 22 )tes& Ti.o de datos de caracteres de longitud varia le de 3asta 2 giga )tes* o 2;, <, )tes& Aer"anece .ara co".ati ilidad con versiones anteriores de ?racle& Cntervalo de /ec3as v$lidas del , de enero de '=,2 antes de Cristo a el ;, de dicie" re de DDDD& El /or"ato .or de/ecto se deter"ina e%.l+cita"ente .or el .ar$"etro 05-EBATEE7?R:AT o i".l+cita"ente .or el .ar$"etro 05-ETERRCT?RY& El ta"a#o es de = )tes& Este ti.o de datos contiene los ca".os de /ec3a ) 3ora AF?* :E-* d+a* 3ora* "inuto ) segundo& 0o tiene /racciones de segundo o de una zona 3oraria& 02"ero en co"a /lotante de ;2 )tes& its& Este ti.o de datos re!uiere '
0VARCHAR2(size)
01:BER [ (. [* s]) ]
75?AT [(.)]
5?0@
BATE
BC0ARYE75?AT
BC0ARYEB?1B5E
02"ero en co"a /lotante de 6' its& Este ti.o de datos se re!uieren de 8 )tes& A#o* "es ) d+a co"o valores de la /ec3a* as+ co"o la 3ora* "inutos ) segundos co"o valores de tie".o* donde /ractionalEsecondsE.recision es el n2"ero de d+gitos en la .arte /raccionaria del segundo del ca".o dateti"e& 5os valores ace.tados de /ractionalEsecondsE.recision son del ( al D& El valor .or de/ecto es 6& El /or"ato .or de/ecto se deter"ina e%.l+cita"ente .or el .ar$"etro 05-ETC:E-TA:AE7?R:AT o i".l+cita"ente .or el .ar$"etro 05-ETERRCT?RY& El ta"a#o es de = o ,, )tes* de.endiendo de la .recisi4n& Este ti.o de datos contiene los ca".os
TC:E-TA:A [(/ractionalEsecondsE.recision)]
dateti"e AF?* :E-* BCA* H?RA* :C01T? ) -E@10B?& Contiene las /racciones de segundo* .ero no tiene una zona 3oraria& TC:E-TA:A [(/ractionalEsecondsE.recision)] GCTH TC:E H?0E Todos los valores de TC:E-TA:A* as+ co"o el valor de tie".o de des.laza"iento de la zona* donde /ractionalEsecondsE.recision es el n2"ero de d+gitos en la .arte /raccionaria del segundo del ca".o dateti"e& 5os valores ace.tados son del ( al D& El valor .or de/ecto es 6& El /or"ato .or de/ecto se deter"ina e%.l+cita"ente .or el .ar$"etro 05-ETC:E-TA:AE7?R:AT o i".l+cita"ente .or el .ar$"etro 05-ETERRCT?RY& El ta"a#o se /i9a en ,; )tes& Este ti.o de datos contiene los ca".os dateti"e AF?* :E-* BCA* H?RA* :C01T?* -E@10B?* TC:EH?0EEH?1R ) TC:EH?0EE:C01TE& Cuenta con las /racciones de segundo ) una zona 3oraria e%.l+cita&
TC:E-TA:A [(/ractionalEseconds)] Todos los valores de TC:E-TA:A GCTH TC:E H?0E* con las siguientes GCTH 5?CA5 TC:E H?0E e%ce.cionesI J 5os datos se nor"alizan con la zona 3oraria de ase de datos cuando se al"acenan en la ase de datos& J Cuando se recu.eran los datos* los usuarios ven los datos en la zona de tie".o de la sesi4n& El /or"ato .or de/ecto se deter"ina e%.l+cita"ente .or el .ar$"etro 05-ETC:E-TA:AE7?R:AT o i".l+cita"ente .or el .ar$"etro 05-ETERRCT?RY& El ta"a#o es de = o ,, )tes* de.endiendo de la .recisi4n& C0TERVA5 YEAR [()earE.recision)] T? :?0TH Al"acena un .er+odo de tie".o en a#os ) "eses* donde )earE.recision es el n2"ero de d+gitos en el ca".o dateti"e AF?& 5os valores ace.tados son del ( al D& El valor .redeter"inado es 2& El ta"a#o se /i9a en K )tes& Al"acena un .er+odo de tie".o en d+as* 3oras* "inutos ) segundos* donde J da)E.recision es el n2"ero "$%i"o de d+gitos en el ca".o dateti"e BLA& 5os valores ace.tados son del ( al D& El valor .redeter"inado es 2& J /ractionalEsecondsE.recision es el n2"ero de d+gitos en la .arte /raccionaria del ca".o -E@10B?& 5os valores ace.tados son del ( al D& El valor .or de/ecto es 6& El ta"a#o se /i9a en ,, )tes& RAG(size) Batos inarios sin /or"ato de longitud size& El ta"a#o "$%i"o es de 2((( )tes& -e de e es.eci/icar el ta"a#o de un valor RAG& Batos inarios de ti.o RAG de longitud varia le 3asta 2 giga )tes& Cadena en ase 6' !ue re.resenta la direcci4n 2nica de una /ila en la ta la& Este ti.o de datos es .rinci.al"ente .ara los valores devueltos
.or la .seudo colu"na R?GCB& 1R?GCB [(size)] Cadena en ase 6' !ue re.resenta la direcci4n l4gica de una /ila de una ta la de +ndice organizado& El ta"a#o o.cional es el ta"a#o de una colu"na de ti.o 1R?GCB de ?racle& El ta"a#o "$%i"o ) .or de/ecto es de '((( )tes& Cadena de caracteres de longitud /i9a de size )tes de ta"a#o o size de caracteres& El ta"a#o "$%i"o es de 2((( )tes o caracteres* el ta"a#o .redeter"inado ) "+ni"o es de , )te& Cadena de caracteres de longitud /i9a de size caracteres de ta"a#o de largo& El n2"ero de )tes .ueden ser 3asta dos veces el ta"a#o de codi/icaci4n A5,61T7,6 ) tres veces el ta"a#o de la codi/icaci4n 1T78& El ta"a#o "$%i"o est$ deter"inado .or la de/inici4n del 9uego de caracteres nacional* con un l+"ite "$%i"o de 2((( )tes& El ta"a#o .redeter"inado ) "+ni"o es de un car$cter& 1n o 9eto de ti.o 5?B !ue contiene caracteres de un )te o "ulti )te& -on co".ati les tanto de anc3o /i9o ) con9untos de anc3o varia le de caracteres* con el car$cter de ase de datos esta lecida& El ta"a#o "$%i"o es (' giga )tes < ,) J (ta"a#o del lo!ue de la ase de datos)& 1n o 9eto de ti.o 5?B !ue contiene caracteres 1nicode& -on co".ati le tanto de anc3o /i9o ) con9untos de anc3o varia le de caracteres* con el con9unto ase de datos de car$cter nacional& El ta"a#o "$%i"o es (' giga )tes < ,) J (ta"a#o del lo!ue de la ase de datos)& @uarda los datos nacionales so re el con9unto de caracteres& 1n o 9eto de ti.o 5?B inario& El ta"a#o "$%i"o es (' giga )tes < ,) J (ta"a#o del lo!ue de la ase de datos)& Contiene un localizador a un arc3ivo inario al"acenado /uera de la ase de datos& Aer"ite /lu9o de )tes de EM- .ara el acceso a 5?B e%ternos !ue residen en el servidor de ase de datos& El ta"a#o "$%i"o es de ' giga )tes&
0CHAR[(size)]
C5?B
0C5?B
B5?B
B7C5E
Disparadores
CREATE [?R REA5ACE] TRC@@ER no" re "o"ento aconteci"iento ?0 ta la [[RE7ERE0CC0@ (old A- aliasEold|neN A- aliasEneN) 7?R EACH R?G [GHE0 condicion]] lo!ueEA5M-O5P
Sintaxis:
CREATE OR REPLACE TRIGGER nombredisparador "o"ento<< BE7?RE* A7TER ? C0-TEAB ?7 evento<< C0-ERT* 1ABATE ? BE5ETE o/ CA:A?-<< solo .ara u.date on 0?:BRETAB5A 0CVE5<<.uede ser a nivel de sentencia (state"ent) o de /ila (/or eac3 roN) N3en C?0BCCC?0<<o.cional egin C1ERA? BE5 BC-AARAB?R<<sentencias E0B no" redis.aradorP
-e dis.ara auto"$tica"ente des.u>s de la "odi/icaci4n del salario de la ta la e".leado ) .ase un co"entario a la ta la auditar&
Create or re.lace trigger auditarEsalario a/ter u.date o/ salario on e".leado /or eac3 roN egin insert into auditar values (Qse 3a "odi/icado el salarioQ || Iold&nu"Ee".leado)P endP
1n trigger !ue nos guarda los datos de un usuario al 3acer login en la ase de datosI
create or re.lace trigger control a/ter logon on data ase egin insert into controlEcone%ion (usuario* "o"ento* evento) values R?RAE5?@C0E1-ER* -Y-TC:E-TA:A* ?RAE-Y-EVE0T)P endP
1n agente de e .ertenecer a una /a"ilia o una o/icina .ero no .uede .ertenecer a una /a"ilia ) a una o/icina a la vez&
CREATE OR REPLACE TRIGGER integridad_agentes BEFORE INSERT OR UPDATE ON agentes FOR EACH ROW BEGIN IF (:ne !"a#i$ia IS NULL and :ne !%"i&ina IS NULL' THEN RAISE_APPLICATION_ERROR(()*)*+, -Un agente n% ./ede ser 0/1r"an%-'2 ELSIF (:ne !"a#i$ia IS NOT NULL and :ne !%"i&ina IS NOT NULL' THEN RAISE_APPLICATION_ERROR(()*)*), -Un agente n% ./ede tener d%s .adres-'2 END IF2 END2 /
En el siguiente e9e".lo se inserta un nuevo registro en la ta la 1-1ARC?- en el !ue se tienen todos los datos dis.oni lesI
INSERT INTO USUARIOS (L%gin, Pass %rd, N%#3re, A.e$$id%s, Dire&&i%n, CP, L%&a$idad, Pr%5in&ia, Pais, F_Na&i#ient%, F_Ingre%, C%rre%, Credit%, Se6%' 4ALUES (-#igr%d78-, -8P9:;4-, -<IGUEL ANGEL-, -RODRIGUE= RODRIGUE=-, -ARCO DEL LADRILLO,PASEO-, ->?**+-, -4ALLADOLID-, -4ALLADOLID-, -ESPA@A-, -)?A*>A+B??-, -+*A*+A)**7-, -#igr%d78Cg#ai$!&%#-, )**, -H-'2
En este otro e9e".lo* se inserta un registro de igual "anera* .ero sin dis.oner de todos los datosI
INSERT INTO USUARIOS (L%gin, Pass %rd, N%#3re, A.e$$id%s, C%rre%' 4ALUES (-natsan8D-, 'VBROMI', 'NATALIA', 'SANCHEZ GARCIA', 'natsan63@hotmail !om'"#
Modificacin de registros
5a sentencia UPDATE .er"ite "odi/icar una serie de valores de deter"inados registros de las ta las de la ase de datos& 5a "anera "$s sencilla de utilizar la sentencia UPDATE tiene la siguiente sinta%isI
UPDATE n%#3re_ta3$a SET n%#3re_&a#.% ; 5a$%r E, n%#3re_ &a#.% ; 5a$%rF!!!
$ %HERE !on&i!i'n (#
Actualizaci4n de dos ca".os* .oniendo a ( el cr>dito ) orrando la in/or"aci4n del ca".o Aais de todos los usuariosI
)*+ATE )S)ARIOS SET C,-&ito . /, *ais . N)LL#
Borrado de registros
DE ETE
Esta es la sinta%is !ue de es tener en cuenta .ara utilizarlaI
+ELETE 0ROM nom1,-2ta1la $ %HERE !on&i!i'n (#
Aara ver un e9e".lo de uso de la sentencia DE ETE en la !ue se indi!ue una condici4n* su.onga"os !ue !uere"os eli"inar todos los usuarios cu)o cr>dito es ceroI
+ELETE 0ROM )S)ARIOS %HERE C,-&ito . /#
Creacin de tablas
CREATE TABLE EesG/e#a!F n%#3redeTa3$a ( &%$/#na+ Ti.%_Dat%, &%$/#na) Ti.%_Dat%, !!! &%$/#naN Ti.%_Dat% '2 CREATE TABLE USUARIOS (N%#3re 4ARCHAR():''2
CREATE TABLE NO<BRETABLA ( C%$/#na+ Ti.%_Dat% ECONSTRAINT n%#3rede$arestri&&iHnF ENOT NULLF EUNIIUEF EPRI<ARJ KEJF EFOREIGN KEJF EDEFAULT 5a$%rF EREFERENCES n%#3reTa3$a E(&%$/#na E, &%$/#na F'F EON DELETE CASCADEFF ECHECK &%ndi&iHnF, C%$/#na) Ti.%_Dat% ECONSTRAINT n%#3rede$arestri&&iHnF ENOT NULLF EUNIIUEF EPRI<ARJ KEJF EFOREIGN KEJF EDEFAULT 5a$%rF EREFERENCES n%#3reTa3$a E(&%$/#na E, &%$/#na F'F EON DELETE CASCADEFF
Restricciones
Reglas:
TABEC?5EAU a reviatura del ti.o de restricci4n&
*3 03 NN )3
NOT NULL (obligatorio) CREATE TABLE USUARIOS ( F_Na&i#ient% DATE CONSTRAINT Us/_Fna&_NN NOT NULL'2
UNIQUE CREATE TABLE USUARIOS ( L%gin 4ARCHAR) ():' CONSTRAINT Us/_L%g_UK UNIIUE'2 CREATE TABLE USUARIOS ( L%gin 4ARCHAR) ():', C%rre% 4ARCHAR) ():', CONSTRAINT Us/ari%_UK UNIIUE (L%gin, C%rre%''2
PRIMARY KEY CREATE TABLE USUARIOS ( L%gin 4ARCHAR) ():' CONSTRAINT Us/_$%g_PK PRI<ARJ KEJ'2 CREATE TABLE USUARIOS ( N%#3re 4ARCHAR) ():', A.e$$id%s 4ARCHAR) (D*', F_Na&i#ient% DATE, CONSTRAINT Us/_PK PRI<ARJ KEJ(N%#3re, A.e$$id%s, F_Na&i#ient%''2
FOREIGN KEY CREATE TABLE USUARIOS ( C%d_Partida NU<BER(7' CONSTRAINT C%d_Part_FK REFERENCES PARTIDAS(C%d_Partida''2 -i el ca".o al !ue 3ace re/erencia es clave .rinci.al en su ta la no es necesario indicar el no" re del ca".oI CREATE TABLE USUARIOS ( C%d_Partida NU<BER(7' CONSTRAINT C%d_Part_FK REFERENCES PARTIDAS'2 CREATE TABLE USUARIOS ( C%d_Partida NU<BER(7', F_Partida DATE, CONSTRAINT Partida_C%d_F_FK FOREIGN KEJ (C%d_Partida, F_Partida' REFERENCES PARTIDAS'2 PARA E4ITAR ERRORES DE INTEGRIDAD REFERENCIAL, se crean en .ri"er lugar las ta las !ue no tengan claves a9enas& -i !uere"os orrar las ta las tendre"os !ue .roceder al contrario* orrare"os las ta las !ue
tengan claves a9enas antes& ?TRA -?51CCW0 es usar ?0 BE5ETE CA-CABE .ara orrar todos los registros cu)a clave a9ena sea igual a la clave del registro orrado& ?0 BE5ETE -ET 0155I colocar$ el valor 0155 en todas las claves a9enas relacionadas con la orrada& DEFAULT Y ALIDA!I"N CREATE TABLE USUARIOS ( Pais 4ARCHAR)()*' DEFAULT - Es.aLa - '2 CREATE TABLE USUARIOS ( Fe&0a_ingres% DATE DEFAULT SJSDATE'2 CREATE TABLE USUARIOS ( Credit% NU<BER(>' CHECK (Cr1dit% BETWEEN * AND )***''2 1na "is"a colu"na .uede tener varios C!EC" asociados a ella* .ara ello .one"os varios CO#ST$AI#T seguidos ) se.arados .or co"as&
Eli%inacin de tablas
DROP TABLE N%#3reTa3$a ECASCADE CONSTRAINTSF2 (Cascade .or si es calve a9ena en otra ta la) DROP TABLE USUARIOS2
Modificacin de tablas
RENA<E N%#3re4ieM% TO N%#3reN/e5%2 Para aadir columnas: ALTER TABLE N%#3reTa3$a ADD ( C%$/#naN/e5a+ Ti.%_Dat%s EPr%.iedadesF E, C%$/#naN/e5a) Ti.%_Dat%s EPr%.iedadesF !!! '2 Para borrar col&%nas: ALTER TABLE N%#3reTa3$a DROP COLU<N (C%$/#na+ E, C%$/#na), !!!F'2 Para %odificar el tipo de datos ' las propiedades de &na col&%na: ALTER TABLE N%#3reTa3$a <ODIFJ (C%$/#na+ Ti.%Dat%s E.r%.iedadesF E, &%$/#na) Ti.%Dat%s E.r%.iedadesF !!!F '2 Para reno%brar col&%nas: ALTER TABLE N%#3reTa3$a RENA<E COLU<N N%#3reAntig/% TO N%#3reN/e5%2 Para %odificar las restricciones o eli%inarlas: ALTER TABLA N%#3reTa3$a DROP CONSTRAINT N%#3reRestri&&i%n2 Para %odificar el no%bre de las restricciones:
ALTER TABLE N%#3reTa3$a RENA<E CONSTRAINT N%#3re4ieM% TO N%#3reN/e5%2 Para acti(ar o desacti(ar restricciones: ALTER TABLE N%#3reTa3$a DISABLE CONSTRAINT N%#3reRestri&&i%n ECASCADEF2 CASCADE eli%ina las restricciones )&e dependan de *sta:
N%#3reTa3$a
ENABLE
CONSTRAINT
N%#3reRestri&&i%n
Us&arios
Crear &s&ario
CREATE USER N%#3reUs/ari% IDENTIFIED BJ C$a5eA&&es% EDEFAULT TABLESPACE ta3$es.a&e F ETE<PORARJ TABLESPACE ta3$es.a&eF EIUOTA int NK O <P ON ta3$es.a&eF EIUOTA UNLI<ITED ON ta3$es.a&eF EPROFILE .er"i$F2 CREATE USER Us/ari%Li#itad% IDENTIFIED BJ .ass %rdde#i/s/ari%$i#itad% 2
Modificar &s&ario
ALTER USER N%#3reUs/ari% IDENTIFIED BJ &$a5e_a&&es% EDEFAULT TABLESPACE ta3$es.a&e F ETE<PORARJ TABLESPACE ta3$es.a&eF EIUOTA int NK O <P ON ta3$es.a&eF EIUOTA UNLI<ITED ON ta3$es.a&eF EPROFILE .er"i$F2
Eli%inar &s&ario
DROP USER N%#3reUs/ari% ECASCADEF2 5a o.ci4n CA-CABE orra todos los o 9etos del usuario antes de orrarlo& -in esta o.ci4n no nos de9ar+a eli"inar al usuario si >ste tuviera ta las creadas&
Per%isos
GRANT N.ri5i$egi%_%3Met% E, .ri5i$egi%_%3Met%F!!!OALLOEPRI4ILEGESFP
ON E/s/ari%!F%3Met% FRO< N/s/ari%+Or%$+OPUBLICP E,N/s/ari%)Or%$)OPUBLICF !!! EWITH GRANT OPTIONF2 ON es.e&i"i&a e$ %3Met% s%3re e$ G/e se &%n&eden $%s .ri5i$egi%s! TO seLa$a a $%s /s/ari%s % r%$es a $%s G/e se &%n&eden .ri5i$egi%s! ALL &%n&ede t%d%s $%s .ri5i$egi%s s%3re e$ %3Met% es.e&i"i&ad%! EWITH GRANT OPTIONF .er#ite G/e e$ re&e.t%r de$ .ri5i$egi% se $% asigne a %tr%s! PUBLIC 0a&e G/e /n .ri5i$egi% est1 dis.%ni3$e .ara t%d%s $%s /s/ari%s! GRANT INSERT TO Us/ari%s TO Ana2 (.er#itirQ a Ana insertar dat%s en $a ta3$a Us/ari%s' GRANT ALL ON Partidas TO Ana2 (R/an &%n&ede t%d%s $%s .ri5i$egi%s s%3re $a ta3$a Partidas a Ana'
Pri(ilegios de siste%a
GRANT NPri5i$egi%+ O r%$+ P E, .ri5i$egi%) O r%$)P, !!!F TO N/s/ari%+ O r%$+O PUBLICP E, /s/ari%) O r%$) O PUBLICP !!! F EWITH AD<IN OPTIONF2 Bonde T? se#ala a los usuarios o roles a los !ue se conceden .rivilegios& GCTH AB:C0 ?ATC?0 es una o.ci4n !ue .er"ite al rece.tor de esos .rivilegios !ue .ueda conceder esos "is"os .rivilegios a otros usuarios o roles& A1B5CC 3ace !ue un .rivilegio est> dis.oni le .ara todos los usuarios& GRANT sSste#_.ri5(s' TO grantee EIDENTIFIED BJ .ass %rdF EWITH AD<IN OPTIONF GRANT r%$e TO grantee EIDENTIFIED BJ .ass %rdF EWITH AD<IN OPTIONF GRANT ALL PRI4ILEGES TO grantee EIDENTIFIED BJ .ass %rdF EWITH AD<IN OPTIONF Vea"os algunos e9e".losI Aara conceder a Ana el rol de C?00ECT con todos los .rivilegios !ue >ste tiene asociados& GRANT CONNECT TO Ana2 Concede a Ana el .rivilegio de usuarios a otros& orrar usuarios ) !ue >sta .uede conceder el "is"o .rivilegio de orrar
$e(ocar per%isos
-o re ob,etosI RE4OKE N.ri5i$egi%_%3Met% E, .ri5i$egi%_%3Met%F!!!OALLOEPRI4ILEGESFP ON E/s/ari%!F%3Met% FRO< N/s/ari%Or%$OPUBLICP E,N/s/ari%Or%$OPUBLICF !!!2
Del siste%a o roles a &s&ariosI RE4OKE N.ri5i$egi%_st#a O r%$P E, N.ri5i$egi%_st#a O r%$PF!!!OALLO EPRI4ILEGESFP ON E/s/ari%!F%3Met% FRO< N/s/ari%Or%$OPUBLICP E,N/s/ari%Or%$OPUBLICF !!!2
Xuan va a !uitar el .er"iso de seleccionar ) de actualizar so re la ta la 1suarios a AnaI REV?UE -E5ECT* 1ABATE ?0 1suarios 7R?: AnaP ) va a !uitarle el .er"iso de eli"inar usuariosI RE4OKE DROP USER FRO< Ana2
Co%andos
CREATE BR?A A5TER -e utiliza .ara crear nuevas ta las* ca".os e +ndices& -e utiliza .ara eli"inar ta las e +ndices& -e utiliza .ara "odi/icar ta las&
-e utiliza .ara consultar /ilas !ue satis/agan un criterio deter"inado& -e utiliza .ara cargar datos en una 2nica o.eraci4n& -e utiliza .ara "odi/icar valores de ca".os ) /ilas es.ec+/icos& -e utiliza .ara eli"inar /ilas de una ta la&
C -USU AS
7R?: GHERE HAVC0@ -e utiliza .ara es.eci/icar la ta la de la !ue se van a seleccionar las /ilas& -e utiliza .ara es.eci/icar las condiciones !ue de en reunir las /ilas !ue se van a seleccionar& -e utiliza .ara e%.resar la condici4n !ue de e satis/acer cada gru.o&
@R?1A BY -e utiliza .ara se.arar las /ilas seleccionadas en gru.os es.ec+/icos& ?RBER BY -e utiliza .ara ordenar las /ilas seleccionadas de acuerdo a un orden es.ec+/ico&
Operadores
A0B ?R 0?T Eval2a dos condiciones ) devuelve un valor de verdad s4lo si a" as son ciertas& Eval2a dos condiciones ) devuelve un valor de verdad si alguna de las dos es cierta& Bevuelve el valor contrario de la e%.resi4n&
V YV* ST* ZV S T SV TV in
Cgualdad Besigualdad :enor !ue :a)or !ue :enor o igual !ue :a)or o igual !ue Cgual a cual!uiera de los "ie" ros entre .ar>ntesis Bistinto a cual!uiera de los "ie" ros entre .ar>ntesis Contenido rango en el
-E5ECT J 7R?: GHERE idBe.arta"ento V ,((P -E5ECT J 7R?: GHERE idBe.arta"ento YV ,(( -E5ECT J 7R?: GHERE idBe.arta"ento S 2((P -E5ECT J 7R?: GHERE idBe.arta"ento T 2((P -E5ECT J 7R?: GHERE idBe.arta"ento SV 2((P -E5ECT J 7R?: GHERE idBe.arta"ento TV 2((P -E5ECT J 7R?: GHERE idBe.arta"ento in (,((* ;(()P -E5ECT J 7R?: GHERE idBe.arta"ento not in (2(()P
E".leado
-E5ECT J 7R?: E".leado GHERE idBe.arta"ento etNeen ,(( and 2((P -E5ECT J 7R?: E".leado GHERE idBe.arta"ento not etNeen ,(( and 2((P -E5ECT J 7R?: GHERE no" reE".leado li[e Q\5uis\QP E".leado
7uera del rango Contiene la cadena Qa cQ a .artir del segundo car$cter ) luego cual!uier cadena de car$cteres
li[e QEa c \Q
-E5ECT no" reE".leado* salario ] co"ision 7R?: E".leado GHERE o/icio V QVE0BEB?RQP -E5ECT no" reE".leado 7R?: E".leado GHERE s)sdate < /ec3aEalta T ;6KP -E5ECT no" reE".leado* salarioJ,2 ^-alario Anual^ 7R?: E".leadoP -E5ECT no" reE".leado* T?ECHAR(salarioM ;(*QDDD*DDD&DDQ) 7R?: ^E".leado^ Bevuelve el resto resultante de dividir ^"^ entre ^n^& -E5ECT no" reE".leado||o/icio 7R?: E".leadoP
.&nciones
Calcula el .ro"edio de los valores de un ca".o deter"inado& Bevuelve el n2"ero de /ilas de la selecci4n& Bevuelve la su"a de todos los valores de un ca".o deter"inado& Bevuelve el valor "$s alto de un ca".o deter"inado& Bevuelve el valor "+ni"o de un ca".o deter"inado&
ITE$A ES
2;M(;MD= :ar+a K 5iteral /ec3a& 5iteral caracteres& 5iteral n2"ero&
Deli%itadores en P /S0
Beli"itadores -i".les& Beli"itadores Co".uestos& -+" olo& JJ ST `V SV TV && || SS TT << MJ JM IV VT -igni/icado& E%.onenciaci4n& Bistinto& Bistinto& :enor o igual& :a)or o igual& Rango& Concatenaci4n& Beli"itador de eti!uetas& Beli"itador de eti!uetas& Co"entario de una l+nea& Co"entario de varias l+neas& Co"entario de varias l+neas& Asignaci4n& -elector de no" re de .ar$"etro&
-igni/icado& -u"a& Cndicador de atri uto& -elector& Bivisi4n& Beli"itador de lista& Beli"itador de lista& Varia le 3ost& -e.arador de ele"entos& Aroducto& Beli"itador de identi/icador acotado& Cgual relacional& :enor& :a)or& Cndicador de acceso re"oto& Ter"inador de sentencias& RestaMnegaci4n&
SE ECT
SELECT EALL O DISTINCTF &%$/#na+, &%$/#na), !!! FRO< ta3$a+, ta3$a), !!! WHERE &%ndi&iHn+, &%ndi&iHn), !!! ORDER BJ %rdena&iHn2
SE ECT EA
1 DISTI#CT F Uno" reEca".oV EN,Uno" reEca".oVPF .$OM Uno" reEta laVOUno" reEvistaV EN,Uno" reEta laVOUno" reEvistaVPF E2!E$E UcondicionV EN A#DOO$ U&%ndi&i%nVPFF E3$OUP B4 Uno" reEca".oV EN,Uno" reEca".o VPFF E!A5I#3 UcondicionVEN A#DOO$ U&%ndi&i%nVPFF EO$DE$ B4 Uno" reEca".oVOUindi&e_&a#.%V EASC O DESCF EN,Uno" reEca".oVOUindi&e_&a#.%V EASC O DESC FPFF
Aala ra clave !ue indica !ue la sentencia de -O5 !ue !uere"os e9ecutar es de selecci4n& Cndica !ue !uere"os seleccionar todos los valores& Es el valor .or de/ecto ) no suele es.eci/icarse casi nunca& Cndica !ue !uere"os seleccionar s4lo los valores distintos& Cndica la ta la (o ta las) desde la !ue !uere"os recu.erar los datos& En el caso de !ue e%ista "$s de una ta la se deno"ina a la consulta ^consulta co" inada^ o ^9oin^& En las consultas co" inadas es necesario a.licar una condici4n de co" inaci4n a trav>s de una cl$usula 2!E$E& Es.eci/ica una condici4n !ue de e cu".lirse .ara !ue los datos sean devueltos .or la consulta& Ad"ite los o.eradores l4gicos A#D ) O$& Es.eci/ica la agru.aci4n !ue se da a los datos& -e usa sie".re en co" inaci4n con /unciones agregadas& Es.eci/ica una condici4n !ue de e cu".lirse .ara !ue los datos sean devueltos .or la consulta& -u /unciona"iento es si"ilar al de 2!E$E .ero a.licado al con9unto de resultados devueltos .or la consulta& Be e a.licarse sie".re 9unto a 3$OUP B4 ) la condici4n de e estar re/erida a los ca".os contenidos en ella& Aresenta el resultado ordenado .or las colu"nas indicadas& El orden .uede e%.resarse con ASC (orden ascendente) ) DESC (orden descendente)& El valor .redeter"inado es ASC6
2!E$E 3$OUP B4
!A5I#3
O$DE$ B4
Cons<as calc&ladas
SELECT N%#3re, Credit%, Credit% W ): 0ROM )S)ARIOS# Aonerle un alias a la colu"na creada a#adi>ndolo detr$s de la e%.resi4n 9unto con la .ala ra AS SELECT N%#3re, Credit%, Credit% W ): AS Credit%N/e5% 0ROM )S)ARIOS#
.&nciones n&%*ricas
ABS7n8
Calcula el valor a soluto de un n2"ero n& E9e".loI SELECT ABS((+?' FRO< DUAL2 (( Res/$tad%: +?
E9P7n8
Calcula an * es decir* el e%.onente en ase e del n2"ero n& E9e".loI
SELECT E9P()' FRO< DUAL2 (( Res/$tad%: ?,D7 CEIL(n' Calcula el valor entero in"ediata"ente su.erior o igual al argu"ento n& E9e".loI SELECT CEIL(+?!>' FRO< DUAL2 (( Res/$tad%: +7
. OO$7n8
Calcula el valor entero in"ediata"ente in/erior o igual al .ar$"etro n& E9e".loI SELECT FLOOR(+?!>' FRO< DUAL2 (( Res/$tad%: +?
MOD7%:n8
Calcula el resto resultante de dividir " entre n& E9e".loI SELECT <OD(+:, )' FRO< DUAL2 ((Res/$tad%: +
PO2E$7(alor: exponente8
Eleva el valor al e%.onente indicado& E9e".loI SELECT POWER(>, :' FRO< DUAL2 (( Res/$tad%: +*)>
$OU#D7n: deci%ales8
Redondea el n2"ero n al siguiente n2"ero con el n2"ero de deci"ales !ue se indican&
S0$T7n8
Calcula la ra+z cuadrada de n& E9e".loI SELECT SIRT():' FRO< DUAL2 ((Res/$tad%: :
T$U#C7%:n8
Trunca un n2"ero a la cantidad de deci"ales es.eci/icada .or el segundo argu"ento& -i se o"ite el segundo argu"ento* se truncan todos los deci"ales& -i ^n^ es negativo* el n2"ero es truncado desde la .arte entera&
E9e".losI
SELECT SELECT SELECT SELECT TRUNC(+)?!>:8?, )' FRO< DUAL2 (( Res/$tad%: +)?!>: TRUNC(>:?)!:8?7, ()' FRO< DUAL2 (( Res/$tad%: >:** TRUNC(>:?)!:8?7, (+' FRO< DUAL2 (( Res/$tad%: >:?* TRUNC(>:?)!:8?7' FRO< DUAL2 (( Res/$tad%: >:?)
SI3#7n8
-i el argu"ento ^n^es un valor .ositivo* retorna ,* si es negativo* devuelve <, ) ( si es (&
SELECT SIGN5783" 0ROM +)AL# 9 R-s:lta&o; 7<
C!$7n8
Bevuelve el car$cter cu)o valor codi/icado es n& E9e".loI SELECT CHR(7+' FRO< DUAL2 ((Res/$tad%: I
ASCII7n8
Bevuelve el valor A-CCC de n& E9e".loI SELECT ASCII(-O-' FRO< DUAL2 ((Res/$tad%: ?B
CO#CAT7cad;: cad<8
Bevuelve las dos cadenas unidas& Es e!uivalente al o.erador || E9e".loI SELECT CONCAT(-H%$a-, -</nd%-' FRO< DUAL2 ((Res/$tad%: H%$a</nd%
O2E$7cad8
Bevuelve la cadena cad con todos sus caracteres en "in2sculas&
UPPE$7cad8
Bevuelve la cadena cad con todos sus caracteres en "a)2sculas& E9e".loI
SELECT )**ER5'En MA=>s!:lAS'" 0ROM +)AL# 77R-s:lta&o; EN MA?@SC)LAS
I#ITCAP7cad8
Bevuelve la cadena cad con su .ri"er car$cter en "a)2scula& E9e".loI SELECT INITCAP(-0%$a-' FRO< DUAL2 ((Res/$tad%: H%$a
PAD7cad;: n: cad<8
Bevuelve cad, con longitud n* a9ustada a la derec3a* rellenando .or la iz!uierda con cad2& E9e".loI SELECT LPAD(-<-, :, -Y-' FRO< DUAL2 ((Res/$tad%: YYYY<
$PAD7cad;: n: cad<8
Bevuelve cad, con longitud n* a9ustada a la iz!uierda* rellenando .or la derec3a con cad2& EMe#.$%: SELECT RPAD(-<-, :, -Y-' FRO< DUAL2 ((Res/$tad%: <YYYY
SUBST$7cad: %: n8
Bevuelve la cadena cad co".uesta .or n caracteres a .artir de la .osici4n "& E9e".loI SELECT SUBSTR(-+)D>:8?-, D, )' FRO< DUAL2 ((Res/$tad%: D>
E#3T!7cad8
Bevuelve la longitud de cad& E9e".loI SELECT LENGTH(-0%$a-' FRO< DUAL2 ((Res/$tad%: >
T$IM7cad8
Eli"ina los es.acios en lanco a la iz!uierda ) la derec3a de cad ) los es.acios do les del interior& E9e".loI SELECT TRI<(- H%$a de n/e5% -' FRO< DUAL2 ((Res/$tad%: H%$a de n/e5%
T$IM7cad8
Eli"ina los es.acios a la iz!uierda !ue .osea cad& E9e".loI SELECT LTRI<(- H%$a-' FRO< DUAL2 ((Res/$tad%: H%$a
$T$IM7cad8
Eli"ina los es.acios a la derec3a !ue .osea cad& E9e".loI SELECT RTRI<(-H%$a -' FRO< DUAL2 ((Res/$tad%: H%$a
S4SDATE
Bevuelve la /ec3a ) 3ora actuales& E9e".loI -E5ECT -Y-BATE 7R?: B1A5P <<ResultadoI 26M(=M,,
S4STIMESTAMP
Bevuelve la /ec3a ) 3ora actuales en /or"ato TC:E-TA:A& E9e".loI -E5ECT -Y-TC:E-TA:A 7R?: B1A5P <<ResultadoI 26<X15<,, (8&;2&KD*6(D((( A: ](2I((
ADD@MO#T!S7fec?a: n8
A#ade a la /ec3a el n2"ero de "eses indicado con n& E9e".loI -E5ECT ABBE:?0TH-(Q2=M(=M,,Q* K) 7R?: B1A5P <<ResultadoI 2=M,2M,,
MO#T!S@BET2EE#7fec?a;: fec?a<8
Bevuelve el n2"ero de "eses !ue 3a) entre /ec3a, ) /ec3a2& E 9e".loI -E5ECT :?0TH-EBETGEE0(Q,2M(=M,,Q*Q,2M(;M,,Q) 7R?: B1A5P <<ResultadoI '
AST@DA47fec?a8
Bevuelve el 2lti"o d+a del "es al !ue .ertenece la /ec3a& El valor devuelto es ti.o BATE&
#E9T@DA47fec?a: d8
Cndica el d+a !ue corres.onde si a#adi"os a la /ec3a el d+a d& El d+a devuelto .uede ser te%to (Q5unesQ* :artesQ* &&) o el n2"ero del d+a de la se"ana (,Vlunes* 2V"artes* &&) de.endiendo de la con/iguraci4n& E9e".loI -E5ECT 0E_TEBAY(Q;,M,2M,,Q*Q510E-Q) 7R?: B1A5P << ResultadoI (2M(,M,2
.&nciones de con(ersin
TO@#UMBE$7cad: for%ato8
Convierte te%tos en n2"eros& -e suele utilizar .ara dar un /or"ato concreto a los n2"eros& 5os /or"atos !ue .ode"os utilizar son los siguientesI
S+%bolo B C D .or%atos para nA%eros ' s& significado Significado Aosiciones nu">ricas& -i el n2"ero !ue se !uiere visualizar contiene "enos d+gitos de los !ue se es.eci/ican en el /or"ato* se rellena con lancos& Vis:aliAa !-,os Bo, la iAC:i-,&a hasta !omBl-ta, la lonDit:& &-l Eo,mato -sB-!iEi!a&o Ant-Bon- -l siDno &- &'la, al n>m-,o Colo!a -n la Bosi!i'n &on&- s- in!l:=a, -l sFm1olo &- la mon-&a lo!al 5s- B:-&!onEiD:,a, -n la 1as- &- &atos m-&iant- -l Ba,Gm-t,o 0-5EC1RRE0CY" S D 3 ABa,-!-,G -l sFm1olo &-l siDno *osi!i'n &-l sFm1olo &-!imal, C:- -n -sBaHol -s la !oma *osi!i'n &-l s-Ba,a&o, &- D,:Bo, C:- -n -sBaHol -s -l B:nto
TO@C!A$7d: for%ato8
Convierte un n2"ero o /ec3a d a cadena de caracteres* se utiliza nor"al"ente .ara /ec3as )a !ue de n2"ero a te%to se 3ace de /or"a i".l+cita co"o 3e"os visto antes&
Significado
AHo -n Eo,mato &- &os !iE,as AHo -n Eo,mato &- !:at,o !iE,as M-s -n Eo,mato &- &os !iE,as Las t,-s B,im-,as l-t,as &-l m-s Nom1,- !omBl-to &-l m-s +Fa &- la s-mana -n t,-s l-t,as +Fa !omBl-to &- la s-mana +Fa -n Eo,mato &- &os !iE,as +Fa &- la s-mana &-l < al I S-m-st,S-mana &-l aHo In&i!a&o, a m In&i!a&o, B m Ho,a &- < a <8 Ho,a &- / a 83 Min:tos &- / a S-D:n&os &-nt,o &-l min:to S-D:n&os &-nt,o &-s&- las / ho,as
SUM:
-1:([A55|BC-TC0CT] e%.resi4n) -E5ECT -1:( credito) 7R?: 1suariosP
COU#T:
C?10T([A55|BC-TC0CT] e%.resi4n) SELECT COUNT(n%#3re' FRO< Us/ari%s2 SELECT COUNT(Y' FRO< Us/ari%s2
MI#:
<IN (EALLO DISTINCTF e6.resiHn'
MA9:
<A9 (EALLO DISTINCTF e6.resiHn' SELECT <A9 (&redit%' FRO< Us/ari%s2
A53
A4G (EALLO DISTINCTF e6.resiHn' se$e&t a5g (a$$ sa$ari%' "r%# e#.$ead%s2 :edia del salario "+ni"o ) "$%i"oI SELECT A4G(SALARIO_<IN', A4G(SALARIO_<A9' FRO< TRABAROS2
5A$
Bevuelve la varianza estad+stica de todos los valores de la e%.resi4n& 4AR (EALLO DISTINCTF e6.resiHn'
STDE5
Bevuelve la desviaci4n t+.ica estad+stica de todos los valores de la e%.resi4n& STDE4 (EALLO DISTINCTF e6.resiHn'
!A5I#3
SELECT .r%5in&ia, SU<(&redit%' FRO< Us/ari%s GROUP BJ .r%5in&ia HA4ING .r%5in&ia ; -C[DI=- OR .r%5in&ia; -BADARO=-2
Cons<as %<itablas
SELECT ta3$a+!&%$/#na+, ta3$a+!&%$/#na), Z, ta3$a)!&%$/#na+, ta3$a)!&%$/#na), Z FRO< ta3$a+ ECROSS ROIN ta3$a)F O ENATURAL ROIN ta3$a)F O EROIN ta3$a) USING (&%$/#na' O EROIN ta3$a) ON (ta3$a+!&%$/#na;ta3$a)!&%$/#na'F O ELEFT O RIGTH O FULL OUTER ROIN ta3$a) ON (ta3$a+!&%$/#na;ta3$a)!&%$/#na'F
Co%posiciones externas
Aara o tener un listado con los no" res de los distintos de.arta"entos ) sus 9e/es con sus datos .ersonales& Be en a.arecer todos los de.arta"entos aun!ue no tengan asignado ning2n 9e/e&
SELECT D!NO<BRE_DPTO, D!REFE, E!NO<BRE, E!APELLIDO+, E!APELLIDO) FRO< DEPARTA<ENTOS D, E<PLEADOS E WHERE D!REFE ; E!DNI(W'2
MI#US
Bevuelve a!uellas /ilas !ue est$n en el .ri"er -E5ECT .ero no en el segundo& 5as /ilas du.licadas del .ri"er -E5ECT se reducir$n a una antes de co"enzar la co".araci4n& SELECT n%#3re, d%#i&i$i% FRO< INGLES <INUS SELECT n%#3re,d%#i&i$i% FRO< PORTUGUES2
S&bcons<as
SELECT $istaE6.r FRO< ta3$a WHERE e6.resiHn OPERADOR ( SELECT $istaE6.r FRO< ta3$a'2 5a su consulta .uede ir dentro de las cl$usulas 2!E$E* !A5I#3 o .$OM& El ?AERAB?R .uede ser G* H* GI* HI* JI* I o I#& -E5ECT 0o" reEe".leado* sueldo 7R?: E:A5EAB?GHERE -1E5B? S (-E5ECT -1E5B? 7R?: E:A5EAB?GHERE 0o" reEe".le V QAnaQ)P
A#4
Co".ara con cual!uier /ila de la consulta& 5a instrucci4n es v$lida si 3a) un registro en la su consulta !ue .er"ite !ue la co".araci4n sea cierta&
A
Co".ara con todas las /ilas de la consulta& 5a instrucci4n resultar$ cierta si es cierta toda la co".araci4n con los registros de la su consulta&
I#
0o utiliza co".arador* lo !ue 3ace es co".ro ar si el valor se encuentra en el resultado de la su consulta&
#OT I#
Co".rue a si un valor no se encuentra en una su consulta& En la siguiente consulta o tene"os el e".leado !ue "enos co raI SELECT n%#3re, s/e$d% FRO< E<PLEADOS
%HERE s:-l&o J. ALL 5SELECT s:-l&o 0ROM EM*LEA+OS"#
Precedencia
,& -e eval2a la "ulti.licaci4n (J) ) la divisi4n (M) al "is"o nivel& 2& A continuaci4n su"as (]) ) restas (<)& ;& Concatenaci4n (| |)& '& Todas las co".araciones (S* T* b)& K& Bes.u>s evaluare"os los o.eradores C- 0155* C0* 0?T 0155* 5CUE* BETGEE0& 6& 0?T& =& A0B& 8& ?R& -i !uisi>ra"os variar este orden necesitar+a"os utilizar .ar>ntesis&