SQL | Puntos de vista

Las vistas en SQL son una especie de tablas virtuales. Una vista también tiene filas y columnas tal como están en una tabla real en la base de datos. Podemos crear una vista seleccionando campos de una o más tablas presentes en la base de datos. Una vista puede tener todas las filas de una tabla o filas específicas según ciertas condiciones.

En este artículo, aprenderemos a crear, eliminar y actualizar vistas.
Tablas de muestra :

EstudianteDetalles

Screenshot (57)

EstudianteMarcas

Screenshot (58)

CREAR VISTAS

Podemos crear View usando la declaración CREATE VIEW . Una vista se puede crear a partir de una sola tabla o de varias tablas.

Sintaxis :

CREATE VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE condition;

view_name: Name for the View
table_name: Name of the table
condition: Condition to select rows

Ejemplos :

  • Crear vista desde una sola tabla:
    • En este ejemplo, crearemos una vista denominada DetailsView a partir de la tabla StudentDetails.
      Consulta:
      CREATE VIEW DetailsView AS
      SELECT NAME, ADDRESS
      FROM StudentDetails
      WHERE S_ID < 5;
      

      Para ver los datos en la Vista, podemos consultar la vista de la misma manera que consultamos una tabla.

      SELECT * FROM DetailsView;
      

      Producción:
      Captura de pantalla (57)

    • En este ejemplo, crearemos una vista denominada 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:
      Captura de pantalla (64)

  • Creación de vistas a partir de varias tablas : en este ejemplo, crearemos una vista denominada MarksView a partir de dos tablas StudentDetails y StudentMarks. Para crear una vista a partir de varias tablas, simplemente podemos incluir varias tablas en la instrucción SELECT. Consulta:
    CREATE VIEW MarksView AS
    SELECT StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS
    FROM StudentDetails, StudentMarks
    WHERE StudentDetails.NAME = StudentMarks.NAME;
    

    Para mostrar datos de View MarksView:

    SELECT * FROM MarksView;
    

    Producción:
    Captura de pantalla (59)

ELIMINACIÓN DE VISTAS

Hemos aprendido a crear una vista, pero ¿qué pasa si ya no se necesita una vista creada? Evidentemente querremos borrarlo. SQL nos permite eliminar una Vista existente. Podemos eliminar o soltar una Vista usando la instrucción DROP.

Sintaxis :

DROP VIEW view_name;

view_name: Name of the View which we want to delete.

Por ejemplo, si queremos eliminar la vista MarksView , podemos hacer esto como:

DROP VIEW MarksView;

ACTUALIZANDO VISTAS

Hay ciertas condiciones que deben cumplirse para actualizar una vista. Si alguna de estas condiciones no se cumple, no se nos permitirá actualizar la vista.

  1. La instrucción SELECT que se utiliza para crear la vista no debe incluir la cláusula GROUP BY ni la cláusula ORDER BY.
  2. La declaración SELECT no debe tener la palabra clave DISTINCT.
  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 sola tabla. Si la vista se crea utilizando varias tablas, no se nos permitirá actualizar la vista.
  • Podemos usar la instrucción CREATE OR REPLACE VIEW para agregar o eliminar campos de una vista.
    Sintaxis :
    CREATE OR REPLACE VIEW view_name AS
    SELECT column1,coulmn2,..
    FROM table_name
    WHERE condition;
    

    Por ejemplo, si queremos actualizar la vista MarksView y agregar el campo EDAD a esta vista desde la tabla StudentMarks , podemos hacer esto como:

    CREATE OR REPLACE VIEW MarksView AS
    SELECT StudentDetails.NAME, StudentDetails.ADDRESS, StudentMarks.MARKS, StudentMarks.AGE
    FROM StudentDetails, StudentMarks
    WHERE StudentDetails.NAME = StudentMarks.NAME;
    

    Si obtenemos todos los datos de MarksView ahora como:

    SELECT * FROM MarksView;
    

    Producción:
    Captura de pantalla (60)

  • Insertar una fila en una vista :
    Podemos insertar una fila en una Vista de la misma forma que lo hacemos en una tabla. Podemos usar la instrucción INSERT INTO de SQL para insertar una fila en una Vista. Sintaxis :
    INSERT INTO view_name(column1, column2 , column3,..) 
    VALUES(value1, value2, value3..);
    
    view_name: Name of the View
    

    Ejemplo :
    en el siguiente ejemplo, insertaremos una nueva fila en View DetailsView que hemos creado anteriormente en el ejemplo de «creación de vistas desde una sola tabla».

    INSERT INTO DetailsView(NAME, ADDRESS)
    VALUES("Suresh","Gurgaon");
    

    Si obtenemos todos los datos de DetailsView ahora como,

    SELECT * FROM DetailsView;
    

    Producción:
    Captura de pantalla (62)

  • Eliminar una fila de una vista :
    eliminar filas de una vista también es tan simple 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 elimine la fila de la tabla real y el cambio se reflejará en la vista. Sintaxis :
    DELETE FROM view_name
    WHERE condition;
    
    view_name:Name of view from where we want to delete rows
    condition: Condition to select rows 
    

    Ejemplo :
    en este ejemplo, eliminaremos la última fila de la vista DetailsView que acabamos de agregar en el ejemplo anterior de inserción de filas.

    DELETE FROM DetailsView
    WHERE NAME="Suresh";
    

    Si obtenemos todos los datos de DetailsView ahora como,

    SELECT * FROM DetailsView;
    

    Producción:
    Captura de pantalla (57)

CON OPCIÓN CHEQUE

La cláusula WITH CHECK OPTION en SQL es una cláusula muy útil para las vistas. Es aplicable a una vista actualizable. Si la vista no es actualizable, entonces no tiene sentido incluir esta cláusula en la instrucción CREATE VIEW.

  • La cláusula WITH CHECK OPTION se utiliza para evitar la inserción de filas en la vista donde no se cumple la condición de la cláusula WHERE en la instrucción CREATE VIEW.
  • Si hemos utilizado la cláusula WITH CHECK OPTION en la declaración CREATE VIEW, y si la cláusula UPDATE o INSERT no satisface las condiciones, devolverán un error.

Ejemplo :
en el siguiente ejemplo, estamos creando una vista de muestra de la tabla StudentDetails con la cláusula WITH CHECK OPTION.

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, dará un error porque la vista se crea con la condición para la columna NOMBRE como NO NULO.
Por ejemplo, aunque la Vista es actualizable, la siguiente consulta para esta Vista tampoco es válida:

INSERT INTO SampleView(S_ID)
VALUES(6);

NOTA : El valor predeterminado de la columna NOMBRE es nulo .

Usos de una vista:
una buena base de datos debe contener vistas debido a las siguientes razones:

  1. Restricción del acceso a los datos: las
    vistas proporcionan un nivel adicional de seguridad de la tabla al restringir el acceso a un conjunto predeterminado de filas y columnas de una tabla.
  2. Ocultar la complejidad de los datos:
    una vista puede ocultar la complejidad que existe en una combinación de varias tablas.
  3. Simplifique los comandos para el usuario: las
    vistas le permiten al usuario seleccionar información de varias tablas sin necesidad de que los usuarios sepan cómo realizar una combinación.
  4. Almacenar consultas complejas: las
    vistas se pueden usar para almacenar consultas complejas.
  5. Renombrar columnas:
    las vistas también se pueden usar para cambiar el nombre de las columnas sin afectar las tablas base, siempre que la cantidad de columnas a la vista debe coincidir con la cantidad de columnas especificadas en la declaración de selección. Por lo tanto, el cambio de nombre ayuda a ocultar los nombres de las columnas de las tablas base.
  6. Facilidad de vista múltiple:
    se pueden crear diferentes vistas en la misma tabla para diferentes usuarios.

Este artículo es una contribución de Harsh Agarwal . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *