DML, SUBQUERY, OTROS OBJETOS DE LA BASE DE DATOS

1,765 views

Published on

“LENGUAJE DE MANIPULACIÓN DE DATOS”
“SUB-CONSULTAS”
“OTROS OBJETOS DE LA BASE DE DATOS”

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,765
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
77
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

DML, SUBQUERY, OTROS OBJETOS DE LA BASE DE DATOS

  1. 1. Laureate Internacional Universities ®ASIGNATURA :TRABAJO :DOCENTE : Ing. Alejandro Hugo Pérez QuirozALUMNOS :  CABRERA GUEVARA, Alexander Raúl  MENDOZA CERQUÍN, Juan Carlos  SALDAÑA ÑONTOL, Anthony Jhoel  VILLACORTA RAMÍREZ, Jhonatan Edgardo
  2. 2. UNIVERSIDAD PRIVADA DEL NORTE ® ~2~ Laureate International Universities ÍNDICE I. LENGUAJE DE MANIPULACIÓN DE DATOS ................................ PÁG. 03 A. CLASIFICACIÓN .............................................. PÁG. 03 a. LENGUAJE DE MANIPULACIÓN DE DATOS PROCEDIMENTALES ............. PÁG. 04 B. LENGUAJE DE MANIPULACIÓN DE DATOS NO PROCEDIMENTALES .......... PÁG. 04 B. SENTENCIAS ................................................ PÁG. 06 1. SENTENCIA SELECT ........................................ PÁG. 06 1.1. CLAUSULA FROM ..................................... PÁG. 06 1.1. CLAUSULA WHERE .................................... PÁG. 06 1.1. CLAUSULA GROUP BY ................................. PÁG. 07 1.1. CLAUSULA ORDER BY ................................. PÁG. 07 2. SENTENCIA INSERT ........................................ PÁG. 08 2.1. INSERT CON VALORES NULL ............................ PÁG. 08 * MÉTODO IMPLÍCITO.................................. PÁG. 08 * MÉTODO EXPLICITO.................................. PÁG. 09 2.2. INSERT CON VALORES ESPECIALES ....................... PÁG. 09 * SYSDATE ......................................... PÁG. 09 * CURRENT_DATE ..................................... PÁG. 09 2.3. COPIAR REGISTROS DE OTRA TABLA ...................... PÁG. 10 3. SENTENCIA UPDATE ........................................ PÁG. 10 4. SENTENCIA DELETE ........................................ PÁG. 11 * ELIMINADO UN REGISTRO ESPECIFICO ........................ PÁG. 11 * ELIMINANDO TODOS LOS REGISTROS .......................... PÁG. 11 5. SENTENCIAS TRUNCATE ..................................... PÁG. 12 C. TRANSACCIONES DE LA BASE DE DATOS ............................. PÁG. 12 * COMANDOS BEGIN Y COMMIT ................................... PÁG. 13 * COMANDOS BEGIN Y ROLLBACK ................................. PÁG. 13 * COMANDOS SAVEPOINT Y ROLLBACK TO ........................... PÁG. 14 * COMANDO RELEASE SAVEPOINT ................................. PÁG. 14 II. SUB-CONSULTAS (SUBQUERY) ....................................... PÁG. 15 * PAUTAS PARA USAR SUB-CONSULTAS................................. PÁG. 16 A. TIPOS DE CONSULTAS.......................................... PÁG. 16 1. SUB CONSULTAS DE FILA SIMPLE .............................. PÁG. 16 1.1. FUNCIONES DE GRUPO EN UNA SUB CONSULTA ................ PÁG. 17 * CLAUSULA HAVING CON SUB CONSULTAS ................. PÁG. 17 * ERRORES CON SUB CONSULTAS ........................ PÁG. 17 2. SUB CONSULTAS DE MÚLTIPLES FILAS .......................... PÁG. 18 * OPERADOR IN ......................................... PÁG. 18 * OPERADOR ANY ........................................ PÁG. 18 * OPERADOR ALL ........................................ PÁG. 19 * OPERADOR NOT ........................................ PÁG. 19III. OTROS OBJETOS DE LA BASE DE DATOS ................................ PÁG. 20 1. VISTAS ................................................... PÁG. 20 2. ÍNDICES................................................... PÁG. 25 3. SECUENCIAS ................................................ PÁG. 27 4. SINÓNIMOS ................................................. PÁG. 29 WEBGRAFÍA .................................................. PÁG. 31 INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  3. 3. UNIVERSIDAD PRIVADA DEL NORTE ® ~3~ Laureate International Universities I. LENGUAJE DE MANIPULACIÓN DE DATOS El Lenguaje de Manipulación de Datos (Data Manipulation Language, DML) es un lenguaje proporcionado por el sistema de gestión de base de datos que permite a los usuarios de la misma llevar a cabo las tareas de consulta o manipulación de los datos, organizados por el modelo de datos adecuado. A. CLASIFICACIÓN Las Sentencias DML son aquellas utilizadas para insertar, borrar, modificar y consultar los datos de una base de datos. Las sentencias DML principales, son las siguientes: Los DML Se clasifican en dos grandes grupos:  LENGUAJES DE CONSULTA PROCEDIMENTALES  LENGUAJES DE CONSULTA NO PROCEDIMENTALES INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  4. 4. UNIVERSIDAD PRIVADA DEL NORTE ® ~4~ Laureate International Universities a. LENGUAJES DE CONSULTA PROCEDIMENTALES En este tipo de lenguaje el usuario (normalmente será un programador) especifica qué datos se necesitan y cómo hay que obtenerlos. Esto quiere decir que el usuario debe especificar todas las operaciones de acceso a datos llamando a los procedimientos necesarios para obtener la información requerida. Estos lenguajes acceden a un registro, lo procesan y basándose en los resultados obtenidos, acceden a otro registro, que también deben procesar. Así se va accediendo a registros y se van procesando hasta que se obtienen los datos deseados. Las sentencias de un DML procedimental deben estar impregnadas en un lenguaje de alto nivel, ya que se necesitan sus estructuras (bucles, condicionales, etc.) para obtener y procesar cada registro individual. A este lenguaje se le denomina lenguaje anfitrión. Las bases de datos jerárquicas y de red utilizan DML procedimentales. b. LENGUAJES DE CONSULTA NO PROCEDIMENTALES El usuario describe la información deseada sin un procedimiento específico para obtener esa información. Se puede utilizar de manera independiente para especificar operaciones complejas sobre la base de datos de forma concisa. En muchos SGBD (Sistema de Gestión de Bases de Datos) se pueden introducir interactivamente instrucciones del DML desde un terminal o bien impregnar en un lenguaje de programación de alto nivel. Los DML No Procedimentales permiten especificar los datos a obtener en una consulta o los datos que se deben actualizar, mediante una sola y sencilla sentencia. El usuario o programador especifica qué datos quiere obtener sin decir cómo se debe acceder a ellos. INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  5. 5. UNIVERSIDAD PRIVADA DEL NORTE ® ~5~ Laureate International Universities El SGBD traduce las sentencias del DML en uno o varios procedimientos que manipulan los conjuntos de registros necesarios. Esto libera al usuario de tener que conocer cuál es la estructura física de los datos y qué algoritmos se deben utilizar para acceder a ellos. A los DML No Procedimentales también se les denomina Declarativos. Las bases de datos relacionales utilizan DML no procedimentales, como SQL (Structured Query Language) o QBE (Query-By-Example). Los lenguajes no procedimentales son más fáciles de aprender y de usar que los procedimentales, y el usuario debe realizar menos trabajo, siendo el SGBD quien hace la mayor parte. La parte de los DML no procedimentales que realiza la obtención de datos es lo que se denomina un lenguaje de consultas. En general, las órdenes tanto de obtención como de actualización de datos de un DML no procedural se pueden utilizar interactivamente, por lo que al conjunto completo de sentencias del DML se le denomina lenguaje de consultas, aunque es técnicamente incorrecto. INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  6. 6. UNIVERSIDAD PRIVADA DEL NORTE ® ~6~ Laureate International Universities B. SENTENCIAS 1. SENTENCIA SELECT Una sentencia SELECT se usa para recuperar información desde la base de datos. Usando sentencias SELECT, podemos hacer lo siguiente:  Proyección: Para elegir las columnas en un tabla que queremos retornar para nuestra consulta.  Selección: Para elegir las filas en una tabla que queremos retornar en nuestra consulta.  Unión: Los populares “Join” se usan para traer datos que están almacenados en diferentes tablas creando un enlace entre ellas. 1.1. Cláusula FROM La herramienta fundamental es la sentencia SELECT, que permite seleccionar registros desde las tablas de la Base de Datos, devolviendo aquellos que cumplan las condiciones establecidas y pudiendo presentar el resultado en el orden deseado donde FROM establece el/los conjuntos origen para la consulta. Ejemplo: Obtener mostrar el apellido paterno, apellido materno y nombres de persona. SELECT AP_PATERNO, AP_MATERNO, NOMBRES FROM PERSONA 1.2. Cláusula WHERE En esta cláusula WHERE indica las condiciones que se deben cumplir en el conjunto resultado. Las condiciones se establecen a nivel de fila sobre los conjuntos origen, es decir, los indicados en la cláusula FROM, y nos determinarán cuales son las filas candidatas para formar parte del conjunto resultado. INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  7. 7. UNIVERSIDAD PRIVADA DEL NORTE ® ~7~ Laureate International Universities Ejemplo: Obtener el apellido paterno, apellido materno y nombres de persona, con R.U.C igual a “10266115645”. SELECT AP_PATERNO, AP_MATERNO, NOMBRES FROM PERSONA WHERE RUC = 10266115645 1.3. Cláusula GROUP BY El conjunto obtenido por la cláusula WHERE se puede particionar para formar grupos que agreguen grupos según criterios. Sobre estos grupos se aplican expresiones de agregación, es decir, expresiones que contienen funciones de trabajo sobre múltiples valores, tales como totales, medias, cuenta de filas y valores máximos/mínimos. Ejemplo: Obtener la suma de las ventas de las oficinas agrupadas por región. SELECT SUM(VENTAS) FROM OFICINAS GROUP BY CIUDAD 1.4. Cláusula ORDER BY El conjunto obtenido por la cláusula WHERE se puede particionar para formar grupos que agreguen grupos según criterios. Sobre estos grupos se aplican expresiones de agregación, es decir, expresiones que contienen funciones de trabajo sobre múltiples valores, tales como totales, medias, cuenta de filas y valores máximos/mínimos. INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  8. 8. UNIVERSIDAD PRIVADA DEL NORTE ® ~8~ Laureate International Universities Ejemplo: Mostrar el apellido paterno, apellido materno y nombres de persona y ordenar por apellido paterno. SELECT AP_PATERNO, AP_MATERNO, NOMBRES FROM PERSONA ORDER BY AP_PATERNO 2. SENTENCIA INSERT La sentencia INSERT es usada para insertar nuevas filas en una única tabla. Podemos insertar en una tabla varias filas con una sola sentencia SELECT INTO si los valores a insertar se pueden obtener como resultado de una consulta, en este caso sustituimos la cláusula VALUES lista de valores por una sentencia SELECT como las que hemos visto hasta ahora. Ejemplo: Escribir una sentencia que inserte el producto: Bote de pintura con código 00125 y precio de $ 23.55 a la tabla PRODUCTO. INSERT INTO PRODUCTO(CODIGO_PRODUCTO,NOMBRE_PRODUCTO,PRECIO) VALUES (00125,BOTE DE DE PINTURA CPP,23.55) 2.1. INSERT con Valores NULL  Método Implícito Simplemente se omita el nombre de la columna en el listado de columnas. INSERT INTO PRODUCTO(CODIGO_PRODUCTO,NOMBRE_PRODUCTO,PRECIO) VALUES (00125,BOTE DE DE PINTURA CPP) INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  9. 9. UNIVERSIDAD PRIVADA DEL NORTE ® ~9~ Laureate International Universities  Método Explícito. Se especifique la palabra clave NULL en la cláusula VALUES. INSERT INTO PRODUCTO(CODIGO_PRODUCTO,NOMBRE_PRODUCTO,PRECIO) VALUES (00125,BOTE DE DE PINTURA CPP,NULL) 2.2. INSERT con Valores Especiales  SYSDATE La función SYSDATE pone la fecha y hora en curso de tratamiento. Ejemplo: Escribir una sentencia que inserte el producto: Bote de pintura con código 00125, fecha y hora de creación a la tabla PRODUCTO. INSERT INTO PRODUCTO(CODIGO_PRODUCTO,NOMBRE_PRODUCTO,DATA_CREAC) VALUES (00125,BOTE DE DE PINTURA CPP,SYSDATE)  CURRENT_DATE La función CURRENT_DATE obtiene la fecha del sistema. Ejemplo: Escribir una sentencia que inserte el producto: Bote de pintura con código 00125 y la fecha de creación a la tabla PRODUCTO. INSERT INTO PRODUCTO(CODIGO_PRODUCTO,NOMBRE_PRODUCTO,FECH_CREAC) VALUES (00125,BOTE DE DE PINTURA CPP,CURRENT_DATE) INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  10. 10. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 10 ~ Laureate International Universities 2.3. Copiar Registros desde otra Tabla A veces es necesario copiar registros de una tabla, para ello se escribe la sentencia INSERT con una sub-consulta. Para ello se necesita saber que:  No requiere el uso de la cláusula VALUES.  Debe coincidir el número de columnas de la tabla que se encuentra definida en la sentencia. Ejemplo: Copiar a la tabla RESP_VENT, los registros de EMPLEADOS donde su trabajo sean de responsables de venta con los datos: id, nombres, salarios y comisión. INSERT INTO RESP_VENT(ID, NOMBRES, SALARIO, COMISION) SELECT EMPLEADO_ID, NOMBRES, SALARIO, COMISION) FROM EMPLEADOS WHERE JOB_ID LIKE %REPVENT% 3. SENTENCIA UPDATE La sentencia UPDATE es usada para cambiar los valores en columnas existentes de las tablas, en términos comunes modifica un registro. Tener en cuenta que:  Puede modificar más de un registro al mismo tiempo.  Puede especificar cuales son las columnas que serán modificadas.  Puede deshacer los cambios de esta sentencia mediante el uso de transacciones. Ejemplo: Escribir una sentencia que aumente el precio de los productos con id de categoría igual a ‘015’ en un 50%, siempre y cuando su stock mayor de uno. UPDATE PRODUCTO SET PRECIO = PRECIO*1.5 WHERE ID_CATEGORIA = 015 AND STOCK > 1 INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  11. 11. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 11 ~ Laureate International Universities 4. SENTENCIA DELETE La sentencia DELETE permite borrar una o varias filas de una única tabla es decir eliminar un registro existente. Tener en cuenta que:  Puede eliminar más de un registro al mismo tiempo.  No se puede definir un Alias a las tablas.  Puede deshacer los cambios de esta sentencia mediante el uso de transacciones.  No intentamos eliminar un registro con un valor que esta unido a una restricción de integridad ya que saldrá un error. [No se puede eliminar una fila que contiene una clave principal que se utiliza como una clave externa en otra tabla.]  Eliminado un Registro Específico Especifique el registro a eliminar mediante un criterio establecido. Ejemplo: Eliminar el registro Finanzas. DELETE FROM AREAS_TRABAJO WHERE NOMBRE_AREA = Finanzas  Eliminado Todos los Registros Elimina todos los registros de una tabla. Ejemplo: Eliminar todos los registros de la tabla EMPLEADOS. DELETE FROM EMPLEADOS INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  12. 12. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 12 ~ Laureate International Universities 5. SENTENCIA TRUNCATE Esta sentencia se caracteriza por lo siguiente:  Elimina todos los registros dentro de una tabla.  Es más eficiente para las tablas con gran cantidad de registros que la cláusula DELETE.  Solamente puede ser ejecutada por el usuario dueño de la tabla.  Puede deshacer los cambios de esta sentencia mediante el uso de transacciones. Ejemplo: Eliminar los registros de la tabla “COPIA_EMPLEADOS”. TRUNCATE COPIA_EMPLEADOS C. TRANSACCIONES DE LA BASE DE DATOS Todo sistema gestor de Bases de Datos maneja los siguientes conceptos sobre las transacciones:  Son un conjunto de acciones que altera el estado original de los datos y forman una sola unidad.  Todo lenguaje que manipula los datos (DML) son administrador por las transacciones.  Las transacciones pueden interrumpir un conjunto de acciones o hacerlas permanentes.  Mantiene la integridad de los datos cuando alguna acción falla. Los siguientes comandos son utilizados para tener control de las transacciones: RELEASE BEGIN COMMIT ROLLBACK SAVEPOINT ROLLBACK TO SAVEPOINT INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  13. 13. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 13 ~ Laureate International Universities  Usando el comando BEGIN y COMMIT COMMIT DELETE UPDATE UPDATE INSERT BEGGIN INTO  Usando el comando ROLLBACK ROLLBACK ERROR UPDATE CARACTERÍSTICAS DE ESTE PROCESO: UPDATE UPDATE efectuado a la data antes de hacerlo permanentes. BEGGIN Agrupa lógicamente operaciones relacionadas INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  14. 14. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 14 ~ Laureate International Universities  Usando el comando SAVEPOINT y ROLLBACK TO ROLLBACK TO [A] ERROR UPDATE SAVEPOINT [A] UPDATE BEGGIN  Usando el comando RELEASE SAVEPOINT COMMIT RELEASE SAVEPOINT UPDATE [B] SAVEPOINT [B] UPDATE SAVEPOINT [A] UPDATE BEGGIN SE DETERMINO QUE EL PUNTO B YA NO ES UTILIZADO, TODOS LOS DATOS AFECTADOS DE DICHO PUNTO PASARAN A SER DEL PUNTO DE CONTROL A, PARA REALIZAR ESTE CAMBIO SE UTILIZA RELEASE SAVEPOINT INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  15. 15. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 15 ~ Laureate International UniversitiesII. SUB-CONSULTAS (subquery) SUPONGAMOS QUE SE QUIERA ESCRIBIR UNA CONSULTA PARA ENCONTRAR QUIEN GANA UN SALARIO MAYOR AL DE CARLOS.  Para resolver este problema, se necesitan dos consultas: la primera conocer cuanto gana Carlos, y la segunda consulta para conocer quien gana más que él.  Se puede solventar este problema por la combinación de dos consultas, colocando una consulta dentro de la otra. La consulta interior o sub consulta obtiene el valor que es utilizado por la consulta externa o consulta principal.  Usar una sub consulta es equivalente a ejecutar dos consultas secuenciales y utilizar el resultado de la primera consulta como valor de búsqueda en la segunda consulta. Una SUB CONSULTA es una sentencia SELECT que es incrustada en otra cláusula de otra sentencia SELECT. Se pueden construir sentencias poderosas de forma simple con el uso de sub consultas. Esto puede ser muy utilizado cuando se necesiten seleccionar filas de una tabla con condiciones que dependan de datos de la misma tabla. Se puede poner una sub consulta en un número de cláusulas SQL, incluyendo:  La Cláusula WHERE  La Cláusula HAVING  La Cláusula FROM En la sintaxis se utilizan operadores con una condición de comparación. Las condiciones de comparación caen en dos categorías:  Operadores de Línea Única (>, =, >=, <, <>, <=)  Operadores de Múltiples Líneas (IN, ANY, ALL) INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  16. 16. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 16 ~ Laureate International Universities Ejemplo: Determinar el empleado con menor salario. SELECT * FROM EMPLEADOS WHERE SALARIO = ( SELECT MIN(SALARIO) FROM EMPLEADOS)  PAUTAS PARA USAR SUB-CONSULTAS La función encierre la sub consulta entre paréntesis. Ubicar la sub consulta al lado derecho del operador de comparación. La cláusula ORDER BY en la sub consulta no es necesaria. Use operadores de una sola fila (=, <, >, <>) en las sub consultas de fila simples. Use operadores de múltiples filas (IN) en las sub consultas de filas múltiples. A. TIPOS DE CONSULTAS 1. Sub Consultas de Fila Simple Retornan una sola fila desde la sentencia SELECT interna. Usa operadores de comparación de fila simple OPERADOR SIGNIFICADO = Igual a > Mayor que >= Mayor o Igual que < Menor que <= Menor o Igual que <> Diferente a INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  17. 17. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 17 ~ Laureate International Universities 1.1. Funciones de Grupo en una Sub Consulta Se pueden mostrar datos desde una consulta principal utilizando funciones de grupo en una sub consulta que obtenga una línea única. La sub consulta esta entre paréntesis y después de la condición de comparación.  CLÁUSULA HAVING CON SUB CONSULTAS Se pueden utilizar sub consultas no solamente en la cláusula WHERE, también en la cláusula HAVING. El servidor Oracle ejecuta la sub consulta, y los resultados son regresados a la cláusula HAVING de la consulta principal. Ejemplo: Despliega todos los departamentos que tienen un salario mínimo mayor que el departamento 100. SELECT DEPARTMENT_ID, MIN(SALARIO) FROM HR.EMPLOYEES GROUP BY DEPARTMENT_ID HAVING MIN(SALARY) = ( SELECT MIN(SALARY) FROM HR.EMPLOYEES WHERE DEPARTMENT_ID = 100)  ERRORES CON SUB CONSULTAS Un error común con sub consultas es cuando más de una fila es obtenida por una sub consulta de línea única. En la sentencia anterior, la sub consulta contiene una cláusula GROUP BY, que implica que la sub consulta regrese múltiples filas, una por cada grupo que encuentre. En este caso, el resultado de la sub consulta puede ser 4400, 6000, 2500, 4200, 7000, 17000 y 8300. La consulta externa toma el resultado de la sub consulta (4400, 6000, 2500, 4200, 7000, 17000, 8300) y usa estos resultados en la cláusula WHERE. La cláusula WHERE contiene un operador igual (=), un operador de comparación de línea única esperando un único valor. El operador = no puede aceptar mas de un valor desde una sub consulta y por consecuencia genera el error. Para corregir este error, se debe cambiar el operador = a IN. INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  18. 18. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 18 ~ Laureate International Universities 2. Sub Consulta de Múltiples Filas Retorna más de una fila Use operadores de comparación de múltiples filas OPERADOR SIGNIFICADO IN Igual que cualquier miembro de la Lista ANY Compara con cada valor retornado por la sub consulta ALL Compara con todos los valores retornados por la consulta.  OPERADOR IN Ejemplo: Encuentre los empleados que ganan el mismo salario con el salario mínimo de cada departamento. SELECT LAST_NAME, SALARY, DEPARTMENT_ID FROM HR.EMPLOYEES WHERE SALARY IN ( SELECT MIN(SALARY) FROM HR.EMPLOYEES GROUP BY DEPARTMENT_ID)  OPERADOR ANY Ejemplo: Mostrar los empleados cuyo puesto no es IT_PROG y cuyo salario es menor que el de algún IT_PROG. SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, SALARY FROM HR.EMPLOYEES WHERE SALARY ANY ( SELECT SALARY FROM HR.EMPLOYEES WHERE JOB_ID = IT_PROG) AND JOB_ID <> IT_PROG INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  19. 19. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 19 ~ Laureate International Universities  OPERADOR ALL Ejemplo: Mostrar empleados cuyo salario es menor que el salario de todos los empleados con el puesto IT_PROG y cuyo puesto no sea IT_PROG. SELECT EMPLOYEE_ID, LAST_NAME, JOB_ID, SALARY FROM HR.EMPLOYEES WHERE SALARY < ALL( SELECT SALARY FROM HR.EMPLOYEES WHERE JOB_ID = IT_PROG) AND JOB_ID <> IT_PROG > ALL significa más que el máximo < ALL significa menos que el mínimo.  OPERADOR NOT El operador NOT puede utilizarse con los operadores IN, ANY y ALL. Ejemplo: Encuentre los empleados que NO ganan el mismo salario con el salario mínimo de cada departamento. SELECT LAST_NAME, SALARY, DEPARTMENT_ID FROM HR.EMPLOYEES WHERE SALARY NOT IN ( SELECT MIN(SALARY) FROM HR.EMPLOYEES GROUP BY DEPARTMENT_ID) INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  20. 20. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 20 ~ Laureate International UniversitiesIII. OTROS OBJETOS DE LA BASE DE DATOS Una base de datos puede tener mucho más que tablas. Puede poseer vistas, para mostrar datos de varias tablas, los constraints aseguran las reglas de integridad. Las secuencias pueden ser utilizadas para crear claves artificiales y los sinónimos, alias de los objetos. Los índices pueden mejorar el rendimiento de las consultas, etc. 1. VISTAS a. Definición Una vista es un objeto, una alternativa para mostrar datos de varias tablas; es una tabla virtual cuyo contenido está definido por 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 utilizarse posteriormente. Las vistas suelen utilizarse para:  Restringir el acceso del usuario a filas concretas de una tabla (por ejemplo, para permitir que un empleado sólo vea las filas que guardan su trabajo en una tabla de seguimiento de actividad laboral).  Restringir el acceso del usuario a columnas específicas (por ejemplo, permitir que los empleados que no trabajen en el departamento de nóminas vean las columnas de nombre, oficina, teléfono y departamento de la tabla de empleados, pero no permitir que vean las columnas con los datos de salario u otra información personal).  Combinar columnas de varias tablas de forma que parezcan una sola tabla y para agregar información en lugar de presentar los detalles. INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  21. 21. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 21 ~ Laureate International Universities b. Sentencia CREATE VIEW Para crear vistas se utiliza la sentencia CREATE VIEW. Esta sentencia asigna un nombre a la vista y especifica la consulta que la define. Esta sentencia puede asignar opcionalmente un nombre a cada columna en la vista recién creada.  VISTAS HORIZONTALES Se restringe el acceso de un usuario únicamente a filas seleccionadas de una tabla. Ejemplo: En la consulta siguiente se muestra solamente los vendedores de la región Oeste. CREATE VIEW REGION_OESTE AS SELECT * FROM REP_VENTAS WHERE OFICINA_REP IN (11, 12, 13)  VISTAS VERTICALES En las vistas verticales se restringe el acceso de un usuario únicamente a determinadas columnas seleccionadas de una tabla. Ejemplo: En la vista siguiente se muestra solamente el id de empleado, el nombre y la oficina de representación para todos los vendedores. CREATE VIEW INFORMACION AS SELECT ID_EMPL, NOMBRE, OFICINA_REP FROM REP_VENTAS INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  22. 22. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 22 ~ Laureate International Universities  VISTA FILA/COLUMNA: Es muy común utilizar vistas que dividan una tabla fuente tanto horizontalmente como verticalmente. Ejemplo: En la vista siguiente se muestra el número de cliente, el nombre de la empresa y el limite de crédito de todos los clientes asignados al empleado con id 115. CREATE VIEW INFO_CLIENTE_115 AS SELECT ID_CLIENTE, EMPRESA, LIM_CREDITO FROM CLIENTES WHERE REPRES_CLIENTE = 115  VISTAS AGRUPADAS Se denominan vistas agrupadas las que contienen una cláusula GROUP BY que permite agrupara filas relacionadas de datos y producir una fila de resultados para cada grupo que resume los datos de se grupo. Ejemplo: Definir una vista que muestre el total de ventas y el promedio de edad de cada oficina. CREATE VIEW TOTALVENTAS (OFICINA, TOTAL, PROMEDIO_EDAD) AS SELECT R_OFICINA, SUM(VENTAS), AVG(EDAD) FROM RVENTAS GROUP BY R_OFICINA INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  23. 23. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 23 ~ Laureate International Universities  ACTUALIZACIÓN DE VISTAS La mayoría de las vistas suelen actualizarse realizando consultas INSERT o UPDATE sobre ellas, pero hay que tener presente las siguientes reglas:  La cláusula FROM debe especificar solo una tabla actualizable.  Cada elemento de la selección debe ser una referencia de columnas simples (no puede contener expresiones, columnas calculadas, ni funciones de columna).  La cláusula WHERE no debe incluir una sub consulta.  La consulta no debe incluir una cláusula GROUP BY o HAVING. Ejemplo: Para una vista no actualizable puede crearse con la opción de sólo lectura: WITH READ ONLY. CREATE VIEW REGION_ESTE AS SELECT * FROM REP_VENTAS WHERE OFICINA_REP IN (11, 12, 13) WITH READ ONLY Ejemplo: A continuación se presenta un ejemplo de vistas actualizables con condición de chequeo WITH CHECK OPTION. CREATE VIEW REGION_ESTE AS SELECT * FROM REP_VENTAS WHERE OFICINA_REP IN (11, 12, 13) WITH CHECK OPTION INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  24. 24. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 24 ~ Laureate International Universities c. Sentencia ALTER VIEW La sentencia ALTER VIEW permite definir (opción ADD), modificar (opción MODIFY) o borrar (opción DROP) restricciones en vistas o recopilar una vista inválida (opción COMPILE) para localizar errores.  SENTENCIA ADD Ejemplo: Añade una nueva columna email. ALTER TABLE CLIENTES ADD EMAIL VARCHAR(50)  SENTENCIA MODIFY Ejemplo: Modifica la longitud de entrada de la columna nombre de la tabla Alumno. ALTER TABLE ALUMNO MODIFY NOMBRE VARCHAR (30)  SENTENCIA DROP Ejemplo: Elimina la columna email de la tabla Clientes. ALTER TABLE CLIENTES DROP COLUMN MAIL INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  25. 25. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 25 ~ Laureate International Universities d. Ventajas y Desventajas de las Vistas 2. ÍNDICES a. Definición Un índice es una estructura que proporciona un acceso rápido a las filas de una tabla en base a los valores de una o más columnas y que pueden mejorar el rendimiento de las consultas al buscar sobre unas filas determinadas. Un índice de SQL es una estructura asociada a una tabla o vista que acelera la obtención de filas de la tabla o de la vista. Un índice contiene claves generadas a partir de una o varias columnas de la tabla o de la vista. b. Sentencia CREATE INDEX CREATE INDEX <NOMBRE_ÍNDICE> ON <NOMBRE_TABLA> (NOMBRE_COLUMNA) Ejemplo: Crear un índice sobre la columna CIF para una búsqueda más rápida. CREATE INDEX FACTURA.CLIENTES_IDX1 ON FACTURA.CLIENTES (CIF) INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  26. 26. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 26 ~ Laureate International Universities c. Sentencia ALTER INDEX ALTER INDEX [SCHEMA.] INDEX OPTIONS Ejemplo: Dejar sin uso el índice FACTURA.CLIENTES_IDX1. ALTER INDEX FACTURA.CLIENTES_IDX1 UNUSABLE ALTER INDEX FACTURA.CLIENTES_IDX1 INVISIBLE d. Sentencia DROP INDEX DROP INDEX <NOMBRE_TABLA>.<NOMBRE_INDICE> Ejemplo: Eliminar el índice UIX_CLIENTES_NIF de la tabla Clientes. DROP INDEX CLIENTES.UIX_CLIENTES_NIF; INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  27. 27. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 27 ~ Laureate International Universities 3. SECUENCIAS a. Definición Una secuencia de Oracle es un generador secuencial de números con nombre. Las secuencias son utilizadas frecuentemente para crear claves artificiales o para ordenar filas que de otra forma no tienen orden. Como las constraints, las secuencias sólo existen en el diccionario de datos. Las secuencias pueden ser configuradas para incrementarse o decrementarse, repetirse, etc. Comandos para utilizar secuencias: START WITH •Define el primer número que generará la secuencia. •Por defecto es 1 INCREMENT BY •Define el incremento o decremento para los siguientes números generados. •Para especificar una secuencia decremental, basta usar un número negativo. MINVALUE •Mínimo valor que pueda generar la secuencia. Tiene sentido en secuencias decrementales. MAXVALUE •El número más alto que puede generar la secuencia. •El valor por defecto es NOMAXVALUE, que en realidad es 10E27. CYCLE •La secuencia repetirá los números una vez se haya alcanzado el máximo NOCYCLE •La secuencia repetirá los números una vez se haya alcanzado el máximo. •Cuando intente generar el siguiente valor, fallará. NOCYCLE es la opción por defecto CACHE •Define el tamaño del bloque de números de secuencia que se almacenarán en la memoria. •Por defecto es 20 NOCACHE •Fuerza la modificación sobre el diccionario de datos cada vez que se solicita un número de la secuencia. INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  28. 28. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 28 ~ Laureate International Universities Ejemplo: Crea una secuencia ORACLE_PRODUCTOS. CREATE SEQUENCE ORACLE_PRODUCTOS MINVALUE 1 MAXVALUE 999999999999999999999999999 START WITH 1 INCREMENT BY 1 CACHE 20; INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  29. 29. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 29 ~ Laureate International Universities 4. SINÓNIMOS a. Definición Un sinónimo es un nombre alternativo o un alias que identifica una tabla, una vista, una secuencia u otro objeto que se almacene en la base de datos. Con un sinónimo se pretende normalmente simplificar el nombre original de la tabla. Es preciso saber que todas las bases de datos soportan los sinónimos. Un sinónimo puede hacer referencia a una tabla, vista, secuencia, procedimiento, etc. En la base de datos local o, vía link de base de datos, a otra base de datos. Los sinónimos se utilizan para simplificar los SQL dándole un nombre a un objeto local o remoto. Los sinónimos no se invalidan en el momento en que se elimina el objeto al cuál hacen referencia. Es más, se puede crear un sinónimo de un objeto que no existe. Cuando buscamos un objeto, el orden que sigue Oracle es:  UN OBJETO PROPIETARIO DEL USUARIO ACTUAL Un sinónimo de un objeto que se encuentre en el usuario actual.  SINÓNIMO PÚBLICO Un sinónimo público es accesible para todos los usuarios.  SINÓNIMO PRIVADO Un sinónimo privado sólo lo es para el propietario y para aquellos a los cuales se les ha otorgado permisos. INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  30. 30. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 30 ~ Laureate International Universities a. Sentencia CREATE SYNONYM Ejemplo: Crea el sinónimo Autos para la tabla tProductoAutos. CREATE PUBLIC SYNONYM AUTOS FOR TPRODUCTOAUTOS b. Sentencia DROP SYNONYM Ejemplo: Eliminar el sinónimo creado anteriormente. DROP SYNONYM AUTOS INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II
  31. 31. UNIVERSIDAD PRIVADA DEL NORTE ® ~ 31 ~ Laureate International Universities WEBGRAFÍA  http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r22204.PDF  http://es.scribd.com/doc/6581871/SQL1Vistas  http://www.balearsinnovacio.com/blog/wp-content/uploads/2008/03/5-otros-objetos- de-la-base-de-datos.pdf  http://msdn.microsoft.com/es-es/library/ms176118.aspx  http://www.oracleyyo.com/index.php/2009/09/03/oracle11gr2-nueva-caracteristica-de- los  http://ora.u440.com/ddl/create%20index.html INGENIERÍA EN SISTEMAS COMPUTACIONALES SEMESTRE 2012 - II

×