8/19/2019 Cuadernillo Victor Medrano
1/17
UNIVERSIDAD TECNOLÓGICA
DE CHETUMAL
INGENIERÍA EN TECNOLOGÍAS DE LA INFORMACIÓN Y COMUNICACIÓN
PROFESOR:
M.S.I. FRANCISCO HERRERA
ASIGNATURA:
BASE DE DATOS
TRABAJO:CUADERNILLO DE SCRIPTS
PRESENTA:VÍCTOR HUGO MEDRANO ORTEGÓN
CHETUMAL, QUINTANA ROO, 03 DE MARZO DE 0!"
8/19/2019 Cuadernillo Victor Medrano
2/17
ÍNDICE
MANEJO DE VISTAS.............................................................................................3
SUBCONSULTAS..................................................................................................6SINÓNIMOS.......................................................................................................... 9
JUSTIFICACIÓN, MEJORES PR#CTICAS UTILIZADAS..........................................12
BUENAS PR#CTICAS USADAS PARA VISTAS..................................................12
BUENAS PR#CTICAS USADAS PARA SUBCONSULTAS....................................13
BUENAS PR#CTICAS USADAS PARA SINONIMOS............................................14
REFERENCIAS...................................................................................................14
8/19/2019 Cuadernillo Victor Medrano
3/17
MANEJO DE VISTAS
Una vista es un objeto. Una vista es una alternativa para mostrar datos de varias
tablas; es como una tabla virtual que almacena una consulta. Los datos accesibles
a través de la vista no están almacenados en la base de datos, en la base de
datos se guarda la definición de la vista y no el resultado de ella.
Entonces, una vista almacena una consulta como un objeto para utiliarse
posteriormente. Las tablas consultadas en una vista se llaman tablas base. En
general, se puede dar un nombre a cualquier consulta y almacenarla como una
vista.
Una vista suele llamarse también tabla virtual porque los resultados que retorna y
la manera de referenciarlas es la misma que para una tabla.
Las vistas permiten!
• simplificar la administración de los permisos de usuario! se pueden dar al
usuario permisos para que solamente pueda acceder a los datos a través
de vistas, en lugar de concederle permisos para acceder a ciertos campos,
as" se protegen las tablas base de cambios en su estructura.
• mejorar el rendimiento! se puede evitar tipear instrucciones repetidamente
almacenando en una vista el resultado de una consulta compleja que
incluya información de varias tablas.
#odemos crear vistas con! un subconjunto de registros y campos de una tabla;
una unión de varias tablas; una combinación de varias tablas; un subconjunto deotra vista, combinación de vistas y tablas.
Una vista se define usando un $select$.
La sinta%is básica para crear una vista es la siguiente!
CREATE VIEW NOMBREVISTA
AS SUBCONSULTA;
El contenido de una vista se muestra con un $select$!
SELECT * FROM NOMBREVISTA;
3
8/19/2019 Cuadernillo Victor Medrano
4/17
VISTA 1
CREATE VIEW VISTA_CLIENTES
AS SELECT"CLI_ID","CLI_NOMBRE","CLI_DIRECCION","CLI_CIUDAD","CLI_DEPARTAMENTO","CLI_TELEFONO","EMP_ID","CLI_CREDITOLIMITE","CLI_OBSERVACIONES"
FROM CLIENTES;
VISTA 2
CREATE VIEW VISTA_PRECIOS
AS SELECT
"PRO_ID","PRE_FECAINICIO","PRE_FECAFIN","PRE_ESTANDAR","PRE_MINIMO"
FROM PRECIOS;
VISTA 3
CREATE VIEW VISTA_DEPARTAMENTOS
4
8/19/2019 Cuadernillo Victor Medrano
5/17
AS SELECT
"DEP_ID","DEP_NOMBRE","DEP_LOCALI!ACION"
FROM DEPARTAMENTOS;
VISTA 4
CREATE VIEW VISTA_ORDENES
AS SELECT"ORD_ID","ORD_FECA","ORD_PLANCOMISION","CLI_ID","ORD_FECAENTREA","ORD_TOTAL"
FROM ORDENES;
VISTA 5
CREATE VIEW VISTA_PRODUCTOSPORORDEN
AS SELECT"ORD_ID","PPO_ID","PRO_ID","PPO_PRECIOACTUAL","PPO_CANTIDAD","PPO_TOTALLINEA"
FROM PRODUCTOSPORORDEN;
#
8/19/2019 Cuadernillo Victor Medrano
6/17
VISTA 6
CREATE VIEW VISTA_RADOSDESALARIO
AS SELECT
"RA_ID","RA_LIMITEINFERIOR","RA_LIMITESUPERIOR"
FROM RADOSDESALARIO;
SUBCONSULTAS
Una subconsulta &subquery' es una sentencia $select$ anidada en otra sentencia
$select$, $insert$, $update$ o $delete$ &o en otra subconsulta'.
Las subconsultas se emplean cuando una consulta es muy compleja, entonces se
la divide en varios pasos lógicos y se obtiene el resultado con una (nica
instrucción y cuando la consulta depende de los resultados de otra consulta.
)eneralmente, una subconsulta se puede reemplaar por combinaciones y estas
(ltimas son más eficientes.
Las subconsultas generalmente se incluyen entre paréntesis. #uede *aber
subconsultas dentro de subconsultas. )eneralmente las subconsultas se colocanen la cláusula $+*ere$.
Una subconsulta puede retornar!
• un solo valor,
• una lista de valores de una sola columna,
• un conjunto de registros de varios campos.
6
8/19/2019 Cuadernillo Victor Medrano
7/17
#odemos averiguar si un valor de la consulta e%terna pertenece o no al conjunto
devuelto por una subconsulta &$in$, $not in$', si es mayor, menor o igual a todos
&$all$' o a algunos valores &$some$, $any$' del conjunto devuelto.
e pueden emplear subconsultas!
• en lugar de una e%presión, siempre que devuelvan un solo valor o una listade valores.
• que retornen un conjunto de registros de varios campos en lugar de una
tabla o para obtener el mismo resultado que una combinación &join'.
-ay varios tipos básicos de subconsultas!
• las que retornan un solo valor escalar que se utilia con un operador de
comparación o en lugar de una e%presión.
• las que retornan una lista de valores, se combinan con $in$, o los
operadores $any$, $some$ y $all$.
• los que testean la e%istencia con $e%ists$.
SUBCONSULTA 1
SELECT CLIENTES.CLI_ID, CLIENTES.CLI_NOMBRE,CLIENTES.CLI_DEPARTAMENTO,
$SELECT ORDENES.ORD_TOTAL
FROM ORDENES
WERE CLI_ID% 1#&
FROM CLIENTES
WERE CLI_ID % 1#;
'
8/19/2019 Cuadernillo Victor Medrano
8/17
SUBCONSULTA 2
SELECT CLIENTES.CLI_NOMBRE, CLIENTES.CLI_DIRECCION,CLIENTES.CLI_CIUDAD,
$SELECT DEPARTAMENTOS.DEP_NOMBRE
FROM DEPARTAMENTOS
WERE DEP_ID% 3(&
FROM CLIENTES
WERE CLI_ID % 1(;
SUBCONSULTA 3
SELECT DEPARTAMENTOS.DEP_NOMBRE, DEPARTAMENTOS.DEP_LOCALI!ACION,
$SELECT EMPLEADOS.EMP_NOMBRE
FROM EMPLEADOS
WERE EMP_ID % 11((&
FROM DEPARTAMENTOS
WERE DEP_ID % 1(;
)
8/19/2019 Cuadernillo Victor Medrano
9/17
SUBCONSULTA 4
SELECT EMPLEADOS.EMP_NOMBRE, EMPLEADOS.EMP_CARO,EMP_EFE,
$SELECT DEPARTAMENTOS.DEP_LOCALI!ACION
FROM DEPARTAMENTOS
WERE DEP_ID % 1(&
FROM EMPLEADOS
WERE EMP_ID % 1(((;
SUBCONSULTA 5
SELECT PRODUCTOS.PRO_ID, PRODUCTOS.PRO_NOMBRE,
$SELECT ORDENES.ORD_FECA
FROM ORDENES
WERE ORD_ID % 4#2&
FROM PRODUCTOS
WERE PRO_ID % 3(1((2(1;
SUBCONSULTA 6
SELECT PRODUCTOSPORORDEN.PPO_PRECIOACTUAL,PRODUCTOSPORORDEN.PPO_CANTIDAD,
$SELECT PRODUCTOS.PRO_NOMBRE
FROM PRODUCTOS
9
8/19/2019 Cuadernillo Victor Medrano
10/17
WERE PRO_ID % 3(1((2(2&
FROM PRODUCTOSPORORDEN
WERE ORD_ID % 4#2;
SINÓNIMOS
Un sinónimo en racle, es una representación local o p(blica de un objeto
perteneciente a un esquema. irve para poder *acer referencia a aquel objeto sin
tener que anteponer su esquema. Un sinónimo p(blico puede ser visto por todos
los usuarios, pero uno privado, sólo por el usuario que lo creó.
#ara poder crear un sinónimo, el esquema o usuario que lo crea, tiene que tener
alguno o ambos privilegios de los siguientes!
CREATE S+NON+M
CREATE PUBLIC S+NON+M
#ara el caso de un sinónimo simple &no p(blico', el usuario tiene que tener
privilegio sobre el objeto al que le creará el sinónimo. #or ejemplo, si es una tabla,
deberá tener al menos privilegio de select, insert, delete o update sobre la misma.
SINONIMO 1
CREATE S+NON+M
"DEMO"."SINOCLI"
FOR
"DEMO"."CLIENTES";
1(
8/19/2019 Cuadernillo Victor Medrano
11/17
SINONIMO 2
CREATE S+NON+M
"DEMO"."SINODEPA"
FOR
"DEMO"."DEPARTAMENTOS";
11
8/19/2019 Cuadernillo Victor Medrano
12/17
SINONIMO 3
CREATE S+NON+M
"DEMO"."SINOBONI"
FOR"DEMO"."BONIFICACIONES";
*-/- 0 -0 $5-7-&
SINONIMO 4
CREATE S+NON+M
"DEMO"."SINOEMPL"
FOR
"DEMO"."EMPLEADOS";
12
8/19/2019 Cuadernillo Victor Medrano
13/17
SINONIMO 5
CREATE S+NON+M
"DEMO"."SINORADESAL"
FOR
"DEMO"."RADOSDESALARIO";
SINONIMO 6
CREATE S+NON+M
"DEMO"."SONOPRE"
13
8/19/2019 Cuadernillo Victor Medrano
14/17
FOR
"DEMO"."PRECIOS";
JUSTIFICACIÓN, MEJORES PR#CTICAS UTILIZADAS.
BUENAS PR#CTICAS USADAS PARA VISTAS
• Los nombres para vistas deben seguir las mismas reglas que cualquier
identificador. #ara distinguir una tabla de una vista podemos fijar una
convención para darle nombres, por ejemplo, colocar el sufijo /vista0 y luego el
nombre de las tablas consultadas en ellas.
• Los campos y e%presiones de la consulta que define una vista deben tener un
nombre. e debe colocar nombre de campo cuando es un campo calculado o
si *ay 1 campos con el mismo nombre, al concatenar los campos es necesario
colocar un alias; si no se *ace aparecerá un mensaje de error porque dic*a
e%presión debe tener un encabeado, racle no lo coloca por defecto.
14
8/19/2019 Cuadernillo Victor Medrano
15/17
• Los nombres de los campos y e%presiones de la consulta que define una vista
deben ser (nicos &no puede *aber dos campos o encabeados con igual
nombre'.
• 2l crear una vista, racle *ay que verificar que e%istan las tablas a las que se*acen referencia en ella; no se puede crear una vista que referencie tablas
ine%istentes. 3o se puede crear una vista si e%iste un objeto con ese nombre.
• #robar la sentencia $select$ con la cual definiremos la vista antes de crearla
para asegurarnos que el resultado que retorna es el imaginado.
BUENAS PR#CTICAS USADAS PARA SUBCONSULTAS
• 3o utiliar ELE45 6 por qué el motor debe leer primero la estructura de la
tabla antes de ejecutar la sentencia.
• eleccionar solo aquellos campos que se necesiten, cada campo e%tra genera
tiempo e%tra.
• Especificar el alias de la tabla delante de cada campo definido en el select,
esto le a*orra tiempo al motor de tener que buscar a que tabla pertenece el
campo especificado.
• 2l realiar una subconsulta se prueba primero que la consulta principalfuncione correctamente y posteriormente se procede a agregar la subconsulta
para evitar errores dif"ciles de encontrar.
• El evitar el uso del -2783) en la instrucción ELE45. Las condiciones del
-2783) son de e%clusividad para funciones agregadas como el 4U35,
U9, 27), 92:, 983, etc y no son para condiciones de datos.
• ealiar las composiciones de las subconsultas en el ELE45 para que sea
más rápida la concatenación de las columnas de la otra consulta a la consulta
principal.
• -ay que tener en cuenta el orden en el que enunciamos las tablas en el
?.
1#
8/19/2019 Cuadernillo Victor Medrano
16/17
BUENAS PR#CTICAS USADAS PARA SINONIMOS
•
Los nombres para sinónimos deben seguir las mismas reglas que cualquier identificador. #ara distinguir un sinónimo podemos fijar una convención para
darle nombres, por ejemplo, colocar el sufijo /sino0 y luego el nombre
abreviado del objeto.
• El nombre de un sinónimo no debe ser más largo que el nombre del objeto o
tabla referenciado esto es con el fin de que el sinónimo sea más fácil de
recordar y facilitar la b(squeda del contenido del objeto o tabla.
• 3o se puede crear un sinónimo con el mismo nombre del objeto referenciado.
• i se crea un sinónimo p(blico y posteriormente tiene tablas dependientes o
tipos de objetos definidos por el usuario válidos dependientes, entonces no se
puede crear otro objeto de base de datos del mismo nombre que el sinónimo
en el mismo esquema que los objetos dependientes porque esto generara un
error en la ejecución del sinónimo.
• El acceso es un poco más eficiente cuando se accede por sinónimos p(blicos.
REFERENCIAS
8:0=.8%#(%23(%'2
80:=/-/.00.@2((9(222@->>0@0
8:0=.8%24(%1
8:>0.0/>08-=>.>>@-G@H->0/-0
80:0.=-/>.@B2)3#9_(10>=5>=.1112)2)60->@>0_'((1.8@
16
http://www.oracleya.com.ar/temarios/descripcion.php?inicio=50&cod=230&punto=72http://www.oracleya.com.ar/temarios/descripcion.php?inicio=50&cod=230&punto=72https://orlandoolguin.wordpress.com/2009/02/22/manejo-de-sinonimos/http://www.oracleya.com.ar/temarios/descripcion.php?cod=240&punto=1http://es.slideshare.net/etumax/optimizacion-de-consultashttps://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_7001.htmhttps://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_7001.htmhttp://www.oracleya.com.ar/temarios/descripcion.php?inicio=50&cod=230&punto=72http://www.oracleya.com.ar/temarios/descripcion.php?inicio=50&cod=230&punto=72https://orlandoolguin.wordpress.com/2009/02/22/manejo-de-sinonimos/http://www.oracleya.com.ar/temarios/descripcion.php?cod=240&punto=1http://es.slideshare.net/etumax/optimizacion-de-consultashttps://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_7001.htmhttps://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_7001.htm
8/19/2019 Cuadernillo Victor Medrano
17/17
1'
Top Related