§:Q:LServer2oos 3 (:: :3,»:. r;j
Transcript of §:Q:LServer2oos 3 (:: :3,»:. r;j
FACULTAD: INGENIERIA INDUSTRIAL Y DE SISTEMAS W lm?�030�030
INFORME FINAL DEL PROYECTO DE INVESTIGACIDN
�034ESTUD|OC_OMPARAT|V0 DE LOS LENGUAJES DE
PROGRAMACION ALGEBRAICOS SQL 2005 Y ORACLE.�035
�030 INVESTIGADOR RESPONSABLE: GARCIA DIAZ, BERTILA LIDUVINA
_:;\ .*�031?.'�035"|�030
§:Q:LServer2oos 3 (::_:3,»:._r;j_.;:_-A ' �030 nA'nT's7s £2
�034mm_in__m___1_____w STANDARD EDITION one
.�030i,�034:',(_H in-~ .. _../\ ~_ ( _ �034I\r M 1-�030
it �030 3 \�034:�031,:�030h�030:\�030--'«b'�024�030�031 �030. " W»-; L A A -�030
PERIODO DE EJECUCIDN: 01 DE OCTUBRE DEL 2011 AL 30 DE SETIEMBRE DEL
2013
RESOLUCIDN RECTORAL DE APROBACION DEL PROLYECTO N° 1070-2011-R.-
CALLAO DEL 02 DE NOVIEMBRE DEL 2011
CALLAO - PERU
.639 -
J O
- 0 /
|.- lNDlCE
l|.- RESUMEN 4
lll.- INTRODUCCION 5
3.1 Planteamiento del problema 5
3.2 Objetivos y alcances de la investigacién 6
3.3 lmportancia y justificacion 6
IV.- MARCO TEORICO
4.1 Teorias relacionadas con el problema y objetivos dados en el 8
proyecto de investigacién.
4.1.1 Lenguajes de programacion algebraicos 8
4.1.1.1 Modelamiento Entidad �024Relacién 9
4.1.1.2 Modelo Relacional 9
' 4.1.2 SQL 13
4.1.2.1 Lenguaje de definicion de datos (DDL) 15
4.1.2.2 Lenguaje de manipulacion de datos (DML) 15
4.1.2.3 Lenguaje de control de datos (DCL) 16
4.1.3 SQL 2005 16
4.1.3.1 Estructuracion de la base de datos 16
4.1.3.2 Tama}401ode la base de datos 17
4.1.3.3 Lenguaje de definicion de datos (DDL) 17
4.1.3.4 Lenguaje de manipulacion de datos (DML) 18
4.1.3.5 Lenguaje de control de datos (DCL) 18
4.1.4 ORACLE 18
4.1.4.1 Caracteristicas de oracle 19
. 4.1.4.2 Otras caracteristicas de oracle 20
4.1.4.3 Arquitectura de oracle en Vl}401ndows 21
4.1.4.4 Lenguaje de definicion de datos (DDL) 22
4.1.4.5 Lenguaje de manipulacion de datos (DML) 22
4.1.4.6 Lenguaje de control de datos (DCL) 22 V
4.2 Trabajos de investigacion teérioos anteriores 23
4.2.1 Ediciones 23
4.2.2 Sistemas operativos 24
. - 1 W
4.2.3 Arquitectura ' 254.2.3.1 instancias y bases de datos 25
4.2.3.2 basesde datos y espaciodetablas 274.2.3.3 los nombres de inslancia 28
�030 V.- MATERIALES Y METODOS 30
VI.- RESULTADOS �030 32
6.1 Bases de datos comparadas 32
6.1.1 SQL Server 32
- 6.1.2 ORACLE 34
6.2 Lenguaje de definicién de datos (DDL) 35
6.2.1 Creacion de esquemas y tablas 35
6.2.2 lmplementar constraints 40
6.2.2.1 Check constraints I 40
6.2.2.2 Default (valores por defecto) 41
6.2.3 Modi}401cacionde tablas (ALTER TABLE) 42
6.2.3.1 Modrficar columnas 42 '
6.3 Lenguaje de manipulacion de datos (DML) 43
6.3.1 Insert 43
6.3.2 Update 44
6.3.3 Delete 44
6.3.4 Select 45
6.3.4.1 Consultas bésicas 45
6.3.4.2 Manejo de nombres de atributos ambiguos 49 .
6.3.4.3 Clausulas where no especificadas y empleo de * 50
6.3.4.4 Tablas como conjuntos en SQL 52
6.3.4.5 Consultas anidadas y comparaciones de 54
conjuntos
�030 _ 6.3.4.6 La funcion exists 57�030 6.3.4.7 Conjuntos explicitos y valores nulos 58 V
6.3.4.8 Cambio de nombre de los atributos 60
6.3.4.9 Funciones agregadas y agrupacién 61
6.3.4.10 comparaciones de subcadenas, operadores 64
aritmétioos y ordenacién
6.4 Lenguaje de control de datos (DCL) ' _ 67 "
. 2
6.5 Cuadro comparativo resumen de las caracteristicas de los 69
' Ienguajes de programacién algebraicos
6.6 Contrastacion de resultados entre ORACLE y SQL SERVER 70
_ vu.�024DISCUSION - 73
VIII.- REFERENCIALES 76
|x.�024APENDICE ' 8 - 771.- Adicionales de SQL 78
2.- Syllabus del curso de Base de Dates 82
X.- ANEXOS 87
SQL �030 88
. 3
|l.- RESUMEN
�034Estudiocomparativo de los Ienguajes de programacion algebraicos SQL �030
2005 y ORACLE�035.
El objetivo de esta investigacion es realizar un estudio comparativo a nivel �024
practico de ambos Ienguajes algebraicos y profundizar en un tema que
corresponde al curso de Base de Datos a mi cargo. Para recopilar los
datos de este estudio se creé una Base de Datos en cada uno de los ,
- Lenguajes y se comprobé a nivel del Lenguaje de definicién de datos
(DDL), Lenguaje de manipulacion de datos (DML) y Lenguaje de control de
datos (DCL) sus similitudes y diferencias.
De ios resultados obtenidos en la investigacién podemos concluir que las
diferencias entre .ambos Ienguajes es mayor a nivel de Lenguaje de
definicién de datos (DDL), siendo minima la diferencia en e| Lenguaje de
Manipulacién de Datos (DML) y existen peque}401asdiferencias a nivel del
Lenguaje de Control de Datos (DCL).
Existen diferencias a nivel de los sistemas operativos donde corren estos
SGBD, mientras que ORACLE es multiplataforma, SQL server solo se
ejecuta en el Sistema Operativo de Windows de Microsoft.
Existen diferencias en cuanto a costos, ya que el costo de utilizar el
ORACLE es mayor que en SQL server.
Desde el punto de vista del software, ORACLE ofrece mas ventajas, como
por ejemplo el uso de DATAWAREHOUSE y MINERIA DE DATOS, que
forman parte del Lenguaje. SQL también busca mejorar estas
caracteristicas. Ambos utilizan el Modelo Reiacional.
Las conclusiones obtenidas �030puedenser utilizadas por cuaiquier
investigador de dicho tema 0 de alguna rama de la ingenieria del software.
4 W
m.- INTRODUCCION
3.1 PLANTEAMIENTO DEL PROBLEMA
�034Estudiocomparativo de los Ienguajes de programacién algebraicos SQL
2005 y ORACLE�035.
Esta investigacién es una investigacién de tipo cualitativo, donde se
compara estos 2 Ienguajes de programacién algebraicos como es SQL
2005 y ORACLE con el objetivo de comprobar sus similitudes y diferencias
_ a nivel de software, con el fin de poder decidir cuél utilizar dado un
contexto determinado o partir de uno de ellos, para conocer el otro.
Considero este tema muy importante por ser estos Lenguajes algebraicos
los responsables de la mejora en la gestién de las empresas y cuyo _
manejo es vital para el desarrollo Iaboral de los futuros ingenieros de
sistemas.
A Ambos son los Gestores de Base de Datos mas utilizados para gestionar
las Empresas y uno de los principales motivos de la existencia de la
_ lngenieria de Sistemas, ya que esta sin herramientas de trabajo como los
Ienguajes de programacién algebraicos, tendria como herramientas sélo un �024
editor como Word 0 una hoja de célculo como Excel, y no hubiera '
alcanzado el desarrollo cientifico y tecnolégico que hoy tiene.
Sin embargo, es importante analizarlos a través de aplicaciones précticas y
poder inferir nuestras propias conclusiones acerca de las similitudes y
diferencias, de las ventajas y desventajas de ambos Ienguajes algebraicos.
En resumen el planteamiento del problema seria el siguiente:
A a.- z,Qué analogias y que diferencias existen entre el Lenguaje Algebraico
SQL 2005 y ORACLE?
b.- (;Cua| Lenguaje Algebraico convendria mas impart_ir en el Curso de
Bases de Datos en los momentos actua|es?.
c.- g,Se podria usar SQL 2005 en el curso de Base de Datos y ORACLE en
un curso de Taller de Base de Datos o usar ambos en el curso Base de
Datos de acuerdo a un orden de dificultad teniendo en cuenta los cambios
en las tecnologias, asi como la utilidad comercial de ambos?
d.- g,Cua'les son las diferencias en cuanto a requerimientos de Plataformas �031
de Sistemas Operativos y hardware de SQL SERVER y ORACLE.
e.- g,Qué ventajas tienen cada uno de estos Gestores de Bases de datos?
5
f.�024g,Qué desventajas tienen cada uno de estos Gestores de Bases de
' datos? �031
3.2 OBJETIVOS Y ALCANCES DE LA INVESTIGACION
El objetivo principal es definir y determinar Ia importancia de los Ienguajes
algebraicos a través de unestudio comparativo. Corresponderia a un tipo
b de investigacién ba'sica. V
a. OBJETIVOS GENERALES
o Detenninar la importancia de los Lenguajes Algebraicos, mediante un
estudio comparativo '
o Apoyar el dictado del curso de Base de Datos a mi cargo, en la
Universidad Nacional del Callao.
b. OBJETIVOS ESPECiFlCOS
De acuerdo a las definiciones anteriores, esta investigacién permitiré:
o Profundizar en la investigacién de los diferentes Lenguajes de
Programacion Algebraicos.
. - lnvestigar las diferencias y semejanzas que existen entre los diferentes
Lenguajes de Programacién Algebraicos.
o Evaluar la utilidad y beneficio de cada uno de los Lenguajes de
Programacién Algebraicos.
c. ALCANCES DE LA INVESTIGACION
El tipo de Investigacién seré realizar el curso de Base de Datos a mi cargo,
utilizando estos Lenguajes de Programacién Algebraicos, para poder
analizar sus efectos en la Gestién de Bases de Datos.
El sector que se veré beneficiado con los resultados de esta investigacién
son: los alumnos de la Facultad de Ingenieria industrial y de Sistemas de
la UNAC.
3.3 IMPORTANCIA Y JUSTIFICACION
Este proyecto es importante porque no existe un trabajo similar que le
preceda. Una vez que ha sidd demostrado los resultados de esta relacién
- tendrén amplia generalizacién. �030
6 W
Para ejecutar la presente investigacién, se haré uso de las teorias
cienti}401casque a continuacién se indican: Modelo Conceptual, Modelo
Relacional, SQL. A
El objetivo principal es definir y determinar Ia importancia de los Ienguajes
algebraicos a través de un estudio comparativo. C_orresponderia a un tipo
de investigacién bésica. Este proyecto por corresponder a las ciencias
bésicas, requiere de justificacién teérica.
Es Ia motivacién para emprender el siguiente trabajo de investigacién,
estrechamente Iigado al curso de Base de Datos que que tengo a mi cargo
en la Escuela de lngenieria de Sistemas de la Universidad Nacional del �030
Callao.
7 {W�035"
|V.- MARCO TEORICO
�030 En cuanto a las teorias y/o leyes y/o doctrinas estrechamente relacionadas
con el problema y objetivos dados en el proyecto de investigacién, de
acuerdo a la operacionalizacién de la hipétesis del proyecto de %
/ investigacién, existen las siguientes variables independientes: Lenguajes
algebraicos, SQL, SQL 2005, ORACLE que son necesarias conocer para
demostrar Ia variable dependiente que es el estudio comparativo de ambos
Lenguajes Algebraicos, las cuales expondré a continuacién.
Existen trabajos anteriores que tengan el mismo objetivo que el presente
trabajo de investigacién a nivel teérico, las cuales expondré a continuacién,
pero no existen trabajos previos a nivel préctico, de repetir lo hechos y .
extraer sus propias conclusiones en el tema de Lenguajes algebraicos.
4.1 TEORIAS RELACIONADAS CON EL PROBLEMA Y OBJETIVOS DADOS
EN EL PROYECTO DE INVESTIGACION.
4.1.1 LENGUAJES DE PROGRAMACION ALGEBRAICOS
Los Lenguajes Algebraicos son un tipo de lenguaje Declarativo, en la
programacién declarativa las sentencias que se utilizan lo que hacen
es describir el problema que se quiere solucionar, pero no las instrucciones
necesanas para solucionarlo. Esto ultimo se realizara�031mediante
mecanismos intemos de inferencia de informacién a partir de la descripcién
realizada.
Los Ienguajes declarativos esta'n basados en "la definicién de funciones o
relaciones. No utilizan instrucciones de asignacion (sus variables no
almacenan valores). Son los mas féciles de utilizar (no se requieren V
conocimientos especi}401cosde informética), estén muy préximos al hombre.
Se suelen denominar también Ienguajes de érdenes, ya que los programas
estan formados por sentencias que ordenan �034quées lo que se quiere
haoer�035,�030noteniendo el programador que indicar a la computadora el
proceso detallado (el algoritmo) de como haceno�035. ~
SQL es un lenguaje declarativo de acceso a bases de datos relacionales
que permite especificar diversos tipos de operaciones en -ellas. Una de sus
' 8
caracteristicas es el manejo del algebra y el célculo relacional que
permiten efectuar consultas con el fin de recuperar de forma
sencilla infonnacién de interés de bases de datos, asi como hacer cambios
en ella.
En 1976, Peter Chen presenté el modelo entidad-relacién, que es la
técnica mas utilizada en el dise}401ode bases de datos. Estas teorias se
complementan con las investigaciones del Dr. Codd, y sélo hay un paso
para transformar este Modelo Entidad Relacién en un Modelo Relacional y
luego proceder a la creacién de Dise}401oFisico con la ayuda de los
mensionados Ienguajes algebraicos.
_ 4.1.1.1 MODELAMIENTO ENTIDAD - RELACION
El modelo entidad relacién (ER) proporciona una herramienta para
representar informacién del mundo real a nivel conceptual, y el el modelo :
mas utilizado. Creado en 1976 por Peter Chen, permite describir las
entidades involucradas en una base de datos, asi como las relaciones y
restricciones de ellas. Chen presenta el modelo como una vista unificada
de los datos, centrandose en la estructura Iégica y abstracta de los datos,
como represeritacién del mundo real, con independeneia de
consideraciones de tipo fisico.
�034Estemodelo y sus variaciones se emplean a menudo en el dise}401o
conceptual de aplicaciones de bases de datos, y muchas herramientas de
dise}401ode bases de datos aplican sus conceptos�035(ELMASRY /NAVATHE,
2007).
4.1.1.2 MODELO RELACIONAL
En junio de 1970 el Dr. Codd, quieh Trabajaba para IBM, publicé un paper
con el titulo �034unmodelo relacional de datos para grandes bancos de datos
compartidos". Uno de los objetivos centrales de este articulo se expresé
asi: .
�034Losfuturos usuan'os de los grandes bancos de datos deben ser protegidos
de tener que saber cémo se organizan los datos en la méqina (Ia
nepresentacién intema)�035(RE|NOSA)(2012) . *
Lo que el Dr. -Codd deseaba era alejar a los usuarios del nivel fisico, A
elevar el nivel de abstraccién con el que debian interactuar los usuarios y
1 �030 I 9 W
que no dependieran de los detalles técnicos para usar los datos
almacenados.
De otro lado su amigo el reconocido Cristopher Date, especializado en la
tecnologia de bases de datos relacionales, hace un tributo después de la
muerte del Dr. Codd diciendo:
�034EIModelo Relacional es ampliamente reconocido como una de las
grandes innovaciones del siglo )O<�035(RElNOSA)(2012).
Y continua: �034Elmodelo relacional proporcioné un marca teérico en el que
una variedad de prob/emas importantes podrian ser atacados de una
manera cienti}401ca�035(RE|NOSA)(2012).
El modelo relacional se ha establecido actualmente como el principal
modelo de datos para las aplicaciones de procesamiento de datos. Ha
conseguido la posicién principal debido a su simplicidad, que facilita el
trabajo del programador en comparacion con otros modelos anteriores
como el de red y el jerérquico.
Se basa en que la representacién fisica deberé satisfacer y representar, de
A alguna forma, las relaciones y restricciones légicas del esquema relacional.
Presenta la Base de Datos como una coleccion de relaciones, cuyo
contenido varia en el tiempo.
Una base de datos relacional consiste en un conjunto de tablas, a cada
una de las cuales se le asigna un nombre exclusivo. Cada fila de la tabla
representa una relacién entre un conjunto de valores.
�031 Dado que cada tabla es un conjunto de dichas relaciones, hay una fuerte
correspondencia entre el concepto de tabla y el concepto matematico de
relacién, del que toma su nombre el modelo de datos relacional.
Una relacién puede ser vista como una tabla, con }401lasllamadas tuplas y
con cabecera de columnas llamadas atributos. V
�034Mateméticamente,una relacién deinida sobre los n domiios D1, D2, .-.,D,,
no necesariamente distintos, es un subconjunto del producto cartesiano de
estos dominios, donde cada elemento de la relacién (tupla) es una serie de
n valores ordenados�035(DE MIGUEL, Adoracion y PlATl'lNl, Mario, 1999).
Con respecto a la pane dinamica del modelo, se propone un conjunto de
operadores que se aplican a las relaciones (Algebra relacional y calculo
relacional).
Lo que realmente marca la diferencia entre los sistemas relacionales y los
sistemas anteriores es el hecho de que su creador, Codd, basé
expresamente su funcionamiento sobre un modelo matematico muy
V 10 �031 W
especifico: el élgebra relacional y el' célculo relacional, asi como la
progresiva adopcion, por parte de su creador y algunos colaboradores, de
un ntimero de Reglas de lntegridad Relacional y de Forrnas Nonnales.
A partir de 1980, ei modelo relacionai ha tenido un auge espectacular,
gracias al desarrollo tecnolégico, han ido apareciendo productos
comerciales que corren en las més diversas plataforrnas con rendimientos
aceptables: ORACLE, SQL, DB2, SYBASE.
1.- Propiedades Del Modelo Relacional
Entre las propiedades del Modelo Relacional tenemos:
o No existen tuplas repetidas.
o Corolario: Siempre existe una clave pn'maria
- Las tuplas no estén ordenadas de arriba hacia abajo.
0 Los atributos no esta'n ordenados de izquierda a derecha.
o Todosllos valores de los atributos son atémicos.
o Los atributos multivaluados se deben representar con
relaciones individuales.
V 2.- Aspectos del Modelo Relacional
El Modelo Relacional se Ie puede estudiar a través de 3 aspectos:
o Estructura
o lntegridad �030
o Manipulacién
Por su Estructura
Por su estmctura se define al Dominic como la base a partir de la cuéi se
constmyen ias relaciones, compuestas a su vez de una cabecera
(esquema) y un cuerpo (6 extension) de tuplas, asi como de una clave
primaria. _
Un esquema de relacién R, denotado por R(A1,A2,..A,,, se compone de un
V nombre de relacién R y una lista de atributos A.,A2,..A,._
Ejemploz ESTUDIANTE(Nombre, NSS, TelPérticular, Direccion.Edad,
Prom). 9
Los dominios son estéticos, las relaciones dinémicas (el contenido cambia -
en el tiempo)
Dada una serie de conjuntos D1,D2,...D,,, se dice que R es una relacién
entre estos n conjuntos si es un conjunto de n tuplas no ordenadas I
- * A 11
(d1,d2,..d,.) tales que d1 �254D1, dz �254D2,...d,. �254D... A los conjuntos D1,D2,...DN
se Ies denomina dominios de R y el valor n es el grado de la relacion R .
Conoeptos y equivalencias:
Relacion: tabla
Tupla: Fila de la Tabla
Cardinalidad: # de tuplas de una relacion
Grado: # de atributos de una relacién
Dominio: Coleccién de valores de un atnbuto
Atn'buto: Columna de la tabla �031
Ejemplo:
codAg actlvo ciudad
1 . 500,000 Lima . �030
2 300,000 Ica
Relaciénz AGENCIA Cardinalidad = 2 Grado = 3
Dominic de ciudad = Lima, lca, Arequipa, Tacna....
Atnbuto = codAg, activo, ciudad
Por su lntegridad
Se la puede ver como las propiedades que se encuentran en las
definiciones de:
- Reglas de Entidad: Unicidad, minimalidado Reglas de lntegridad de Entidades
o Reglas de lntegridad Referencial
Reglas De Entidad: Unicidad, Minimalidad
La Unicidad y la Minimalidad son 2 principios basicos asociados a la
integridad de entidad.
La unicidad: En cuaiquier momento no existen dos tuplas en R (relacion)
con el mismo valor de clave K. -
La minimalidad: Si la clave K es compuesta, no seré posible eliminar
ningdn componente de K sin destruir la propiedad de unicidad.
Debe haber Ia menor cantidad de Campos en la clave primaria.
0 Regla De lntegridad De Entidades
Ningun componente de la clave primaria (PK) de una relacién base puede.
aceptar nulos (NULL) que significa informacién faltante, desconocida.
_ 12
Regla De lntegridad Referencial _
La clave forénea (FK) es un atributo de una relacién R2, cuyos valores»
deben concordar con los de la clave primaria de alguna relacién R1, con la
cual existe un vinculo. -
Ejemplo:
Agencia Deposito
CodAg(P5) CodAg(FK) �030
O1 �031 05
02
O3 _ _
Con el térrnino �034valoresajenos sin concordancia�035queremos decir aqui un
valor no nulo de clave ajena para el cual no existe un valor concordante de
la clave primaria en la relacion objetivo pertinente.
Las Regla de lntegridad referencial garantizan que la base de datos no
incluya valores no vélidos de una clave forénea.
�030 R2(referencial) 9 R1(Relacién referida)
Relacién ReferenciaI.- es la relacién que contiene la clave forénea (FK).
Relacién Refen'da.- es la relacién que contiene la clave primaria (PK).
Las claves forénea y primaria deben de}401nirsesobre el mismo dominio.
Si B hace referencia a A entonces A debe existir.
Por su Manipulacién
Se le puede ver como las operaciones que se ejecutan: El Algebra
' Relacional y el Ca'|cu|o Relacional.
4.1.2 SQL
Los origenes deI SQL estan Iigados a los de las bases de datos
relacionales. En 1970 E. F. Codd propone el modelo reiacional. Sin
embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un
programa comercial. Hubo pues una demora entre la creacién del modelo
Relacional y su implementacién computacional de aproximadamente 10
a}401os,pues no habia un software que soportaré el Modelo. Oracle SQL fue
un gran éxito y dio lugar a toda una industria en tomo a SQL. Sybase,
lnformix, Microsoft y otras compa}401iasse presentaron con sus
implementaciones de un sistema de gestién �030debase de datos relacional
basado en SQL (RDBMS).
I 13 �030W
El SQL pasa a ser el lenguaje por excelencia de los diversos sistemas de
gestién de bases de datos relacionales surgidos en los a}401ossiguientes y
es por }401nestandanzado en 1986 por el ANSI, dando lugar a la primera
version esténdar de este lenguaje. AI a}401osiguiente este estandar es
también adoptado por la ISO.
Debido a que el objetivo principal de SQL es comunicar las acciones en el
servidor de base de datos, no tiene la flexlbilidad de un lenguaje de
propésito general. La mayoria de la funcionalidad de SQL son
preocupaciones entrada y salida de la base de datos: a}401adir,modificar,
eliminar y leer datos.
En la actualidad el SQL es el esténdar de facto de la inmensa mayorla de
los SGBD comerciales.
El lenguaje SQL cumple con las reglas del Modelo Relacional, establecidas
por el Dr. Codd, que son usados por el ORACLE y el SQL 2005, que
ademas tienen como antecedentes el Modelo Entidad Relacién de Peter
Chen.
El lenguaje SQL se puede considerar como una de las principales razones
del éxito comercial de las bases de datos relacionales. Como se convirtlé
en un estandar para estas ultimas, los usuarios perdieron el temor a mlgrar
sus aplicaciones de base de datos desde otros tipos de sistemas de bases
de datos a los sistemas relacionales.
El lenguaje SQL proporciona una interfaz de lenguaje declarativo del mas
alto nivel, por lo que el usuario solo especifica lo que debe ser el resultado,
dejando para el DBMS la optimizacion y las decislones de como ejecutar Ia
consulta.
El SQL tiene un rol muy importante en la comunicacién con la base de
' datos, que también funciona embebido en otros Ienguajes de uso general,
como los Ienguajes procedimentales: Cobol, C, C++ y los Ienguajes
orientados a objetos como: Java, PHP y Python.
SQL es un lenguaje de consultas estructurado que opera sobre bases de A
datos relacionales y la normalizacién.
�034Aunqueel lenguaje SQL se considere un lenguaje de consultas, contiene
muchas otras capacidades ademés de la consulta en bases de datos.
Incluye caracteristicas para de}401nirla estructura de los datos, para la
modi}401caciénde los datos en la base de datos y para la especi}401caciénde
restricciones de seguridad.�031�031(SILBERSCHATZ, Abraham y KORTH, Henry,
% 2002).
3 14 0}402/
�031 l
SQL utiliza los térrninos tabla, }401lay columna para los ténninos: relacién,
tupla y atributo del Modelo Relacional, respectivamente.
El principal comando de SQL para definir datos es la sentencia create, que
se utiliza para crear esquemas, tablas y dominios, asi como otras
_ estructuras, como vistas, aserciones y triggers.
. SQL es un lenguaje de bases de datos global: cuenta con sentencias para
definir datos, consulta y actualizaciones. Se comporta como DDL (data
definition language) y como DML (data manipulation language) y dispone
de caracteristicas para especificar temas de seguridad y autorizacion, -
definir restricciones de lntegridad y especificar controles de transacciones
como el DCL (data control Language).
4.1.2.1 LENGUAJE DE DEFINICION DE DATOS (DDL)
En el caso especifico del DDL, el lenguaje del SGBD debe ser capaz de
definir la estructura logica de la Base de Datos, sin entrar en detalles de
implementacion ni mecanismos en que se accede a los datos de la Base
de Datos.
La fonna idonea de realizar lo anterior es mediante un lenguaje declarativo,
el cual permite declarar la estructura del modelo de acuerdo al modelo de
datos que utiliza el SGBD;
4.1.2.2 LENGUAJE DE MANIPULACION DE DATOS (DML)
Este lenguaje pennite la utilizacion de los datos almacenados en la base
de datos, y es usado generalmente por usuarios finales o por aplicaciones
cliente utilizadas por ellos.
La forma mas comun de utilizacién del DML es mediante el uso de
Ienguajes de programacion convencionales que poseen al DML del SGBD
como lenguaje embedido; Asi, se puede programar Ia aplicacién cliente en
el lenguaje que se elija, pudiendo realizar llamadas a sentencias del DML A '
cuando sea necesario.
En el caso de los SGBDR y el lenguaje SQL, se tienen las siguientes
sentencias de manipulacion de datos: *
lnsercion de Datos (INSERT); * �030 V
Eliminacién de Datos (DELETE);
Modificaclon de Datos (UPDATE); I
A _ . . 15 �030WW
Consulta de Datos (SELECT). -
El lenguaje del SGBD debe incluir formas de especificar qué se desea
hacer con los datos (insertar, recuperar, modi}401caro borrar datos), sin
entrar en detalles acerca de como se realizan estas operaciones.
4.1.2.3 LENGUAJE DE CONTROL DE DATOS (DCL) -
Son sentencias que permiten oontrolar el desarrollo de una transaccién con
el SGBD, de manera que el usuario pueda, a medida que se va realizando
I la transaccion, confirmarla o retractarse de ella.
En el caso de los SGBDR y el lenguaje SQL, se tienen las siguientes
sentencias de control de transacciones:
Confirmacién de transaccién (COMMIT);
Retractacién de Transaccién (ROLLBACK);
. Almacenamiento de puntos intermedios de transacciones (SAVEPOINT).
4.1.3 SQL 2005
Tenemos diferentes versiones de SQL Server 2005, cada una orientada a
cubrir unas determinadas necesidades de diferentes tipos de empresas o
clientes, SQL server es uno de las Bases de datos Relacionales ma�031s .
_ usadas actualmente por su menor oosto y la facilidad para su aprendizaje.
4.1.3.1 ESTRUCTURACION DE LA BASE DE DATOS A
Estructura Fisica V . I
En empresas cuyo volumen de datos es altisimo y el trabajo que se realiza
sobre la base de datos soporta una actividad elevada, se almacenan los
archivos en grupos de discos denominados RAID por hardware. Este
método mejora considerablemente ei rendimiento, y nos asegura que en
_ caso de fallos inesperados no perdamos informacion.
SQL 2005 tiene dos archivos donde almacenar la base de datos: '
- Archivo de datos. A
.�030Archivo de registro de transacciones. _ V
Archivo de datos.- o aquellos que a}401adimoscomo extras, son los archivos
' que tendrén almacenada Ia infonnacién, los datos. SQL Server 2005 nos
pennite-también crear en nuestras bases de datos, no solo informacién,
V . 16 W?/
sino también una serie de objetos que trabajan con la informacién. Pues
bien, esta serie de objetos también se almacena en el archivo de datos.
Archivo de registro de transacciones.�024Este fichero es tan importante oomo
el anterior. Su importante tarea es garantizar que esa base de datos
pennanezca integra. Gracias a estos archivos de registros (puede haber
mas de uno), en caso de ser necesario, podremos recuperar la base de
datos, ya que almacena las modificaciones que se producen debido a la
actividad o la-explotacion de la base de datos.
4.1.3.2 TAMANO DE LA BASE DE DATOS
En SQL Server 2005. Los archivos de datos y de registro, crecen
automaticamente. No crecen con cada dato que se a}401ade.Nosotros como
administradores, le daremos un tama}401oinicial sencillo de estimar'(una
cantidad muy peque}401a,unos Megabytes), en ese momento SQL Server
2005 crea la estructura correcta para la base de datos, y una vez que
nuestra base de datos esta en explotacién cuando alcanza e| tama}401o
limite, Io incrementa una cantidad dada por un factor predeterrninado.
4.1.3.3 LENGUAJE DE DEFINICION DE DATOS (DDL)
SQL server se puede utilizar para realizar procesamiento de transacciones,
almacenar y analizar datos, y generar nuevas aplicaciones de Bases de
Datos. .
Tiene como principales funciones: crear tablas, implementar constraints
para controlar la integn'dad de datos.
Tipo de integridad tipo de constraint
Controlar rango de valores sobre las columnas DEFAULT
CHECK
Unicidad de registros y valores unicos PRIMARY KEY
�031 UNIQUE �030Referencial FOREIGN KEY
CHECK
Figura 4.1 Tipos de constraints. Fuente: Autor
A 17 W0
4.1.3.4 LENGUAJE DE MANIPULACION DE DATOS (DML)
. El lenguaje DML permite la insercion, actualizacion, borrado y seleccién de
datos y es una de las funciones mas importantes en la gestién de una base
de datos, sobretodo la sentencia select, ya que permite a los Gerentes
realizar consultas répidas acerca de sus negocios.
4.1.3.5 LENGUAJE DE CONTROL DE DATOS (DCL)
Las declaraciones del DCL se usan para cambiar los permisos o roles
asociados con un usuario de la base de datos. Y son: GRANT, DENY y
REVOKE
4.1.4 ORACLE y
La tiltima version de Oracle es la version 11g, liberada en el mes de julio
de 2009, es un RDBMS portable ya que se puede instalar en los sistemas
operativos mas comunes en el mercado, el oosto de la Iicencia oscila entre _
los 180 y 400 délares dependiendo del tipo de Iicencia de usuario, soporta
hasta 4 peta bytes de informaclén. Cuenta con administracion de usuarios
asi como la administracién de roles,�030ademés soporta trigers y store
procedure, cuenta con conectividad JDBC y ODBC, siempre y cuando se
tengan los drivers adecuados para la misma. Es un DBMS seguro ya que V
_ �030 cuenta con un proceso de sistema de respaldo y recuperacion de
informacion. Soporta Data Warehouse por lo que facilita el acceso a la
informacion y da mayor versatilidad. La mayor parte de las empresas de
telecomunicaciones en Latinoamérica utilizan Oracle, por lo que se puede
decir que es un DBMS confiable, seguro para ser utilizado en una empresa
y sobre todo permite reducir costos por su acoesibilldad en el mercado.
Se considera a Oracle como uno de los sistemas de bases de datos mas
completos, destacando su: . '
- Soporte de transacciones. �031
-' Estabilidad. A
- Escalabilidad.
- Soporte multiplataforrna.
. La base de datos Oracle en Vl}401ndowsha evolucionado desde un nivel
bésico de integracion del sistema operativo hasta utilizar servicios mas
avanzados en la plataforrna Windows. H -
_ . . 18 �030W
4.1.4.1 CARACTERISTICAS DE ORACLE
El 3 de septiembre de 2007, Oracle anuncié el nuevo sistema de
_ administracién de base de datos, Oracle Database 11g, en el mercado de
Japén. De acuerdo con la vision de brindar calidad incomparable, facilidad
de uso al usuario y eficacia en la administracion de datos, Oracle Database
11g fue desarrollada con la méxima capacidad de recursos de ingenien�031a
para un solo producto. Oracle Database 11g es el resultado de un proceso
de desarrollo que incorpora las opiniones de grupos de usuarios y partners
para brindar un mejor desempe}401o,seguridad y administracién
' automatizada. Como base de datos de préxima generacién, el producto
presenta las siguientes caracteristicas:
~ SecureFiles
Real Application Testing
Advanced Compression ' '
Total Recall
SecureFiles.-
Permite que la gran cantidad de informacion de objetos no estructurados,
como las imégenes de rayos X para atencién médica y los gré}401cosde
ingenieria que en el pasado eran ejecutados en el sistema de archivos,
sean directamente almacenados y administrados dentro de la base de
datos para resolver los cuellos de botella que se presentan durante el
desempe}401o.Soporta las funciones transparentes de comprensién,
seguridad y administracion de base de datos. Al contar con toda la
informacién empresarial, incluso los procedimientos y funciones, en una
' sola base de datos definida. _
Real Application Testing.-
Es probablemente la opcién mas innovadora de la Liltima edicién
empresarial de Oracle Database 11g. La funcién puede capturar cargas de
trabajo de base de datos en tiempo real y repetirlas en un entomo-de
prueba. Esto ayuda a los usuarios a probar y personalizar sus sistemas
para alcanzar un éptimo desempe}401o.
Esta funcion también es um cuando el usuario reemplaza el hardware 0 el
Sistema Operativo y desea probar el impacto en el sistema.
_ 19 (W
Total Recall.- �031
Permite a los usuarios rastrear y mantener los cambios de datos de
manera facil y economica, a través del archivo continuo de datos. En el
ambiente mundial, donde el cumplimiento ha pasado a primera plana, la
capacidad de recuperar datos ra'pidamente cuando se .lo solicita se
considera muy valiosa. En el pasado, era extremadamente costoso,
aunque necesario, almacenar cantidades masivas de datos en sistemas de
almacenamiento.
Advanced Compression.-
Es una tecnologia versétil que comprime efectivamente tablas masivas y
datos no estructurados. Reduce las capacidades de almacenamiento y
obtiene una gran cantidad de otros bene}401cioscomo cargas reducidas de
red y mejor eficacia de backup. La funcién permite a los usuarios ahorrar
costos en sistemas, capacidad y espacio. I
4.1.4.2 OTRAS CARACTERISTICAS DE ORACLE
1.- Tablespace
Detras de las construcciones Iogicas asociadas con una base de datos
Oracle, existen construcciones fisicas que la base de datos Oracle utiliza
9 para almacenar los datos. . .
Sin embargo, los tablespaces no solo constituyen contenedores de objetos,
tambien son un metodo de organizacién. Los tablespaces estan dise}401ados
para organizar los datos permitiendo al DBA agrupar tipos de datos
similares en un area. Por ejemplo, un DBA puede utilizar un tablespace
para almacenar datos y otro para almacenar indices.
2.- Sentencias SQL
A continuacién presentamos un resumen de las sentencias SQL de
ORACLE. '
. 20 ,
r7�031
T .Rvczz1ret~a*eviéi11 �030Datos?Z'N5L§E7P<�030T"'-3fl.:a.~:;erra1~
L l�030..iT?DA'IE�030-.3�0311~�030t<::ua1..zxr?3':TL'E'I�030E'-3 B:cm;t
L�031£§3.i3L£9 amin-. __ _ _ i A .�030{§}Ii.£§4Im§1auir22;+iii§n}401neBates}A ii-"EE{«1'.1�030£�030-9(�030rear
�030-913xE.*«*!.tTrc.z1*3.§.i3�031P-.§iBs:-am
_- l3tiET3«�035A..1-IE 1-.9 Refliltliiliiil�03017I�031{[l'l_%'C:A'IE�030-.)lElimi1m-(aw:
< _ "DDL (lD=:il'a'!Me§:i1aiii¢ovz1 9.1o�031nl�030itU
' i3l}M_l_\}402Jl�030'9 A'¢tu;al'im- ezxxzbm' Rl3LLB:i3.C'K '9 Deslzauetrszunlias�030 2i,s..{�030a'*..�034.£¥i:3�030iI:~§�030.'?�030-3mam 2le1z:st:ii'pat=.m::i'éq:
L "C3-sh~'?f�030~-2:5}401fehemisate}401omfs. �030-9Gtegu-pveaiiisosl 'R."E�030z"t)31E'-I>TR'ev:>ca1'p;ex:t1'.sos _ �031 V
BUL.(.B'.-mi Cantmi Laniguagt)
Figura 4.2 Sentencias SQL. Fuente: Autor
4.1.4.3 ARQUITECTURA DE ORACLE EN WINDOWS
Cuando se ejecuta en Vl}401ndows,Oracle Database 11g presenta las
mismas caracteristicas y la misma funcionalidad que las distintas
plataforrnas Linux y UNIX soportadas por Oracle.
No obstante, la interface entre la base de datos y el sistema operativo ha
sido sustancialmente modificada para aprovechar los servicios exclusivos
brindados por Windows. Como resultado, Oracle Database 11g en
Windows no es un puerto directo de la base de cédigo UNIX.
Oracle brinda buen desempe}401opara las platafomias Vl}401ndowsde 32 y 64
bits.
Oracle se ha adaptado a los cambios ma's recientes en los conocimientos
informaticos de Windows desde las primeras soluciones cliente/servidor
hasta las aplicaciones de lnternet, y ahora la tecnologia grid.
Oracle Database 11g para Vl}401ndowsbrinda todas las caracteristicas
necesarias para la administracion de datos, ya sea que se utilice para la
implementacién en toda la empresa 0 en un solo departamento. Permite a
los usuarios aprovechar las ventajas de facilidad de uso y costo que ofrece
Windows, mientras brinda la escalabilidad, con}401abilidady el desempe}401o.
Uno de los mayores beneficios de utilizar Oracle es el soporte de multiples
21 M
esténdares de programacion. Al soportar aplicaciones Java, .NET, PHP y
C/C++, Oracle garantiza que todos los desarrolladores puedan utilizar las
caracteristicas avanzadas de la base de datos Oracle.
4.1.4.4 LENGUAJE DE DEFINICION DE DATOS (DDL)
Las sentencias DDL en ORACLE son:
CREATE TABLE Crea una tabla. Para ello el usuario debe de tener
el privilegio CREATE TABLE. _.
ALTER TABLE Permite modi}401carla estructura definida para una
tabla. V
DROP TABLE Elimina una tabla (datos y estructura) y sus indices.
No se puede hacer Rollback de esta sentencia.
RENAME �030*6Cambia el nombre de una tabla, vista, secuencia o
sinénimo.
4.1.4.5 LENGUAJE DE MANIPULACION DE DATOS (DML)
Las declaraciones de lenguaje de manipulacion de datos (DML) se utilizan
para la gestion de datos dentro de los objetos de esquema, las usadas en
Oracle son:
INSERT =«�024-9A}401aderegistros a una tabla.
UPDATE -==-=1» Modiflca registros existentes de una tabla.
DELETE Elimina registros existentes de una tabla.
4.1.4.6 LENGUAJE DE CONTROL DE DATOS (DCL)
El Data Control Language, pennite configurar controles de seguridad sobre
objetos de la base de datos. Bésicamente a este grupo de sentencias
pertenecen los comandos GRANT y REVOKE, los que respectivamente
otorgan y quitan privilegios de operaciones DDL o DML sobre ciertos
objetos de la base de datos de algun esquema en particular. Este tipo de
comandos no requieren confirmacién del usuario (COMMIT).
22 M
4.2 TRABAJOS DE INVESTIGACICN TEORICOS ANTERIORES
Las organizaciones a menudo emplean un sin namero de plataforrnas
de base de datos en su arquitectura de sistemas de informacion. Utilizan
de tres a cuatro diferentes paquetes de Base de Datos.
Sin embargo cuando se trata de aprender una plataforma nueva base de
datos, a menudo es mejor mirar a lo que ya sabemos y luego tratar de
encontrar el equivalente en el nuevo entomo. Ejemplo: si un desarrollador
de SQL Server desea escribir procedimientos almacenados de Oracle
puede empezar mirando las funciones integradas y en que di}401eren. �031
Mostraremos algunas de las similitudes y diferencias entre las dos
plataformas de base de datos mas utilizadas hoy en dia.
4.2.1 EDICIONES '
En la actualidad SQL Server 2012 es la version actual del producto
de base de datos de Microsoft. La version anterior fue SQL Server 2008
R2, que tuvo como su antecedente SQL Server 2005, la cual tuvo una
importante actualizacion de su predecesor, SQL Server 2000.
La version mas utilizada sigue siendo SQL Server 2008 R2, tanto en
Empresas como en Universidades.
Oracle por otro lado se encuentra en la version 11g R2. La version mas
prominente de 10g R2 ha estado presente en el mercado por algun tiempo.
En cuanto a ediciones de SQL Server 2008 R2 ofrece las siguientes:
- Enterprise Edition: La edicién Enterprise es recomendable para base
de datos de alto volumen. A -
- Standard Edition: Es ideal para las empresas que no requieren de las
funciones avanzadas de la Enterprise Edition. Lo usan la mayoria de las
empresas.
- Workgroup Edition: Es la indicada para peque}401asaplicaciones .
departamentales.
- Web Edition: Esta destinada a ser utilizada por los proveedores de
alojamiento como solucién back-end de bajo coste para aplicaciones web.
23 ~
W
- Express Edition: Puede ser utilizados para el almacenamiento local de
datos y sistema de desarrollo de peque}401asescala. La edicién Express se
puede descargar gratis.
- Compact Edition: La edicién Compact permite a los usuarios
desarrollar aplicaciones para computadoras de escritorio de Vl}401ndowsy
dispositivos de mano.
- Developer Edition: Tiene Iicencia de uso por un usuario a la vez y se
utiliza para fines de desarrollo y pruebas.
' Para Oracle 11g R2, las Ediciones son:
- Enterprise Edition: AI igual que en el SQL Server Enterprise Edition,
todas las caracteristicas y las capacidadesdel producto estén permitido en
esta edicién. A
. - Standard Edition: Al igual que el esténdar SQL Server Edition, la
edicién esténdar de Oracle tiene habilitadas las principales caracteristicas
del producto.
- Standard Edition One: Esta edicién esta dise}401adapara peque}401os
grupos de trabajo y la Iicencia para un méximo de 5 usuarios.
- Express Edition: Trabaja en peque}401aescala, también tiene Iicencia
para redistribuirio libremente.
4.2.2 SISTEMAS OPERATIVOS
Microsoft SQL Server ha tenido como plataforma los servidores de ~
Windows. En la actualidad, SQL Server hasta la version 8 se ejecutan en
XP, Vista, Vvundows Server 2000, 2003 y 2008.
A partir de la version 12 se ejecutan solo en los sistemas operativos:
_ Vwndows 7, Vl}401ndows8. '
La plataforma de base de datos esta disponible para los de 32 bits y 64 bits
de Windows.
Para el caso de Oracle, tiene soporte multiplataforrna que incluye no sélo
\_Mndows (32 bits y 64 bits), también Linux y diferentes variantes de Unix
(Solaris, HP-UX, AIX, etc).
' 24 W
4.2.3 ARQUITECTURA
4.2.3.1 INSTANCIAS Y BASES DE DATOS
Una instancia en términos de SQL Server, significa un servicio de
aplicacion autocontenida que implica archivos del sistema operativo, las
estructuras de memoria, los procesos de segundo plano y la informacion
de registro. Una instancia esta representada por un servicio en Windows y
puede estar en ejecucion o estado detenido. Cuando se ejecuta, una
instancia ocupa una porcion de la memoria del servidor.
Una base de datos de SQL Server es el repositorio de datos y el cédigo del
programa para la manipulacion de esos datos. Si una instancia no se esta�031
ejecutando, no se puede acceder a las bases de datos dentro de ella.
Hay dos tipos de bases de datos de SQL Server: bases de datos de
sistema y de bases de datos de usuario. Cuando una instancia de SQL
Server se instala por primera vez, cinoo bases de datos del sistema se
crean: model, tempdb, master, msdb y resource. Una instancia no se
puede iniciar si cualquiera de sus bases de datos del sistema, excepto
msdb esta inaccesible. Las bases de datos del usuario son creadas por
desarrolladores y administradores de bases después que la instancia se ha
instalado y el sistema de bases de datos ha iniciado. Estas son las bases
de datos que almacenan la informacion de las organizaciones.
En el nivel fisico, una base de datos de SQL Server esta representada por
un conjunto de archivos del sistema operativo que residen en el sistema de
disco del servidor. Hay dos tipos de archivos de base de datos: el archivo
de datos (data file) y el archivo de registro de transacciones (transaction
log file).
Un archivo de datos es el repositorio central de informacion en una base
de datos SQL, mientras que un archivo de registro de transacciones
registra los cambios que se han aplicado a los datos. Este archivo es
requerido por SQL Server para la recuperacion del sistema.
Con Oracle, las cosas funcionan en la direccién inversa. Cuando Oracle se
inicia, funciona igual que SQL en que una porcion de la memoria del
servidor se asigna para su funcionamiento. Esta area de memoria,
conocido como el Area Global de Sistema (SGA), se divide en una serie
de estructuras diferentes. Junto con el espacio de memoria, una serie de
procesos de fondo que también se inician para interactuar con el SGA. En
25 W
conjunto, el espacio de memoria y los procesos constituyen una instancia
de Oracle. Sin embargo la base de datos Oracle todavia no esta presente.
De hecho, una instancia de Oracle podria estar funcionando peifectamente
bien sin su base de datos en linea o incluso ser accesible.
Una base de datos en Oracle es una coleccion de archivos de sistema
operativo. A diferencia de SQL Server, una base de datos Oracle no
representan a la agrupacion légica de los objetos, sino que es un unico
término genérico para una serie de archivos en el disco que principalmente
tienen datos.
Los archivos que componen una base de datos de Oracle se pueden
clasificar en tres tipos:
Archivo de datos (data }401le),archivo de rehacer (redo log }401le)y
ei archivo de control (control }401le).
Los archivos de datos es donde residen todos los datos. Puede haber
cualquier numero de archivos de datos en una base de datos de Oracle.
Archivos Rehacer son como los archivos de registro de transacciones de
SQL Server que registra que cada cambio realizado a los datos y se utiliza
para la recuperacion del sistema. Los archivos'de control son un tipo
especial de archivo que contiene peque}401aspiezas de informacién vital
acerca de la base de datos. Sin este archivo, la instancia no seré capaz de
abrir la base de datos.
Aparte de los archivos de datos, archivos rehacer y los archivos de control,
la base de datos contendré también un archivo de parémetros, y
un archivo de contrase}401as,opcionalmente, archivos de registro de
archivado (archive log file). Vamos a discutir acerca de cada tipo de
archivos de base de datos Oracle en breve.
Cuando se inicia un sistema de Oracle, primero la instancia se crea en la
memoria. La instancia a continuacién, se conecta a la base de datos que
residen en el disco y, finalmente, se abre la base de datos para la
interaccién del usuario. Cuando el sistema se apaga, Ia instancia se
' borraré de la memoria: todas las estructuras de memoria y los procesos se
terrninan, pero la base de datos todavia existe en el disco, aunque en un
estado cerrado. Como se dijo anteriormente, es posible tener Ia instancia
de Oracle que se ejecuta sin necesidad de abrir la base de datos �024es una
gran diferencia de SQL Server donde una instancia no puede comenzar sin
primero tener sus bases de datos de sistemas en linea. Sin embargo,
�030 26 W
como SQL Server, es imposible conectarse a una base de datos de Oracle,
si la instancia no ha comenzado.
En general, la relacién entre una instancia de Oracle y su base de datos es
uno a uno. Las instalaciones de Oracle configuradas como RAC (Real
Application Cluster) tendrén varias instancias que se ejecutan en
diferentes méquinas que acceden a la misma base de datos en un disco
compartido. .
Entonces, g,dénde esta la agrupacién légica de los objetos de base de
datos Oracle? En SQL Server, esta agrupacién légica es realizada por la
propia base de datos. Para Oracle, se realize a �030travésde algo
llamado espacios de tablas (tablespaces). Un espacio de tablas de
Oracle es una estructura légica que agrupa a las tablas, vistas, indices y
otros objetos de la base de datos. Por ejemplo, la base de datos Oracle de
produccion puede tener uno de tablas dedicado a la aplicacion de recursos
humanos y otro de tablas para la nomina. Cada espacio de tablas esta
fisicamente representado por uno o mas archivos de datos en el disco y
forma parte de la base de datos.
4.2.3.2 BASES DE DATOS Y ESPACIO DE TABLAS
El proceso de creacién de una base de datos en SQL Server es muy
O similar a la creacion de un espacio de tablas en Oracle, ya que son muy
similares en sus funciones. Cuando se crea una base de datos o de un
espacio de tablas, el DBA (Administrador de Base de Datos) debe
especificar un nombre. El DBA asigna uno o mas archivos de datos a la
' base de datos o tablas de espacios y especifica el tama}401oinicial y los
incrementos de crecimiento de cada archivo.
Al igual que una base de datos de usuario de SQL Server se puede poner
fuera de linea 0 de solo Iectura, también se puede en un espacio deitablas
de usuario de Oracle. Y al igual que en SQL Server los archivos pueden
ser de solo lectura.
Sin embargo, las bases de datos y devtablas difleren entre si en los
siguientes puntos:
- En SQL Server, los archivos de datos pueden ser, légicamente,
agrupados en grupos de archivos. Los espacios de tablas de Oracle no
tienen este concepto. �031
A _ 27W7)
- En las bases de datos SQL Sewer, cada base de datos tendré su propio
registro de transacciones y las propiedades del archivo de registro debera
ser especificado durante la creacién de bases de datos. Para Oracle, las
transacciones de la base de datos es completa. Por consiguiente, no existe
ninguna disposicién para crear archivos de registro lndividuales para
espacios de tablas.
4.2.3.3 LOS NOMBRES DE INSTANCIA
SQL Server y Oracle permiten ejecutar simultaneamente varias instancias
del software servidor en el mismo equipo. Estos maltiples contextos de
' ejecucién son totalmente independientes unos de otros.
En SQL Server, este mecanismo se activa a través del concepto de
�030 instancias. SQL Server puede funcionar tanto como una instancia
nombrada o como una instancia predeterminada. La instancia
predeterminada tiene el mismo nombre que el servidor de Vl}401ndowsque lo
hospeda. Es posible ejecutar varias instancias nombradas en esa misma
méquina. Cada instancia tendré su propio conjunto de archivos binan'os
con algunos componentes comunes y compartidos entre todos. �031
Para Oracle, funciona de la misma manera. Cuando se instala Oracle, el
DBA debe especificar un nombre global de base de datos (Global
Database Name) y un identi}401cadordel sistema (SID). La instancia y
bases de datos son entidades completamente separadas en Oracle. Un
SID por otra parte identifica la instancia asociada con la base de datos. En
la mayoria de los casos una sola instancia se asocia a una (mica base de
datos, el SID y el nombre de base de datos seré el mismo. Los entomos de
Oracle Real Application Cluster (RAC) son una excepcién: RAC permite
que multiples instancias accedan a la misma base de datos alojada en un
almacenamiento compartido; los nombres de instancia son diferentes del
nombre de base de datos en estos casos. Sin embargo, al igual que un
equipo de SQL Server, un servidor de base de datos Oracle no puede
tener dos instancias en ejecucién con el mismo SID.
Un DBA de SQL Server puede ejecutar la siguiente consulta para saber el
nombre de la instancia a la que esta�031actualmente conectado a:
1 SELECT @@SERVERNAME
28
Un DBA Oracle ejecutar consultas como la siguiente para obtener la
instancia y el nombre de base de datos:
"1"? SELECT ' lNSTANCE_NAME, HOST_NAME, VERSION,DATABASE_STATUS FROM V$|NSTANCE;
2 SELECT NAME, DATABASE_ROLE, CREATED FROM V$DATABASE;
Una instancia de SQL Server dispondra de cinco bases de datos de
sistema (cuatro para las versiones anteriores de 2005) presente: master,
model, msdb, tempdb y resource. Una base de datos Oracle necesita un
minlmo de tres espacios de tablas de sistema para su
funcionamiento: SYSTEM, SYSAUX y TEMP.
Las base de datos master y resource son los repositorios centrales de toda
la informacion de SQL Server para gestionar las necesidades de si mismo.
Para Oracle, el espacio de tablas del sistema es el equivalente de la base
de datos master.'E| espacio de tablas SYSTEM contiene el diccionario de
datos, que son los metadatos de Oracle sobre si misma. El diccionario de
datos se puede comparar con la base de datos de recursos de SQL. .
Para una instancia de SQL Server, la base de datos model es la �034plantilla�035
que se utiliza para crear cada nueva base de datos en esa instancia. Para
Oracle, no existe tal modelo, pero cuando se crea un espacio de tablas,
puede especificar si seré un espacio de tablas permanente 0 de cualquier
otro tipo como un espacio de tablas TEMP 0 UNDO.
29
V.- MATERIALES Y METODOS
Universo
El Universo de esta investigacién son las bases de datos en general, y
usaremos una muestra de 2 bases de datos creadas para realizar el
estudio comparativo, una Ia Base de Datos �034Compa}401ia�035(Proyectos
realizados en una Compa}401ia)para probar las sentencias de SQL 2005 y
una Base de Datos �034HR�035(Historia Iaboral de Empleados) para comprobar
las sentencias en ORACLE. El tipo de muestra es no probabilistica.
. Las versiones de software que se utilizarén serén en el Caso de SQL, el
SQL 2012, por lo que me referiré a este como SQL server y en el caso de
ORACLE he utilizado la versién ORACLE 11g. Ya que son las ultimas
versiones de ambos en la fecha de ejecucién del proyecto, que es el 2013.
Técnicas de Recopilacién de datos
Las técnicas de recopilacién de datos utilizada es la Observacién del
comportamiento en la pra'ctica de cada una de las Bases de Datos creadas
en SQL 2005 y ORACLE respectivamente.
En cada una de las Bases de Datos creadas, se probara de manera
practica, las caracteristicas del DDL, DML y DCL para observar el
comportamiento de cada una de las sentencias.
Adicionalmente, también se realizarén cuadros de contrastacién de
resultados. -
En cuanto at método utilizado es el Método inductivo, ya que hemos hecho
una transicién de lo particular a lo general, se ha usado Ia generalizacién
inductiva, porque Ia investigacién se basa en hechos reales para lograr la
evidencia.
Técnicas Estadisticas
En cuanto a las técnicas estadisticas usadas tenemos que esta
investigacién es de tipo cualitativo, es decir que tiene las caracteristicas
de una investigacién de esta naturaleza, como son: Estudio de casos,
Generalizar conclusiones de casos, empleo del método inductivo a
diferencia de las investigaciones cuantitativas que utilizan el método
deductivo, estudian poblaciones o muestras�030y que emplean métodos
estadisticos para analizar los datos y generar datos numéricos.
30
W
Por Io tanto esta investigacién no utiliza técnicas estadisticas por ser una
investigacién cualitativa.
31 (W
V|.- RESULTADOS
6.1 BASES DE DATOS COMPARADAS
6.1.1 SQL SERVER
En SQL se utilizé para la comparacién, motivo de la presente investigacién,
!a Base de Datos Compa}401ia,conformada por las siguientes tablas y datos.
EMPLEADO
Nombrep i Apellido Fechan NSS
n SUPERiC
�034THE3 Iil}401WWHEll
@@l}402}401EWEIE
WI}EIIIWWTI
DEPARTAMENTO
T 333535555 3355-73
LUGARES_DEPTOS
T
PROYECTO
T
. j11
�024TRABAJA_EN
A W
T�031
3T
*T T
�030 33
DEPENDIENTE
333445555 555475333445555 II 55-45-73987654321 Abdiel �03429-02-32
453455755RT 54-5455453455455 3444545123456789 Elizabeth 05-05-57 .
Figura 6.1 Tablas y datos definidos en la Base de Datos Compa}401ia _
Fuente: Autor
6.1.2 ORACLE
En ORACLE se utilizé para la comparacién estudiada, Ia Base de Datos 1
HR, cuyo esquema fisico es el siguiente.
�031 5�035�0303 ,4 _ __ __ �030E:_vj¢i:!9x'55.g0:w:2n::9<é�0349§yes0ww:L�030 g4�030 4r59__:5nrmE;xas:e4ms»a:2.mra,aur:.7rnz:u1-.15�030="�034�034�030�024=�034'5�03154""45~:'4�0303m�031N"5>TT-44515_j.. E5 '5N§55tA554'r-:Nw\#BE�030m�030a2t~&)mL4 9ur1m&.;m�030r5rrz@7rrm00�035'�034."�030'.3 �030M?%<;_%NL}401-14�031%=IN!wWETE53E»3Nt5uL] 5@§n9:\z m@?wayaL : 11 gE '" 4 5�031 �030fI2«'EfF*5~'}401�030i?hha1~TLH0:IriIw�030r»¢Es~�031I:<s7:frwwL2L[1 f
4?. a 4 3 i5 §% i 5
4 3 J 33.9995.....v.m.:..4~m93..<=1aw& A 4
@mxg;;mmm©32%g0wrmm ~ .mm_7r4: ' ~r rat}401mléznuwmamv mzacmam V_-�024- .- �024�024,_�024-7;
�030 t:4:a7.-E._!0s2«�030m:I07zx7Errt101rn%1xLaL . 3.» 7»
4 =«===-�024�024==-- a; 4 s 3 is�030 rm&'r%15I\�035L='TEE9=l}401h;TrIJuII>1E'¢-:R'(E:r;|r!iwI.5L 1 n _______ , 4. " 5 �031*�034"*�031�035�024_--�035'_�030Q ;L©%N}401m~u£0:wwwrE:E}401'(§)m97w50; ;
'%3?5%x4:9*;5asa¢:«52§wwLL �031�030 53 Hi -~�024*~3 4
7 59: 4= I:=.-.-;4£9�035_m�030_3-=9~�024_=Wm 4 7i ===-=4 5
Figura 6.2 Esquema de la Base de Datos HR. Fuente: ORACLE
. 34
Resultadoz
Se mostré los esquemas de la Base de Datos �034Compa}401ia�035para probar las
sentencias de SQL 2005 y la Base de Datos �034HR�035para comprobar las
sentencias en ORACLE, �034HR�035es una Base de Datos de prueba que
proporciona el ORACLE.
6.2 LENGUAJE DE DEFINICION DE DATOS (DDL)
6.2.1 CREACION DE ESQUEMAS Y TABLAS
SQL Server
A continuacién mostraremos el cédigo para crear Ia Base de Datos y las
tablas de la Base de Datos Compa}401iaen SQL 2005.
24"?�031>2. E. . . �024�024.__1_._ 1~ -114 um-'a-a ._w_-.;_u 1.4;-n .4» '1, v :1 _ _a " -. ;:.q,.;=~z
us _ :5 I'm *-N-<4 ~ In 4 -' -1 «.2: 0. 2�031:�030:2:H _. ..__-... E ___-____ _,_,}401_ II.-�030V"i_g_'§§_-_�031q-,§.-g~.'-::._e¢.,i,~ _ _ >_ __ A �034___. ___m___a_ V : �030I.-
_ A�030;;;�030m�030create database cotpa}401iaon primary; �030Ag:(na::e=co::pa_}401iadata, 1;" filename = �030F:\trabajos\8aseDatos\pr-SQL2e98\8DCompa}401ia\compa}401iadata.mdf�031}�030 =--Harv ' - M 1 :-,..;».=.g,_ , s1.ze=m~»8, �030 5
. maxs»ize=?2Q�030-�030.8, L I �0303-WM 'fi.1-_egrowth=2.�030aB) {
i log on l 4-_; ' (na:~.e=co:pa}401ia1og, 1 V
\ �034,fi1enane= 1 �030E= I �030F:\trabajos\BaseDatos\prSQL2e98\8DCompa}401ia\compa}401ia1og.ldf�030,I .
V 1 �030size=!5�0301'B, 3;* ' n.-.axsiz-e=.�030§©�030-�030.B, ',E 3 I fi1.e}401P0Hth=.'v1B) E
.»'| ;s
. . ..q-:vms.1.:,. '§�030-"&�0301�030..-3.3-2-9-:".�030.9.««5I.�030.';mm:-�031£�0301_a:=a'�024."a-�030ear. 7.�030-�030vs2»; �030;
�0306"OE.Fi�030[FE " ' ' "E E �034" ;;i;;'f
Figura 6.3 Sentencias para la creacién qe Ia Base de Datos Compa}401ia
Fuente: Autor
35
CREATE TABLE EMPLEADO (
nombrep varchar(1S) NOT NULL,inic char,apelli varchar(15) NOT NULL,nss Char (9) NOT NULL PRIMARY KEY,
fechan datetime,direccion varchar(30),sexo char,
salario decima1(10,2),nsssuper char(9),nd int NOT NULL
)CREATE TABLE DEPARTAMENTO (
nombred varchar(15)NOT NULL,numerod int NOT NULL PRIMARY KEY,nssgte char(9) NOT NULL, vfechainicgte datetime
)
CREATE TABLE LUGARES_DEPTOS (
numerod int NOT NULL,lugard varchar(15) NOT NULLPRIMARY KEY (numerod, 1ugard))
CREATE TABLE PROYECTO (
nombrepr varchar(20) NOT NULL,numerop int NOT NULL PRIMARY KEY,
lugarp varchar(15),numd int NOT NULL,
)
CREATE TABLE EMPLEADO_PROYECTO (nsse char(9) NOT NULL,nump int NOT NULL,horas decima1(3,1) NOT NULL
)ALTER TABLE EMPLEADO_PROYECTO
ADD PRIMARY KEY (nsse, nump)
CREATE TABLE DEPENDIENTE (
nsse char(9) NOT NULL,nombre_dependiente varchar(1S) NOT NULL,sexo char,fechan datetime,
parentesco varchar(8)PRIMARY KEY (nsse,nombre_dependiente)
)
Figura 6.4 Creacién de la estructura de la Base de Datos Compa}401ia
Fuente: Autor
_ 36
insert intoEMPLEADO(nombrep,inic,apellido,nss,fechan,direccion,sexo,salario,nsssuper,nd) values
('José','B','Si1va','123456789','09/01/1955','Fresnos731,Higueras,MX',�030M',3G000,'33344S555',5)insert intoEMPLEADO(nombrep,inic,apellido,nss,fechan,direccion,sexo,sa1ario,nsssuper,nd) values
('Federico','T','Vizcarra','333445S55','08/12/1945',�030Valle638,Higueras,MX','M',49660,'888665555',S)
insert intoEMPLEADO(nombrep,inic,ape11ido,nss,fechan,direccion,sexo,salario,nsssuper,nd) values('Alicia','3','Zapata','999887777','19/07/1958','Cati11o,3321,Sucre, MX','F',25090,'987654321',4) _
insert into
EMPLEADO(nombrep,inic,apellido,nss,fechan,direccion,sexo,sa1ario,nsssuper,nd) values
('3azmin',�030S�031,'Valdes',�0309876S4321','20/06/1931',�030Bravo291,Be1én,MX','F',43000,'88866555S',4)
insert intoEMPLEADO(nombrep,inic,ape11ido,nss,fechan,direccion,sexo,sa1ario,nsssuper,nd) values('Ramén','K','Nieto','666884444','15/09/1952','Espiga 875,
Heras,MX','M',38009,'333445555�031,5)
insert intoi EMPLEADO(nombrep,inic,apellido,nss,fechan,direccion,sexo,sa1ario,nss
super,nd) values »
('Josefa',�030A�031,'Esparza','453453453','31/07/1962','Rosas5631,Higueras,MX','F',250e0,'3334455SS',S)insert into
EMPLEADO(nombrep,inic,apellido,nss,fechan,direccion,sexo,sa1ario,nsssuper,nd) values(�030Ahmed','V','3abbar','987987987','29/03/1959','Da1ias980,Higueras,MX','M',25000,'987654321',4)insert into
EMPLEADO(nombrep,inic,apellido,nss,fechan,direccion,sexo,sa1ario,nsssuper,nd) values('3aime',�030E�031,�031Bote11o','88866S5SS','10/11/1927','Sorgo459,Higueras,MX','M',55060,'123456789',1)
insert into DEPARTAMENTO(nombred,numerod,nssgte,fechainicgte) values('Investigaci6n',5,�03133344S55S','22/05/1978')insert into DEPARTAMENTO(nombred,numerod,nssgte,fechainicgte) values('Administraci6n',4,'987654321','01/91/1985')insert into DEPARTAMENTO(nombred,numerod,nssgte,fechainicgte) values
('Direcci6n',1,'88866S555','19/06/1971')
insert into LUGARES_DEPTOS(numerod,lugard) values (1,�030Higueras')insert into LUGARES;DEPTOS(numerod,lugard) values (4,'Santiago') -
Figura 6.5,|nsercién de datos a la Base de Datos Compa}401ia
Fuente: Autor
37
_�030-*-.-':§thr-�031év¢v}401x-r'1i~0-,!�030~.+\-'~�031~}401b.
;"~ __.l.l .t'.~.~'.~m ;_, 3,11,-2, .s ; v ~ ._~ 1 >.~ 1 ' - 7.3:» in T=_ "2 E1?!-_ ____?�030~35.3?!�030' �034NH- mg a O - '1 C} O_ Z�030;111% ". ; _ __ _ H�030_ ____�030___�030_> ___ _"_%
- '�254{�030,-�030.'2<'a.$\.1»�031--�030!'~5a�030¢&§:V>.<'-'~- __mm____ . ' , __ V __ _ _ _,�254-a-.�030~ 5- 5
_;-1 i:.�030?-R-if9 �030. 5 2'3335»: -ALTER TABLE LUGARES_DEPTOS ,, E_4 _ ADD FOREIGN KEY (nu:1er~od)REFERENCES DEPARTAMENTO _; g«.3 .' » 9
-ALTER TABLE PROYECTO 2 ' iADD FOREIGN KEY (n_ur:d)REFERENCES DEPARTAMENTO _T
M T ALTER TABLE em.>L5Aoo_PaovecTo TL4 ADD FOREIGN KEY (nur::p)REFERENCES pnovecro
g V ALTER TABLE l:.�030-�030.PLEAD,0_PROYECTO- ADD FOREIGN KEY (nsse)REFERENCES EMPLEADO ;
�030 T ALTER TABLE DEPENDIENTE V ..F ADD sonexsu KEY (ns:s_e)REFERENCES EMPLEADO *
4 5 ".�030V.e«»13o':l\. 'e�031.h:�030.!.\2-5:.-';';3»<-}401rg«na!Ir:.9¢§e'\-eut- -.9!-I at-:5: �030Ye.�030
go}402a}402a" ww%!
Figura 6.6 Creacién de claves foraneas a la Base de Datos Compa}401ia
Fuente: Autor
ORACLE
Esquemas de Base de Datos
En Oracle, un esquema es una coleccién de objetos de la base de datos
pertenecientes a un usuario especifico. .
Por ejemplo, si creamos el usuario ventas, y queremos que exista el
esquema ventas debemos hacer lo siguiente:
1. Debemos asignarle una cuota al usuario ventas en algdn tablespace.
2. Debemos asignarle privilegios al usuario ventas para que pueda crear
sus objetos (tablas). _
' 3. Finalmente, el usuario ventas debe crear sus objetos.
Después de realizar los tres pasos anteriores podemos decir que tenemos
el esquema ventas.
Crear el esquema ventas con tres tablas:
1. Tabia de articulos: ARTICULO
2. Tabla de ventas: VENTA
3. Tabla de usuarios: USUARIO
38
connect / as sysdba
create user ventas
identified by ventas;
grant connect, resource to ventas;
Figura 6.7 Creacion del usuario y asignacion de cuota y privilegios
Fuente: Autor
connect ventas/ventas
create table articu1o(
art_id number(5) primary key,
art_nombre varchar2(50) not null,
art_precio number(8,2) not null
);
�030 create table usuario(
usu_id number(5) primary key,
usu_nombre varchar2(50) not null,
usu_usuario varchar2(15) not null,
usu_clave varchar2(15) not null
); .
i create table venta(
ven_id number(5) primary key,
ven_fecha date not null,
usu_id number(5) not null,
art_id number(5) not null, -
ven_cant number(5) not null,
ven_precio number(8,2) not null
);
alter table venta
add constraint fk_venta_articu1o
foreign key( art_id )
references articulo;
alter table venta
add constraint fk_venta_usuario
foreign key( usu_id )
references usuario;
Figura 6.8 Creacion de los objetos. Fuente: Autor
39 P6?
Resultadoz
Existen diferencias en cuanto a la creacion de Base de Datos, en SQL
2005 se asigna la ubicacién fisica de la Base de Datos y crea un archivo
con extension mdf y log. Y en Oracle se crea un Usuario y se Ie asigna en
algun tablespace y luego se asignan privilegios para crear tablas.
En cuanto a la creacion de tablas, claves primarias y foréneas no existen
diferencias entre ambos.
6.2.2 IMPLEMENTAR CONSTRAINTS
6.2.2.1 CHECK CONSTRAINTS
SQL Server
Ejemplo: Implementar un check constraint que verifique que los salarios de
los empleados sean mayores que 24000 pesetas.
,Prhlx£.w- �030�030*:',!~4.3.! J.N\-Ru.-J,�030t.11,"3,i'o�030J4:;,-'» in 11,», _9_- , V :.:;.-.31.» �030
L mgr.-.e_.v:~. wmm.-M -Q«ar.'H:r4�031D.:�030;-.:'s1=_1 I:..:...'nm;=:.v.�031_- 0 - - *..c.--.............«.......,......................t~ V ......M '; 3
5_*."�030;�034éw::_ Use compa_n_1_a,_I\-a!,'l�031I�031.."go �030y
:_ ; �030-alter�030table empleado K�0303I "add constraint ck_s_a1_249ee �031 r
',check(sa1;ar~�030i_o> QQEGE) �030 ;I at-�030wt-�030s_�030 �030 1
E ' t~
r "we, ' I1 ~'a}'e:!.'P.[ 3 t 1'�030. '~Z!WPE1�030¢�031-�030.�031.�0344>E�030W¥�030.'<'v.<:.o.w=a�030.~\v,-. - �030�030i
�030 �030..'-"P-$2,�030'~___._ f_4.__._...._..�030-.___.._- -7- ...:..a.._._ .�024�024_.__.�024--�024__...�024v-.._�024�024..e-»....�024v.�024_ 1:: ,¢ . . "Owe.-.::.1es:3v.:}401.~s�030.-�030:5-a.;'~.-7, V;-:\fz;�0304�030-"z-.&:¢::�030.°»ré\|,~§s-at-r:-'5e:'g.¢-mr-.. -are-rm 463'?�030-¥:Ova: =..
3 0 F1 8 P5,: 0 0 �034
Figura 6.9 Creacion de un check constraints. Fuente: Autor
ORACLE
Ejemplo: Tenemos un constraint que chequea el campo sexo.
alter table clientesadd constraint ck_sexocheck (sex in ('M', �030F�031,'m', 'f' )),
40
Resultadoz
No existen diferencias en el comando check constraint, en ambos SGBD.
6.2.2.2 DEFAULT (VALORES POR DEFECTO)
SQL Server
Ejemplo: Asignar un va|or por defecto a la columna nsssuper de la tabla
empleado haciendo que el codigo por defecto sea 333445555.i-.�031__�030-�0303�030£:�031Q'§.!f5§§�030Q1'I343325-arm'-I!!<A!1A."z.t5�030!!?!3J:.!$..aL&=}401jl;§gj§_�0309'é1fft'�254f�030£i¥'=_ _ f W Z - }401�034�024,~."�030_fnlaie-ix-vQ4.!!%'v-.¢.'-2I!tv'i»}401-\.I.v.-9-.-"-.5: W _;:1~ qua A-ma: msazx. -. a: M a» a. » ye ..;- 14;».-.-.»_.j~ ?*.=m.»'-he'«r:«4,r<;.IzC<1:*;:3u 1
C-rm:-«alts �030i. -- :';.�030'Ju<is'«sa:=.t»':!%:L*?::3., ' U�034�030°'�034�030~�0313-�034ea -
�024.<-�031a,<_2;;wm! 1 go (_ ;
¥-§;;$!e§;!;;'e.§§ l-alter�030table empleado _ VF add constraint DF_nsssuper ;
a-default 33':~m*s's's*s ~ 3;-�030fornsssuper _ �030 �030._ .
>;9sz.v'-. = I | ' «>5+J_'1.«».=.n ' '-2-e'.~=m .» a 2
v D 1- :.sum�035;; �030 5
. �030 iUl:.';§! , I 1311,.�030-.wV._. , i
�030 r�024!.�031}401*.=.%7!!!s; ,�030;0 =:;.r>.s.».<.e,-~... ,2
:r.;__1,.A3!es_*.45.'-.~,�030:%_!,~.�031\Iv._�030 r I!«t;¥&?1_HN:'£2 �030 . f
�030 1�030..§~�031£5#_9.=.>3..�030-'E�031.:�034 ; w
. �030 E
- .g,,,,, 0. . �031�030in., - . . �030i."e.~.e+~é..«ar*s. z;nea�030\.~s:�0305:'_a1=e.~1§.~.».;-.---ms 9!-er-s 2
�030ese.5 ,1 "»!.,' . 0
Figura 6.10 Creacion de un default. Fuente: Autor
ORACLE
Ejemplo: El salario por defecto para cualquier Empleado debe ser 1000.
Alter�030table employees
Modify ( salary default 1000)
Resultadoz
Hay diferencias en la sintéxis para otorgar un va|or por defecto en ambos
Gestores de Bases de Datos ya que en Oracle es necesario ingresar el
comando Modify.
41 M
6.2.3 MODIFICACION DE TABLAS (ALTER TABLE)
6.2.3.1 MODIFICAR COLUMNAS
SQL Server
Ejemplo: Modifique el campo lugarp de la tabla Proyecto para asignarie
como tipo de datos varchar con longitud 20 y que no permita valores NULL
alter table proyecto
alter column lugarp varchar(2e) not null
Ejemplo: Agregue un campo presupuesto de tipo money a la tabla
Proyecto.
alter table proyecto
add presupuesto money
Ejemplo: Elimine la columna presupuesto de la tabla Proyecto.
alter table proyecto
drop column presupuesto
ORACLE
Ejemp|o: Modifique la tabla Countries para adicionar Ia columna zon de tipo
char.
alter table COUNTRIES add zon char(1);
Ejemplo: Modi}401quela tabla Countries para modificar Ia columna zon de tipo
char(1) a char(2)
alter table COUNTRIES modify zon char(2);
42
Ejemplo: Modifique la tabla Countries para eliminar la columna zon de tipo
char(1) a char(2)
alter table COUNTRIES modify drop column zon;
Resultado:
Hay diferencias en los comandos para modificacion y eliminacion de
columnas en ambos Gestores de Bases de Datos ya que en Oracle es
, necesario ingresar el comando Modify, pero no hay diferencias para
adicionar columnas. .
6.3 LENGUAJE DE MANIPULACION DE DATOS (DML)
6.3.1 INSERT
SQL Server
Ejemplo: Insertar un registro a la tabla Empleado. -
insert into
EMPLEADO(nombrep, inic, apellido, nss, fechan, direccion, sexo,salario,nsssuper,nd) values('José' , 'B' , �030Silva�031,'123456789', '09/01/1955', 'Fresnos
, 731,Higueras,MX' , �030M�031, 30000, ' 333445555�030, S)
ORACLE
Ejemplo: Insertar un registro a la tabla Departments.
insert into hr.departments(department_id,department_name, manager__id, 1ocation_id) values
(70, �030publicrelations�030,100, 1700);
Resultado:
No hay diferencias en el comando Insert en ambos Ienguajes algebraicos. _
43
6.3.2 UPDATE »
SQL Server
Ejemplo: Actualizar la direccién del Empleado de nss 123456789
- UPDATE EMPLEADO
SET direccion = �030Turin654, Be1én,MX'
WHERE nss = '123456789'
ORACLE
Ejemplo: Actualizar el department_name de la tabla Departments.
update hr.departments
set department_name= ' Sistemas�030where department_id=60;
Resultado:
No hay diferencias en el comando Update para actualizar }401lasen ambos
Ienguajes algebraicos.
6.3.3 DELETE
SQL Server _
Ejemplo: Eliminar de la tabla Dependiente, a las mujeres
DELETE DEPENDIENTE
WHERE sexo = �030F�031
ORACLE
�031 delete from departmentswhere department_name = ' Finance�030;
Resultado:
Hay una peque}401adiferencia de sintaxis en el comando Delete, ya que en
SQL no requiere del from.
44
6.3.4 SELECT
6.3.4.1 CONSULTAS BASICAS
SQL Server
Ejemplo: Obtener la fecha de nacimiento y la direccién del empleado cuyo
- nombre es José B. Silva.
:= f-.-�030mu~�030:&z<2::1r:!s�030:�030s%=2._- }401.�031Z_ �030°I�034."�030CB;..- .._�030A21.». .,-u .¢-.-«-ea.-um-aa,a. a. -v~ ;a�024 1 2- ,_ j"_-4 22;�031. �030:, 9; gr.-_r,-;-.d\__;_; Hp.-_~_m.. «:3.-..._,;rv.3.:_3.:,-aA),;~; 3:2�030:-C�030 }
a�254£.é~.s---J3S~�030_T, . . -. . 7 . . , . .�030yéiéiifékr 3 .-select fechan_,direccio_n_ ,
uégigam; " I from empleado f
�030 1 where nombr~ep=�030]osé'and inic='8' and ape1_1ido='Si1va' L: 8 I�034.! , ' Q _'
3 5 I -,; n|1|.1-3'.-an �030 _,. nllmdn ;; *; 9-�031IQ_.5_tm!v �030
�030 - .~..;»°.~.-::4.:s.=.t.:rq.~�024E _ '
; , 3
z ; �031r.*�031-e'<T1=:�035a'h (aim:-'2ei;x�030a7» "f
% % a@ss�024.@©~�024eteaemaamm mm: 7m,r+e§gw~as,z«>5< % '
f. 3 «:1 mes» a:sa=eewa»
1 * ' '�034�034'-»' �031 *' �030�035M �030-.- .�030 7 7 =e~:=:a'ér;:.9cc:mm. ¢g~_=¢�030s':.::P.!:<FY,».=:�030.r_-.»z.�024a:'.'--. -um ¥
�030[9G F: 1 E 55;; I _ % -
Figura 6.11 Consulta Basica. Fuente: Autor
Ejemplo: obtener el nombre y la direccién de todos los empleados que
trabajan para el depanamento de 'lnvestigaci6n'.
45
;_'!§1{�031.I'_�030.:s-V!l�030:3:.'7-21:.-§P�254lR�0301"lF_E"�030:�030;¥�030EI\7I2_3�0304V._7f�030::i::>.1-3-!23r""!"§¢�030H7!?'.e�031:_,�030 _Y _"_ �034"�030" - _ fl�031�035"_-7'),_L_�034___K�030___,,___».__3_m__M____3_ �024....T-., �030_
�031.'~.._a4 4.":-\Vx1.�034.'.;_".�030.As ;g,- ~ ..~ ,3 a _9_ ., :3, ;v._> M\_-.-!~t2<_�030-5____-3?!»-�024=-\"~:-i.§-d§�030g;_",.'}401:_"'_"_3?k§_�030__ _ __ _ V
' �034. >�030!¢f¢H-'."m§�030CL-9319+-Qt. - V _ _ -�024q _~ 4_N�030-�030_"""�030f""?;}401mmselect nor.-.br�030eP,3De11:i.do,dir~eccion
.,m.+.«>.; . from emp1eado,departa::entoI-!,�0309�030!1.*.. v , , , , ,._;,»;....,,,, . where nombred= Invest1gac1on and nd=nurrer~odIU-sarm I
I .1 II U �030Viri-our:-uh-.
*�024£_�030!!.v"I---L='.-\'v1*5n:».:.. __;vq_a_4_,u_. I
-I -;A-m-�030Inn-."J~�034�030§"�030�035"�030mu \- . .~-;'!~!~.-4*. '- ~ -gvammn : -J-M52, __ _ __ __ __ _.. ______ __ _______ __ __
Federico vizeama Y-;~.n'e 553, |H'1guer~a�030s,n3<Zrc�030s�030e'fe ?E�030spah2a vssilvasghrr ¢�030as�030s<,is>a�030nac,|P'ama». rum Erpiga -87$, F.-1�031er~a3,*.¢:)�030< =
('4 rwts) a?ir'¢e\'e'd)
I 321�030«- - - .
s - . .�030ru,vs-.-e�030-A~.'.'»:'-..! '¢-'wer.5¢.t�030-�0301:¢..�030Jcn}401,;l�030(I§r.'°.�030g1�030:I!-.-«:6-a vwxa be-7
. EA _ �030�034"":n/mu
Figura 6.12 Consulta multitabla. Fuente: Autor
Ejemplo: Obtener el nombre y la direccién de todos los empleados que
trabajan para el departamento de 'investigaci6n'.
F�030*:k""-RN11 "'-.¢- �030¢H*'~'-u�030*-�030--
*~ .,a.o gm-z-.9 -.;�024.=,:-.1 s s,- - ..~ an - 1 a as. o'~.*1 5:-m'-a __ V "!4:9u 5 �030.~1- ..a - d . �030:.35 Q :,"2 13 K a
r - . �034'_ '!�254.�031v(~.-t.~_=.s:§Jv.6v.'4."yv»<~oow1§:t'- ,.;;¥:�030,;m:(.~}402_Nselect nor:brep,ape]_.11_do,direccion ,
�030...:_�030{o.__o'-.-n3-5�030' from(enp.l.eado join departamento on nd-vnuzaerod)I where non-.bred='Investigaci6n' ,
�030FJ '1!-ad--INJ qwvk |n'._1'Q-'45Ida:-dz; �030
.a.._LT§'1:'.Wf .~ .L"!m�030:w_vo.~.¢¥-._l_,�031W'.¥eIP.'-ov-._I,MI-NI!�030-'-"¢ _
a.;i~v-up--.*. wk �030_ _u_j,l}401-140-"r<--
J'�254!L�030!r'M!!l» J"'RP=__ _______ __ __ _ _________ _____ ._ ______ ____. _ _____ __ .______ _____ __
. F4a<d'e1�030i�031co Vite-ama V-�030ail;-.»-653., Iamgw.:2r~a�030s,m �031' �0303'c�030s'<-'-fa zssparca |6ai!l-�030aghbrss~sa,t¢sanao.,Ip:
Rama». rum E"spi*ga ms, H'er~a%,�031.�03037< -
(Q n"'bv.{-�030$3za¥?fvét'te�030."!)l .
,.,._ ,. . .4. - . D�030!:vMr�031/-eh-:rm"<,t_ �030E-�030=1(�030-!I�031.�030:-}401.'l..�030.'�034/"H.gwsb-:.�030a:;w.&'30-v�030.I'« this
Figura 6.13 Consulta multitabla usando join. Fuente: Autor
46 W�031
Ejemplo: para cada proyecto ubicado en �030Santiago�031,listar el namero del
proyecto, el numero del departamento controlador y el apellido, la
direccién y la fecha de nacimiento del gerente de ese departamento.
i�031"!2f¢.tI".�030-*8�030-�030Ji=:=:n:-=.;.;.'-'-gn:..u.¢-;:;u:m:;;--�030::::�030:i;.!a<¢«�030*t-1;4W¢;:*::?_ __ V 7__ �030_M :«.- -- 4,. MT?» �030�034' �030 *4 " �034" �030J�0304.3�031-l""?}401I./Lgi, .7 v �030\ Q.�0301 7- '�024 52�031:,7".
u�030-we-.1-V-, _�030:_f«!'«.~."«."-�030~1~a'J--.":L�030_�031aQ:�030;:g:|;. __
""" �031�030-�031.-�030:1:-.vq�030;~9q<�024'�254A:�030.\.*guq�024:asasy:'s:i�030' _ V _ >
f".�031}402';_:m- select n,u:r.e_rop, nun-d, apellido, direccion, fechan .from ((proyecto join departamento on nu;::d=nu:s:_erod) join �030
73�034 empleado on nssg_te=nss) -where Inga�030:-*p='Santiago' �030
. " .1 '9?!�031 I=- J :9 .
-~L_1_'a::mV .*~4e.5.'!W':v--1�030=!!-an'~ ~J_*�030='-'97!' .
- ..§'!l'.�030!!--J:'=?!A�030:,________,____.___.___,_____-____.________.__.__.__.__j__.__._.
c�0311unre're:,�031ama}401a aa1;:ré1'1�031i'ém fai}401areeien �030i}401ezlzyzarn �030
�030 re a velaés ewe "am 'ae1'3a.-,m�031< 1931--93-awM �030ye /A value�030: Dawn �030£91-,raéi}401rnwc =1'9'31s@ra-aw ~
(22 N'5:I.�030('S)2aif�030£<y:'1<erd) _.
x s . ;:.«"eretc-r.>:=:rei:"-.:'_« �030:'�024"r."-'..$:-'»�030c�030-...3�030P\�034.i�030.30:-saw:-V:1_-9.-A.-even-\ '.-as I
. A _�030:, H .__< �034 X5 "" 5
Figura 6.14 Consulta multitabla usando join. Fuente: Autor
ORACLE
Ejemplo: Mostrar los Empieados que ganen menos de 1000.
It I0 99' EN?�035BF�030(NW 505!!! his E0
3480 an sue ma. :1. 3:;�030Inn-ahaT I1¢mu.g;_ ')aa«:s.4 �0301omu2.s4_J�030|sq,mvmmsuU,|m<unu¢_ _
Y3.�030-H�030P-1l..'!�030!°.?_�034n!.='�030S'9E?E"~E* _ , __ ._ .. _ . .- _ -_. .. '9-"Wm. �030magnum: �030'
2,. select 1�030ast_r.a::«.-,salary �030.6 ""1" fr-.:n h.r.e":.pZ JYGBS '! where sa_ia:y < 3300: l
/_/between r _ . '
;'.....I;[...,.T,[u;.;n..I._=a......; 5_~...;..'.. " �031�030" _ ' �030' ' �030 " 'nuts:
J..u$u1~'£fJ.su,m 1I0".nrnJ 500 4�030
�030 211�030 3«Mn: an 'Srhn sou
' Iainvtu }402t
1lItkuv PM
Ili}402i NW '
nun: mo�030 ll}402}401lvl }402
Il}402l}401}402E!!!
} com um �030uncut; Em
I1& 2101 �030:1
I u..'.""�034"�034�030*9�031�034"95 :.,_._____:.j__ } ! _
I »VI'E'Gl�030J - -_ - . i
Figura 6.15 Consulta Bésica. Fuente: Autor
47 M
Ejemplo: Mostrar nombre de Departamento y ciudad de los
Departamentos. .
%U! W R�030Po? kn D550 I
.3uB.6\ -on sun §r*�030C .9:-and Sauna db-van S-s_w-xi»-4 }402u-em.u I:
�030am.- 1'; g o.�254nsu_:gl:saun&s __ ,,,g.�024v'
.3u mu . ' .
!�034"'!�030"m"-�024conccndic-ionI �024-.az':c1r P I
�030 5919"!�031dep.a.rt: ent name, city " AF fr;:: br._-:1epart.." sntz, hr._1o-;a.t;;n: 1
- �030 �030x-�030taredc~parT-.1r.:-n�030::.lcea}401.ieni;�030.--loeat-.:Lon5..1o'.=atxe|(1_ id.'- 1
< ,_._,; :__. T .- .7 7 , __';7 . _; ,: .,_:.:*, _. :. ;;_: �030*_�030...J
9 VI! t}401}402ll}402lljlltian 7 I= 19¢-nu sans: :: zstma sums-wwnnv �030�030 S}401hiinlkbl Salli
| «amen sum. �030
w 3:�030?:: gI nuumu Smut �030
Ii.".�030;..�031T"..,..3 -1 �030IOCMBHIJIXOEQ 5:30! |
T _ Ilse»;-~:.4==~=:7..~. .-T .. . ..~_. . [T . T .-T __ . . W .�024')&£Yd:27 Jul�035 �030QIQIIIIIZ IJGVI Ed �030lh%:I�031�031
Figura 6.16 Consulta multitabla. Fuente: Autor
Ejemplo: Mostrar nombre de Departamento y ciudad de los
Departamentos.
ummvuwnzsnnrunswelaaktsb
,"_h.:B3.'-i'7.IIZ�0301to~o-~=;- #3�031T*�0300xu-uaams Z '.1_0or$:3.sl ummsa -he-u.:_s1 Elsunmn.-u .'<I:h'd:i:I.¢d 7�030
244. 7-�030 L.-7'11"�031-_�030£_;'T'}402';_£-�031__1»>'_@;--=i.____...__..______."$9.9�03019*-=*=..._-.,.___. .___....._........__.__...,_.._,.-_... - _-.._....._.._,_._______._.j
Lg} ;«~ ' " '-Fax �024�024�030..._L....ms.1 �030 �030t .N:
l lseuec-t depar.:rer.t �030nave,C1-.y �030 , '
I ;fr::. hr.d«.�024p.a:t_"�030.�030r.t:snatural �030J15!h.r.1oc1t;3r.:,; '. ,I T: ~�024�024�024~�024-�024�024�024�024�024�024�024~«~�024~�024�024~~~�024~�024~«�024~-~~ �024«-
i H scrvcntzu Utuad}402umnrzuinecmat 9, trauma; |A-.-nAs=.___,,-__,--________,__________,-.__ .. _ _ ,,_.,___.�030_.._.___.____
Q!�030aouurewcn-:1 cm IIsaiah: Same» A
! 29}401q SulhSI1RIl}402&o
1 autumn Esme 'omaaq seam �030
- snceam: Seoul
; 2"-_.,.. 2:; D »l}401ann teams
3 3 ,I lI9widhSaM:u snmb
| ::::':;,., :2: 1�030 IlCnd1\.di|'I hulk �030
' Ascamm mu: �0311 ' mop:-nrs_ , sauna �030 v
�030 �030�024|.
IIr6tY!d:27 W llli}402flillllDam Mxlhd �030Mina: u .
Figura 6.17 Consulta multitabla usando natural join. Fuente: Autor
48
Ejemplo: Mostrar Apellidos y Departamento de origen de los Empleados.
IEOII'F\}401II1IIL¢Mv5!l'¢I°*l»3-caso"-10:0-Q--51.. 5f�034"�024'la}402mwuun2" :'Iummd 2'»!-via.-1 :1»-emu '1-u_a-um-a !�030|-rum.-d I�0304-«I _?i1"«!°_'_~> __3_bD Q wmzu-gr-2 _,__ _ ,, ___ __ _ �030 . mg-'frrrr" °'-"�031°"*"�030 . «
�030A(I up 'I�034-�030lwan V , I
.011 :q.
select last__n3_r.'c, 1cpar'cm¢n�030:_x:..am: I
I fro: nr.rnplc�030/m'sA zntt outnr )c-1n mac p1rt::*r.t.~s B on �030J
1 (A.':le;1r�030pen'_1;�030=!2.G:-p.:.r":nt_1d) I l
' J51�030:-:s�031|Js-vutuzaa}401ucutu-�030DzLn:::u.Dz:usoau:}402our-ma: �030' 1
I MSUWCI l'OnRY|Dl|_)W(
, ;., mm�035Human mint:-4
Q aaahncu rumw
| 3...? m 9T}401}401ll}401ltvo
Ivan ammo
, Old-9: man
I l}402}402lwkmvmnmwus
I IIFIIVIY, nzwm sum 1. _ .121.-_i9-�031-.�024....__-.. -- ._ .. . _. _ _ . . . -'
rumuas-um �030:4 _*_ ______j_ _______u-_s1s<\:ntn~7a:__n-«____vu:au1_w~«na-r,,t1ar 1:]
_ K155 - , .
Figura 6.18 Consulta multitabla usando outer join. Fuente: Autor
Resultado
No hay diferencias en cuanto a Sentencias Bésicas en ambos SGBD.
6.3.4.2 MANEJO DE NOMBRES DE ATRIBUTOS AMBIGUOS
SQL Server
Ejemplo: Para cada empleado, obtener su nombre de pila y apellido y el
nombre de pila y apellido de su supervisor inmediato.
J*V ..:d�030-Iaw--em.�030.,'�030.;4.I.\ -- at :2 s Is. -4.,> w -:4-,-i-�030._,____V__: !I.- -1. D 9-L-4 v .4 n J . " . . .3, ' jg; A �031___*_
"�030;.._:.�030".fcE,:�035lV_�030i1|-'}402.,7I�030r!~:-wé¥:1I�031- _ _ .,""'uf�034;.':vselect e.ape11,ido as no:::bre__cr:p1ea.do,s.apcl1ido as r:o:.bre_super-�030visor
from empleado as e, eInp.l_e.:do as 5
:j_�030:;,_' where e. nsssuper_�030=s. ns-s �030
$.33" ' order by e.ape11ido �030�0301-3;:
-e _g._ ..| �024!.¥I:iI .' 43*�030:ugfn. -. - -. u
�030 ::%'2;�030.-�030!;1�031 ;-;3__n h'o?.'(I:T�030%_el\}.3§%3'c3bs-.�030cs1u!.w<e_*su:,:r¢2-\c.'1:sw~
.__S1_r;1_v .----;...---;.-v.�024.;-----;«..-.-.--»_;.-
's'¢t*e1&<¢ �030Silva�030 Eszpa?/z«a \�031/212-z:'av~r�030:~a
-td}401bar WaltaesM-era "~5':�030vzQ'eN*'a�030ssiw \�030/izrcewm I\'e1@§s Bc}401lib .
J"~7'\ ~- --. - -. 3 {ans a-e-.,w:¢-.:.-udwv !-'6.�031-SB:-'1r�030.�030x.�030~-On.g_s-.-vars.-*~.~;o:1z: ':¢~:1"V>i has
T �030a ma * re ' �030�034�030T * a T T �024 �034
Figura 6.19 Consulta multitabla de una tabla recursiva. Fuente: Autor
49 }402p/
ORACLE
Ejemplo: Mostrar datos de los Empleados y su Jefe.
I_Evp}401.�031a".g;aFu;aE.ia"r§;%.Tm&s.1§oEe§'7ioa£'Q;§»" "' " �035'�035�031" " '" �030' �030A ' �030Bags -20- awn: O=0~ '3:- 2 "
5§'{�030I=�0306�254-W: PM-}401r =-a:;aa;.:a wasgTpL___.a9ra..ao am; 0, -�031oIoa'a's1�0316-saaics ;.,..;.._»
SS�034; %; �034'�0317I�024�024aouterjoin-�024joinde la tabla consigo mi.sma�024�024unatabla 1a puedo subir 2 veces :
'iselect emp..employee_id,ernp-.1ast;_name empleado, I
éjeff-.lasté.na'me JEEE
'ifrom_;hr-.eI:q2loysesT9rup, J19-<eTmploy~e_<:_s jg: __T, __ T T_�024 _ T__ _,T _ TTTTT T,TTT
@:@;}401@a:gfe;_i3i:3i�254fiém;§v§:e;i§}402,__,~.T,T. _-T_. _TT __._TT_T _ _TT_
I "~�024-�024»' "R,'__:.!. . .,. 2.3:,
1: }401ifrcy }401siaa. f-�030 & iiasasu
_ 7: lxfvhii}401i "hi:'4 histsfu}402 WeVs 'I'r�030r�030aiv'a�030u:n'|c}401:
�030 '5 1ro's�030n§6'~iis 5?-�030oV 7 'I7s�030m�034afI�030Wuf It Ifzweu-7.-2 rm
'1: |fz�0353�03095Iu7u�030»�030}401n_ um Irzmva M:
�030ii 'i2'|'?v}4012 'fJ\i: .�030
T�034:-�024�024-*:*~*-'�024-�024~�031v-�024-�024~�024�024~�024-�024-�024�024-�024--�024�024�024�024�024�024--�024�024�024-�024�024V
"'9 -..~ T V T - V I T T �034"-*3*£'r§%
Figura 6.20 Consulta multitabla de una tabla recursiva. Fuente: Autor
Resultado:
No hay diferencias en cuanto al manejo de nombres de atributos ambiguos
en ambos gestores de bases de datos.
6.3.4.3 CLAUSULAS WHERE NO ESPECIFICADAS Y EMPLEO DE *
SQL Server
Ejemplo: Obtener los valores de todos los atributos de las tuplas de
empleados que pertenecen al departamento 5.
�030:o1~.=-:-:zs:..a, 2m,mw.LD_=i>}401S!e3�0301I&�031*A-}401x�034-+».r-.. ca ». T T T T . ie:w;t:_�034_'_.____-4-=1%.*_?r'r.c-1.~-.1 !
S�031i"�031E":�030-select "�030 ','39:1 from eI.m21.eaT.d;o, H. an!�031 . �030
�034 am where r_-1¢=_$ =- ma - T�030 In 3 4 �030!
V DU; . _ 1ca}402_ ]
}402gggh�030 �0305�030 31631, I? - ;
-�024 ms ~- _ - x1 3% 5-="=*~�030=L�024�024L~�024�024.~�024-»�024�024«-.. . '---**-~-�030�024-�024-'--~�030-�024-~*--*-�030--L-*-._w~+-�024�024.�024~�024~�024_.~�024_�0301 f*'_�031�024�031*"f '_�031§§______ __ __ __ �035=�030-="«�031**�030=�030-'?*�0301"�0243:�030I -5 ram mrssxe-».eu=w.:;»:e.sz~Je..~1 new-TI.iZ.i 9�030 ,- Ir�030-z4.-:rs-im *; V-iz_<:~3:m I'$�034}401_0!h�0303i;�030§5¥!'t!'5-19�030:-�024�030a?zwing 698..., *L'w;wr~1}401..,I*9.I: er 7�030
5 �0301 /.1 I;=az-2r~z_~2 &�030«!657:�024Q7.�031-231 Q�030:-l3Hf;""~�030JP$c'ia_I5¥!.N3.Q.,'.¥é P9.a T; K; vtqxqé ¢m=.fs.>tvzIvc».'s2>.«�024.e9.:-Jar; '92., imam on L1
(m r.~2v.(�254),~:;I4}401:<z':-M.- '
' pi n _ is.n .. -.m.weszss.-4mn~a,' A �030
cT.-=_--.-...T_'T__:_;".';_. :;Tj._TTj�034_ 7�030;.: �031 T _.-I__.:�030._�030;.[.'_ #.. _i..T ____'_}t:.*:.
ca as �030E�034 ' ~« ~- m':;:.,�030_�030Figura 6.21 Consulta usando la clausula Where. Fuente: Autor
50 63$
Ejemplo: Obtener todos los atributos de las tuplas de empleados que
pertenecen al departamento '|nvestigaci6n'.
Jr: _9~.. ..3.¢ .Mnc2a-v. J:-:3,-,h,a,. Luv ,3 - um» :1 r. .3; �031 �031�0351: 4:(~-,'»».-_-�030_+»�024. \
5 �031*"-"�030W�030«<°.-*-�034-¥'}401"�024+. e1»: "<. mam-X �030
" uselect * E
�030egg:from empleado, departamento. : "31%�030_where nombr�030ed='Investigaci6n'and nd_=numerQd *1
in - �031 7£93 �030B0 �030
aD_,8-.= . �030�030 (BE. - ' Q
wt. ~- -2 HQ. -.5»:-.-..-.�031_ _ _ _ __ g
' : 3.93.1�031: as $5;I.v.:z aawzm 2:.L5.:s-wzlau mvmrs �030Ir3.»1,\|4rB;*¢e.:?-22.11:: en X�0301 -2 l'=�2543¢.P~i;«z- T�030WL7£GH�031*�031% 1.�030!�030t'5-�0241.&-�02417¢�030(%é1!<é°.3.$,»,*4-i_'g¢<.=!?~7¢%._!9ak If? 5�030 nsefn A 1;9.6.?r12v�030-3:11012-'.Q!M.Q~.Qe9 �030iv!-\3R�254;�030K=.!?6133.4:-*»1.r.v<f3>_.,I!1�030z I9 �030;
It }402.iQ«§S2 E237:-Q2:-1% Iain}: �030£73.,Ilia?-1-'s.'9F< E? 'u
(m a}401factertlr I 1
.p .. 'em:u2o.1+.-madw- V ' V 7 «nu emu. t-=.-an 1
�034mi. 7 �030 �030 I I . V \
«$5 6 {'31. Eur �030 -< " .4-�034A-x_7Figura 6.22 Consulta usando Ia clausula Where y el operador and.
Fuente: AutorORACLE
Ejemplo: Mostrar los Empleados con fecha de contrato 1996.
-69 .l"'_:1'°*."-°,r'¢:~_£9",I1'!*v_=:-r2.!.°-*�030vv ,2 . , . , 2 29°33 '9'�030*0�030?°?°:'5�031-- 2 _. . _ . . ,_ .. ..-L»v»:.�030�034T;ts�030:�034~,:;;;a,T-a�034»;:s3a.«»«;;:u .___ __._ _.__ _- _._____ __ _zmv �030D9900803. 6- o.o¢m2v-cm .u-is-V
�031}o«,a,§ot_2-EH14: , ,,. , ,,, ,. , __.. _, ,, _. _,. _ 2. ,, ,2. ,_ _. ._,.. ,1E I//like
I�030°�035'�035'1 select *
from hznemployees
' where hire_date LIKE '%96';
I 7�031?-�030"3?-§';�031?,2�035.:zii:�0307�030:�024;;i4;?§;i.T2:?::_7é_gmm»mgm.:e;m:;.2¢mw2 ,
I �030L1.p-new-,2.->.J_, r�030-su-,4_s<'J,iA,sv,.'v«-�030v:�031¢�030,'9«,n'.:l1w-zguj-,im.og,:3 :,og.u.Ll.,s�031wv_�030-1,cdusu&«)OQ.MNM84J>§i.h§1¥V"¢«..Ii I»- �030-39 M ".'°° T5�030 5-!: -mminai. was �030maséoiunimi mrhne s�030v_�031,Mu um om -nub '51 .a iisuiiva his �030iillmemunffvin �030r�030«�030)hs�031i!ss�030t;<i:'m: �030(Ali �030:22 �030En -
i �030H Elna». }401lis}402iw'.$ Ufl}402wliiélszniasbint}401m Wvui) 'h.�0301 am �030so �0305 Yissii-i}402zo min -11:55 dI'Ifv'1fIS1s.H2~m6':w'mIi6 s'A_)b Tim -6.! FM 760 -�031e =1�030:/min 9}; v}401udflfiaiiitaaiwudtlui}401b �030vsan �030O45 {A6 1!) H
'7 »|'§b'I�030l§u Train on:«::sasma'mm§e ixajzr 'm 71,: �030:16 �030ml at '4�030/439. its 'z'A'i(1 '6I'1f1�030a.'Is�030a'1.1z�031§2'5'7�030:�030:1Ei!a{gin 7I�030I'o'6n Q7}: 1'1�030; «'30. �030Ia »zb-�030ru}401-sfdéi �030»s�0301�030noKN�031&fsm.�030l'n�030rsiiidf}401e-9<;d.:-Rx �030czoo (M) -:5: �030$2 |I -m ~l92'sv�030b» �030cit �030}401sh.�030}401hlsbnfnkn'6¢;uz/B5 3sn_'c&'Idx �030iunb �030(No 1?�030: "in �030
"�034°""', , , ,. _. ,, - ,, �034SW ,,"1 re A '�034. . . ' 417%
Figura 6.23 Consulta usando * y la clausula Where. Fuente: Autor
Resultado:
No hay diferencias en cuanto al manejo de clausulas where no
especificadas y empleo de *, en ambos gestores de bases de datos.
51 w}402
6.3.4.4 TABLAS COMO CONJUNTOS EN SQL
SQL Server
Ejemplo: Obtener el salario de todos los empleados.
�030ab.:35 rag�030;\.,._., -;Tg"?;,~.. ' �034""""�034'' ' �035 "�034�034�030" " "
.1 �030.'~.._JJ 2--y-me g�024.:.,';'.,,-. 3, .L~ 2_ r. 3; '1 72:. i».�030 ,' :4 pm-,-._A, #4 v awe» I sen. �024 Q -. a . "; :;_2' .1 ' ~~ 3-; zv- _w_ _ V
: " F«;::e-,=-'es..r'«1i-<-m'-».'.:1'-�030-_ . .3, _, ,_,, , ._ .,, W G _,_, _ ,, _, _ -1;�0307"-"*�030�034? select salario . �030_�030#3?from empleado ' \
�031 1:5. 2H1 . g
'. �034J ~ .; :;i TI:-i=3.-?._ ___ _ _,_-__-.__ _.__ ,,__ __ __ _- pf; M rsanaries '» I '< �030 -.\-5'.-raw - .1-I. i�030£'-�030a'I�030L'-.311. a - 4.-a-sun --.31 - -'i�030L':.' .~. �030
: "jg 4L'@'�254fG!0~.(3�031e ;�031 1= asmcm 1
sse%�024.©'e 1_: * 4+%m;©?a ,
f . _eat. ~- - �031
. . J :1-,2-5.»:-'5�031: :s'!=3.ar.:..«: '::�024.a}402-.-�031i::-5.";a"-11!�030:c-¢-ms. arm V
O 0 £1; £1 £';E_«; �024«--=;,::;.,.}
Figura 6.24 Consulta usando Ia tabla Empleado. Fuente: Autor '
Ejemplo: Obtener salarios distintos de empleados.T '{C"'f:*.�031e"_*.�031E9:'-L24�030-=.�030.I3C�024.�030_-;".'i.�030.:va9}402J)i_£:?§£):17f1}:.-�030:,;_::£!2.!!".: V�030-T*ig�254"9�030:(>..:'-E____L_ ,3", V 7 _J__ 7 E117�030rm(-f\ vqp. �030égqw0.»,-.3 yqeq M�030-.. �030-H�030;-A-an �031 �034"" " ' ' �030�031' �034�034�034' ""' ""�034�034'
F 7�030~.-34 -I"-!"M> -"-1'». 4�030mix ' ~ -u 1.- '3 9. �031., - I-=*v'-';.'c!:.-.~\}401-,\/V__(,_-Y'."~�024"'»'-�030.§4�0301-e,__- -r .','*.;f.¢_);§ -33 l==,__________ _�030
I 2�030.i:;~sims,-.-"eva.~.rs1°r=- _ I 7 _,,_,___u____,�030 , ____,_ _ I�030_�030;"�030»V select distinct sa-lar-io _ 3
~ 4.315;" from empleado �030-Iw 1.; 5; ru �030 , J.3 I L] �030.z,_,_._. .
c I;:J".x:»=.�031-2e1L____,n,__..____ __..___,__c_ _.___ __c_____ 1-�031__ ____c ;--=3! salirrie �030'«ea .
«Id .1, '-I: -; .- 4';-3':-_*'a-.-s'a-a*a':'x'a - as:-.-:. a .-:1�034.-.a-A�031.'a'-.-4-;-:-- --.
1 ii... aszmmse ' . =; �030SL3�031=.§eaere...@'e' I '-$'8'�254@0.©'G L
»z'e'e%«a'e .T - asmam _;K s9wa..e'<a i, r .- ~ (6 mes) cmem» _ 5
�030mm~- -s ' - -J tram�031-�030eM%�0302r'r�254!~":' 5�030-"5£�030�024!|'&:-5�030:-.'..�030;*v%'gt-::i�030r.-�030�024'f�030{N!?'-'.-».'-ups�030-3.u.e:..-3. Ls-;-2, _
�030O0 ' ~51 7 JFigura 6.25 Listar salarios diferentes. Fuente: Autor
52 7
ORACLE
Ejemplo: Listar el cédigo de Departamento de la tabla Empleado.
=D M be�030won an who Sam! [M1 In
.3669 ta.-.:u:.I: q.o.'>.�024 :,�030Roar-canC Inna-ad luau-:4 in-ma.-1 U-4_wvutm.-u vdauwnu _-'...l-2:�030. _>'.�030._G}402vO3"! 9- _ _ _ > __ V >__ __ _ _�030_ _ ___qI5«gaf.Hanan Eu_r-sass--v-= .
718:. 7 i!�0307Q-no '
�030 //t;!.A: :!up.�0301c.ar1.-1. |
l ::-*:1c':�030.d.pa.rt:r::t_ ii I
' from b.r.em.p1:y:-cs: |
�031 "'-�024�024�024--�024-�024'-
ugh. 1 IU! }402cwalv-Dn_p _ I
I i �030 2 �034' 3 no | �030
| 16 1:- .___rz , . . _ 6 J I �030J'.�031..�031u.g
Fdriui}402n-r}402 Irrtatnanu In-rt Ila!�030-rdvan-nu» -' ~
Figura 6.26 Mostrar con filas duplicadas. Fuente: Autor
Ejemplo: Listar cédigos diferentes de Departamento de la tabla Empleado
Earea:-uwnammmusxnexaaua ';y..»ua-or-w.3Lq-o»~:.- Ir,»q¢.......,.�0310 g.{...a'.a..; um�034v»»..u.~.T .1-u_u-T".4 u...Ia..�030.~'_ '3M--'=~ .N~|°5'L<>_ '3!�0314:. new-=»~«= . . . - _ _ . ._ __ __ ,-r-aw�030
�030M-i}401ldnlnga_ ___r_ H�031�030' -
,.u L _ '; :yaw�035zen.-ct d1.3t.\n..*. depart")-:'.'. ml _
' trur. hr . amp} Oyech : 1
] 5_'Sav0l>:�030oumU~t:auoW_nu-sorpi}402ovnang-x . . -
�030 �030uninoumonJn_' II I III! -_
I a : 4:| l 4 HI
5 7|)
' ; : 3::�031 * i 32
7�030 m an
I 2 :2I I
I I�030�030lw-�024- .- �024- _-. - . _ . _ -V|
Ollhuliemoc ll uencmmx mun Imam Via-n: . 1.. .
Figura 6.27 Mostrar con }401lasdiferentes. Fuente: Autor
Resultado:
No hay diferencias en cuanto a tablas como conjuntos en ambos Ienguajes
algebraicos.
53 W-
6.3.4.5 CONSULTAS ANIDADAS Y COMPARACIONES DE
CONJUNTOS
SQL Server
Ejemplo: Preparar una lista con todos los nameros de los proyectos en los '
que participa un empleado de apellido 'Vizcarra', sea como trabajador o
como Gerente del departamento que oontrola el proyecto.
[_9.-§f§;:_�030(-".1.-'1-l§�030L¢.::LKv2e;�031$.:mx!*3-gg$.L1;.I:£�030;sy:;!:':§5;�030-',�030.;':::-fgggzlf}401ftg}402i�030-;�254:.B�030E, , ______,______ �030V _'_�030___._:__,__.V_,as. -.~_«. 2-n -7%..zs-w K51 *�024�030 �031 '
fr: v~ .a,-J-I A-wm .- 4»,-.\.u. « 1; ».~ a.- 2- .9. ._ .- _ = :24» .9», ..�030 (4 u__a_z5.g_._,, -. !*am¢.\_ !.l�031.'.'+§.. .'J_.-. 4. :_":;}_:' Q -' *- 1-1 in .7 _ _ 3
-select distinct nuyterop ,H"-LE�030;' from proyecto .�030;
�034 i*I_I. 5 . '
�030 4..;; where nus.-.er~op 1n(se1ect nuenenop �030:1; :3: '. from proyecto, departamento, empleadoi :3 where numd=nu:!:e_r.�030odand n_ssg:t;e_=nss and ape1_1ido='Vizcarra')
I 3:�030:~" °"3�030:-I;'=.s3 nuraerop in (select nunp4-...§T»I»�030_ from evmp1ea,do._proy£-cto, empleado ;
; �034E�030§a;',§ _ where nss.e=nss and ape11ido='Vizcarra') _ _ _ _ .§: -_e.e.~.. ' - �030:�030 iz}402tahl __ _____¥ __ _, �030~
�030 . >2 9w V
3 QQN _ �030T-:*..*».�034«- -
. w J 3f¢!?.',!-¥!.!2!"I:°.'.}402.¥;. �030 �030 �030.~�030.!'.'.I¢2t.>:$A<°.�030-�030.9:'§~F:z!r':-"D'!_§':¢'2~'. :e"e.~:n was
�034WV. ,�030mMW if . 7 . * 7 M .. . . -V .
�030BG 91 {=1 �030.2 �031 :~.?:::;
Figura 6.28 Muestra consultas anidadas. Fuente: Autor
54W
Ejemplo: Obtener los nombres de los empleados cuyo salario es mayor
que el de todos los empleados del departamento 5.
; �030!»;'.x�030_:n'_\f' '«'f'_Y'3_umr- em N.-¢ z->1!--2 N-�030Gib
9* ..JJ .L*'IrQm -_,,,'.';,i_-_ ~. -; o..* 1 �031 �030|_ * '-'3» .7�030.
. ««~r=*:«_ ___:! -�034"2-.2--1-'-3'-Q "11*»-____ , _____ _. -' �035�030ec:.:sa_-m�030�0244. ac-yq-e»L~.:'sz.�030- \
» °':;_�030__\ select ape],1i,do,no.-:.br*ep _.4 from empleado
I": where salario > a11(se1ect salario from e:.-.p1_eado where nd='5)
{ii �030I J:4
. ._!�030:54
».;.g,_ -9.;54*.L!lv- _ugh L __, ,
51: :_';_'L_i>j__�024_�030_ H _ ___1____�030______ __ _ W ____�030_i_____H
aave'1-1'1=ao Womb�030r~e�030p '
Bdtellvc Jaimevccal-as -3-amin
_�034(2_ l�030*¢ut(�031*sl.ari}401er¢'t4.-6'» . -o u '.):eI.I-1'r.~.-�030e!s:'.-.'2:r: �030£'L�030=_»1'sM:�030.':'.�030x.-'r~\-\_-*u&1:.'J.*gr5u-- if-'39�030:W~V!% tvu
. . I ., H ' "": ~33:
Figura 6.29 Consulta usando la palabra ALL con operador >. Fuente: Autor
Ejemplo: Obtener el nombre de todos los empleados que tienen un
dependiente con el mismo sexo que el empleado.{ �030£3.31-,r.oQJ-1.-r»s;s:=r..«n.aA.1..ru-.-'-:g;m.:£. '_=':t9"£:*u:-u-"*1-tgc-4�030-:?.s;u*: ___T_ _?____�030_x __ __ !-L: '=�030{_7'1D\l'_�030_§"-V-rQ-911!-c",'-,5-ugh-\-'�024~�030«|¢ �030 "' " '
_1~ .,a.v 4-aw -.\...1.-,�034~,!.3�030~ .a- a_.- .2 ~ �030.5.:1.�030, tr-ago-�030-s_____~!n»~-v~.~n -.,-J.-1 :_�030..J:�030;'.r.!l;___
�030!Q£~§4:lv}.qt?!-�030tcynvbw�031-52.�030-select e.no::brep, e.ape11ido _
" =-..'_~,93 from empleado e, dependiente dwhere e.ns-s = d.ns�024seand e.sexo=d.sexo �030
J.'-�030I:
1.._!,*.l
c:_1:§
«.4 .
13 '-Ev: �030__ _________�030MA ______* __ ____' U
wc1n'b'r\z;5 apellieo '
Icsé Silvan-�034eoerivco *«.7i2<<arr~a
I
3 M('2_ maé-sh »aH'~e'&'t'-66) _ -~ - 3�030:_n.-w2:4.-:.:':m°.e *�254N;t'.�024!£-:$:..."+:-M1_»4':�030sie'a:�0305'."gt-42'»,--vain; Ir-as
O O ' " ' _ _ - 2' ~ = .,;:r.., IFigura 6.30 Muestra consultas anidadas. Fuente: Autor
55
ORACLE
Ejemplo: Realizar una consulta que muestre el empleado con el menor
salario.
5�030.�034�031a�030;.':�030$"£�031?.�031�030..�030.�030_�031f�030�030.'11.. �030:-*�034\(4nu:}4017I 7 }402u-on-I�030El-msuu3 when 3.�030vd,w2wI.n¢93'.qniuvuv '1
4-�030I7 .�031§_QQ_�030_05!": £�030_o,n1«gv4_\_s:v-s____ __ _V___ ____�030___syx2nV-'kr�030{fm¢m ?:�030I�035§}402lIlWf "_
�024�024salariomenor y nombre
' 9"�035 select 1ast_name, job_id, salary
from hr.emp1oyees
where 3a1ary= �030-
(select min(salary) 1
from hr.emp1oyees).' 1
'¢._______. _._______ . - . .. .___.__, __._ _j. _.___..L»':.l
�030$1-AxI) scum:-A Cum�030Imam �034anew �030
l}401tn SLED! Ill! "
�030 3;; :~w~-go: >»» wane�030\_�0244�024�024�024�024~r»__�024----c; �024 *�024�024~�030>-_�024�024�024 ~.�024�024�024-4'
Figura 6.31 Muestra un subquery. Fuente: Autor
Ejemplo: Mostrar ios nombres de los empleados, cuyo salario sea menor a
aquellos cuyo job_id = �030|T_PROG�031, pero cuyo job_id <> �030lT_PROG�031.
5: as In Maura an arm sun In as 'i!..»a9»v->.-.-asJno-o-'=:- '-':I"""§\ca-maze C Guava.-1 �030ab-mmSuva»: Hap-saw }402u�030-6c'nI.1d '-3
EOY E-_9°.__3_2 3!! �031___5-mun:--Lg_ __ _ __ ,__ ____Ir=1-'1.¢,,,_,.,,, I:uusq.9,ne-an:
r�030u""�034 �024-allmenor que todos �030select emp1oyee__id, last_name, job__id, salary
from hr.emp1oyees I
where salary < all -
, (select salary -- l
from hr.emp1oyees I
where job_id = 'I'I�030_PROG')
and job_id <> 'IT_PP.OG': _,l
.';V's:;.a: Jscanoaaxt �030min~_!-�030IliumCyxzéawxu Q ownoum ' ; 'Eula:
d Lmovapu usuwci mp: suzv �030I IEII DLGDX 0% ,4�030
2 mm 91,05»: an ,_'J mzwuu aguax mo
1 mam: ILODS am
5 much�030. sr_cmu ma
2 2222 3:33: 2 EI�030 ::|;.:_T.-�035"�024�034-�030"'."h.�030-t'.j�030�030" �034' "_�030_'i"' ""_ " " '�035'
Figura 6.32 Muestra una consulta anidada. Fuente: Autor
Resultado:
No hay diferencias en cuanto a consultas anidadas y comparaciones de
conjuntos en ambos gestores de bases de datos.
56
6.3.4.6 LA FUNCION EXISTS
SQL Server
Ejemplo: Obtener el nombre de todos los empleados que tienen un
dependiente con el mismo sexo que el empleado.
.' '1i1-21'?:i:%*'?$=3:-;£=;:»t-I-313;:-=?rrrs:I::2 .:*.'-"a;=".£-1.;:,1�0303:::et::!=.?¢ _ _ .. , _,M, « . _,_ , e_.�030v_�030" '5' §*4: P"'- '- 'Mr 5.4- ix»: "-A \ 1- -de:
?~ .-.8-I J"!-2'49 . -,,r.._:., : =3, -. s A.» 3 r 9_ -. .:=. 2%.
'-1:9-'.-'1-2 _ : �034~~*-"*1 - -v - -I ~ �0304~.i..v�030<;|I�030:'3!�031-1�0302. e. véaswhntsz�030-
i:°';r�030;_ select e.no::brep, e.ape1}_.ido _-u-.;:,~:¥ from empleado eI: where exists (select * �0302:�030, from dependiente
where nsse=e.nss and sexo--e.sexo).:.;=.-u
333,4.01.!�030 ,
*-L . .5, .. .471:.-..t=
nzsmbregs apellido I�030
3696 Silva -' .Federica �030I£'1�0301'carN
(2 l'ue($) a?i'~ec�030ced) .
s » «�030�030-..�031z-.�030\»�030!e-.'¢r,~,.<<nr..\_ �030e'iIa>�031.|P.:.5:�030.'.P}401IIM;I".lI1�034r:�0303{'}402':'.�030-:9-mu
C 0 {IE . =}402 .. »;;_,... *�030~'~':__=.= JanFigura 6.33 Comprueba si el resultado esta vacio. Fuente: Autor
Ejemplo: Listar los nombre de los Gerentes que tienen por lo menos un
dependiente.
V:-Er-vv ta: -s-A4-an N-.\ �030-v-N.-�030�030~.41.! .L-.:-�030em..y'5\�030;x.;- ~ ».~ at 3_ = �030:5.F-.
�030!t."'~*-4:~ __-raw-.p:»., ..�031.«-43'-�030£9/O.':�030."�030.!�031JI�031~a
" _ _ *�030�030Vte:u_»1.:s-�0244.-r:gm»~='.s:* -�030}402j;�030select nortbrep. apellido ,
-._x.n2T. from empleado
:: where exists (select "�030 .from dependientewhere nssznsse)
:3 andzéw exists (select �030-mi: from departamento.32�030_ where nss=nssgte) .
�034.�030Y.\.-'~�030 '
«-..s'~.u.-.l _
rrembrezs epeiliaa -�030
t-�030~e'£�031Ié'r�0303i'c'oV('i2<t»ar\N.z;a:mivn Y=a1'ae�030s
C . man.-.V �030«_*.�031!!.-3e.:.!:<.'.'.\�030r\.l.'§p�030\>-,ru-,.�030!_�030\-_g|4.-gt34-5:33 an; 5;,
0 OJ! KB; 2: gr ll T Q . Es - =_Figura 6.34 Comprueba si el resultado existe. Fuente: Autor
57
ORACLE ¢
No existe el comando exists en Oracle.
Resultado:
La funcién exists sélo existe en SQL 2005, pero no existe en Oracle.
6.3.4.7 CONJUNTOS EXPLICITOS Y VALORES NULOS
SQL Server
Ejemplo: Obtener el numero de seguro social de todos los empleados que
trabajan en los proyectos 1,2 0 3.
fin 32:» -�030QQ--,1 kn!» �030__._.___... . . ...-. . ._.�030 ._ .... ....- .
[5 5* £�031..I',9J.J.�031-�030!'Qr."¥~,?3I_.1?I,..Y:,I ld,"'~ '42" '3, '~ .�030!I_ _ _'} ?~.:!r ST�030,}�031m1g5~.m ~;:re~s.-.-..».>:-as. v.'.}+._¢."¢s:J.s'a;�030_.-.-_:�024._s:.--�030 4
�030.�030_�0301�034"f�030.�030;?lm�024_�030�030,selectdistinct nsse _ �030;1 -..�030.:jz"e�030;?$ from emp1eado_pnoyecto F
04.0
i �030.3_§ 1 where nump in(�0301,Z.:3) "3, so ; v I ;
�030_ all 1 {| U 2 ;
Ni;-�030at g' '~�030d.-: \
*4-L�030.»�030 R I~ «.3 . 2 - . -
..:.g. _ .. .
~ "Es; -. . _. .__ .__ - _.. . . _- . _- ._ _ - ._ -. . __ .1, �030 wszse -' ;
~ - 2p2=s'a:«s-ewe - s' *~ 12;ssm's�031s�030s's Te : asez;-s2a's'v2 ;
eermama _ .a1: ms; \�030 - I
14�030 -. �030|:>:er;t«x:'-.'~�030!-,s».�030.-':1:2'-S'V.- __'c~�030-'s1.§'.§(.�030zg,�030!_¢.ja5�030}402__;g4!�030:_}402.*-_;sj=_.-;(s-__gsms'a'A. hm ~
o~ Acjivunfwuopvpsanra * I - v u gg�030,m,£§_%�030!.,3;_.9.N!-g T;
»© 9 ."-3�030:.8 ~ �030Figura 6.35 Utiliza un conjunto explicito de valores. Fuente: Autor
58
ORACLE
Ejemplo: Obtener los nombres de los empleados cuyo oédigo de Jefe sea
100,101y201.
up as p were am one saw: [MB us: _._!uH.8 -; - usan-0.-up E�030�030Rm:-amOlin-ms.-u LS»-as.-1 �030Human11.4.6»:-smu }401laumunu 1�030
149- >5°�0301°-�034Iii9 0-w«aw.=v==-t _ _ _ . �030=2�031-~'}401?::'::°' °"�031*."'**�030 - ,1?. F�031--= �031/ 1�034 ' . i_�030u"�035"'zel-.-Ct L�031;10�030]:;�030:xd, lazst. nu1ZN3, ;..�024:.�030.ary,."'iS.2�030J".�030I'id �030
,' {rem hrmzqaloyecs
s.'.*:er:\ 1;::r..:q_er_:;:1 m(_1J0-._ 1CJ:,201),'~ .
I .~7_.__- _~__- _. __ _ .___' limb glswto-tn: �030nunI-Ammo ihotsoua-\n' }401e»-non;
I -�024 -7 T�030-1 - .�024i�030_�030�024C-é�030_ _h �024�030__--�024!
I }402lth}401liv In}401 IW �030
E 2 Imlf}401h I3 IW
' : ll}402lkblun mm mo; c |un:u-at mm loo
5 I2!lW$I U?! ma
1' 5 mnus am soo. 1 naming mo mo
8 I}402V&m 3) IN
I u ucmwam an mu. nu manna! Inn mu1 II Icon-mus Inn mo ]
�030 I2 xno-am man we :I: ma-bu mm 100 1
' I1 Nansen men 100 '1.' 2�030;.. _........_.,._-......__ . . . , . -
uno-amazon uu}402au-asIn-at M-diadwr-1-n-.011! -.
Figura 6.3.6 Utiliza un conjunto explicito de valores. Fuente: Autor
Ejemplo: Seleccionar los empleados cuyos jefes no tengan valores null.
09 {P D' IMW! 9'�030DH!) SW!�030[I5 DID
3.239.�031-9-"X30 C-0.-'9n F�030�034ice-an C In-u-no It-may uuuunzu -Juunn-tuna demons: -'E42? 1�030 �031~§_3:-Q9_ 3.!�0319|2JI7umn'rk _ mag.-�030
cm-mm BN5?-311'-"«' _
{:3 3 -�024evitaz:valores nulos �030Il"q'""" select 1ast_name I *' from hr.emp1oyees t i
5 where emp1oyee_id not in( '
M select manaqer_id ifrom hr.employees
i �030wheremanager_id is not null) i I
1 o '1 I
I �030$590113:"Ed&~.'Inla1rn 8.-mm... Gooumu '~w:,_.. _ - __-_... __ __ _ __ __%_?_
I Itwujjwt1 70!�030
1 33""Stlvlrl
i 322�030 OHM!
9&5): J
: 1�030-xx-tel»-�024. _ . _-
fé}402d}401it}402 llIbI9(dnnl but $15 iW&1'<J!.|.F -'- -
Figura 6.37 Comprueba si un va|or es null. Fuente: Autor
Resultado:
No hay diferencias en cuanto a conjuntos explicitos y valores nulos en
ambos gestores de bases de datos.
. 59
6.3.4.8 CAMBIO DE NOMBRE DE LOS ATRIBUTOS
SQL Sewer
Ejemplo: Obtener el apellido de cada empleado y de su supervisor.Q '9«;:(;'.c-).:§ -�030E�031-|�031.".£�030.7-Q�030:-.E§:I'I1I_@_E|f.£.:."_�030l:.I.'xI:)�030\V»:*.:1:.:>32.52:�031!-"1-rgd-�030R313�031! _ N�034 I ;'_';j �034U1' 1
5;.�0319:. pg. Ki.�030I«»..,4 Q...�031p,_:., - _r_�024. ..'~
:'~ ...a.a .1-..;g. -,-.,.,.- -:~.-- ..~ :4 9, ~ .5. a~.«1.,,,.._,;.,._V v>s.'|uAI|r�030~|._',.J;'::v".u"g-._ __ __ _
I :Qv.cv'.w1e.~<-'..~::g4~.~;s.-m'-- �031 .' >, V W >5�030; �024.'._.. �030 V , W ~*".;;�030select e.ape111do as r:3.�030:5R:_E.'A'.PLEABD,s.apel1ido as 1:.�030-:3flr:_SUPf;RV1S0:! .
�035..'yz'4from empleado as e, empleado as s
�030 2: where e.nsssuper=s.nss '
:5 »I J2 J
....;,Hg
..._5_ r
. �034-2:.«__I, .
�030 ..;v~. _ ..-�024-�024 -v �024~�024�024-�024--------- -�024-�024-.-~ ~----�024 -�024�024-------�024�024 ,
'i:.�030:7»..7~»~ .V nuo.%1s.=<s_m>Lmo ne'meme_l9upEaw-1�030yoa I�031.
Silva �030£'m:ar:~a�030 \°l«z~:eMa 7a'ct�031el1o
�030 E's'pa'.*.1a W1:-c:a1~r~a
' wtiiu:-be ¥'i1t'e1~m _?�031.�030a..�030_s A \ Q - n .
�030J:mn':.4.»s-.!em'-,r_ A_ W .w5.3-.::v.~�030.*.�030g!-av)»-Htw:-9 :4-awn rm £16: I
*0Oi..,':3i_}402Figura 6.38 Consulta con cambio de nombre de los atributos. Fuente: Autor
ORACLE '
Ejemplo: Obtener el apellido y salario de cada empleado.
I! B3 I! Die�034Ev�030who Siva but we
Ju}402au- JSZOG-0-V. F�030
�030kcauaauC) }402uuuua.-u":buQI§d "hues l'Iu_w-Au-nu rhuauux.-1 3
Ii 3! '-' _�031$9530 JWQ 6.�031 o.u.-mesa-ms �031 V _ mo.�031-�030snusqtsn-or ' '_ "�030|
.3 Select 1ast_name is "name", salary * 1.2 "Annual salary" :;�030
I tr.-c:�030.hnemployeesrl l
! ;.:.s:u;a;um;u:.u:h.;§.3_'zmam t\am¢:~.:_ �024�030�024.-�030h__j _ ' �024___-' ' '- " _ _j_"':_ JMP-L. �024-,.. _-._..�024._______.__-__-..._ __._- . __._... _ __._. _é_ ,___
' �030l..'*�024'.l.hI}402u|~v :
. 12:" :1: �030l 2:. .35.�031?1 32".. ED 1;. 212.�035
90:: OM!)
I}402}402u ll
) (tram: xxooo
llhlhn DOM
�030 llhnil mono 1III)�030 72%
I :::::. 3: Il H; .. ._ _ _ .. _. _____ _.
'°'.°1�0305'!"Lj.__ __._ _ _ £I 53511:�030 Q E ' .- i
Figura 6.39 Cambio de nombre de los atributos. Fuente: Autor
Resuitadoz
No hay diferencias en cuanto a cambio de nombre de los atributos en
ambos gestores de bases de datos.
60
6.3.4.9 FUNCIONES AGREGADAS Y AGRUPACICN
SQL Server
Ejempioz Obtener Ia suma de los salarios; el salario ma'ximo, minimo y
medio de todos los empleados del departamento de 'Investigacién'.
' '9{�030;{:¢t',1(-*2�031)-32:43.:-_).L.-gyoba-;ui.::?is»govn;}2_r-_:_§.�034.S:.So-:I«�034!!'IgM�030P-.5e';'.vbl____ : ¥»____>____ Z_ > "=�031' 7 5"h 9." ''~ (�030My�030:0"9-1* '*'- ' "- "is
"~ -_JJ .t'*:r:Iy -.�0301,'..;,=:_1- 435�030 �030J�031< 1 -. I5» 9'~.
_a~v-~« - 2211*: _�031' v.e:z~.md~ K0-�034-.�030yv\-ir.'aI'- V
select su.'n(sa1ario) as SU.�030-IA,nax(sa1ario)as TIAXII-ID, r1in(s.a).ario)AS MINI:-�030.0,
avg(s-alario) AS PROMEDIOI; from empleado, departamento �0301;} where nd=m;meré>d and nonbred='Investigaci6n'3 I
I 4, .
. __!�030>Iq
-�024;~ ( __ _ __ ________ _ .
':::,:..'e �030 'SUM ma-me M131.
xsaemee 'h'oo24e.'¢«e am�030
(1 I~m4:(\s) aa�030Fl�030eci:e6)
3»! ~- - - I. . J :v.u or-.2-�030e�030�024am..~_':~, :1-9.51.:--�024:'.'.�030.v~.~�030:1-:~!s-»�030.�030;I�030cn.5-.-_»o-- 94» *.«.-_�024,
O '0 II..;FE.. n E .7 ___Figura 6.40 Uso de funciones agregadas. Fuente: Autor
Ejemplo: Para cada dpto, obtener e| nro de dpto, nro de empleados del
dpto y su salario medio.5_Y{�030L$o-la!-k7\¢:3:.:.7.=.n.ov~ovu._a�030.£i:_a.:u-13.5._- _n.-o~.::.:o-.o.-~»g«-o-.r~.,n __ ,T___4 ,____.___.e:.______ 2,, _�030v'9! ["5 in. §§, }401g:~u., 5-". �030-0�030q,
1- ..,.u .1�030-.-:..o.-5,-.,,':., = .«, o'-�030."- .c > s_ -. :3» -�030~.~49-.'v¢_«:___V �030<39�031.--�030->.%-4-.4-q'a�030:0.'.,}",p2l;_ H V
H<:'.t'7rv.'r§»m.->,:ge.-mv.'s:.* -.:a;_ select nd,count(�030)as nu,-:.~ero,avg(sa1ario) as prcx-..edio ,
V-3:23 from empleado «sq ,.1: group by nd;
tilI�031,lI J
n_;�030.�030!c .5, _
:15. .'-!.""._.,_\ .
.n-.-..-.|M 'm.':n.<eI*<o pwcmdro '
I 1 '-S5�0300G�030e-M00660A �0303 �030sroewaoaaee
5 a zsasegmm
M! 1,�030... 4 \ «av \ ax _ . '
.. .. �031.�030.:v.:-�030mes-':'~r�030.t:'m"$> .6!-.".!!.:fJ:T.'v'~3 qowvu-Jégr-.-:9 -er.-v-.vu '.'>-s
Figura 6.41 Uso de Agrupacién. Fuente: Autor
61
Ejemplo: Para cada proyecto en el que trabajan més de 2 empleados,
obtener el numero y el nombre del proyecto, asi como el numero de
empleados que trabajan en el.
:~ .,dJ.t'e¢-4:. _,.,,.- -.\u- ..v ;,r 3, - :24. ,1.,L: 'fv.'~!:I'\_ _ - '*-an--I 5*.�030-I- .. - r'£ ': �030.f'.d :�034;2:1.» ___ ___}402__ _i
-" �030' ..w.-..-:t~~:».*rc«:-~ewr!!:" - �030 �024_'select nurterop, nezabr-�030epr,count(")as numero_et:p1eados ,
~-la: from proyecto, empleado___proyectoQ _l ;
._,1 where nu:erop=nump
5 H group by nu.-.:er~op,no::brepu~ �030§~,�031 having count(') > :2
..___\,g4 l�030._g,�030_..
4- _3 --ou._I/. _-..g,|l,- . . _ �030
�030jg;.111-.h�030 r1ume'r~1:zv,> mmvumevr 'nWm�031eY~2:_;e�030M�030p1%J3�030d¢% K-�030
�030 72 Imomrtev �030s. 1'0 IA.ut'cn:'t�024i7za'ci-2'5?» 3
M �030I 320 IR¥or«ga1e.'i>2'a�030c'i«'6r:*. '3 _M whuret-'a«srn~e'st~ar<Ei2>.%:-�030s "3 �030
s . 3.�030;-�030r-�030x':.-;é:.rmi-..~; �030!:rdr.3.1:-¢c�030.�030v'.-VIM»5:�030.-'u5e:l!»:�030g¢4:ee~:5-«ww �030km:-x
�030C E . . ._ �034�030"" =
Figura 6.42 Uso de Agrupacién y having. Fuente: Autor
ORACLE
Ejemplo: Obtener el salario medio, méximo, minimo y total de los
empleados cuyo job_id se parezca a REP.�031
B: B! 20- anon 811- R809 hm! 103- I10
u.;u9u»x.1eo.o~w:- �030-F.�030�030AmmanD01»-um .3»-nun :�030n-«ma,T1-1.»-«mu "main ';Afr�030. "QUAD: J o.In3rz3s-um; ' V __ __ �030 _ �034__ . _.«-g.-33:3�030 .
i-IICJ.,):�030e.;e.ztad;:t;ca..'
.x~;l:c", aV1{J&1JY), r..r.:.-3.1�030.my), I
�030 mnisalary), sun(:alar)'~) '
from hr.cn::1oyoes
: where })b_xd lLko'lRE.?�031$':'
:;.u:.-arm slsonma-u�030U�030r.u¢.Drum-2 Fauowu �030
tn~h.U IN�254(SN.MY) .U IIAXQUNIMJ IQISMRDI IKNURVII
IEH.7 D}402 HID MID 273%! �030
�031 !
I
�030 !bu�030.. . _ ___ .__ _, . .._ _ . . __. ._ _ -'
: ._...___.i.._._.._..___.y.«...__ _.;J.___é £!�034~5_'*='*.__�030:�031E;L�034"*_-_"=F!l*F34]
Figura 6.43 Uso de funciones agregadas. Fuente: Autor
62 W
Eiemiloz Mostrar el iromedio de sueldo de cada Deianamento.V5--'~ V�030'---m -' mm-M�030-+~w..rrYn.1nu-.4-.,>.m.r»u..-.n--.«~.- ..: �030 _ jg�030
or an an u-we an nu-o sun: tan: «:5 F �031.'5..:B9~3v&L�030.nQ-G~'I:-
�034Ica:-anI }402banasd.3bU6.d �030Juanasd_¢nIa|m.wI 1.5..-¢,._., T.�031:t.".' P3550 3...! 3 opszsaamannz }401}402w.
. cum:-m In-mu-«--u. ' ' ' �031 �030-
PS :1, amp =v ~::"�0303~""*- JL�030.-.;td.p.rtr-nt ::l, .vg(-a1u:y)
4 frczn h:._e:*:1a';:cs »- I:
_ qr ' J_'�030by ."-j:..�035'»'�035».�031__i:.';'
�030R Jsmam}401vm}402nmxuimsomQauunu . 1
! I""".V.'_:.;(.0....,.,,,0_.'.0;;..'..,,;�034_�034_'_j_�030�034�030' �024* �034�024�034-'�034�034-�034�030W�034�024' �024--�024-�024�024----1
2 an 4151 I
- 3 "'2 E '�030 5 n max: »
E 6 N xm: mm 1
" 5 :3: '
n In D$SS.£E$&!Ili547Izm&�030.9llI7B\$BmI 1
ll 10 �030G I
�030 I1 00 27$
1 II am, �030' ' �030' ' ' "I|lanFdd�031u¢I2 _ |.h:4I6(d�024|21lint! Rind ll-tnt}402ilfE -
Figura 6.44 Uso de Agrupacién. Fuente: Autor
Ejemplo: Mostrar el sueldo méximo de aquellos Departamentos, cuyos
sueldos méximos sean mayores a 10000.
Us in W I-VIN Em Pb» Suva INI in
.3-.aa_a-u.«u_:.-n o_~o,-v;- :;)Q,c.n.¢a.. I tlmnma Ilmn-no ammu i»4_ou-emu }402u-¢an.d "M» '. .' >«_._�0303,G075 IA]: 4' gumsuaxam _ mm-'�030lmmunEn-Sail!�030-1:.
tx�030.t.rarag:u1.a.'.en';.- I�030.dVll1.] »�030:
I"�034'1-91*�034SLl�030.v...t_dep1_r'_n:'.nt 1d, :;_x(:;a1.\ry) �030l
| £1-on hr._e:;~J,oycc: �030;I '}rn.;- rs; '§;;v:.r{- ~-.'__i1 I: ha�030.'1r.g:ax..."a.�030.ar�030,'!> ]C0)0.'
: �024-~~~�024~~�024-�024�024~-«~�024�024�024~�024*~j~�024�024�024-«:1 ,�030tna:sHs:untam'Imnd~Ium.=2I.wsnzp.«'9av.o;,..
' J mum-an_p -I woman
: f 2 3 l
! II Emu '-
llavtftltuedhe |he127(al~\2! Bud I772»! -' Ed -
Figura 5.45 Uso de Agrupacién y having. Fuente: Autor
Resultado:
No hay diferencias en cuanto a funciones agregadas y de agrupacién en
ambos gestores de bases de datos.
63
6.3.4.10 COMPARACIONES DE SUBCADENAS, OPERADORES
ARITMETICOS Y ORDENACION
SQL Server
Ejemplo: Obtener todos los empleados cuya direccién esté en Higueras,
estado de México.
3* ._9J.1.�030Hrl~m.�030u,"..,.":,�030;\_,'-�030-2 1,? _9_ -. 2:�030-.3�035»uggg-91'-q_ __> sYL_«u-iii-; .f{-II.'_;".a"_;�030;?"gl.~�030_-A _ _
.'((~sa-�0301rf>:�031~=�030t»�030§M4w'.,.e:."-- A A W _.-j _�024_�030",""�030select no:-.br-ep, apellidoam:-.-412». from empleado
7:: where direction like �030%Higueras,MX%' ':; J
.. J
~.La_n_v �030
+__!,§
-v _yr4so .__)�030 9 .
0 .g_ E�030._ . .
4:13�030J�030,.._!_u,I .
«entre» azzaeumo �034
I £695 same 'Federica Vizeewa
lame aotellxaM-me-zi aahba» �030
. .. 9::-�030r�030r::"::n'!:'2K*.'.\ 5'4»:-'!|I'2:-�0301:�030.�030."-�034I5-�031-en.--�024.-5:-go-9|}-at-ev-a ?.I=I,�034:t«-.'~«6
O O 86 ,, A .Figura 6.46 Uso de like. Fuente: Autor
Ejemplo: Mostrar los salarios resultantes si cada empleado que trabaja en
el proyecto 'Producto X�031recibe un aumento del 10%.
m er» ~-�024z.-. -- : «-- '�030-._dJ 4---rz»-o '.3,-.,),- ..g- - ..~ 1, > .3_ s 7:4. ix.�031-'[.�030P'!'I�030A__::_"7.-�034"-§'I:.'.«c.";.}�030.Q:�030_'.�030:p�031.p*-;_______________ ____>
-'= �030.¢(.�031(~.;o�030.-i-é�030--�030Cg-2~49m7\:'- _
"'" select nombrep, apellido, 1A1�030sa1ar-�030ioas '1.1�030sa1ario'«$69.03.
-.J_,Iu from empleado, eI:pleado_proyecto, proyecto -1:�031;where nss=nsse and ntz.'1p=nm:erop and no:brepr='Pr'oductoX' �034
1.1 II .1I J
-.;:-_n;4.; -.._yq
-'31�0311 ... __v« 5�030�030, ,
"_�030%_.sIte:.hlh�030cx:?weaa evelllda '1.1�030~sam~i_'o '
5693 �030Sims s�030aa<ao&tae .J.�030»�030e*s~e~'Fa �030Espaw:-a �030-zrsewaae
(�0302mix) a?Fe<§:e�031c|) _
s -. a-�030:V¢I..:F�034r'-�0309�030I5�030l9'!(I0'f�030--�030 �030 '5"-�0304�030.f.M-:-5:§'.b'C9}402-go-.-vvrz-Ihoen R174�030,--;v,
0 6 Fh_.,.!E?; a = 6 , . - -= -�024=.:;';...IFigura 6.47 Uso de operadores aritméticos. Fuente: Autor
64
Ejemplo: Obtener una lista de empleados y de los proyectos en los que
trabajan, ondenados por dpto y, dentro de cada dpto, alfabeticamente por
apellido y nombre.
�030in:2 vb Ica: hr�030?9-0.»: N. -vd_- 5» " �034 ""�030 �030�034
'.'~ ._dJ 4�031-9-.�030-:11.».;_�024.,=.,,» .;s,- - .3�030a. - 9_ -. 2;.-. .1»,�030-3'5!-9.-in _ _~ ' =1-AM '~�030~-9- .. ~ n�030a'�030J.(�030.42�030:1 1.-, V 7
=°�024 " �030�030!E£¢9¢r_�030.'st�030¢!:¢!k"§r.~49-1:555"- _
select no.-:bred, apellido, no.';br�030e_p,no:-brepr
»--3.3 from depar*ta_r.1ento, empleado, er1pJ.eado_proyecto, proyecto '=
�030.,gwhere numerod-'=nd and nss=nsse and r*ur:p=nu.::-rop;_'f order by no::br~ed, apellido, nonbrep _
» " 1} S�034_':; '-\I§.1'}401_3-we-=___________ _ ______ _________ _______ _ ______ _ _____________ :______
. �034jg -zavelliaa hbwwep narkswenv �030~IL1.�031- ;--.».».--.\-.-.--.~. >..-.au.-_�024.;-..---.;-...---_;-.»~.-.;--.-. �024�024¢�030m�030�024�024t'<;:'-.l=';;�0244�034�024;i
3 axdm�030m�0301s'tvnxciisxr.aabbar mwa /::¢'t'o'ma"-(1-zac '1(9n �030" �030 /Lumiwaist-naziiisn Jab�0315a1~ Ahmed Né@0a%J9'r�030é�030s't8é§bhE�031s .
A:c:m�030m.istrati£5nvalees aa:1a'1ra Rev-m~.gav.'1zwa'c�030m'm¢:dn�0301\zis�030t':�030e�030¢iz'$nmaze aeazv}401m Ner'e~z~asgs1~é~.&a'ci'cn%�031sMminiswatiisn rfapaba Alida Auhsmaii-2-ac �030Mna.'dm'm'is"t'r\xcii5n rzapa}401a I.Ix'1"i<<'§-a Mum-'asq;rr<e:?:a<*1'<5h�034e�030sDir:-rci}401r. |eo�030te.iin 3~a�030iwne �030Réowganiz«ac'i<<�0309h .
H�034�030|"§\_V/3E�030.*aab�030P§'p'<.V\fknab-91 1N2-bf: 0wn'éhu:%-AV �030'
. . A7 .�030-.�030a-2'2:-en:'rmr.-1 ':�034.13�034»'.'&:-3:\�030;'-�034PM,(Vt.-!7re<�0305Z�030v}402»f�034l§�030r'�024:-�030-.939 �030!!�030.''s
._,, . �024
9"!e"E<1;e"'%Figura 6.48 Uso de Order by. Fuente: Autor
ORACLE
Ejemplo: Obtener todos los empleados cuyo salario sea >= 10000 y su
job_id sea parecido a MAN.
R {R $01 D}401llean Duo Sun 106! t}401
a3.;au-.:..x:=:o-0--L F,�030(AcamunD 'ibo¢a.u 2h-curd Nunwsv '1-d.w-w-:¢.__�035oi-unwind "'
-�030 "3-°"�031.'°_9�030-5�0314-_=-M . __ . _ , _ .. _ - 1-'~';
*?;;"=* °*".�034r:.=.-J ..54,33» , :!r�030;eC's:p..ys.~n xd, Las: narre, 1:-b id, 5a1=.\:"[ M�030
V [r.:n hr.er;:;:vye-3:1
I where .:a1sry > 1006 �031
an} 'vob_1.d l.:.}v.~.~ '11S.h.'I%'.'H I. �030 |
ji'.;.'Z1;T,�030J£�030.,.\:]$..'i�035.7.T2:h7;.'?.;.ivI3ZT?.7;'."' �034"�034�034�030�024�024*�030�024"'*�034�030�024�024�035"�024�024*"�030�034""�030JN "'B', .1 aqmvgpl usuu-I:l 1:111 stun�031: '-
1 NHIIIMOI �034OCH 1% A
I I I Iuunhliv numd um I
3 using Slu}402 14%
i �030 4 l}401htls510% I83
�031 3 11.?2.�034..2:3 173.7.�031 �0301 1 lwb}401uy sA_nuu nun
l I
I
! .l 1..., �030""" �030 "' �034"' ' ' ' �030un�024.re.n-1:7 _ _ _ �030 _ mnnuma but man won: 5 -.
Figura 6.49 Uso de like. Fuente: Autor
65
Ejemplo: Mostrar los salarios resultantes si cada empleado que trabaja se
le aumenta de acuerdo a una férmula aritmética.
�030Baiaxuu-muons:-\I2-hxvvscvmlndrnrc.:_.aa.-o.=ae:.-::o.o.�0249..- �030~�030:�034:�034�034AcumenC dew-nu no-and an-«.24: J-4.:-r-and 11¢;-same ~'4�030. �030_PEQ}402_C>3UH O a.uum=m-u3u_z _ ,,,.g,-'
W-M 7-Lthm I-105�0301ast_name, salary. 1-�030(salary+1367 ) �034�030�034Q-�035"�030fun hnemplayees: �030
I�031 10.10% la:t_name, salary, salary �030Te�031.commission_pct
' ;;�030.:..._.,.,.:...,;.....,...-......._u.,.s...,'.¢.,.c..,." "�030�024 ' �030' * ' �034' �030�030*"W�030HIS.. ,- , . ,_-. ____. -__,. _._.____,_____._.______ ___.__.______,___
I V W:l,A,sr:4n§.ti.s«m_:_2_z-:s,u;4vs:m) 'local-ml Na 3200) I
I 32.�031; "..T.'.T 3.,�035I uuuxin mm 191:)
I Sig am 71$
q mum am am
: noon ram
r 41$ :3 53l Ilrzxmau Imm mean I
I unnsn noon usan' nmmu own man :
140!�030 com 73%
lihu}402l CD f I
I asmuu saw an:
@9..4g,,,¢g1 l.�031nt2D(d.InIE-at Pnfcdllvtuaouf �030 .
Figura 6.50 Uso de operadores aritméticos. Fuente: Autor
Ejemplo: Ordenar a los empleados por Departamento y dento deDepartamento en forma descendente por sueldo.
532%: §�031.�034.§°é�031�034i."�030..�030;�030i�030ii. =:�024";xq¢..,.,-,,. 5 }1n¢an.uu_ Sauna»; Iluuatud ElV4d.9°rmiur-.91 }402-chi-�031nl.sd 3
git �030u�031 _P¢:930 35.�030.u,4M§msmn1s " _ _�030 lnu}402}402t-Irl:_ " '
A;"}402)�030l �030[
3'�034"'�035°"//Wdenando por x:.1Hp�030.e;::::;*.t-nan i
I Jel-act last name, 3w!) .\:1, department Ld, salary
fr.r hr ., xzplo/: ..>.s . |
orccr- by do'_:>.1:t:.~:'.:t__;d, :a,1a_.r-;» c1c:c.'| J '
. _:,'_. __t_ __ _ _ _ �030__Yr.i_ j.�024._._..; ._. ;�024j�031�024�024_ID. was hr}-:o�024u¢u.-u514;» �030Man!J_=unsm:u Q\om-cumMats:
! J _l,}401}402JL!'(,xL!WJD..5�030.Jxmrxgml .2142: !�030 Ivhlm ADJ�031-931 no «N �030
| :33�03552.2�030 2 2? rI nanny 611-)!!! 8 mm
I If. 3:? �030.3 Z �030St}401nmuu }402.l_u£�030RK N E)
lumwh 6}402_}4023�030 40 E
3 :2: :1: :2 2:�030 .t:w!u..... swan __ �024 ..-su Jam 7 7 _ iv
flu-7
fculzdllsvf}401i Iiel}402cd-n57I-nc( lhfdvh}401ur N
Figura 6.51 Uso de Order by. Fuente: Autor
Resultado:
No hay diferencias en cuanto a comparaciones de �031subcadenas,
operadores aritméticos y ordenacién en ambos gestores de bases de
datos.
66 9
6.4 LENGUAJE DE CONTROL DE DATOS (DCL)
SQL Server
Ejemplo: N:-.3-gar el acceso de insercién y eliminacién de registros sobre las
tablas pedidos y clientes.
:.,_'!..�030vuMor'I\a.l.�030;e:v-uilanouucnktncs_ -_ _ _ _ _ V _ _ _ _ V _ ____ .__
Nd'heE}402lVIPIwI¢nlVuI�030lPInliI|u\'IlnoCuIuibdAy}401l
;4m.....a. ~« -\,�024\_..:.,-A_u I.�031.\_=: L __ _ k _ - ' - ,.Enxm¢-our 1 �030v I X suoi:n§u.\:-}'itmr . x v�024~u xc¢..¢.v9I E n V �030W�031-3-' **-' �024' .
�030Tgf_§.;.i_s3:.:�034.;m.xw..eI«.;a._,, .,.,,.,..,,,. �030-_r�031:§"f«"_':/7%?e�031:.°::.*:.°:;:%:.m. �030=3
. ., °° B-3 ?='-*«- 2:? �034T?"W- o:,�031l:;n:sdshnd:-inns ""' - �031'
o.g,wu "�034o�024_l_.\�030:2as t
..'%...,,,.....""**°' *< �035ugsgvuauuu -|-Na-H�030NEsughmsutma taxman mwlnauus cmvnuum-.
--.Luu-nus:3-0° MateBeau: E
:;::m'Wem_:e....., V
9- �030""�030 5 Jmuncpnxuumumma u<-n(m.s:m) n:-aw.-ucsao qua» man an.
ayuda - I )1
Ni:
�031.:°:.:�030..:4
...««::__~-.«~~ . rs ¢~.r_.~_~ �030-T-.a_==.»_
Figura 6.52 Uso de DENY. Fuente: Autor
Ejemplo: AI mostrar la Base de Datos en modo interactivo, se puede
verificar los permisos y denegaciones para dicho usuario.
:;I.>;IV'WMn_01lK!9!r�030!�030VlI\_-KHIRIHI_ _ _ _ 7 �030 _ V _ _-,_";d
.-.5... -i"---='v*�030�024-�030-'*=5. Nah-auni liquid
El-hv}402-db: �030-3-I
[sort Had: To:
E�031: 3 ::
fninuaundnduk hang-mm A �030Enuféo vwle
2:-L 'I:w'II1Inm�031- Canada: Du: _
33"�034 �030:.:�030�030�030'�034�030Z 5; LaD:-can Eii-II an :I3 " nu""�034"�030Ina. av 51 V�031! Fem�035;-5�030-nanum. a. rt *~ H
�034" Mum�031. uh: �030t'_ I:
.3. 2: Are 2vu--u�030-sum-u-as a. Q Q T!_
L:..}401:tc:..-mmnafa___w« _ _'__.?w*w�030»L' �030 es =1»
Figura 6.53 Verificacién de DENY. Fuente: Autor
67 7
ORACLE
Ejemplo: El usuario Scott necesita consultar Ia tabla curso.
SQL> Grant Select On curso to Scott; 'Grant succeeded.
Ejemplo: Ahora hagamos la pueba respectiva.
SQL> connect Scott/tiger�030Connected.
SQL> select * from egcc.cur-so; '
mcu NOMCURSO VACANTES MATRICULADOS PROFESOR PRECURSOcae1 Oracle 11g 29 19 Gustavo Perez 35a
Resultado:
Hay diferencias en la forma de otorgar los privilegios y autorizar el uso de
los objetos en ambos gestores de bases de datos.
68
6.5 CUADRO COMPARATIVO RESUMEN DE LAS CARACTERISTICAS DE
LOS LENGUAJES DE PROGRAMACION ALGEBRAICOS
actuales (2013) 2012 R2
de}401niciondc tablas, etc)
do grupo,
. subconsultas..etcDCL (Administracion de X X
usuarios, creacion yadministracion dc roles,
otorgar y quitarprivilegios, etc)
excepciones
almacenados
de Datos _
Soporte de SO Solo MultiplataformaMicrosoft ( Windows,(XP, vista, Linux, unix,
windows etc)server 2000,
2003 y 2008)
Figura 6.54 Cuadro comparativo resumen de las caracteristicas de los
Ienguajes de programacién algebraicos. Fuente: Autor
69
M�035
6.6 CONTRASTACION DE RESULTADOS ENTRE ORACLE Y SQL SERVER
_ CONTRASTACION DE
RESULTADOS ENTREORACLE Y SQL
SERVER
ITEM ORACLEOPERATIVOS 2003 y 208, Windows (32 y 64 bits), Unix (Solaris, HP_UX, AD(, etc)
Windows 7, Windows 8
SQL 2012EDICIONES En términos de ediciones de SQL Para Oracle 11g R2, los variantes
Server 2008 R2 ofrece actualmente son:los siguientes: _ _ _
Enterprise Edition: Esta ofrece
A Enterprise Edition: La edicién el maximo rendimiento por tuEnterprise tiene todas habilitadas las dinero. Al igual que el SQLServercaracteristicas avanzadas y es apto Enterprise Edition, todas laspara a gran escala, sitios de base de caracteristicas y las capacidadesdatos de alto volumen. del producto estan permitido enStandard Edition: Este ofrece una esta edicién.plataforma asequible para las Standard Edition: Al igual que elempresas que no requieren de las estandar SQL Server Edition, Ia}401mcionesavanzadas de la Enterprise edicién estandar de Oracle tieneEdition. La mayoria de las empresas habilitadas las principales
suele desplegar sus bases de datos en caracteristicas del producto y eslas instancias de la edicion esténdar. adecuado para aplicaciones deWorkgroup Edition: La edicion de negocios.grupo de trabajo es adecuada para Standard Edition One: Estapeque}401as aplicaciones edicién esté dise}401ada paradepartamentales e incorpora las peque}401osgrupos de trabajo y lacaracteristicas esenciales del Iicencia para un méximo de 5producto. usuarios.Web Edition: Esta es la destinada a Express Edition: En peque}401aser utilizada por los proveedores de escala, base de datos inicial paraalojamiento como solucion back-end }401nesde desarrollo y tiene Iicenciade bajo coste para aplicaciones web. para redistribuirloExpress Edition: motor del servidor libremente. Express Edition 10g
SQL embebido que puede ser esté todavia en la version R2.utilizados para el almacenamientolocal de datos y sistema de desarrollo
- de peque}401asescala. La ediciénExpress se puede descargar gratis ypueden ser distribuida gratuitamentecon un so}401ware.Compact Edition: La ediciénCompact permite a los usuariosdesarrollar aplicaciones paracomputadoras de escritorio deWindows y dispositivos de mano.
I
Developer Edition: Todas lascaracteristicas de laversion Enterprise Edition estadisponible en la edicion paradesarrolladores. Sin embargo, tieneIicencia de uso por un usuario a lavez y esta destinado a ser utilizadopara }401nesdc desarrollo y pruebas.Aparte de la version EnterpriseEdition, SQL Server 2008 R2
también ofrecera dos ediciones�034premium�035para los grandes centrosde datos y data warehouses. Estasediciones se llamarén DatacenterEdition y el Parallel DataWarehouse Edition,respectivamente.
COMPARACION Enterprise Edition Enterprise EditionENTRE LASDISTINTAS Standard Edition Standard Edition
EDICIONES Workgroup Edition Standard Edition One
Edition Express Express Edition
Web Edition X
Compact Edition X
Developer Edition Enterprise Edition
NIVEL FISICO bases de datos de sistema Cuando Oracle se inicia, }401mciona(model, tempdb, master, igual que SQL en que una porciénmsdb y resource ) y bases de datos de la memoria del servidor sede usuario. asigna para su }401mcionamiento.En el nivel }401sico,una base de datos Esta area de memoria, conocidode SQL Server esta representada por como el Area Global de
�030 un conjunto de archivos del sistema Sistema (SGA), se divide en unaoperativo que residen en el sistema serie de estructuras diferentes.de disco del servidor. Hay dos tipos Junto con el espacio de memoria,de archivos de base de datos: una serie de procesos de fondo queel archivo de datos y el archivo de también se inician para interactuarregistro de transacciones. con el SGA. En conjunto, el
espacio de memoria y los procesosconstituyen una instancia deOracle.Los archivos que componen unabase de datos de Oracle se puedenclasi}401caren tres tipos: el archivode datos (data }401le),archivo derehacer (redo log }401le) yel archivo de control(control file).Los archivos de datos es donderesiden todos los datos. Puedehaber cualquier numero de
71
archivos de datos en una base dedatos de Oracle. Archivos Rehacerson como los archivos de registrode transacciones de SQL Serverque registra que cada cambiorealizado a los datos y se utilizapara la recuperacion del sistema.Los archivos de control son un tipoespecial de archivo que contienepeque}401aspiezas de informacionvital acerca de la base de datos. Sineste archivo, la instancia no serécapaz de abrir la base de datos.Aparte de los archivos de datos,
archivos rehacer y los archivos deA control, la base de datos contendra
también un archivo deparémetros, y un archivo decontrase}401as, opcionalmente,archivos de registro dearchivado (archive �030log}401le).Espacios de tablas (tablespaces).Un espacio de tablas de Oracle esuna estructura logica que agrupa alas tablas, vistas, indices y otrosob�031etosde la base de datos.
�024�024_
Figura 6.55 Contrastacion de resuitados entre ORACLE y SQL server. Fuente: Autor
72¢»
vu.- DISCUSION
1.- La comparacién de los resultados se realizaré con los resultados de
otros autores en los procedimientos a nivel del Lenguaje de definicién de
datos (DDL), Lenguaje de Modificacién de Datos (DML) y Lenguaje de
Control de Datos (DCL), que son los aspectos en que esta investigacion ha
realizado Ia comparacién a nivel practico de SQL y ORACLE.
2.- De acuerdo a la investigacion realizada se puede concluir que a a nivel
de Lenguajes de Definicién de Datos (DDL) existen diferencias en cuanto a
la creacion de Base de Datos, en SQLServer se asigna la ubicacién fisica
de la Base de Datos y crea un archivo con extension mdf y log. Y en
Oracle se crea un Usuario y se le asigna en algun tablespace y luego se
asignan privilegios para crear tablas. '
No existen diferencias en el comando check constraint, en ambos SGBD.
Hay diferencias en la sintaxis para otorgar un valor por defecto en ambos
Gestores de Bases de Datos ya que en Oracle es necesario ingresar el
comando Modify.
Existen diferencias en la sintaxis para otorgar un valor por defecto en
ambos Gestores de Bases de Datos ya que en Oracle es necesario
ingresar el comando Modify.
Hay diferencias en los comandos para modificacion y eliminacién de'
columnas en ambos Gestores de Bases de Datos ya que en Oracle es
necesario ingresar el comando Modify, pero no hay diferencias para
O adicionar columnas. V
No hay diferencias en el comando Insert en ambos Ienguajes algebraicos.
No hay diferencias en el comando Update para actualizar filas en ambos
Ienguajes algebraicos. �031
Hay una peque}401adiferencia de sintaxis en el comando Delete, ya que en
SQL no requiere de la clausula from.
3.- En cuanto al Lenguaje de Manipulacion de Datos (DML) se comprobo
las siguientes similitudes y diferencias: '
No hay diferencias en cuanto a Sentencias Bésicas en ambos SGBD.
No hay diferencias en cuanto al manejo de nombres de atributos ambiguos
en ambos gestores de bases de datos.
73
W
No hay diferencias en cuanto al manejo de nombres de atributos ambiguos
en ambos gestores de bases de datos.
No existen diferencias en cuanto al manejo de clausulas where no
especificadas y empleo de *, en ambos gestores de bases de datos.
No hay diferencias en cuanto a tablas como conjuntos en ambos
Ienguajes algebraicos.
No existen diferencias en cuanto a consultas anidadas y comparaciones
de conjuntos en ambos gestores de bases de datos.
La funcién exists solo existe en SQL 2005, pero no existe en ORACLE.
No hay diferencias en cuanto a conjuntos explicitos y valores nulos en
ambos gestores de bases de datos. _ .
No existen diferencias en cuanto a cambio de nombre de los atributos en
ambos gestores de bases de datos.
No hay diferencias en cuanto a funciones agregadas y de agrupacion en
' ambos gestores de bases de datos.
No existen diferencias en cuanto a comparaciones de subcadenas,
operadores aritméticos y ordenacién en ambos gestores de bases de
- datos.
4.- En Io referente a Lenguaje de Control de Datos, se hallo las siguientes
similitudes y diferencias:
Existen diferencias en la forma de otorgar los privilegios y autorizar el uso
de los objetos en ambos gestores de bases de datos. I
5.-.Podemos concluir que las diferencias entre ambos Ienguajes es mayor
a nivel de Lenguaje de definicién de datos (DDL), siendo minima la
diferencia en el Lenguaje de Manipulacién de Datos (DML) y existen
peque}401asdiferencias a nivel del Lenguaje de Control de Datos (DCL).
6.- También podemos concluir que existen diferencias a nivel de ios
sistemas operativos donde corren estos SGBD, mientras que ORACLE es
multiplataforrna, SQL server solo se ejecuta en el Sistema Operativo de
' V\}401ndowsde Microsoft. �031
' También existe diferencias en cuanto a costos, ya que el costo de utilizar el
�031ORACLE es mayor que en SQL server. A
Desde el punto de vista del software, ORACLE ofrece mas ventajas, como
por ejemplo el uso de DATAWAREHOUSE y MINERIA DE DATOS, que
' 74
M�035
forman parte del Lenguaje. SQL también busca mejorar estas
caracteristicas. Ambos utilizan el Modelo Relacional.
7.�024Se podria ense}401arSQL server en un curso inicial de Base de Datos,
por su mayor simplicidad y en un curso més avanzado ORACLE, por ser
més complejo.
75
�030 Vlll.- REFERENCIALES
1.- DE MIGUEL, ADORACION Y PIATTINI, MARIO. Fundamentos y
Modelos de Bases de Datos, México: Editorial Alfaomega, 2da edicion,
1999.
2.- ELMASRl/ NAVATHE. Fundamentos de Sistemas de Bases de Datos,
México: Editorial Prentice Hall, 5ta edicion, 2007.
3.- REINOSA, ENRIQUE JOSE I MALDONADO, CALIXTO
ALEJANDRO,..OTROS. Base de Datos, Argentina: Editorial Alfaomega
Grupo editor Argentino, 1era edicion, 2012.
4.- SILBERSCHATZ, ABRAHAM Y KORTH, HENR, Fundamentos de
Bases de Datos. Madrid: Editorial Mc Graw Hill, 4ta Edicion. 2002.
BlBL|OGRAFlA VIRTUAL
* Documentos de Intemet, relacionadas al tema
1.- httgz//www.uhu.es/iacinto mata /*Universidad de Huelva*/
76
|X.- APENDICE
77
ADICIONALES DE SQL
1.- /* exl obtener nombre, apellido y nombre del departamento de losempleados nacidos entre 1950 y 1960*/ .
select nombrep, apellido, nombred . t�031 from empleado, departamento
where (nd=numerod) and fechan between '19550101' and '1960123 I�030
nombrep apellido nombredJosé Silva InvestigacionAhmed Jabbar Administracion _Alicia Zapata Administracion
2.- /* ex2 Para cada departamento obtener el nombre del departamento, asicomo el numero de personas que trabajan en el, ordenado alfabéticamente*/
select nombred as Departamento, count(*) as NroPersonafrom empleado, departamentowhere (nd=numerod)group by nombredorder by nombred r .
Departamento NroPersonaAdministracio 3 'Direccion 1Investigacion 4
3.- /* ex3 Para cada departamento , donde trabajan mas de 3 personas,obtener el nombre del departamento, asi como el n}401merode personas quetrabajan en el, ordenado alfabéticamente*/
select nombred as departamento, count(*) as NroPersonasfrom empleado, departamentowhere (nd=numerod)group by nombredhaving count(*) > 3order by nombred
Departamento NroPersonasInvestigacion 4
4.- /* Mostrar nombre, apellido, salario de los empleados que trabajan en eldepartamento de investigacién si tuvieran un aumento del 25%*/
A select nombrep, apellido ,1.25*sa1ario as Nuevosalario 'from empleado, departamentowhere nd=numerod and nombred='Investigaci<�031)n'
78
nombrep apellido NuevosalarioJosé Silva 37500.0000Federico Vizcarra 50000.0000
' Josefa Esparz 31250.0000Ramén Nieto 47500.0000
5.- /*ex5 prepare una lista de nombre y apellidos de todos los gerentes dedepartamento que tienen hijos con su mismo sexo*/
select distinct nombrep, apellidofrom empleado, dependiente, departamentowhere nss=nsse and nd=numerod and empleado.sexo= dependiente.sexoand (parentesco='hija' or parentesco='hijo')
nombre apellidoFederico VizcarraJosé Silva
6.- /*ex6-obtener el n}401merode empleados que trabajan en el departamento~ ='investigaci<')n'*/
select count(*) as NroEmpleadoslnvestigaciénfrom empleadowhere nd in (select numerod
from departamentowhere nombred='investigacién')
NroEmpleadoslnvestigacién4 .
7.�024/*ex7 obtener el n}401merode empleados que trabajan en el departamentode 'investigaci('>n'*/
select count(*) as NroErnp1eadosInvestigaci('>n5 from empleado, departamento
where nd=numerod and nombred='investigaci<�031)n'
NroEmp1eadoslnvestigacién4
8.- /*cc16 Para cada proyecto obtener el numero y el nombre del proyecto,asi como el promedio de sueldos de los empleados que trabajan en e'l.*/
select numerop, nombrepr, avg(salario) as Sa1arioPromfrom proyecto, empleado_proyecto, empleadowhere numerop=nump and nsse=nss
_ group by numerop, nombrepr
79 ,-
numerop nombrepr SalarioProm1 ProductoX 27500.0000002 ProductoY 0 31666.6666663 ProductoZ 39000.00000010 Automatizacio 30000.00000020 Reorganizacién 4600000000030 Nuevasprestaciones 31000.000000
9.- /*cc17 Mostrar los salarios resultantes si cada empleado que trabaja enel proyecto �034Reorganizacion�035recibe un descuento del 10%.*/
select nombrep, apellido, 0.9*salario as Descuentofrom empleado, empleado_proyecto, proyectowhere nss=nsse and numerop= nump and nombrepr='Reorganizacion'
nombrep apellido DescuentoFederico Vizcarra 36000.000 'Jaim Botello 49500.000Jazmin Valdes 38700.000
10.- /*cc18 Obtenga los nombres de todos los empleados del departamento .4 que trabajan mas de 20 horas por semana en el proyecto�030Automatizacion�031*/
select nombrep, apellido, sum(horas)as horasfrom empleado, empleado__proyectowhere nd=4 and nss=nsseand nump in (select numerop
from proyectowhere nump =numerop and nombrepr = 'Automatizaci<')n�030)
group by nombrep, apellidohaving sum(horas) > 20
nombrep apellido horasAhmed Jabbar 35.0
11.- /*cc19 Obtener el nombre de todos los empleados que tienenconyuge.*/
select e.nombrep, e.apellido �030from empleado ewhere e.nss in (select nsse
from dependienteA where nsse=e.nss and parentesco='c<')nyuge')
nombrep apellidoJose�031 SilvaFederico VizcarraJazmin Valdes
' so
12.- /*cc20 Seleccionar nombre y apellido de los Empleados que nacieronentre el 58 y 60.*/ �030
select nombrep, apellido -from empleadowhere fechan between '01/01/58' and '31/12/60'
nombrep apellidoAhmed JabbarAlicia Zapata
81
' UNIVERSIDAD NACIONAL DEL CALLAO A. Facultad de lngenieria Industrial y de Sistemas
SYLLABUS1.- INFORMACION GENERAL
1.1 Nombre de la Asignatura: Base de DatosNro : 43 'Cédigo del Curso : PCO83
1.2 Carécter : Obligatorio �0301.3 Pre-requisito : Lenguaje de Programacién III
1.4 Numero de créditos 2 04Horas semanales : Seis(06):Teoria : 02 Hrs.Préctica : 02 Hrs.Laboratorio 2 02 Hrs.
1.5 Cicio Académico : Octavo Ciclo1.6 Semestre Académico : 2013-111.7 Duracién : 17 semanas1.8 Profesora : Mg Bertila Garcia Diaz
2.- SUMILLAProporcionar al estudiante los elementos ba'sicos del procesamiento *de datos. Modelamiento de BD. Modelo Relacional, AlgebraRelacional. SQL. Normalizacién. Datawarehouse y Bases de Datosdistribuidas.
3.- OBJETIVO GENERAL:Conocer las técnicas de Dise}401oque permitan dise}401aruna Base deDatos en todos sus aspectos.
4.- COMPETENCIAS- Domina una Metodologia de Dise}401ode Base de Datos.
0 Dise}401aBases de Datos usando el modelo relacional.0 Crea Bases de Datos usando el SGBD SQL, realiza consultas,
passwords. Etc.0 Dise}401aBases de Datos a partir de Documentos.o Comprende la importancia del Datawarehouse en la toma de
decisiones.
5.- PROGRAMACION DE LOS CONTENIDOS
UNIDAD I: ARQUITECTURA PARA SISTEMAS DE BASES DEDATOS
Contenidos Procedimentales0 Describe los diferentes niveles de la arquitectura de las Bases «
de Datos.
Contenidos Actitudinaleso Distingue los diferentes niveles de la arquitectura de las Bases
de Datos.
82
M�031
Contenidos Conceptuales
Primera Semanalntroduccién a los Sistemas de Bases de Datos. Diferencia entrearchivos y Bases de Datos. Deflnicién y Arquitectura de un Sistema deBases de Datos.
UNIDAD ll: MODELADO DE DATOS CON EL ENFOQUE ENTIDAD-RELACION «
Contenidos Procedimentales
o Esboza modelos entidad- relacién
Contenidos Actitudinales
o Expone diferentes ejemplos de modelos entidad- relacién A
Contenidos Conceptuales
Segunda SemanaEnfoque de modelo de Datos Entidad-Relacién, Guias paradeterminacién de Entidades, Atributos, Relacionamientos.Laboratorio: Pr. de Modelamiento N° 1
Tercera SemanaAsociaciones bésicas del Modelamiento de datos. Controles deNegocios: opcional, mandatoria. Laboratorio: Pr. de Modelamiento N°2 �024Pr. N° 3 de Erwin. .
Cuarta SemanaExtensiones al modelo E-R: Clasificacién, Generalizacién, Agregacién.Laboratorio: Pr. de Modelamiento N° 2 - Pr. N° 4 de lng. Delantera yReversa.
UNIDAD III: MODELO RELACIONAL Y ALGEBRA RELACIONAL
Contenidos Procedimentales
- Modifiga el Modelo Entidad �024Relacién al modelo Relacional
Contenidos Actitudinales I
o Transforma el Modelo Entidad �024Relacién al modelo Relacional.
Contenidos Conceptuales
Quinta Semana
Modelo Relacional: Conceptos, relaciones, dominios, tuplas, clavesprimarias y foréneas, reglas de integridad. Laboratorio: Pr. N° 5 deModelo Relacional.
Sexta SemanaModelo Relacional: Algebra Relacional. Operaciones con algebrarelacional. Laboratorio: Pr. N° 5b de Algebra Relacional. 1° Précticacalificada de ERWIN
' 83
Setima SemanaConversion del Modelo ER al Modelo Relacional. Laboratorio: Pr. N°5c de Conversion del Modelo ER al Modelo Relacional. Exposiciéndel Avance ER. �031
Octava SemanaExamen Parcial.
UNIDAD IV: SQL
Contenidos Procedimentaleso Administra una Base de datos en un SGBD como SQL server
Contenidos Actitudinales
o Ejemplifica una Base de datos en un SGBD como SQL server.
Contenidos Conceptuales
Novena SemanaSQL: caracteristicas, definicién de tablas, reglas de lntegridad,manipulacion de datos y desarrollo de Aplicaciones. Laboratorio: Pr.N° 6 lntroduccién al SQL.
Decima SemanaSistema Relacional: Vistas, SQL embebido. DDL(data definitionlanguage). Laboratorio: Pr. N° 7 SQL �024DDL _
Onceava SemanaSQL. DML (data manipulation language), DCL (data control language).Laboratorio con SQL SQL2008. Laboratorio: Pr. N° 8 SQL -�024DDL - 'Pr. N° 9 SQL �024DML. .
UNIDAD V: NORMALIZACION
Contenidos Procedimentaleso Esboza el modelo fisico a partir de un documento.
Contenidos Actitudinaleso Dise}401ael modelo fisico a partir de un documento. �030
Contenidos Conceptuales
Doceava Semana .Normalizacionz Primera, Segunda, Tercera y Cuarta Forrna Normal.Aplicaciones. Laboratorio: Pr. N° 10 SQL - DML. (Compa}401ia)- Pr. N°12 Normalizacion.
Treceava SemanaCuarta Formal Nonnal. Ejemplos de Aplicaciones. Laboratorio: Pr. N�03411 SQL �024DCL - Pr. N° 12 NormalizacionUNIDAD VI: DATAWAREHOUSE Y BASES DE DATOSDISTRIBUIDAS
A 84
Contenidos Procedimentales
o Esboza la importancia del Business Intelligence en la toma dedecisiones.
Contenidos Actitudinales
o Comunica la importancia del Business Intelligence en la tomade decisiones. �031
Contenidos Conceptuales
Catorceava SemanaFundamentos, Dise}401oy Construccién, Uso del Datawarehouse,Mineria de DatosLaboratorio: Pr. N° 13 Procedimientos Almacenados - Pr. N° 14
Funciones.
Quinceava SemanaSistemas distribuidos; Bases de datos distribuidasz lntegridad,recuperacién, concurrencia. Sistemas Cliente/servidor. 2da Précticacali}401cadade SQL
Dieciseisava SemanaExamen Final.
Diecisieteava SemanaExamen Sustitutorio.
6.- CRITERIOS DE EVALUACION:
N1: Nota de Primer parcial (Primera Parte)N2: Una nota de Trabajos PrécticosN3: Una nota de Examen FinalPromedio General = (N1 + N2 + N3)/3
7.�024 METODOLOGIA
La metodologia empleada, sera' activa, que favorezca la particlpaciéndel alumno, Se estimularé el interés por la investigacién cientifica.
- Exposicién sobre el avance del proyecto finalo Précticas dirigidas y calificadas en el Laboratorio de
Computacién.
8.- BIBLIOGRAFIA
8.1 Bibliografia Basica* Sistemas de Bases de Datos ($$)Elmasril Navathe, Edi. Addison-Wesley lberoamericana, S.A. 2° edicién,2000, 887 pg) �030
* Fundamentos de Sistemas de Bases de DatosV Elmasnl Navathe, Edi. Prentice Hall, 5ta edicién, 2011
* Base de Datos
�030 85
Enrique José Reinosal Calixto Alejandro Maldonado..otros- - Edi. Alfaomega
Grupo editor Argentino, 2012 _
8:2 Bibliogra}401aComplementariaflgitroduccién a los sistemas de Bases de DatosDate C.J. Edi. Addison-Wesley lberoamericana, 7ema edicién, 2001,
936 pag.
* Bases de Datos desde Chen hasta Codd con Oracle,Luque Ruiz, lrene- Gomez Nieto, Miguel Angel, Edi. Alfaomega-Rama,2002
* Dise}401oy Administracién de Bases de Datos,Gary W. Hansen, James V. Hansen, Edi. Prentice Hall, 2da edicién,
2000
* Fundamentos y Modelos de Bases de DatosAdoracién de Miguel y Mario Piattini, Edi. Alfaomega, 1999, Mexico.
* Microsoft SQL Server 2008 lmplementacién -
Manual de Sistemas UNI
* Fundamentos de Bases de Datos ($3)Abraham Silberschatz, Henry Korth, Edi Mc Graw Hill, 2002
86
A x.- ANEXOS
87
W
88
W
L.�024PERMISOS
DAR: PERMISQS;
SEE SELECT ELSLZII campo) :|_DI.E_I-.E.'[_f:ZL1-LEQAJEI campos) : (campo)}
QM obj_etoIQ {usuario {EUBLIC} [yi/ITH GRANT OPTION ]
La opcién WITH GRANT OPTION da Ia posibilidad de propagar los propios privilegios libremente.
REVOKE QRANT OPTION FOR] permisosQN_ objeto FROM usuarios
QESTRICT ',CASCADE}
La opcién GRANT OPTION FOR da Ia posibilidad de propagar los propios priviIegios libremente.
3.: VISTAS.
CREATE VIEW nombreA§ SELECT campos FROM tabla
La vista tiene los mismos permisos que la tabla (el creador tiene que tener al menos el permiso
SELECT sobre la tabla).
- Ias Iistas, ya sean de valores, de campos 0 de tablas, se separan por comas.
- Lo indicado entre corchetes es opcional.
- Lo indicado entre Ilaves es una lista de opciones de la que debe escogerse una.
NOTA:
0 Se indica en color rojo los signos de puntuacién y similares necesarios para una correcta
sintaxis.
- Se indica e_n may}401sculas,de color azul y subrayadas las palabras reservadas del lenguaje
SQL.
89
J.- CONSULTAS DE ACCION
1.:
DELETE campos FROM tabla WHERE criterio; '
Para m}402ltiplestablas, en "campos" debe especi}401carse<tabla>- <campo>
(todas deben ser de multiplicidad M21).
Para todos los registros, en "campos" debe especi}401carse<tabla>.�031
}402§_53_RI_|J}402'_Qtabla [campos].V_A_LiE§ valores
Para insertar registros de otra tabla (tabla2):
l_f_\_l§_EB_T LNIQ tabla [Ll base__datos-external (campos)
§__E_LE9_T. tab|a2.campoL . . . .tabIa2.campoj EEQM tabla2;
Si queremos insertar registros de otra tabla (tab|a2) que tiene igual estructura:
INSERT INTO tabua SELECT tab|a2.* FROM tabuaz ; '
3.: UPDATE
LJ_E�030M\I_Etab|a_S_EI campo__1= expresién_1. . . ., campo_n= expresién_n
WHERE criterio];
K.- CLAUSULAS DE UTILIDAD: .
1%..- E:Xft$'i.:' - '
WHERE |!_\_|OT] EXISTS (subselect)
EXISTS devuelve cierto si la SUBSELECT devuelve al menos 1 va|or.
N01�031EXISTS devuelve cierto si ta SUBSELECT no devuelve ningfm va|or.
SELECT campos FROM tabla WHERE . . . GR0UPB_Y . . . HAVING . _ ,
Q51D_E}401L3_\_�031{nombre__co|umna : posicic'>n_coIumna} { ASC }_D_E§9. }
Ordena una salida de consulta por un campo en modo ascendente (ASC) o descendente (DESC).
w U=N£O=N �030
SELECT . . . FROM . . .UN|ON SELECT . . . FROM _ _ _
Recupera en una (mica consulta la informacién de varias. Los SELECTS deben ser compatibles.
Con la opcién ALL se muestran las filas duplicadas.
90
' a
F .- CLAUSULA SELECT
§_ELE.QI [ ]{ campos :* }EB.QM tablas HERE condicién];
Recupera registros de la base de datos con ciertos criterios.
G.�024CLAUSULA WHERE
§.EL-EQI camposE.'3_0_M tabIas criten'o:
Determina qué registros de las tablas deben enumerarse.
H.- CLAUSULA GROUP BY �024HAVING C
1.: V
SELECT campos [. funciones_co|umna] FROM tablas |\/VHERE condicién]
Q3942 L3_Y_ campos:
Los campos del GROUP BY deben aparecer en el SELECT.
Crea varias subtablas compuestas por }401lascon el mismo valor para la columna de agrupamiento.
SELECT campos [, funciones_co|umna]_FR0_M tablas [V_V__HER.E condiciém]
______GROUP .331 campos HAVING condicién
Los campos del GROUP BY deben aparecer en el SELECT.
Permite elegir grupos que se quieren visualizar.
l.�024 CONCATENADORES Y CUANTIFICADORES: ANY, ALL e W
SELECT campos FROM tablas WHERE campo_concatenador {ANY {ALL} (subselect) ;
devuelve cierto si lo es para algun va|or. L
devuelve cierto si lo es para todos los valores. -
IN: se usa si se sospecha que devuelve mas de un va|or (ver en apartado C de este anexo).
Sirven para anidar SELECT con SUBSELECTS. Son operaciones de relacién y clausulas IN.
Para operaciones de relacién, el resultado el SUBSELECT debe ser (mioo.
' �030 �030 91
M
D.- OPERADORES LOGICOS Y RELACIONALES:
1;: AN3, ': devuelven sus correspondientes valores de verdad légicos.
<3�031? ' <2�031<1?�031 :
32..-V recupera registros seg}402nun intervalo de valores.
campo M9l] valor_1 AND valor_2
4...- compara una expresién de cadena con un modelo SQL
expresién}402f}401' modelo�030
El modelo puede incluir: �035,[carécter especia|],?,# (mimero), I '3 (rango),! (distinto).
EN: recupera registros cuyo campo indicado coincide con alguno de los de la iista.
expresién [N_O_T]1!\_l (valor_1, . . .. va|or__n)
E.- CONSULTAS DE PREDICADO « .
* El predicado esté entre la clausula y los campos a recuperar.
1:5.~ (por defecto) : devuelve todos los campos de una tabla (equivale a * ), pero es mejor
Seleccionar expresamente los campos para no ralentizar las consultas.
T.=�035O=IP-=1devuelve un numero detenninado de registros de una consulta order by. '
|§ELECT]TOP n° EERCENT] campos FROM tabla
.____.0RDER BX. campos [£9 :D.§S_C_3];
PERCENT devuelve un porcentaje de los registros seleccionados.
ASC y DESC corresponden a los modos de ordenamiento ascendente y desoendente.
omite registros con campos seleccionados coincidentes. _
42.: D¥S:T1N�254TR.QW:omite registros duplicados (todos los campos coincidentes).
ALEA-S: asigna otro nombre a un campo (equivale a un AS).
E.g: }402§E apellidoA_§ empleadoE_R2M plantilla _
92
3.- RESTRICCIONES Y TRIGGERS V
' 1.-. REST'RECC'lQNE.S -
CHECK condiciéni
R:E;S"f'RlQC-l0NE,S; M:EN;EO..«
CREATE DOMAIN nombre_A_$_ tipo;
3. ASERQONEES: (_RESTR_lC.,C;%O.f\tE£$ VAREASJ TAB.iJ?«S)_.
CREATE ASSERTION nombre CHECK condicion ;
4: T.E'R!G.-G.ERS:- (�030QDfS.P=ARARES;).
CREATE TRIGGER nombre {BEFORE {AFTER}
ELETE l$5_RI ILJRMIE 9£ campos}
A EFERENCING {gL_o :!:LE.;V!}& nombre]{EOR EACH ROW {FOR EACH STATEMENT }
CM tabla [Viki (predicado)]_B_E_G.lN. cuerpo.E_NQ;
C.- OPERADORES DE COLUMNA O AGRUPAMTENTO:
Se expresan detrés del SELECT o HAVING (nunca detrés del WHERE), y operan con todas las }401las
que cumplen Ia condicién WHERE » A
{Al/_§. ll :3U_M :M_A_)$ :ML\.|}campo
1-: AVG: promedio de los valores de un campo. _
2.1:» COUNT: n}402merode registros de una seleccién.
(3(3jUNl'(*) : cuenta todos los registros, incluidos los nulos.
3.- SUM: suma de los valores de un campo.
4.». MEN: va|or méximo o minimo de los valores de un campo.
93
Q L§:¥;.1.§. ._ 9_..L;m G: -
A.�024OPERACIONES CON TABLAS
1.:
tabla ( campo_1 tipo_1 ]. . . ., campo__n tipo_n ]
]alias (campo__i). /�031clave primaria */
[§_9_N_$_«JEl}402alias (campo_i). /* indice unico �031/
|CONSTRA|NT aliaslgli}401(restriccién). �030I. .] /�035restricciones sobre una tabla */
CONSTRAINT alias FOREIGN KEY (c|ave_ajena)REFERENCES tabla_referenciada(campo_ref) ) ; /' clave ajena */
2.- B_;ORRAR�030
D_R_QE1D\§L_§tabIa [SET NULL ; CASCADE ; RESTRICT 1; ,
_ 3.:
ANADIR UN CAMPO:A AL_T_E_B. L/�034Q-_E.tabla./LED. campo tipo;
BORRAR UN CAMPO:
AL_LE_B_I}402�024._E_tabIaQ&QB campo [EINLJLL I __.__.CA3CADE : .__RE_S. T__R|C_.T._ 1;
4.- MA.NEJQ :2._E. mres (VALOR.E-S) 'INSERTAR VALORES:
___.___|N$ERT LNIQ tabla [(coIumna)]_.._____.VALUE3 ( expresiones) 2
MODIFICAR VALORES:EH2/_\I§ tabla§E_T campo-= expresién[ condicién ]:
BORRAR VALORES:
DELETE E_B_Q__M_ tabla [WHERE condicién ];
*- MQEZQS» Y�031AGTUAhEZAQ:K}N:-
ENLJJ-_1�024_:pone a nulos los campos referenciados.
E : pone al valor por defecto los campos referenciados.
: borra incluso los campos referenciados.
RESTRICT: no borra si hay campos referenciados.
94
W