Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la...

15
Base de Datos I

Transcript of Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la...

Page 1: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

Base de Datos I

Page 2: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

Sub consultas y vistas

Objetivos:

Elaborar sub consultas, a partir de una consulta.

Generar diferentes vistas a partir de las tablas de una base de datos.

Introducción

Cuando se tiene bases de datos muy grandes con muchas tablas y relaciones es difícil

elaborar consultas que cumplan con las necesidades de información de una empresa, por

esta razón es importante el usar los recursos del manejo de subconsultas y la creación de

vistas.

SUBCONSULTAS

Una subconsulta es una consulta anidada en una instrucción SELECT, INSERT, UPDATE o

DELETE, o bien en otra subconsulta. Las subconsultas se pueden utilizar en cualquier parte

en la que se permita una expresión. Se llama también subconsulta a una consulta o selección

interna, mientras que la instrucción que contiene una subconsulta también es conocida

como consulta o selección externa.

Una consulta SELECT normal, que incluye los componentes normales de la lista de selección.

Una cláusula normal FROM que incluye uno o varios nombres de tablas o vistas.

Una cláusula opcional WHERE.

Una cláusula opcional GROUP BY.

Una cláusula opcional HAVING.

SUB CONSULTAS CON OPERADORES DE COMPARACION.

Las subconsultas se pueden presentar con uno de los operadores de comparación (=, < >, >,

> =, <, ! >, ! <, or < =).

Page 3: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

SUBCONSULTAS USADAS EN LUGAR DE UNA EXPRESION.

En Transact-SQL, una subconsulta se puede usar allí donde se pueda usar una expresión en

las instrucciones SELECT, UPDATE, INSERT y DELETE, excepto en una lista ORDER BY.

SUBCONSULTAS CON INSERT, UPDATE Y DELETE

También puede realizarse subconsultas combinando estas expresiones.

SUBCONSULTAS CON EXISTS

Cuando una subconsulta se especifica con la palabra clave EXISTS, funciona como una

prueba de existencia. La cláusula WHERE de la consulta externa comprueba si existen las

filas devueltas por la subconsulta. En realidad, la subconsulta no produce ningún dato,

devuelve el valor TRUE o FALSE.

VIEW - Vistas

Una vista es una alternativa para mostrar datos de varias tablas. Una vista 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 como un objeto.

Entonces, una vista almacena una consulta como un objeto para utilizarse 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:

Ocultar información: permitiendo el acceso a algunos datos y manteniendo oculto

el resto de la información que no se incluye en la vista. El usuario opera con los datos

de una vista como si se tratara de una tabla, pudiendo modificar tales datos.

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.

Podemos crear vistas con: un subconjunto de registros y campos de una tabla; una unión

Page 4: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

de varias tablas; una combinación de varias tablas; un resumen estadístico de una tabla; un

subconjunto de otra vista, combinación de vistas y tablas.

Una vista se define usando un "select".

La sintaxis básica parcial para crear una vista es la siguiente:

USE SCRUM

GO

CREATE VIEW lista1_scrum

AS

SELECT personas.nombre,personas.apellido,roles.rol,pais.pais

FROM personas INNER JOIN ROLES ON personas.id_rol = roles.id_rol

INNER JOIN pais ON personas.id_pais = pais.id_pais

SELECT * FROM lista1_scrum

Se creó una nueva tabla de nombre lista1_scrum, ha esta se le podrán hacer consultas al

igual que una tabla normal.

Page 5: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

Otra opción es también unir o calcular campos, en el siguiente ejemplo, creamos una vista

donde unimos el nombre y el apellido, para crear un solo campo.

USE SCRUM

GO

CREATE VIEW vista_nueva

AS

SELECT (personas.nombre + personas.apellido) AS nomb,roles.rol,pais.pais

FROM personas INNER JOIN ROLES ON personas.id_rol = roles.id_rol

INNER JOIN pais ON personas.id_pais = pais.id_pais

SELECT * FROM vista_nueva

Esta orden creara una tabla como esta:

Los nombres para vistas deben seguir las mismas reglas que cualquier identificador. Para distinguir una tabla de una vista podemos fijar una convención para darle nombres, por ejemplo, colocar el sufijo “vista” y luego el nombre de las tablas consultadas en ellas.

Los campos y expresiones de la consulta que define una vista deben tener un nombre. Se debe colocar nombre de campo cuando es un campo calculado o si hay 2 campos con el mismo nombre.

Al crear una vista, SQL Server verifica que existan las tablas a las que se hacen referencia en ella. Se aconseja probar la sentencia "select" con la cual definiremos la vista antes de crearla para asegurarnos que el resultado que retorna es el imaginado.

Existen algunas restricciones para el uso de "create view", a saber:

no puede incluir las cláusulas "compute" ni "compute by" ni la palabra clave "into"

Page 6: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

no se pueden crear vistas temporales ni crear vistas sobre tablas temporales.

no se pueden asociar reglas ni valores por defecto a las vistas. no puede combinarse con otras instrucciones en un mismo lote. Se pueden construir vistas sobre otras vistas.

VISTAS EN FORMA GRAFICA También podemos desarrollar vistas en forma gráfica y recibir la ayuda de un diseñador,

donde podemos elegir las tablas y campos que deseamos utilizar.

En primer lugar en el explorador de objetos expandimos la base de datos que deseamos

utilizar en este caso “SCRUM”, después presiono click derecho sobre la carpeta “view”.

Al seleccionarla me mostrar un cuadro con todas las bases de datos disponibles, puedo

utilizar “Refresh” para actualizar la lista de tablas, para nuestro ejemplo seleccionaremos

las tablas personas y roles

Page 7: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

Al seleccionar estas tablas nos aparecerá un diagrama entidad relación, y si ya existen

relaciones las mostrara.

El siguiente paso será seleccionar los campos a ocupar en nuestra nueva vista.

Una vez que hemos seleccionado nuestros campos a ocupar, vemos que en la parte de en

medio están listadas todas las columnas donde puedo activar o desactivarlas además de

arriba.

También en la parte de abajo podemos ver la consulta creada por el diseñador, si todo está

bien procedemos a guardar nuestra nueva vista, daremos click derecho sobre la pestaña del

diseñador.

Page 8: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

La ventana de guardado me dará la oportunidad de guardar la nueva vista, con un nombre

personalizado, para nuestro ejemplo usamos reporte_roles.

Una vez guardada la consulta nos apararecera en la pestaña “views” y voy a poder ver las columnas que contiene la vista, pero debemos recordar que no podremos editar las columnas, solamente los datos.

Page 9: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

Ahora ya podremos utilizar la vista en la forma que nos convenga.

Page 10: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

Procedimiento:

1. Crear la siguiente base de datos “Autos”, sus tablas, relaciones y los

registros correspondientes.

Page 11: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

2. Vamos realizar un ejemplo, tomando la base de datos autos, y queremos

obtener que repuestos y de qué modelo están arriba del precio promedio

(30.7448) de los repuestos.

Esta consulta nos da la siguiente pantalla de resultado:

En el ejemplo siguiente se muestra cómo se puede usar esta mejora. Esta consulta busca los precios de todas las bicicletas de montaña, el precio medio y la diferencia entre el precio de cada bicicleta y el precio medio.

Page 12: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

El resultado es:

3. USO DE DELETE, INSERT Y UPDATE EN UNA VISTA

Si quiero utilizar una expresión DELETE en una vista lo más probable es que no me lo

permita por la combinación de tablas que realizo y esta pueden evitar que borre los

registros, pero si la vista es de una tabla que tiene registros dependientes, realizara el

borrado de registro y también realizara el borrado de la tabla original.

Si trato de borrar registro de la vista: vista_nueva, pasara lo siguiente:

Si por ejemplo trato de insertar un registro me dará esta respuesta.

Ahora, por ejemplo al actualizar el país de “Japon” por “Nippon” si me realizara el proceso.

Page 13: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

Actualizara la vista, y también actualizar la tabla base original, por tal motivo se debe tener cuidad al actualizar los datos de una vista.

Page 14: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

Análisis de resultados:

Crear subconsultas con las opciones INSERT, DELETE, UPDATE del ejemplo anterior.

Crear la base de datos "MiServicio"

Crear las tablas que aparecen en el esquema y las relaciones:

Insertar 10 registros por tabla.

Realizar las siguientes consultas:

Listar todos los clientes

Listar todos los automóviles

Listar los coches que han sido reparados por tener fallas en el aireacondicionado.

Listar los precios de las piezas que se tienen disponibles.

Listar las horas de servicio que estuvieron los coches marca Toyota

Crear las tablas mostradas y realizar el diagrama relacional.

Page 15: Base de Datos I - UDB El Salvador › ... › base-de-datos-i › 2019 › i › guia-8.pdfCrear la siguiente base de datos “Autos”, sus tablas, relaciones y los registros correspondientes.

Investigación complementaria

Genere un informe de investigación documental sobre:

El uso SQL CREATE OR REPLACE VIEW.

Cuál es el uso de la opción WITH CHECK OPTION en una vista.