Académique Documents
Professionnel Documents
Culture Documents
Objetivos:
Introduccin
Cuando se tiene bases de datos muy grandes con muchas tablas y relaciones es difcil
elaborar consultas que cumplan con las necesidades de informacin de una empresa, por
esta razn es importante el usar los recursos del manejo de subconsultas y la creacin de
vistas.
SUBCONSULTAS
Una subconsulta es una consulta anidada en una instruccin SELECT, INSERT, UPDATE o
DELETE, o bien en otra subconsulta. Las subconsultas se pueden utilizar en cualquier parte
en la que se permita una expresin. Se llama tambin subconsulta a una consulta o seleccin
interna, mientras que la instruccin que contiene una subconsulta tambin es conocida
como consulta o seleccin externa.
Una consulta SELECT normal, que incluye los componentes normales de la lista de seleccin.
Una clusula normal FROM que incluye uno o varios nombres de tablas o vistas.
repuestos y de qu modelo estn arriba del precio promedio (30.7448) de los repuestos
SELECT modelos.modelo,repuestos.nombre,repuestos.precio
FROM modelos INNER JOIN repuestos
ON modelos.id_modelos = repuestos.id_modelos
WHERE repuestos.precio > (SELECT AVG(precio) FROM repuestos)
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 travs de la vista no estn
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 tambin tabla virtual porque los resultados que retorna y la manera
de referenciarlas es la misma que para una tabla.
Las vistas permiten:
Podemos crear vistas con: un subconjunto de registros y campos de una tabla; una unin
de varias tablas; una combinacin de varias tablas; un resumen estadstico de una tabla; un
subconjunto de otra vista, combinacin de vistas y tablas.
Una vista se define usando un "select".
La sintaxis bsica 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 creo una nueva tabla de nombre lista1_scrum, ha esta se le podrn hacer consultas al
igual que una tabla normal.
Otra opcin es tambin 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
Los nombres para vistas deben seguir las mismas reglas que cualquier identificador. Para
distinguir una tabla de una vista podemos fijar una convencin 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 clusulas "compute" ni "compute by" ni la palabra clave "into"
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.
Ahora, por ejemplo al actualizar el pas de Japon por Nippon si me realizara el proceso.
Actualizara la vista, y tambin actualizar la tabla base original, por tal motivo se debe tener
cuidad al actualizar los datos de una vista.
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
Una vez que hemos seleccionado nuestros campos a ocupar, vemos que en la parte de en
medio estn listadas todas las columnas donde puedo activar o desactivarlas adems de
arriba.
Tambien en la parte de abajo podemos ver la consulta creada por el diseador, si todo esta
bien procedemos a guardar nuestra nueva vista, daremos click derecho sobre la pestaa del
diseador.
Una vez guardada la consulta nos apararecera en la pestaa views y voy a poder ver las
columnas que contiene la vista, pero debemos recordar que no podremos editar las
columnas, solamente los datos.
Ejercicios:
Cree subconsultas con las opciones de Insert, Delete y Update.
Datos ejemplo:
CREATE DATABASE autos
GO
USE autos
GO
CREATE TABLE marca
(
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
marca
marca
marca
marca
marca
marca
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
modelos
modelos
modelos
modelos
modelos
modelos
modelos
modelos
modelos
modelos
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
('Toyota','Japon')
('Kia','Corea')
('Fiat','Italia')
('Chevrolet','USA')
('Mercedez','Alemania')
('Honda','Japon')
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
('Civic',4,'Gasolina',10000,'2010',6)
('CRX',4,'Gasolina',6800,'1995',6)
('300 SL',4,'Gasolina',16800,'2004',5)
('Chevy',4,'Gasolina',9800,'1999',4)
('Camaro',5,'Gasolina',12800,'2001',4)
('Aveo',5,'Gasolina',9300,'2000',4)
('Malibu',5,'Gasolina',8000,'2007',4)
('Uno',5,'Gasolina',6800,'2007',3)
('Cerato',5,'Gasolina',9000,'2011',2)
('Rio',5,'Gasolina',13000,'2010',2)
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
('Manecia',12.3,10,1)
('Empaque de Culata',21.6,10,2)
('Bomper delantero',25.7,10,9)
('Filtro de aire',10,10,1)
('Parabrisas delantero',17.8,10,3)
('Timon ajustable',58.5,10,8)
('Liquido de Frenos',3.43,10,1)
('Amortiguadores',50,10,2)
('Perno Llantas',7,10,1)
('PUerta conductor',8.98,10,1)
('Bonba de Gasolina',37.7,10,2)
('Bujillas especiales',22,10,4)
('Asiento',125,10,1)
('Chapa baul',25.8,10,3)
('Faja Distribuidor',34.3,10,1)
('Pintura carroceria',65,10,7)
('Cable alternador',14,10,2)
('Cable bateria',4.60,10,1)
('Aditivos Motor',9.7,10,1)
('Aditivos Motor',13.6,20,2)
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INSERT
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
INTO
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
repuestos
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
VALUES
('Prensa de Clocth',140.3,20,1)
('Prensa de Clocth',100.3,20,2)
('Disco Frenos',21.2,20,4)
('Disco Frenos',29.90,20,5)
('Pastillas',2.3,20,2)
('ROLES PILOTO',10,20,6)
('Manecia',22,20,1)
('Manecia',43.1,20,2)
('Relay de arranque',11,20,9)
('Relay de arranque',37.2,20,7)
('BUSHING DE CREMALLERA',25,30,8)
('BUSHING DE CREMALLERA',15,30,3)
('Manecia',20,30,2)
('Silvines',32,30,2)
('Silvines',56,45,7)
('Silvines',7.8,30,2)
('Platinos',21.6,30,1)
('Platinos',17.3,30,2)
('Condensador',45,30,4)
('Condensador',2.3,30,3)
('Alternadores',34.23,30,5)