logo

Vistas SQL

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
  1. La instrucción SELECT que se utiliza para crear la vista no debe incluir la cláusula GROUP BY o ORDENAR POR cláusula.
  2. La declaración SELECT no debe tener la DISTINTO palabra clave.
  3. La Vista debe tener todos los valores NO NULOS.
  4. La vista no debe crearse mediante consultas anidadas o consultas complejas.
  5. 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)  
VALUES(6);
Crear cuestionario