sql >> Base de Datos >  >> RDS >> Sqlserver

SQL Server 2016:crear una vista

En SQL Server, puede realizar consultas como vistas. Las vistas son beneficiosas por muchas razones, incluidas la seguridad, la facilidad de uso y la comodidad.

En SQL Server, una vista es una tabla virtual cuyo contenido se define mediante una consulta. Básicamente es una consulta escrita previamente que se almacena en la base de datos.

Una vista consta de un SELECT declaración, y cuando ejecuta una consulta en la vista, ve los resultados de la misma como lo haría al abrir una tabla. Las vistas se denominan tablas virtuales porque pueden reunir datos de varias tablas, así como datos agregados, y presentarlos como si se tratara de una sola tabla.

Beneficios de las vistas

Una vista puede ser útil cuando hay múltiples usuarios con diferentes niveles de acceso, quienes necesitan ver partes de los datos en la base de datos (pero no necesariamente todos los datos). Las vistas pueden hacer lo siguiente:

  • Restringir el acceso a filas específicas en una tabla
  • Restringir el acceso a columnas específicas en una tabla
  • Une columnas de varias tablas y preséntalas como si fueran parte de una sola tabla
  • Presenta información agregada (como los resultados del COUNT() función)

Cómo crear una vista

Creas una vista usando CREATE VIEW instrucción, seguida de SELECT declaración.

CREATE VIEW ViewName 
AS
SELECT ...

Ahora crearemos una vista a partir de nuestra consulta anterior.

  1. Diseña la vista

    Tome la consulta de nuestro ejemplo anterior y prefijela con CREATE VIEW RecentAlbums AS .

    También elimine el ORDER BY porque las vistas no admiten esta cláusula (a menos que TOP , OFFSET o FOR XML también se especifica).

    También agregue un punto y coma al final de la declaración, como un terminador de declaración (más sobre eso a continuación).

    Código de muestra

    A continuación se muestra el código de nuestro ejemplo, con ORDER BY Se eliminó la cláusula y se agregó un punto y coma como terminador de declaración.

    También lo he reformateado un poco para que sea más legible).

    CREATE VIEW RecentAlbums 
    AS
    SELECT  Albums.ReleaseDate, 
            Albums.AlbumName, 
            Genres.Genre, 
            Artists.ArtistName
    FROM Albums 
    INNER JOIN
            Artists ON 
            Albums.ArtistId = Artists.ArtistId 
            INNER JOIN
                Genres ON 
                Albums.GenreId = Genres.GenreId
    WHERE   (Albums.ReleaseDate > DATEADD(year, - 10, GETDATE()));

    En este ejemplo, agregué un punto y coma al final de la vista. El Diseñador de consultas no incluyó esto, pero es una buena práctica incluirlo.

    El punto y coma es parte del estándar ANSI SQL-92. Es un carácter de terminación de declaración.

    Además, Microsoft ha anunciado que las declaraciones Transact-SQL que no terminan en punto y coma están obsoletas en SQL Server 2016, y no serán compatibles en una versión futura (SQL Server históricamente ha usado el GO palabra clave como un terminador de declaración en lugar del punto y coma).

  2. Ejecutar la Vista

    Ahora ejecute la vista como ejecutaría cualquier otra consulta.

    Haga clic en Ejecutar en la barra de herramientas.

    Ahora puede navegar a la vista en el Explorador de objetos. Expanda y verá las columnas y sus tipos de datos y propiedades, como si fuera una tabla.

  3. Consultar la Vista

    Ahora que se ha creado la vista, puede consultar la vista ejecutando SELECT declaración en contra.

    Entonces puede consultar nuestra vista recién creada usando SELECT * FROM RecentAlbums; .

  4. Filtrar la vista

    Una de las ventajas de las vistas es que puede aplicarles sus propios criterios de filtrado, filtrando aún más los resultados.

    Por ejemplo, podría agregar WHERE Genre = 'Pop' , para que la vista solo devuelva pop álbumes de los últimos 10 años.

Modificar una vista

Puede modificar su vista usando ALTER VIEW declaración en lugar de CREATE VIEW declaración.

  1. Diseña la vista alterada

    Aquí modificaremos nuestra vista para devolver álbumes de los últimos 20 años en lugar de solo 10.

    Es una colección bastante antigua, por lo que cualquier álbum lanzado en los últimos 20 años se clasifica como "reciente" :)

    También devolveremos otra columna:Artists.ActiveFrom

    Código de muestra

    Aquí está el código que usamos para el ejemplo:

    ALTER VIEW RecentAlbums 
    AS
    SELECT  Albums.ReleaseDate, 
            Albums.AlbumName, 
            Genres.Genre, 
            Artists.ArtistName,
            Artists.ActiveFrom
    FROM Albums 
    INNER JOIN
            Artists ON 
            Albums.ArtistId = Artists.ArtistId 
            INNER JOIN
                Genres ON 
                Albums.GenreId = Genres.GenreId
    WHERE   (Albums.ReleaseDate > DATEADD(year, - 20, GETDATE()));
  2. Consultar la Vista

    Ahora, consultar la vista devolverá 20 años de álbumes. También mostrará la fecha desde la que el artista estuvo activo.