Una vista en SQL es una consulta SQL guardada que actúa como una tabla virtual. A diferencia de las vistas de tablas normales, no almacenan datos en sí mismas. En lugar de eso, generan datos dinámicamente ejecutando la consulta SQL definida en la vista cada vez que se accede a ella.
Puede recuperar datos de una o más tablas y presentarlos en un formato personalizado que permite a los desarrolladores:
- Simplifique consultas complejas: Encapsule uniones y condiciones complejas en un solo objeto.
- Mejorar la seguridad: Restrinja el acceso a columnas o filas específicas.
- Presente datos de manera flexible: Proporcione vistas de datos personalizadas para diferentes usuarios.
Usaremos estas dos tablas SQL como ejemplos.
Detalles del estudiante:
-- Create StudentDetails table
CREATE TABLE StudentDetails (
S_ID INT PRIMARY KEY
NAME VARCHAR(255)
ADDRESS VARCHAR(255)
);
INSERT INTO StudentDetails (S_ID NAME ADDRESS)
VALUES
(1 'Harsh' 'Kolkata')
(2 'Ashish' 'Durgapur')
(3 'Pratik' 'Delhi')
(4 'Dhanraj' 'Bihar')
(5 'Ram' 'Rajasthan');
Producción:
S_ID | Nombre | DIRECCIÓN |
|---|---|---|
1 | Duro | Calcuta |
2 | Ashish | Durgapur |
3 | Práctica | Delhi |
4 | Dhanraj | Bihar |
5 | RAM | Rajastán |
Marcas de estudiantes:
-- Create StudentMarks table
CREATE TABLE StudentMarks (
ID INT PRIMARY KEY
NAME VARCHAR(255)
Marks INT
Age INT
);
INSERT INTO StudentMarks (ID NAME Marks Age)
VALUES
(1 'Harsh' 90 19)
(2 'Suresh' 50 20)
(3 'Pratik' 80 19)
(4 'Dhanraj' 95 21)
(5 'Ram' 85 18);
Producción:
IDENTIFICACIÓN | Nombre | marcas | Edad |
|---|---|---|---|
1 | Duro | 90 | 19 |
2 | suresh | 50 | 20 |
3 | Práctica | 80 | 19 |
4 | Dhanraj | 95 | 21 |
5 | RAM | 85 | 18 |
CREAR VISTAS en SQL
Podemos crear una vista usando la declaración CREATE VIEW. Se puede crear una vista a partir de una sola tabla o de varias tablas.
Sintaxis:
CREATE VIEW view_name AS
SELECT column1 column2.....
FROM table_name
WHERE condition;
Términos clave:
- nombre_vista : Nombre de la vista
- nombre_tabla : Nombre de la mesa
- condición : Condición para seleccionar filas
Ejemplo 1: creación de una vista simple a partir de una sola tabla
Ejemplo 1.1: En este ejemplo crearemos una vista llamada DetailsView de la tabla StudentDetails.
Consulta:
CREATE VIEW DetailsView AS
SELECT NAME ADDRESS
FROM StudentDetails
WHERE S_ID < 5;
Utilice la siguiente consulta para recuperar los datos de esta vista
SELECT * FROM DetailsView;Producción:
Nombre | DIRECCIÓN |
|---|---|
Duro | Calcuta |
Ashish | Durgapur |
Práctica | Delhi |
Dhanraj | Bihar |
Ejemplo 1.2: Aquí crearemos una vista llamada StudentNames a partir de la tabla StudentDetails.
Consulta:
CREATE VIEW StudentNames AS
SELECT S_ID NAME
FROM StudentDetails
ORDER BY NAME;
Si ahora consultamos la vista como
SELECT * FROM StudentNames;
Producción:
S_ID | Nombre |
|---|---|
2 | Ashish |
4 | Dhanraj |
1 | Duro |
3 | Práctica |
5 | RAM lista de usuarios de mysql |
Ejemplo 2: crear una vista a partir de varias tablas
En este ejemplo, crearemos una vista de marcas que combina datos de las tablas StudentDetails y StudentMarks. Para crear una Vista a partir de varias tablas, simplemente podemos incluir varias tablas en el SELECCIONAR declaración.
Consulta:
CREATE VIEW MarksView AS
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;
Para mostrar datos de Ver MarksView:
SELECT * FROM MarksView;Producción:
Nombre | DIRECCIÓN | marcas |
|---|---|---|
Duro | Calcuta | 90 |
Práctica | Delhi | 80 |
Dhanraj | Bihar | 95 |
RAM | Rajastán | 85 |
Gestión de vistas: actualización y eliminación de listados
1. Listado de todas las vistas en una base de datos
Podemos enumerar todas las vistas en una base de datos usando la instrucción SHOW FULL TABLES o consultando las tablas de esquema de información.
USE 'database_name';
SHOW FULL TABLES WHERE table_type LIKE '%VIEW';
Usando esquema_información
SELECT table_name
FROM information_schema.views
WHERE table_schema = 'database_name';
OR
SELECT table_schema table_name view_definition
FROM information_schema.views
WHERE table_schema = 'database_name';
2. Eliminar una vista
SQL nos permite eliminar una Vista existente. Podemos borrar o suelte la Vista usando la instrucción DROP.
Sintaxis:
DROP VIEW view_name;Ejemplo: En este ejemplo, estamos eliminando View MarksView.
DROP VIEW MarksView;3. Actualizar una definición de vista
Si queremos actualizar los datos existentes dentro de la vista use el ACTUALIZAR declaración.
UPDATE view_name
SET column1 = value1 column2 = value2.... columnN = valueN
WHERE [condition];
Si desea actualizar la definición de la vista sin afectar los datos, utilice la instrucción CREATE OR REPLACE VIEW. Por ejemplo agreguemos elAgecolumna a laMarksView:
CREATE OR REPLACE VIEW view_name AS
SELECT column1 column2 ...
FROM table_name
WHERE condition;
Nota: No todas las vistas se pueden actualizar mediante la instrucción UPDATE.
Reglas para actualizar vistas en SQL:
Es necesario cumplir ciertas condiciones para actualizar una vista. Si alguna de estas condiciones es no cumplió la vista no se puede actualizar.
tamaños de fuente de látex
- La instrucción SELECT que se utiliza para crear la vista no debe incluir la cláusula GROUP BY o ORDENAR POR cláusula.
- La declaración SELECT no debe tener la DISTINTO palabra clave.
- La Vista debe tener todos los valores NO NULOS.
- La vista no debe crearse mediante consultas anidadas o consultas complejas.
- La vista debe crearse a partir de una única tabla. Si la vista se crea utilizando varias tablas, no podremos actualizar la vista.
Técnicas avanzadas con vistas
1. Actualización de datos a través de vistas
Podemos usar la instrucción CREATE OR REPLACE VIEW para agregar o reemplazar campos de una vista. Si queremos actualizar la vista MarksView y agregar el campo EDAD a esta vista desde la tabla StudentMarks, podemos hacerlo de la siguiente manera:
Ejemplo:
CREATE OR REPLACE VIEW MarksView AS
SELECT StudentDetails.NAME StudentDetails.ADDRESS StudentMarks.MARKS StudentMarks.AGE
FROM StudentDetails StudentMarks
WHERE StudentDetails.NAME = StudentMarks.NAME;
Si recuperamos todos los datos de MarksView ahora como:
SELECT * FROM MarksView;Producción:
Nombre | DIRECCIÓN | marcas | Edad |
|---|---|---|---|
Duro | Calcuta | 90 | 19 |
Práctica | Delhi | 80 | 19 |
Dhanraj | Bihar | 95 | 21 |
RAM | Rajastán | 85 | 18 |
Podemos insertar una fila en una Vista de la misma forma que lo hacemos en una tabla. Podemos usar el INSERTAR EN declaración de SQL para insertar una fila en una Vista. En el siguiente ejemplo, insertaremos una nueva fila en Ver detallesVista que hemos creado anteriormente en el ejemplo de "creación de vistas a partir de una sola tabla".
Ejemplo:
INSERT INTO DetailsView(NAME ADDRESS)
VALUES('Suresh''Gurgaon');
Si recuperamos todos los datos de DetailsView ahora como
SELECT * FROM DetailsView;Producción:
Nombre | DIRECCIÓN |
|---|---|
Duro | Calcuta |
Ashish | Durgapur |
Práctica | Delhi |
Dhanraj | Bihar |
suresh | Gurgaon |
3. Eliminar una fila de una Vista
Eliminar filas de una vista también es tan sencillo como eliminar filas de una tabla. Podemos usar la declaración DELETE de SQL para eliminar filas de una vista. Además, al eliminar una fila de una vista, primero se elimina la fila de la tabla real y luego el cambio se refleja en la vista. En este ejemplo, eliminaremos la última fila de la vista DetallesView que acabamos de agregar en el ejemplo anterior de inserción de filas.
Ejemplo:
DELETE FROM DetailsView
WHERE NAME='Suresh';
Si recuperamos todos los datos de DetailsView ahora como
SELECT * FROM DetailsView;Producción:
Nombre | DIRECCIÓN |
|---|---|
Duro | Calcuta |
Ashish | Durgapur |
Práctica | Delhi |
Dhanraj | Bihar |
4. Cláusula CON OPCIÓN DE CHEQUE
La cláusula FROM CHECK OPTION en SQL es una cláusula muy útil para las vistas. Se aplica a una vista actualizable. Se utiliza para evitar la modificación de datos (usando INSERT o UPDATE) si no se cumple la condición en la cláusula WHERE en la declaración CREATE VIEW.
Si hemos utilizado la cláusula CON CHECK OPTION en la sentencia CREATE VIEW y si la cláusula UPDATE o INSERT no cumple las condiciones entonces devolverán un error. En el siguiente ejemplo, estamos creando una vista de muestra a partir de la tabla StudentDetails con una cláusula FROM CHECK OPTION.
Ejemplo:
CREATE VIEW SampleView AS
SELECT S_ID NAME
FROM StudentDetails
WHERE NAME IS NOT NULL
WITH CHECK OPTION;
En esta vista, si ahora intentamos insertar una nueva fila con un valor nulo en la columna NOMBRE, se producirá un error porque la vista se creó con la condición para la columna NOMBRE como NO NULA. Por ejemplo, aunque la Vista se puede actualizar, la siguiente consulta para esta Vista tampoco es válida:
INSERT INTO SampleView(S_ID)Crear cuestionario
VALUES(6);