Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Docu
umento: LENGUAJE
L SQL
Unida
ad: UNIDAD
U IIII - SQL
Cantiidad de pá
áginas: 25
2
REPASO SSQL, DDL YY DML
OBJET
TIVOS
• Repasar las sentenciass que formaan el lenguaaje de definición de datos (DDL Daata
Definition Language) dee SQL, es de
ecir, el subco
onjunto de ó
órdenes que nos permitirrán
crear o edittar tablas de la base de daatos.
• Repasar el lenguaje de consultas para el acceso aa las tablas de la BD.
RIAL:
MATER
TECNO
OLOGIA ORACCLE
TEMASS
• Definición d
de Datos
• Creación dee Tablas
• Restricciones de Columnnas
• Restricciones de Tablas
• Renombrarr Tablas
• Eliminar Tablas
• Modificar T
Tablas
• Crear y Borrar Sinónimoos
• Crear Domiinios
• Consultas I
• Select
• From
• Where
o de Datos
• Diccionario
ormamos cciudadanoss profesionnales para eel mundo””
“Fo
EAM 2010 ® ‐ Armeniaa Q.
SQL
En realidad SQL no
o es un lenguuaje en si, co
omo podría ser un lengu uaje de progrramación de 3ª
generaación (C, Pascal…), sino que en un suble enguaje orienntado a acceso o y manipulación de base de
datos rrelacionales. Con SQL com mo única herrramienta sóloo podemos acceder a las bases de datos,
pero no tenemos las estructurass típicas de un n lenguaje de programació ón.
Una buuena analogía podría ser un sistema operativo.
o El interfaz de ccomandos dee un SO nos da
o que necesitamos para acceder al sistema
todo lo s de fficheros, pero o sólo podemmos hacer eso,
accedeer a ficheros. SQL actúa de e la misma maanera, nos daa todo lo que necesitamoss para accedeer a
bases dde datos, pero no podemo os hacer más.
Se dice
e que SQL es eestructurado porque trabaaja con conju ntos de resulltados (result set) abstracttos
como u unidades com mpletas, Un conjunto de re esultados es el esquema b básico de unaa tabla: N filaas x
N colu
umnas; este esquema
e se trata como un
u todo y ess la idea prin
ncipal de SQQL, a la hora de
recupeerar un conjunnto de resultaados, éste se trata de la m misma forma ttenga el número de filas q que
tenga ((0‐N) y tenga el número de e columnas que tenga (1‐N N).
Ademáás SQL es coonsistente, esto
e significaa que los "eestilos" de laas distintas sentencias sson
uniform
mes, por lo quue el aprendizaje es rápido o.
El lenguaje de de
efinición de datos (D
DDL)
El DDL (Data Definition Languagge) es el conjuunto de senteencias que esstá orientadaas a la creació ón,
modificación y con n base de daatos. Entre ssus principalees funciones se
nfiguración de objetos en
tienen:
• Definir y creear una nuevaa tabla.
• Suprimir un na tabla que yya no se necesita.
• Cambiar la definición de una tabla existente.
• Definir una tabla virtual (o vista) de datos.
• Construir un n índice para hacer más ráápido el accesso a una tablaa.
• Controlar el almacenamiento físico de e los datos poor parte del SSGBD.
Tipos d
de datos:
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Oracle maneja tipo
os de datos para
p manejar desde númeeros hasta ob
bjetos como fotos, archivos,
cada dato se debe e especificar dee una manera especial:
Los valores alfanumérico os van encerrados entre coomilla simplee: 'Alfanumériico'
Los valores numéricos so on número simples: 123
Las fechas vvan encerradaas entre comillas simples: '1/12/2000'
Los valores binarios no p epresentados (son fotos, videos…)
pueden ser re
Los diferentes tiposs de datos que e maneja Oraacle son los si guientes:
Tipo dee dato CHAR((b)
Almace ena cadenas de caracteres de longitud
d fija, desde 11 a 2.000 byttes de ocupacción. El númeero
de caraacteres que se pueden alm
macenar se rigge según la si guiente fórm
mula.
nº ccaracteres = bytes / charaacter set Paraa ASCII, el co
onjunto de caaracteres ocu
upa
un byte, por lo que
e coincide el n número de caaracteres má ximos con la ocupación del tipo de dato.
Si se in
ntroduce un vvalor de 10 caaracteres en uun campo de CHAR(100), se rellenará ccon espacios las
90 posiciones restanntes. Así la sigguiente expre
esión es ciert a:
'H
Hola pepe' = 'H
Hola pepe '
Tipo dee dato VARCH HAR2(b)
Almace ena cadenas de caractere
es de longitud
d variable. Si se define un
na columna d
de longitud 1
100
bytes, y se introducce en ella un vvalor de 10 bytes, la colum mna ocupará 10 y no 100 como hacía ccon
el tipo de dato CHAR.
Tipo de
e dato VARCHHAR(b)
En Ora
acle10g es equivalente a V
VARCHAR2
Tipo de
e dato NCHAR(b)
Almaceena un valor alfanumérico
o de longitud fija con posibbilidad de cam
mbio de juego
o de caracterres.
Puede almacenar taanto caracteres ASCII, EBCDIC, UNICOD E…
Tipo de
e dato NVARCHAR2(b)
Almaceena un valorr alfanuméricco de longitu
ud variable ccon posibilidad de cambiio de juego de
caracte
eres. Puede aalmacenar tan nto caracteress ASCII, EBCD DIC, UNICODE…
Tipo de
e dato NUMB
BER(p,s)
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Mantisa xx 10exponente
Tipo dee dato FLOAT T(b)
Almace ena un núme ero en punto decimal sin rrestricción dee dígitos decim
males. El paráámetro b indica
la preccisión binaria máxima quee puede moverse en el raango 1 a 126.. Si se emite el defecto seerá
126. Una columna FLOAT(126) e es equivalentte a una coluumna NUMBEER(38), aunqu ue la diferencia
está en
n que la colu
umna NUMBEER no podrá contener deecimales y la columna FLO
OAT si y en ccon
cualquier escala.
Tipo dee dato DATE
Almace ena un valor d de fecha y hoora.
Paraa un tipo de dato DATE, Oracle
O almacena internam
mente los siguiente datos: ƒ Siglo ƒ Año ƒ
Mes ƒ Día ƒƒ Hora ƒ Minuto ƒ Segundo
Esto
o es: Dos dígittos para el díía Las tres primeras siglass del año (dep
pende del idioma instalad
do).
Cuatro díígitos para el año.
Por ejemplo: '1‐JAN‐2001' ó '2
2‐DEC‐1943'
Este fo
ormato puede
e ser alterado
o en cualquierr momento.
Internaamente un fe echa se almaacena como el e número dee días desde cierto punto
o de inicio (p
por
ejempllo el año 0). Esto permite
e que las fecchas puedan ser tratadas en operaciones aritméticcas
normales:
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
'1‐JAN‐2
2001' + 10 = '11‐JAN‐2001
1' '1‐JAN‐20000' ‐ 1 = '31‐DEEC‐1999' '10‐‐MAY‐2000' ‐ '1‐
MAY‐20000' = 9
Tipos dde datos binaarios
Permitten almacenar información n en formato "crudo", valoores binarios tal y como see almacenan en
el disco
o duro o commo residen en memoria. Esstas columnass se pueden u utilizar tanto para almacen nar
grande es cantidadess de datos (hasta 4Gb.), como
c para alm
macenar direectamente cu ualquier tipo de
fichero
o (ejecutables, sonidos, videos,
v fotos,, documentoos Word, librrerías…) o paara transportar
datos de
d una base de datos a otra,
o ya que el formato bbinario es el único formatto común enttre
cualquier sistema innformático.
Tipo de
e dato LONG
Almaceena caracterres de longittud variable hasta 2 Gbb. Este tipo de dato see soporta paara
compaatibilidad con versiones annteriores. En OOracle8 y siguuientes versioones se debeen usar los tippos
de dato
os CLOB y NLOB para almaacenar grande es cantidadess de datos alffanuméricos.
Tipo de
e dato ROWID
Repressenta una direección de la b
base de datoss, ocupada poor una única fila. El ROWID de una fila es
un identificador único para una fila dentro dde una base de datos. No o hay dos filas con el mismmo
ROWID D. Este tipo de
e dato sirve p
para guardar p
punteros a fillas concretas. El ROWID see compone dee:
Senten ncias sobre Taablas
Create e Table
Crea una tabla en laa base de datoos, sintaxis General de la ssentencia CREEATE TABLE:
CREATE TABLE nombre_tabla(
COLUM MNA TIPO [NO OT NULL],
COLUM MNA TIPO [NO OT NULL],
. . .
{CONSTTRAINT nomb bre_clave_priimaria PRIMA ARY KEY (coluumnas_clave)}
{CONSTTRAINT nomb bre_clave_forránea
FOREIG GN KEY(colum mnas_clave) R
REFERENCES ttabla_detalle((
column nas_clave )
{ON DEELETE CASCAD DE} } )
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Un ejemplo de la uttilización de e
esta sentenciaa es:
Figuraa 1 Tabla Facturaa
La creaación de la tabla FACTURA, definida en la figura 1, seería la siguien
nte:
CREATE TABLE FACTTURA(
REFEREENCIA VARCH HAR2(10) NOTT NULL,
DESCRIPCION VARC CHAR2(50),
C_PAISS NUMBER(3),
C_CLIEENTE NUMBER R(5),
IMPOR RTE NUMBER((12),
CONSTTRAINT PK_FA ACTURA PRIM MARY KEY( REFFERENCIA )
CONSTTRAINT FK_CLLIENTE(C_PAISS,C_CLIENTE)) REFERENCESS CLIENTE(C_PAIS, C_CLIEN NTE)
ON DELETE CASCAD DE);
Restriccciones de coolumnas:
NOT NULL: La colum mna no permitirá valores nnulos.
CONST TRAINT: Perm mite asociar un nombre a u una restricció n.
DEFAU ULT valor: La columna tendrá un valor por defecto. El SBGD utiliza este valorr cuando no se
especiffica un valor ppara dicha co
olumna.
PRIMA ARY KEY: Perm mite indicar q
que esta colum
mna es la clavve primaria.
UNIQU UE: Obliga a q que los valore
es de una coluumna tomen valores único os (no puedee haber dos fiilas
con iguual valor). Se implementa ccreando un ínndice para diccha(s) column na(s).
CHECK K (condición): Permite indicar una condición que debbe de cumplirr esa columnaa.
Restriccciones de tablas:
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
La info
ormación de la tablas referridas debe manejarse en ccascada para la actualizacción y en setn null
para laa eliminación.
1. Cre del esquema anterior.
ee las tablas d
2. Agregar a la tab bla Usuario el campo Fechaa_Ingreso (quue sea obligattorio).
3. Agregar a la tabla Libro el campo
c Prestaado (que seaa obligatorio)), y asignarle por defecto
o el
vallor 1.
4. Agregar al camp po clase la condición de qu ue debe ser uun entero enttre 0 y 5.
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
LENGUAJEE DE MANIPILACION
N DE DATO
OS DML
El DDL (Data Definition Languagge) es el conju unto de senteencias que esstá orientadaas a la creació
ón,
modificación y conffiguración de objetos en baase de datos..
El DDLL es el subcon
njunto más eextenso dentrro de SQL asíí que sólo vaamos a hacerr una referencia
rápida a algunas senntencias.
Ventas
Referencia Codigo_Cliente Codigo__Ciudad Total
1 1 12 50000,12
2 2 11 34343,00
3 1 10 23444,12
4 3 11 2372382,2 2
5 4 13 3232323,0 01
6 2 12 234000,00 0
Figura 2 Tab
bla Ejemplo de vventas
Instruccción INSERT
La senttencia INSERTT nos permite e introducir nuevas filas enn una tabla dee base de dattos.
La sintaaxis básica ess:
INSERTT INTO tabla[(( campos )]
VALUES( lista de vallores );
Los nombres de los campos son opcionales y si no se pon en se supond drá que se agregarán valorres
a todoos los campo os de la tablaa en su orde
en original,si se ponen, sse podrán in ndicar cualqu uier
númerro de columnaas, en cualquier orden.
La listaa de valores ees el registro q que se insertará en la tablla. Los tipos d de datos debeen coincidir ccon
los cammpos indicados o con la definición
d de la tabla si o mitimos el n
nombre de lo os atributos. LLas
column nas que no se e incluyan se inicializarán ccon NULL, (si no se ha definido valor en n el DEFAULT)).
Ejempllo:
INSERTT INTO FACTU URA
VALUES('A111', 'Facctura nueva', 1, 5, 50000);
Existe o para insertar el resultado de una consuulta:
otra sintaxis p
INSERTT INTO tabla{(( campos )}
SELECTT . . .
Este tippo de INSERTT permite intrroducir un graan número dee registros en n una sola sentencia, al igu ual
que coon el INSERT normal, los tipos
t de dato
os del SELECTT deben coin ncidir con los de los camp
pos
indicad dos en la senttencia.
Ejempllo:
INSERTT INTO FACTU URA(C_PAIS, C C_CLIENTE)
(SELECT C_PAIS, C_C CLIENTE FROM M CLIENTE);
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Instruccción DELETE
La senttencia DELETE nos permitte eliminar nu uevas filas enn una tabla de base de daatos conformee a
una co ondición, es eqquivalente al SELECT, pero o en vez de mmostrar las filaas que cumplan la condicióón,
las elim
mina.
Su sintaxis es:
DELETEE {FROM} tab bla
{WHER RE condición};;
Si se omite la cláusu ula WHERE se e borrarán todas las filas dde la tabla, lass condicioness pueden ser las
mismas que las aplicadas en unaa sentencia SEELECT.
Instruccción SELECT
La senttencia SELECTT es la encarggada de la recuperación (seelección) de d datos, con cualquier tipo d
de
condición, agrupación u ordenacción.
Una se entencia SELECT retorna un n único conjuunto de resulttados, por lo q que podrá ser aplicada en
cualquier lugar donde se espere un conjunto de resultado s.
La sintaaxis básica ess:
SELECTT [campos, op peración, funcción]
FROM [tablas|consulta]
WHEREE condición
GROUP P BY columnaas de agrupación
HAVING condición aagrupada
ORDER R BY columnas de ordenación;
Todas las cláusulas son opcionale es excepto SEELECT y FROM M.
Clausu ulas en el Sele
ect: Estas se e
escriben desp pués del Selecct y antes del from
SELECTT [ALL | DISTINCT | UNIQU UE ] <lista‐de sselecciones>
<lista‐dde seleccione es>: Lista de n
nombre de co olumnas o exxpresiones qu ue se desean mostrar, deb ben
estar separadas porr comas.
Ejempllo: Select codigo_cliente frrom ventas;
Codiggo_Cliente
1
2
1
3
4
2
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
*: indica que muesstre todos lo os campos de
e las tablas oo resultados del from, esste no puedee ir
acomp pañado de nin ngún nombre de campo.
Ejempllo: Select * from ventas;
Ventas
Referencia Codigo_Cliente Codigo__Ciudad Total
1 1 12 50000,12
2 2 11 34000,00
3 1 10 23500,12
4 3 11 23750000 0,2
5 4 13 3200323,0 01
6 2 12 234000,00 0
DISTINNCT: Elimina laas filas dupliccadas en el resultado de la consulta.
Ejempllo:
SELECTT DISTINC cod digo_cliente
FROM ventas;
Codiggo_Cliente
1
2
3
4
UNIQU UE: es igual quue DISTINCT.
ALL: Muestra
M todoss los resultad
dos generadoos por la conssulta, este ess el valor porr defecto de un
select no es necesario escribirlo.
NOTASS:
‐ Las coolumnas amb biguas se precceden del nom mbre de la tabbla: <tabla>.<<columna>
‐ * refiere a todas laas columnas d de todas las tablas.
Cláusu ula WHERE.
Sirve ppara indicar laa condición qu ue deben cum mplir las filas resultantes.
WHEREE <condición> >
Una co p una o vaarias expresiiones condicionales coneectadas por los
ondición estáá formada por
operad dores lógicos AND, OR y N NOT. Una exp presión condiicional tiene una de las fo ormas indicad das
en la figura 3.
Ejempllo:
SELECTT codigo_clien nte
FROM ventas
WHEREE total > 4000 00 and total < < 300000
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Codiggo_Cliente
1
2
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Figura 3. Operadores lóggicos
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Sintaxis:
SELECTT [campos|funcion]
FROM tabla
[WHER RE condicion]
GROUP P BY campos_ _grupo;
Si en el SELECT solo se especificaa la función no o se escribe eel GROUP BY.
Ejempllos:
calcular el ttotal comprad do por cada cliente. (el gruupo lo forma el codigo_clieente)
SELECT codigo_cliente, ssum(total)
FROM ventas
GROUP BY ccodigo_clientte;
Codigo_Clien
C te Su m(total)
1 735000,24
2 2680000,00
3 237500000,2
4 32003323,01
Calcular el ttotal vendido (la función e es el único cam mpo a mostraar, no hay gru upos)
SELECT sum m(total)
FROM ventas;
Sum(total)
S
735000,24
2680000,00
237550000,2
32000323,01
272991823,45
CLAUSULA HAVING G: No se pueeden usar funnciones de aagrupación en
n la cláusula WHERE de un
SELECTT. O sea, no se puede usar
u el WHER RE para, de forma selecttiva eliminarr datos que no
interessan del resultado de una consulta agrup pada.
Sintaxis:
SELECTT [campos|funcion]
FROM tabla
[WHER RE condicion]
GROUP P BY campos_ _grupo
HAVING function co ondición valorr;
Ejempllo: Mostrar e el total comprrado por cadaa cliente, perro que supereen un 100000 00 de pesos. (el
grupo lo forma el co odigo_clientee)
SELECTT codigo_clien nte, sum(totaal)
FROM ventas
GROUP P BY codigo_ccliente;
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Codigo_Clien
C te Su m(total)
3 237500000,2
4 32003323,01
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
CONSULTA
AS CON COMB
BINACION EN
NTRE TABLASS (JOIN)
Todas las explicacio ones que estáán a continuaación utilizann las siguientees dos tablas para ilustrarr el
efecto de diferentess clases de un niones JOIN.
Tabla EEmpleado
Apelliddo IDDepartamento
Raffertty 31 31
3
Jordán 33
3
Steinbe erg 33
3
Róbinsson 34
3
Smith 34
3
Gasparr 36
3
Tabla DDepartamento
NombrreDepartamento IDDepaartamento
Ventass 31
Ingenie ería 33
Produccción 34
Marketting 35
La tabla Empleado contiene a lo os empleados con el númeero del deparrtamento al q que perteneceen;
mientrras que la tab bla Departamento, contien ne el nombre de los deparrtamentos dee la empresa, se
puede notar que exxiste un empleado que tie ene asignado un número de departam mento que no se
encuen ntra en la tabla Departammento (Gaspaar), igualmennte, en la tab mento existe un
bla Departam
departtamento al cual no perte enece empleaado alguno ( Marketing). Esto servirá para presentar
alguno os ejemplos m más adelante.
Combinación intern na (INNER JOIN o JOIN)
Con essta operación es calculado o el producto cruzado de ttodos los regiistros; así cad da registro en n la
tabla AA es combinado con cada registro de laa tabla B; perro sólo permaanecen aquelllos registros en
la tablaa combinada que satisface en las condiciiones que se especifiquen. Este es el tipo de JOIN m más
do por lo que es considerado el tipo de combinaciónn predetermin
utilizad nado.
SQL esspecifica dos formas diferrentes para expresar
e estaas combinaciiones. La prim
mera, conociida
como e explícita usa la palabra JO
OIN, mientrass que la segunnda es implíccita y usa ',' p para separar las
tablas a combinar e en la sentenccia FROM de la declaraciónn SELECT. Enttonces siemp pre se generaa el
produccto cruzado del cual se seleccionan las combinaaciones que cumplan lo o que indica la
senten ncia WHERE.
Es nece esario tener e especial cuidaado cuando sse combinan columnas con valores nulos NULL ya q que
el valo
or nulo no se combina con
c otro valo
or o con otrro nulo, exceepto cuandoo se le agreggan
predicaados tales como IS NULL o o IS NOT NULLL.
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Como ejemplo, la siguiente
s con
nsulta toma todos
t los reg istros de la ttabla Empleado y encuentra
todas las combinacciones en la tabla
t Departaamento. La seentencia JOIN N compara lo
os valores en
n la
column na IDDepartamento en am mbas tablas. C Cuando no exxiste esta corrrespondencia entre algun nas
combin naciones, éstaas no se mue
estran; es decir que si el núúmero de dep partamento d de un empleaado
no coincide con lo os números de
d departamento de la ttabla Departaamento, no se mostrará el
empleaado con su re espectivo dep
partamento en la tabla resuultante.
Las doss consultas siguientes son similares, y sse realizan dee manera expllicita (A) e implícita (B).
A. Ejem mplo de la sen
ntencia INNERR JOIN explíciita:
SELECTT *
FROM empleado
INNNER JOIN dep partamento
ON empleado.IDdepartame
O ento = departtamento.IDdeepartamento o
B. Ejem mplo de la sen
ntencia JOIN iimplícita:
SELECTT *
FROM empleado, d departamento
WHEREE empleado.IDdepartame ento = departaamento.IDDeepartamento
Resultaado
Empleado
o.Apellido Empleado.IDde
epartamento departamento.N ombreDepartameento departameento.IDDepartameento
Smith 34 Producción 34
Jordán 33 Ingeniería 33
Róbinsson 34 Producción 34
Steinbe erg 33 Ingeniería 33
Raffertty 31 Ventas 31
El emp pleado Gaspar y el departaamento de Marketing no sson presentad dos en los resultados ya q
que
ningun no de éstos tie entes en la ottra tabla. No existe un dep
ene registros correspondie partamento ccon
númerro 36 ni existe e un empleado con número de identificcación 35.
A la combinación qu ue utiliza com
mparaciones d
dentro del preedicado JOIN se le llama thheta‐join.
C. Ejem mplo de comb binación tipo theta:
SELECTT *
FROM empleado
INNNER JOIN dep partamento
ON empleado.IDDepartamento < departamento.IDD
O Departamento o
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Natura al (Natural join):
Es unaa especializacción de la co
ombinación de
d equivalenccia, anteriorm
mente mencionada. En esste
caso see comparan todas las columnas que tengan el miismo nombree en ambas ttablas. La tabla
resultaante contiene e sólo una columna por cad da par de coluumnas con ell mismo nombre.
mplo de comb
D. Ejem binación natu ural:
SELECTT *
FROM empleado N NATURAL JOIN N departamento
El resu
ultado es un p poco diferentte al de el ejeemplo D, ya qque esta vez la columna ID
DDepartamen nto
se mue estra sola unaa vez en la tab bla resultante
e.
Empleaado.Apellido Empleado.ID
Ddepartamentto departam ento.NombreD
Departamento
o
Smith 34 Produccióón
Jordán 33 Ingenieríaa
Róbinsson 34 Produccióón
Steinbeerg 33 Ingenieríaa
Raffertty 31 Ventas
El uso de esta la sentencia NATU URAL puede producir resuultados ambigguos y generar problemass si
la base
e de datos cambia, porqu ue al añadir, quitar, o re nombrar las columnas, p
puede perderr el
sentidoo la sentenccia; por estaa razón es preferible exxpresar el p predicado usando las otras
expresiones nombraadas anteriorrmente (ejem mplos A y B).
Cruzadda (Cross joinn):
Presennta el productto cartesiano de todos los registros de las dos tablass, el código SQ QL para realizzar
este producto
p carttesiano enun ncia las tabllas que seráán combinad das, pero noo incluye alggún
predicaado que filtree el resultado.
E. Ejem
mplo de comb binación cruzaada explícita:
SELECTT *
FROM empleado C CROSS JOIN de epartamento o
F. Ejem
mplo de comb binación cruzaada implícita: res
SELECTT *
FROM empleado, d departamento;
Empleado
o.Apellido Empleado.IDde
epartamento departamento.N ombreDepartameento departameento.IDDepartameento
Raffertty 31 Ventas 31
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
A diferrencia del resultado presentado en los ejemplos A yy B (de combinación intern na) donde no se
mostraaba el empleaado cuyo dep partamento n no existía; enn el siguiente ejemplo se presentarán los
empleaados con su u respectivo departamen nto, e inclussive se pressentará el empleado, cu
uyo
departtamento no existe.
G. Ejem mplo de tabla izquierda para la combinaación externaa:
SELECTT distinct *
FROM empleado LLEFT OUTER JO OIN departammento
ON empleado.IDDepartamento = departamento.IDD
O Departamento o;
Empleado
o.Apellido Empleado.IDde
epartamento departamento.N ombreDepartameento departameento.IDDepartameento
Jordán 33 Ingeniería 33
Raffertty 31 Ventas 31
Róbinsson 34 Producción 34
Smith 34 Producción 34
Gasparr 36 NULL NULL
Steinbe erg 33 Ingeniería 33
de tabla derecha (R RIGHT OUTER R JOIN o RIGH HT JOIN):
Esta operación inve ersa a la ante
erior; el resu
ultado de estta operación siempre con
ntiene todos los
registros de la tablaa de la derech ha (la segund da tabla que sse menciona en la consultta), aun cuan ndo
no exissta un registro o correspond diente en la taabla de la izquuierda, para uuno de la dereecha.
La senttencia RIGHTT OUTER JOIN retorna la pareja de todoos los valoress de la tabla d derecha con los
valoress de la tabla de la izquierd da correspon ndientes, o reetorna un valor nulo NULLL en caso de no
corresp pondencia.
H. Ejem mplo de tabla derecha para la combinacción externa:
SELECTT *
FROM empleado R RIGHT OUTER JOIN departaamento
ON empleado.IDDepartamento = departamento.IDD
O Departamento o
Empleado
o.Apellido Empleado.IDde
epartamento departamento.N ombreDepartameento departameento.IDDepartameento
Smith 34 Producción 34
Jordán 33 Ingeniería 33
Róbinsson 34 Producción 34
Steinbeerg 33 Ingeniería 33
Raffertty 31 Ventas 31
NULL NULL Marketing 35
En estee caso el áreaa de Marketin
ng fue presenttada en los reesultados, aunque aún no hay emplead
dos
registrados en dichaa área.
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
Entre las funciones que manejjan cadenas de caractere
es se encuen
ntran las sig
guientes:
cad1||cad2: Conca
atena las cadenas de ca
aracteres. Lo
os nombres de columna
as son caden
nas
s.
validas
LENGT
TH (cadena): Encuentra la longitud de
d la cadena
a.
SUBST
TR (cad,posic_inicial [,long]): En
ncuentra la
a subcadena de "long
g" caractere
es,
empez
zando en "po
osic_inicial".
UPPER
R (cadena): Cambia
C los caracteres
c minúsculas
m po
or mayúscullas.
LOWER
R (cadena): Cambia los caracteres mayúsculas
m p
por minúscu
ulas.
TO_NU
UMBER (cade
ena): Convierte los datos carácter (compuesto
os por núme
eros) en valo
ore
numérricos.
TO_CH
HAR (cadena e un campo numérico en
a): Convierte n tipo caráctter.
LPAD (cadena,lon
ng_n [,carac
c]): Rellen
na la izquie
erda de la
a cadena con el "cara
ac"
especiificado (po
or defecto blancos),
b ha
asta que la longitud de la cadena nueva s
sea
"long_
_n".
DECOD
DE (cadena,caso1,rcad1, .,defecto): La salida
a es el resu
ultado ad1" donde la
"rca
cadena iguale la ocurrencia
o de
e caso1 y as ento es el valor
si sucesivam ente. El último argume
efecto.
por de
INITCA
AP(cadena): Vuelve
V úscula la letrra inicial de la cadena.
mayú
LTRIM(cadena,grupo): Va rem
moviendo de
d izquierda cteres que se
a a derecha los carac
encuentran en el grupo.
g
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.
RTRIM
M(cadena,gru
upo): Va rem
moviendo de
d derecha a izquierda los carac
cteres que se
encuentran en el grupo.
g
TO_DA
ATE (fecha,fo
ormato): Co
onvierte cade
ena de caraccteres a fech
has.
“Fo
ormamos cciudadanoss profesionnales para eel mundo””
EAM 2010 ® ‐ Armeniaa Q.