SQL Serverでビューを作成する方法を徹底解説【初心者向けガイド】

SQL Serverのビューは、データベース内のテーブルや他のビューからデータを取得して仮想テーブルを作成する機能です。

本記事では、ビューの基本的な概念から作成方法、実際の使用例、さらに演習問題までを解説します。初心者でも理解しやすいよう、具体例を用いて説明します。


ビュー(View)とは?

ビューとは、SQL Serverで使用できる仮想的なテーブルの一種です。ビューを利用することで、次のような利点があります。

  • データの再利用:複雑なクエリを簡略化できる
  • セキュリティの向上:特定のカラムや行だけを表示可能
  • メンテナンスの容易化:クエリの再利用性が高まる

ビューはあくまで仮想的なテーブルであり、実際にはデータを保存しません。基となるテーブルのデータを参照します。


ビューの基本構文

ビューを作成するには、以下の構文を使用します:

CREATE VIEW ビュー名 AS
SELECT 列名1, 列名2, ...
FROM テーブル名
WHERE 条件;

具体例: 以下の例では、EmployeesテーブルからDepartment = ‘Sales’の従業員データだけを抽出するビューを作成します。

CREATE VIEW SalesEmployees AS
SELECT EmployeeID, FirstName, LastName, Department
FROM Employees
WHERE Department = 'Sales';

ビューを作成すると、以下のように通常のテーブルのようにデータを取得できます。

SELECT * FROM SalesEmployees;

ビューの管理

ビューは一度作成した後でも変更や削除が可能です。

(1) ビューの変更

ビューの定義を変更する場合、ALTER VIEW文を使用します。

ALTER VIEW SalesEmployees AS
SELECT EmployeeID, FirstName, LastName, Department, HireDate
FROM Employees
WHERE Department = 'Sales';

(2) ビューの削除

不要になったビューを削除するには、DROP VIEW文を使用します。

DROP VIEW SalesEmployees;

ビューの使用例

例1: データの簡略化

複数のテーブルを結合して複雑なクエリを作成するときに、ビューを利用することでクエリをシンプルにできます。

CREATE VIEW ProductSales AS
SELECT p.ProductName, c.CategoryName, s.SaleDate, s.SaleAmount
FROM Products p
JOIN Categories c ON p.CategoryID = c.CategoryID
JOIN Sales s ON p.ProductID = s.ProductID;

ビューを利用してデータを取得:

SELECT * FROM ProductSales WHERE SaleAmount > 1000;

例2: セキュリティの向上

特定のカラムのみを表示するビューを作成し、ユーザーに直接テーブルへのアクセス権を与えずビューを通してデータを提供することができます。


演習問題

以下のテーブルを基にして演習問題を解きましょう。

テーブル定義
  • Employees
    • EmployeeID (int)
    • FirstName (varchar)
    • LastName (varchar)
    • Department (varchar)
    • HireDate (date)

演習1

Department = ‘IT’の従業員データを表示するビューを作成してください。

演習2

作成したビューに対して、HireDateが2020年以降の従業員を表示するクエリを作成してください。

演習3

作成したビューに新しいカラムFullName(FirstNameとLastNameを結合したもの)を追加するように変更してください。


解答例

解答1

CREATE VIEW ITEmployees AS
SELECT EmployeeID, FirstName, LastName, Department, HireDate
FROM Employees
WHERE Department = 'IT';

解答2

SELECT * FROM ITEmployees
WHERE HireDate >= '2020-01-01';

解答3

ALTER VIEW ITEmployees AS
SELECT EmployeeID, 
       FirstName, 
       LastName, 
       Department, 
       HireDate,
       CONCAT(FirstName, ' ', LastName) AS FullName
FROM Employees
WHERE Department = 'IT';

まとめ

ビューを活用することで、複雑なデータの取り扱いが容易になり、セキュリティや可読性の向上が期待できます。

本記事を参考に、ぜひビューを活用してみてください!


記事の補足情報

  • 推奨するSQL Serverバージョン:SQL Server 2016以降
  • 使用するSQLクライアント:SQL Server Management Studio (SSMS)