Professional Documents
Culture Documents
Introduccin
Una vez pasada la etapa de modelamiento de una base de datos (DB), debe materializar
su diseo. Ya vimos cmo conectarnos al servidor y veremos en este tutorial algunos
comandos bsicos de !".
Elementos bsicos de SQL Oracle
Literales (tipo de dato de valor #i$o), e%isten los siguientes tipos&
'e%to& se escribe entre comillas, por e$emplo (esto es un te%to vlido(.
)ntero& n*mero acompaado de un +,- con un m%imo de ./ d0gitos de
precisin, por e$emplo -12.
3*mero& igual 4ue entero pero con decimales. 5uede estar en notacin cient0#ica,
por e$emplo 25e-03.
6ntervalo& intervalo de tiempo, por e$emplo 63')789" (12( :;U7.
Tipos de datos:
Caracteres (CHAR! e%isten < tipos&
1. CHAR: crea una columna de largo de 1 a =222 bytes.
2. "CHAR: similar al anterior pero el dato 4ueda almacenado con el
correspondiente lengua$e de la DB (3").
3. "#ARCHAR$: similar al anterior con un m%imo de <222 bytes.
4. #ARCHAR$: similar al anterior pero sin 3".
"%meros ("&'(ER con el #ormato 3U>B)7(p,s) donde p es la cantidad
m%ima de d0gitos con un m%imo de ./ y s es la escala de -/< a 1=?.
)$emplos&
?@A1=../B 3U>B)7 ?@A1=../B
?@A1=../B 3U>B)7(B) ?@A1=<
?@A1=../B 3U>B)7(B,1) ?@A1=..B
?@A1=../B 3U>B)7(?,-=) ?@A122
?@A1=../B 3U>B)7(A) y 3U>B)7(-?,=) e%ceden la precisin
'ambiCn e%iste el tipo D";9'.
Lar)o (LO"*: para almacenar strings de datos largos, con un m%imo de
carcteres de Easta = gigabytes o =F.1-1 bytes.
+ec,a (-ATE
RA. / LO"* RA.: datos no interpretados por ;racle.
;tros tipos menos ocupados
"arge ;b$ect Datatypes (";B), permite el almacenamiento de arcEivos como
te%to, imagenes, video Easta < gigabytes.
7;G6D& almacena la direccin de la ubicacin de una columna.
U7;G6D& igual a 7;G6D pero 4ue viene de otra DB 4ue no sea ;racle.
936, DB=, !",D& tipos de datos de la DB DB= de 6B>.
9dems se pueden crear datos creados por el usuario mediante el comando
H7)9') 'Y5) 4ue debe tener nombre, atributos y mCtodos.
)%isten comandos 4ue permiten el cambio de un tipo de dato a otro como
';IH:97(conversin de #ecEa) o ';IH:97(conversin de n*mero).
;tro tipo de dato de uso com*n es 3U"" para interpretar el vac0o.
Operadores de SQL
Aritm0ticos:
Operador 1ropsito E2emplo
+-
;perador unario, denota si es
positiva o negativa una e%presin
SELECT * FROM orders
WHERE qtysold = -1
SELECT * FROM e!" WHERE
-s#l $ 0
J, >ultiplica divide, operador binario
%"d#te e!" SET s#l = s#l *
1.1
+- uma, resta, binario
SELECT s#l & 'o!! FROM e!"
WHERE S(S)*TE - +,red#te
- 3.5
Concatenadores: KK une strings de datos. )$emplo& SELECT /0#!e ,s / 11
e2#!e FROM e!"
Comparadores:
Operador 1ropsito E2emplo
L 6gualdad.
SELECT *
FROM e!"
WHERE s#l = 1500
ML, FL, NO, PL Desigualdad.
SELECT *
FROM e!"
WHERE s#l 3= 1500
N, O >ayor, menor.
SELECT * FROM e!"
WHERE s#l - 1500
SELECT * FROM e!"
WHERE s#l $ 1500
NL, OL >ayor, menor o igual.
SELECT * FROM e!"
WHERE s#l -= 1500
SELECT * FROM e!"
WHERE s#l $= 1500
63 6gual a cual4uier miembro a
probar, igual a L93Y.
SELECT * FROM e!"
WHERE 4o5 60
7/CLER8/9/*0*L(ST/:
SELECT * FROM e!"
WHERE s#l 60
7SELECT s#l FROM e!"
WHERE de"t2o = 30:
3;' 63 6gual a ML93Y.
SELECT * FROM e!"
WHERE s#l 0OT 60
7SELECT s#l FROM e!"
WHERE de"t2o = 30:
SELECT * FROM e!"
WHERE 4o5 0OT 60
7/CLER8/9 *0*L(ST/:
93Y ;>) Hompara un valor a cada valor
en una lista, precedido por L, ML,
O, N, NL, OL.
SELECT * FROM e!"
WHERE s#l = *0(
7SELECT s#l FROM e!"
WHERE de"t2o = 30:
9"" imilar al anterior.
SELECT * FROM e!"
WHERE s#l -=
*LL 7 14009 3000:
Q3;'R B)'G))3 S
93D Y
)ntre S e Y.
SELECT * FROM e!"
WHERE s#l
;ETWEE0 2000 *0)
3000
)S6' 8erdadero si una sub4uery
entrega al menos una #ila.
SELECT e2#!e9 de"t2o
FROM de"t
WHERE E<6STS
7SELECT * FROM e!"
WHERE de"t.de"t2o
= e!".de"t2o:
S Q3;'R "6T) Y
Q)H95) (z(R
8erdadero si % est en un patrn
y. Dentro de y el carcter UVU
calza con cual4uier carcter
menos 3U"". UIU calza con
cual4uier carcter simple.
SELECT * FROM t#51
WHERE 'ol1 L68E
/*=C>?E?/ ESC*@E />/
6 Q3;'R 3U"" 5rueba si Eay Qo noR 3U""
SELECT e2#!e9 de"t2o
FROM e!"
WHERE 'o!! 6S 0%LL
3;' 63 6gual a ML
SELECT /TR%E/
FROM e!"
WHERE de"t2o 0OT 60
7591592All:
6BA#l #C
de"t2o 3= 5 *0)
de"t2o 3= 15 *0)
de"t2o 3= 2All
;tro operador importante es "6T), 4ue busca patrones dentro de un string&
SELECT s#l
FROM e!"
WHERE e2#!e L68E /SM?/
)ste e$emplo entrega sal de los emp 4ue empiezan con >.
Operadores l)icos
"os t0picos 93D, ;7, 3;'.
Operadores de unin
&"IO": une 4ueries.
&"IO" ALL: mismo, incluyendo las 4ue se repiten.
I"TERSECT: unin de 4ueries.
'I"&S: las #ilas de la primera 4uery menos los 4ue estn en la segunda.
&so: !uery1 ;peradorIdeIunion !uery=W
Creacin de operadores: e%iste el comando H7)9') ;5)79';7.
SQL
8eremos someramente los comandos ms ocupados en !".
Create
1. '9B")& crea un ob$eto tabla relacional. )l #ormato es darle un nombre y
luego los tipos y tamaos de los datos 4ue va a contener.
=. '76XX)7& crea un disparador antes o despuCs de una determinada
accin (se ver con ms detalle en otro tutorial).
.. 57;H)DU7)& crea una #uncin 4ue puede realizar operaciones sobre
datos de una DB.
<. 86)G& crea una vista basada en 4uery y 4ue recibe un nombre
determinado ba$o el 4ue es invocado.
@. >9')769"6Y)D 86)G& similar al anterior pero permite operaciones
mucEo ms comple$as.
A. 63D)S& pone 0ndice a algunos tipos de ob$etos de una DB para un
acceso ms e%pedito.
"a mayor0a de estos comandos pueden ser modi#icados con 9"')7
H;>93D;.
-rop& permite borrar un ob$eto de la DB.
Hreate, drop y alter se clasi#ican en la categor0a de lengua$e de de#inicin de
datos.
Insert& permite insertar datos a una tabla ya creada.
Select& el gran comando de 4ueries.
-elete& borra datos e%istentes en una #ila.
&pdate& actualiza los valores de una tabla.
)stos datos #orman parte del lengua$e de manipulacin de datos (D>").
;tros comandos como X793' y 7)8;T) pertenecen al lengua$e de control de
datos (DH").
)stas tres #amilias de comandos e%isten dentro de todo !",
independientemente de 4uC sistema de DB se trate.
's e2emplos333
Creacin de tablas
Hrearemos la tabla )>5";Y)) con los siguientes comandos&
SQL4 CREATE TA(LE E'1LO5EE
(E'1"O "&'(ER (6 "OT "&LL 1RI'AR5 7E5!
"A'E CHAR (8 "OT "&LL!
9O( CHAR (6 !
SALAR5 "&'(ER (8!$ "OT "&LL!
CO'' "&'(ER (8!$ !
-E1T"O "&'(ER (6 "OT "&LL!
SE: CHAR (; <
"uego revise la de#inicin de la tabla )>5";Y)) con&
SQL4 -ESCRI(E E'1LO5EE<
)n general, usar H7)9') '9B") de la siguiente manera&
SQL4 CREATE TA(LE =table>name4
(column>name data>t/pe ?not null@!A
1RI'AR5 7E5 (column>name! A
+OREI*" 7E5 (column>name! A
RE+ERE"CES table$>name (table$column>name!A<
Donde = representa a datos en otra tabla.
'ambiCn se puede crear una tabla a partir de un 4uery, por e$emplo&
SQL4 CREATE TA(LE 'A"A*ER AS SELECT E'1"O! "A'E +RO'
E'1LO5EE .HERE 9O( B C'n)rC<
5uede alterar la estructura de una tabla de la siguiente manera&
SQL4 ALTER TA(LE E'1LO5EE A-- TEST CHAR ($<
; puede modi#icar la de#inicin de un campo&
SQL4 ALTER TA(LE E'1LO5EE 'O-I+5 (TEST CHAR($ "OT "&LL <
)ste cambio puede ser tambiCn de claves primarias y #orneas&
SQL4ALTER TA(LE =nombre>tabla4 A-- 1RI'AR5 7E5
(=nombre>columna!A4<
In)reso de datos
80a 63)7', por e$emplo&
SQL4 I"SERT I"TO E'1LO5EE #AL&ES
(;DE!CSpearsC!CSlsmC!FDDD!"&LL!6D!C'C<
o de otra #orma&
SQL4 I"SERT I"TO E'1LO5EE (E'1"O! "A'E! SALAR5! -E1T"O
#AL&ES (;DG!C7ielC!6DDD!HD<
5uede veri#icar el contenido de su tabla con SELECT I +RO'
=nombre>tabla4W
5ara actualizar un campo en una tabla use el comando &1-ATE y SET
combinado con una condicin&
SQL4 &1-ATE E'1LO5EE SET SALAR5 B ;DDD .HERE E'1"O B C$;6C<
;tro e$emplo&
SQL4 &1-ATE E'1LO5EE SET CO'' B HDD .HERE CO'' IS "&LL<
(orrar datos
i 4uiere borrar todos los datos de una tabla Egalo con -ELETE +RO'
=nombre>tabla4<
i 4uiere borrar slo algunos campos, ocupe un condicional&
SQL4 -ELETE +RO' E'1LO5EE .HERE E'1"O B ;DG<
CO''IT / ROLL(AC7
)stos comandos no son permanentes y se almacenan temporalmente en un
bu##er. 5ara ingresarlos de#initivamente a la DB debe e$ecutar el comando CO''IT.
9lgunos comandos llevan impl0cito el H;>>6', estos son !U6', )S6', H7)9')
'9B"), H7)9') 86)G, D7;5 '9B"), D7;5 86)G, X793', 7)8;T) y 9"')7.
Huando pedimos 4ue nos muestre una tabla, ;racle nos mostrar la tabla actualizada.
5ara volver atrs un CO''IT, puede usar el comando ROLL(AC7.
Queries
'odas las 4ueries y sub4ueries se basan en el uso del comando SELECT y
condiciones lgicas.
5ara ver el contenido de una tabla debe ingresar& SELECT I +RO'
=nombre>tabla4<
5ara ver una o varias columnas, debemos ingresar SELECT
=nombre>de>la>columna;! nombre>de>la>columna$!3334 +RO' =nombre>tabla4<
5ara ordenar al#abCticamente aada un OR-ER (5 =nombre>de>la>columna4 al
#inal.
Una condicin lgica puede ser agregada despuCs del nombre de la tabla, esto es por
e$emplo&
SQL4 SELECT "A'E! 9O( +RO' E'1LO5EE
.HERE
SE: B C+C A"- (9O( B CSlsmC OR 9O( B C'n)rC< =J condicin lgica
;tros )")H's
SQL4 SELECT -ISTI"CT 9O( +RO' E'1LO5EE< =J muestra los
valores de la columna JOB que no aparecen ms de una vez en la tabla
EMPLOYEE
SQL4 SELECT "A'E! E'1"O +RO' E'1LO5EE .HERE 9O(
?"OT@ I" (CSlsmC!CClrKC< =J muestra NMEs ! EMPNOs de la tabla
EMPLOYEE en los que JOB"#$%&'lsm& o JOB"#$%&(lr)&
"a mayor0a de los comparadores ya #ueron descritos anteriormente en una de las tablas.
'ambiCn se pueden e#ectuar clculos entre columnas por #ila con los operadores
matemticos
+unciones con Lueries&
)n vez de J o nombreIdeIcolumna, puede e#ectuar operaciones sobre su SELECT
como&
A#*(nombreIdeIcolumna: promedio de nombreIdeIcolumna.
CO&"T(J: cuenta el n*mero de #ilas.
'I"(nombreIdeIcolumna: el menor de nombreIdeIcolumna.
'A:(nombreIdeIcolumna: el m%imo de nombreIdeIcolumna.
S&'(nombreIdeIcolumna: la sumatoria de nombreIdeIcolumna.
Hlaro 4ue no es siempre de toda la columna, sino ms bien 4ue del resultado del
4uery.
SubLueries
5ueden ser de#inidas recursivamente como 4ueries de 4ueries. )l 4uery principal (el 4ue
se desplegar en pantalla) es el primero 4ue se ingresa&
SQL4 SELECT "A'E! SALAR5 +RO' E'1LO5EE
.HERE SALAR5 B =J4uery principal
(SELECT 'I"(SALAR5 +RO' E'1LO5EE< N- 4uery segundario
3os muestra el 39>) y 9"97Y de la tabla )>5";Y)) 4ue tiene un 9"97YL
(Easta a4u0 el 4uery principal) al menor 9"97Y de la tabla )>5";Y)).
(iblio)raMNa
Oracle 8i SQL ReMerence Release $ (83;3E AGEO8OJD;3
Apuntes de OraclePSQL 93 .arren! 7ennesaQ State &niRersit/