Está en la página 1de 122

SICI-4030

Base de Datos
Prof. Nelliud D. Torres
SQL - Avanzado DML
DIRECTIVA SELECT

CONTENIDO

Right Outer Join


Full Outer Join

UNIN DE DOS O MS
TABLAS
CROSS JOIN
Ejemplos de Left, Right y Full Join
HACIENDO JOIN CON IN Y
CONCEPTOS AVANZADOS
EXITS
MISCELNEOS
UNIENDO MLTIPLES
SELF JOIN
TABLAS
PRODUCT
RELATIONAL SET
OPERATORS
SQL PLUS

UNION
UNION ALL
INTERSECT
MINUS

JOIN OPERATORS
INNER JOIN (Natural)
OUTER JOIN
Left Outer Join

FUNCIONES DE SQL

Date & Time


Numeric
String
Conversion

VIEWS
EJERCICIOS DE PRCTICA

UNIN DE DOS O MS TABLAS

Volver a
los
Objetivos

Haciendo Consultas de Mltiples


Tablas
Cuando hacemos consultas de ms de una
tabla, estas tienen que unirse (Join).
Se unen (join) las tablas al encontrar
columnas que pareen (match) los datos.
Las tablas que se unen suelen utilizar una
condicin con la clusula WHERE que limitan
la cantidad de filas que se van a mostrar.

Unin (Joining) de Dos Tablas


En la clausula SELECT se listan todas las columnas
que se desean mostrar.
En la clausula FROM se listan todas las tablas a
las que se les hace referencia en el query.
En la clausula WHERE se mencionan las filas que
tienen valores comunes de acuerdo a ciertas
columnas.

Ejemplo Unin de dos Tablas

Segundo Ejemplo (condicin AND)

Tercer Ejemplo (WHERE y ORDER BY)

Uniendo ORDER con PART

UTILIZANDO ESTE ERD DEL LIBRO DE


TEXTO

Se contestar la pregunta que sale en el prximo slide

Otro Ejemplo de Unin de Multiples Tablas


Muestra toda la informacin necesria para crear un invoice para la orden
nmero 1006
Cuatro tablas se utilizan
para este join CITY, SATE,
SELECT CUSTOMER_T.CUSTOMER_ID, CUSTOMER_NAME, CUSTOMER_ADDRESS,
POSTAL_CODE, ORDER_T.ORDER_ID, ORDER_DATE, QUANTITY, PRODUCT_DESCRIPTION,
STANDARD_PRICE,
(QUANTITY * UNIT_PRICE)
FROM CUSTOMER_T, ORDER_T, ORDER_LINE_T, PRODUCT_T
WHERE CUSTOMER_T.CUSTOMER_ID = ORDER_LINE.CUSTOMER_ID AND
ORDER_T.ORDER_ID = ORDER_LINE_T.ORDER_ID
AND ORDER_LINE_T.PRODUCT_ID = PRODUCT_PRODUCT_ID
AND ORDER_T.ORDER_ID = 1006;

Pag: 340

Cada par de tablas requieren una condicin de cotejo en la clusula


WHERE en donde se parean los Primary Keys con los Foreign Keys

Figure 8-2 El resultado que se obtiene al buscar entre las cuatro tablas

De la tabla CUSTOMER_T

De la tabla ORDER_T

De la tabla PRODUCT_T

Pag: 340

JOIN, IN, EXITS

Volver a
los
Objetivos

Haciendo JOIN con IN y EXISTS


Las tablas pueden ser unidas utilizando
las clausulas IN o EXISTS
Utilice el operador IN dentro de un subquery
Utilice el operador EXISTS para obtener
datos de ms de una tabla

Restricin al Unir (Join) Tablas


(sin usar el IN)

Restricin al Unir (Join) Tablas


(utilizando el IN)

Se obtiene el mismo resultado, sin embargo


en este ejemplo no se coteja directamente el PK de una
tabla contra el FK de la otra.

Uso del operador IN para obtener


informacin de una orden

Pag: 341

Uso del operador EXISTS para


obtener informacin de una orden
En el
prximo
slide se
comparan
ambos
formatos.

Pag: 343

Comparacin IN y EXITS

Se obtiene el mismo resultado,

UNIENDO MLTIPLES TABLAS

Volver a
los
Objetivos

Uniendo (Join) Mltiples Tablas


Las condiciones muestran como las columnas se
relacionan por cada dos tablas

Uniendo Mltiples Tablas Paso a


Paso - 1
En la clausula SELECT hay que nombrar todas las
columnas que queremos mostrar
Cualificar el nombre de la columna si hace falta (alias)
En la clausula FROM, nombrar todas las tablas
afectadas
Incluir las tablas que se utilizan en la clusula WHERE
(definidas en el FROM), an si no se mencionan en la
clusula SELECT

Uniendo Mltiples Tablas Paso a


Paso - 2
Tomar un par de tablas y relacionarlas
Indicar en la clusula WHERE, la condicin que
relaciona las tablas
Unir (Join) las condiciones con el operador AND
Incluir cualquier condicin adicional en la
clusula WHERE
Conectarlas con el operador AND

Ejemplo

RELATIONAL SET OPERATORS

Volver a
los
Objetivos

SET OPERATIONS
SET OPERATIONS - Se utilizan para fomar la
unin (union), interseccin, (intersection) o
diferencias (differences ) de dos tablas.
UNION Une dos tablas que contienen cada
fila que est en la primera tabla, en la segunda
tabla o en ambas. No duplica aquellas filas
que se encuentren en ambas tablas.

SET OPERATIONS
INTERSECT Muestra todas las filas que
se duplican en ambas tablas nicamente.
MINUS Muestra todas las filas que
estn en la primera tabla, pero que no
aparecen en la segunda tabla.

RESTRICCIONES A LOS SET


OPERATIONS
Requiere que las tablas sean compatibles en su
unin.
Deben tener el mismo nmero de columnas
Y
Sus correspondientes columnas deben tener los
mismos tipos de datos y el mismo largo.

UNION
Ejemplo en una consulta:
SELECT cus_lname, cus_fname, cus_initial,
cus_areacode, cus_phone
FROM customer
UNION
SELECT cus_lname, cus_fname, cus_initial,
cus_areacode, cus_phone
FROM customer_2;
Pag: 346

EJEMPLO DE UNION
Une dos tablas que contienen cada fila que est en la primera tabla, en la segunda
tabla o en ambas. No duplica aquellas filas que se encuentren en ambas tablas
cvc
cvc

cvc
cvc
UNION descarta las filas repetidas. Una tabla tiene 10 filas y la
otra 7, pero al final se crean solo 15 porque hay dos repetidas.
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

UNION ALL
Incluye las filas duplicadas. Ejemplo:
SELECT cus_lname, cus_fname, cus_initial,
cus_areacode, cus_phone
FROM customer
UNION ALL
SELECT cus_lname, cus_fname, cus_initial,
cus_areacode, cus_phone
FROM customer_2;
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

UNION ALL (continuacin)

UNION ALL incluye lad 17 filas producto de la primera tabla de


10 y la segunda de 7.
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

INTERSECT

Muestra todas las filas que se duplican en ambas tablas


nicamente.

Se explica en el prximo slide.

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

INTERSECT con DISTINCT

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

MINUS
Muestra
todas las filas
que estn en
la primera
tabla, pero
que no
aparecen en
la segunda
tabla.
Se explica en el prximo slide.

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

MINUS con DISTINCT


Muestra todas las filas que
estn en la primera tabla,
pero que no aparecen en
la segunda tabla.

Ninguno de estos cdigos est


en la tabla INVOICE
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

JOIN OPERATORS

Volver a
los
Objetivos

DIFERENTES TIPOS DE JOINS - 1


Join Una operacin relacional que causa
que dos o ms tablas con un dominio comn
se combinen en una sola tabla o view. Pag: 335
Equi-join Una unin en donde la condicin
de unin se basa en igualdades entre valores
en las columnas comunes. Las columnas
comunes aparecen redundantemente en el
resultado. Pag: 336
Natural join Es un Equi-join en el cual una
de las columnas duplicadas se elimina en el
resultado.

DIFERENTES TIPOS DE JOINS - 2


Outer join Una unin en donde las filas
que no tienen valores que pareen en
columnas comunes se incluyen como
quiera en el resultado (lo opuesto a inner
join en donde las filas deben tener valores
que pareen para que puedan aparecer en
el resultado) Pag: 337
Union join Incluye todas las columnas
de cada tabla en la union y una instancia
Pag: 339
de cada fila de cada tabla.

Las columnas comunes en las tablas que se unen son usualmente el primary key de la
tabla dominante y el foreign key de la tabla dependiente en relaciones uno a muchos

SQL Join Operators - RESUMEN

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

SPECIAL OPERATIONS
Inner Join
Una unin que compara las tablas en la clusula
FROM y muestra aquellas filas que satisfagan la
condicin en la clausula WHERE
Outer Join
Una unin que muestra todas filas de una de las
tablas independientemente del par
Cross Join
Una unin que muestra todas filas de una tabla
multiplicada por la combinacin de la otra tabla.

INNER JOIN

UTILIZANDO ESTE ERD DEL LIBRO DE


TEXTO

Y LA FIGURA 8-1 QUE MUESTRA ESTOS


DATOS DE CUSTOMER y ORDER

Ejemplo de Natural Join (Fig 8-1)


Por cada cliente que puso una orden, Cul es su
nombre y el nmero de la orden?
Join implica dos o ms tablas en el FROM
SELECT CUSTOMER_T.CUSTOMER_ID, CUSTOMER_NAME, ORDER_ID
FROM CUSTOMER_T NATURAL JOIN ORDER_T ON
CUSTOMER_T.CUSTOMER_ID = ORDER_T.CUSTOMER_ID;

La clusula ON ejecuta el cotejo


de igualdad para columnas
comunes de las dos tablas.

Nota: En la Fig. 1, se ve
que solo 10 clientes tienen
ordenes emitidas
Slo 10 filas deben
devolverse de este INNER
join.
Pag: 336

Otro Ejemplo de Natural Join

Nota: Curiosamente no
incluye la directiva ON

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

JOIN USING Clause

La clusula USING permite hacer las conexiones


entre las relaciones de las tablas afectadas
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

JOIN ON Clause

Similar al JOIN del libro de texto que se explic de la fig 8-1. Observe que la
clusula ON requiere comparar el Primary Key de una tabla contra el Foreign
Key de la otra.
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

OUTER JOIN

Outer Joins
Devuelven no solamente las filas que parean,
sino tambin las filas con atributos que no
parean ya sea de una tabla o de ambas.
Hay tres tipos:
Left outer join: Todas las filas de la tabla de la izquierda (la
primera que se menciona en el query) se parean con las filas de
la tabla a la derecha. Estas son las que se van a incluir.
Right outer join: Todas las filas de la tabla de la derecha (la
segunda que se menciona en el query) se parean con las filas
de la tabla a la izquierda. Estas son las que se van a incluir.
Full outer join: Todas las filas de ambas tablas se van a incluir
independientemente del pareo.
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

DE NUEVO CON LA FIGURA 8-1 QUE MUESTRA


LOS DATOS DE CUSTOMER y ORDER

Ejemplo del Libro de texto de Outer Join


(Microsoft Syntax)
Muestra el nombre del cliente, su ID y el nmero de la
orden de todos los clientes. Incluye la informacin del
cliente incluyendo a los que tienen ordenes y tambin a los
que no.
SELECT CUSTOMER_T.CUSTOMER_ID, CUSTOMER_NAME, ORDER_ID
FROM CUSTOMER_T, LEFT OUTER JOIN ORDER_T
ON CUSTOMER_T.CUSTOMER_ID = ORDER_T.CUSTOMER_ID;

LEFT OUTER JOIN con el ON


causa que la data de los
clientes aparesca an si no hay
datos de ordenes
correspondiente

A diferencia del INNER


join, este SELECT incluir
las filas de clientes que no
tienen filas de ordenes
creadas.
Pag: 336

Results

CROSS JOIN

CROSS JOIN
Syntax:
SELECT column-list FROM table1
CROSS JOIN table2
Ejemplo:
SELECT * FROM invoice CROSS JOIN line;
Si la tabla invoice tiene 8 filas y la tabla line
tiene 18, el total del resultado ser 144 filas
(8 * 18)
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

EJEMPLOS DE LEFT, RIGHT y


FULL JOIN

UTILIZANDO ESTA BASE DE


DATOS

CON EL SIGUIENTE
CONTENIDO EN LAS TABLAS
CUSTOMER

INVOICE

LINE

PRODUCT

VENDOR

Outer Joins - LEFT

No tienen
producto
asignado

Left outer join: Todas las filas de la tabla de la izquierda


(la primera que se menciona en el query) se parean
con las filas de la tabla a la derecha. Estas son las que
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel
Pag:
se van a incluir.

338

Outer Joins - RIGHT

Salen las 16 filas de la tabla


PRODUCT
Right outer join: Todas las filas de la tabla de la derecha
(la segunda que se menciona en el query) se parean
con las filas de la tabla a la izquierda. Estas son las que
Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel
se van a incluir.
Pag:

339

Outer Joins - FULL

No tienen
producto
asignado

Se incluyen todas
Full outer join: Todas las filas de ambas tablas se
Database Systems:
Design, Implementation, & Management, 7 th Edition, Rob & Coronel
van a incluir independientemente
del pareo.

CONCEPTOS AVANZADOS
MISCELNEOS

Volver a
los
Objetivos

Uniendo una tabla consigo misma


Se conoce como self-join
Se necesita utilizar los alias para poder utilizarlo
Se utiliza cuando se comparan records dentro de
una tabla
El alias permite tratar una tabla como dos tablas
separadas

Ejemplo de Self Join

Esto se puede hacer con el Primary key tambin.

PRODUCT

Volver a
los
Objetivos

Product
El producto (Cartesian Product) de dos tablas es la
combinacin de todas las filas en la primera tabla y
todas las filas en la segunda tabla
Se omite la clusula WHERE cuando se utiliza
PRODUCT

Ejemplo de PRODUCT

SQL PLUS

Volver a
los
Objetivos

SQL Plus - Manejo de Reportes en


Pantalla
SQL Plus es una herramienta de Oracle que
reconoce y ejecuta las instrucciones de SQL.
Contiene varios comandos que permiten aplicar
formato a los datos que obtenemos en pantalla a
un estilo tipo reporte.
A continuacin se va a mostrar algunas de esas
instrucciones y su explicacin.
Las instrucciones que se mencionan a
continuacin corren en Oracle 10g.

EJEMPLO DE INSTRUCCIONES SQL Plus

ACCEPT variable PROMPT Favor entrar # de empleado Acepta valores


por pantalla.
SET PAGESIZE 35 Define la pgina del reporte a 35 lneas.
SET LINESIZE 80 Largo de la lnea a 80.
SET FEEDBACK ON/OFF Activa/Desactiva la opcin de mostrar filas
seleccionadas despus de correr un query.
TTITLE Titulo 1 | Titulo 2 Pone ttulos al principio del reporte por pgina.
BTITLE Titulo Pone un ttulo al final de cada pgina del reporte (Footer)
SPOOL ON / OFF Permite enviar los resultados de un query que salen en
pantalla a otro medio como por ejemplo un archivo.
BREAK ON atributo SKIP 1 ON atributo Rompe control y salta una lnea
cada vez que hay un cambio en atributo.
CLEAR BREAK Remueve cualquier BREAK definido.
COMPUTE Ejecuta clculos de suma(SUM), promedio(AVG),
mayor(MAX), menor(MIN), etc. Trabaja en conjunto con el BREAK.
CLEAR COMPUTE Elimina los COMPUTE que se hayan definido.
COLUMN atributo HEADING Titulo' FORMAT A22 Pone el atributo en
columnas con su respectivo encabezamiento. En adicin le aplica formato al
resultado. Algunos formatos son: A22 = String de 22 caracteres de ancho, 999
numrico de tres posiciones. Los numricos se pueden combinar con signo de
dlar ($), coma (,), espacio en blanco (B), etc.

Ejemplo de Scrip
REM *******************************************
REM *
Author: Nancy Santane Velez
*
REM *
Comentarios: Este sript corre y crea *
REM *
un reporte de los profesores.
*
REM *******************************************
SET ECHO OFF
SET PAGESIZE 35
SET LINESIZE 80
SET FEEDBACK OFF
TTITLE 'REPORTE DE PROFESORES | ORGANIZADO POR
DEPARTAMENTO'
BTITLE 'ReporteFacultad.sql'
COLUMN dep_nombre HEADING 'DEPARTAMENTO'
FORMAT A22
COLUMN fac_nombre HEADING 'PROFESOR'
FORMAT A22
COLUMN conf_titulo HEADING 'TOPICO'
FORMAT A24
COLUMN conf_cuantasveces HEADING 'CANTIDAD'
FORMAT 999
BREAK ON dep_nombre
SKIP 1 ON dep_nombre
BREAK ON fac_name
SKIP 1 ON REPORT
COMPUTE count OF conf_titulo ON fac_nombre
COMPUTE count OF conf_titulo ON REPORT
SPOOL ON
SPOOL C:\ReporteFacultad.txt

SELECT DISTINCT dep_nombre, fac_nombre,


conf_titulo, conf_cuantasveces
FROM departamento d, facultad f,
conferencia c
WHERE (d.dep_numero = f.dep_numero)
AND
(f.fac_numero = c.fac_numero)
ORDER BY dep_nombre, fac_nombre,
conf_titulo, conf_cuantasveces;
SPOOL OFF
CLEAR COMPUTE
CLEAR BREAK
COLUMN conf_cuantasveces
CLEAR
COLUMN conf_titulo
CLEAR
COLUMN dep_nombre
CLEAR
COLUMN fac_nombre
CLEAR
BTITLE OFF
TTITLE OFF
SET FEEDBACK ON
SET PAGESIZE 14
SET ECHO ON

Comparacin de Corridas

Reporte en Archivo abierto con


NotePad

RESUMEN DE FUNCIONES
DE SQL

Volver a
los
Objetivos

Date and Time Functions

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

Date and Time Functions (cont.)

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

Date and Time Functions (cont.)

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

Date and Time Functions (cont.)

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

Numeric Functions

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

Numeric Functions (cont.)

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

String Functions

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

String Functions (cont.)

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

Conversion Functions

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

Conversion Functions (cont.)

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

Conversion Functions (cont.)

Database Systems: Design, Implementation, & Management, 7 th Edition, Rob & Coronel

Conversion Functions (cont.)

VIEWS

Volver a
los
Objetivos

Usando y Definiendo Views


Views - Provee a los usuarios un acceso controlado a
las tablas.
Es una tabla virtual que se crea en el buffer cuando se
ejecuta una consulta que utiliza el view como tabla en
el from.
Puede utilizar columnas de una o varias tablas
simultneamente.
Los Views requieren diseo.
Su propsito principal es facilitar las consultas a un
usuario que no tenga mucha experiencia o privilegios
en el sistema.
Pag: 322

Usando y Definiendo Views


Base Table Es la tabla que contiene los datos
crudos (raw data). Hay dos tipos de Views.
Dynamic View
Es una tabla virtual que se crea dinmicamente a peticin
del usuario
No se almacenan datos sino que los datos del base table
se ponen a la disposicin del usuario
Se basa en el enunciado SELECT

Materialized View

Pag: 326

Se copian o replican los datos


La data si queda almacenada
Se debe actualizar peridicamente para que corresponda a
los valores de las tablas originales
Pag: 322

Ejemplo de CREATE VIEW


CREATE VIEW EXPENSIVE_STUFF_V AS
SELECT PRODUCT_ID, PRODUCT_NAME, UNIT_PRICE
FROM PRODUCT_T
Indica que este view se va a utilizar
WHERE UNIT_PRICE >300 nicamente para leer datos y que no se
van a modificar los mismos si se hace a
WITH CHECK_OPTION;
travs de este view. En unas versiones
de Oracle se utiliza WITH READ ONLY.

A los Views se les asigna nombre


Los View se basan en un enunciado SELECT
CHECK_OPTION se utiliza en los VIEWS que se

actualizan y previenen updates que puedan crear filas


que no estn creadas en el VIEW
Pag: 323

Ventajas de los Views


Simplifican los query commands
Ayudan en la seguridad de acceso a los datos ya
que puede restringir el acceso a los datos de parte
del usuario para que no vea datos sensitivos. (hay
otras formas de hacer esto)
Mejora la productividad en la programacin ya que
una consulta compleja se puede obtener de forma
sencilla una vez implementado el view.
Utiliza los datos ms comunes de las tablas
Utiliza poco espacio de almacenamiento
Provee la opcin para customize los VIEWS a los
usuarios
Establece independencia fsica de los datos

Desventajas de los Views


Utiliza tiempo de procesamiento
(produccin) cada vez que se utiliza el
VIEW. por lo tanto degrada el performance
del sistema.
Puede o no ser actualizado directamente

Ejemplo de un View
CREATE VIEW departamento50 AS
SELECT emp_id, last_name, first_name, title
FROM empleado
WHERE dept_id = 50;
Luego podemos hacer la siguiente consulta al
View.
SELECT * FROM departamento50;
Y la siguiente actualizacin:
UPDATE departamento50
SET dept_id = 10
WHERE emp_id = 10;
Esto afecta directamente la tabla de empleado.

Informacin sobre los Views


Podemos conseguir informacin sobre los Views creados
buscando en las tablas del diccionario de datos que se llama
USER_VIEWS.
DESCRIBE user_views Muestra los atributos de la tabla
user_views.
Tambin se puede hacer la siguiente consulta:
SELECT view_name, view_type_owner, text
FROM user_views;

Se puede eliminar un view con la instruccin DROP.


Ejemplo:

DROP VIEW empleado50;

EJERCICIOS DE PRCTICA

Volver a
los
Objetivos

Practica de laboratorio.
Utilizando el siguiente Diagrama de
Relacin:

Que debe estar creado en Oracle


con el siguiente script.
REM **************************************************************
REM * Author: Nelliud D. Torres Batista
*
REM * Comentarios: Este sript crea la tablas solicitadas en el *
REM * primer laboratorio.
*
REM **************************************************************
REM SET ECHO ON
REM ***************************************************************
REM * Creacion de la tabla DEPARTAMENTO
*
REM ***************************************************************
CREATE TABLE DEPARTAMENTO (
dep_numero
NUMBER(1) NOT NULL,
dep_nombre
VARCHAR2(25) NOT NULL,
dep_localizacin
VARCHAR2(15),
CONSTRAINT dep_numero_pk
PRIMARY KEY (dep_numero) );
REM ***************************************************************
REM * Creacion de la tabla ASEGURADORA
*
REM ***************************************************************
CREATE TABLE ASEGURADORA (
ase_numeroPlan
NUMBER(1) NOT NULL,
ase_descripcion
VARCHAR2(15) NOT NULL,
CONSTRAINT ase_numeroPlan_pk
PRIMARY KEY (ase_numeroPlan) );
REM ***************************************************************
REM * Creacion de la tabla FACULTAD
*
REM ***************************************************************
CREATE TABLE FACULTAD (
fac_numero NUMBER(3) NOT NULL,
fac_nombre VARCHAR2(25) NOT NULL,
fac_direccion
VARCHAR2(20),
fac_salario NUMBER(7,2),
fac_salarioAcumulado
NUMBER(9,2),
dep_numero
NUMBER(1) NOT NULL,
fac_grado VARCHAR2(3),
fac_especialidad
VARCHAR2(12),
fac_rango CHAR(4)
NOT NULL,
ase_numeroPlan
NUMBER(1),
fac_dependientes
CHAR(1),

CONSTRAINT fac_departamento_fk FOREIGN KEY (dep_numero)


REFERENCES DEPARTAMENTO (dep_numero),
CONSTRAINT fac_aseguradora_fk
FOREIGN KEY (ase_numeroPlan)
REFERENCES ASEGURADORA
(ase_numeroPlan),
CONSTRAINT fac_numero_pk
PRIMARY KEY (fac_numero)
);
REM ***************************************************************
REM * Creacion de la tabla CONFERENCIA
*
REM ***************************************************************
CREATE TABLE CONFERENCIA (
fac_numero NUMBER(3)
NOT NULL,
conf_id
NUMBER(1)
NOT NULL,
conf_titulo VARCHAR2(25)
NOT NULL,
conf_cuentasVeces
NUMBER(2),
conf_ultimaVez
DATE
NOT NULL,
CONSTRAINT fac_numero_fk
FOREIGN KEY
(fac_numero)
REFERENCES FACULTAD
(fac_numero),
CONSTRAINT conf_pk
PRIMARY KEY
(fac_numero, conf_id)
);
REM ***************************************************************
REM * Creacion de la tabla HISTORIAL
*
REM ***************************************************************
CREATE TABLE HISTORIAL (
fac_numero NUMBER(3)
NOT NULL,
hist_id
NUMBER(1)
NOT NULL,
hist_rango VARCHAR2(4)
NOT NULL,
hist_fechaRango
DATE
NOT NULL,
CONSTRAINT fac_numero2_fk
FOREIGN KEY (fac_numero)
REFERENCES FACULTAD (fac_numero),
CONSTRAINT hist_pk
PRIMARY KEY (fac_numero, hist_id) );

Y con la siguiente data entrada


REM ***************************************************************
REM * Datos de la tabla DEPARTMENTO
*
REM ***************************************************************
INSERT INTO DEPARTAMENTO VALUES (2,'Physics','Edificio 100');
INSERT INTO DEPARTAMENTO VALUES (5,'Computer Science','Edificio
100');
INSERT INTO DEPARTAMENTO VALUES (7,'Geology','Edificio 200');
COMMIT;
REM ***************************************************************
REM * Datos de la tabla ASEGURADORA
*
REM ***************************************************************
INSERT INTO ASEGURADORA VALUES (1,'Triple-Azul');
INSERT INTO ASEGURADORA VALUES (2,'Cruz SSS');
INSERT INTO ASEGURADORA VALUES (4,'Extra');
COMMIT;
REM ***************************************************************
REM * Datos de la tabla FACULTAD
*
REM ***************************************************************
INSERT INTO FACULTAD VALUES (119,'Nelliud
Torres','Bayamn',70100.00,890900.00,5,'MS','Information','Asst',1,1);
INSERT INTO FACULTAD VALUES (120,'Jos
Daz','Carolina',69000.69,789000.00,5,'MS','Engineer','Asso',2,1);
INSERT INTO FACULTAD VALUES (201,'Alz
Heimer','Cayey',55500.10,324000.00,7,'PhD','Geology','Full',1,0);
INSERT INTO FACULTAD VALUES (204,'Park
Inson','Caguas',27390.00,89000.25,2,'PhD','Physics','Asst',1,1);
COMMIT;

REM ***************************************************************
REM * Datos de la tabla CONFERENCIA
*
REM ***************************************************************
INSERT INTO CONFERENCIA VALUES (120,1,'El Tarot ',3,'6-Jun2004');
INSERT INTO CONFERENCIA VALUES (119,1,'Base de Datos',5,'6May-2004');
INSERT INTO CONFERENCIA VALUES (119,2,'Usando Access',1,'7Feb-2005');
COMMIT;
REM ***************************************************************
REM * Datos de la tabla HISTORIAL
*
REM ***************************************************************
INSERT INTO HISTORIAL VALUES (119,1,'Asst','1-May-1990');
INSERT INTO HISTORIAL VALUES (120,1,'Asso','1-Jun-1991');
INSERT INTO HISTORIAL VALUES (120,2,'Full','1-Jul-2001');
INSERT INTO HISTORIAL VALUES (204,1,'Asst','15-Feb-04');
COMMIT;

Ejecutar los siguientes Queries

OJO - Esta instruccin esta


incompleta.

OJO Se cambio de Regular a Cruz SSS

Como el atributo no es
buleano, se asume que si es
mayor de cero, es cierto.

OJO Se va a utilizar
computer science en lugar
de fsica.

OJO Se va a utilizar
computer science en lugar
de matemtica.

Porqu este SELECT


utiliza solo una tabla y no
dos como el query anterior?

En lugar de TALLER_SEMINARIO la tabla


se llama CONFERENCIA

FIN

También podría gustarte