You are on page 1of 10

Tutorial de SQL

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/

You might also like