0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SQL】VIEWの基礎

Posted at

VIEWの基礎

VIEWとは

ビュー(VIEW)は、基となるテーブルからデータを取得する仮想テーブルです。
ビューは、実際のデータを持たず、基となるテーブルのクエリ結果を提供します。
ビューを使用することで、データの抽象化、セキュリティ、簡潔なクエリ作成が可能になります。

VIEWの利点

  1. データの抽象化: ユーザーに対してデータの特定の部分だけを見せることができ、データベースの複雑さを隠すことができます。
  2. セキュリティ: 特定のユーザーに対してビューを通じてアクセス権を制御することで、機密データを保護できます。
  3. 簡潔なクエリ作成: 複雑なクエリをビューとして保存し、簡単に再利用することができます。
  4. データの一貫性: ビューを使用することで、一貫性のあるデータ表現を提供できます。

VIEWの作成

ビューを作成するためには、CREATE VIEW文を使用します。

例: 単純なビューの作成

-- employeesテーブルから特定の列を選択するビューを作成
CREATE VIEW employee_names AS
SELECT employee_id, first_name, last_name
FROM employees;

VIEWの使用

ビューを使用することで、基となるテーブルからデータを取得するクエリを簡素化できます。

例: ビューの使用

-- employee_namesビューを使用してデータを取得
SELECT * FROM employee_names;

更新可能なVIEW

ビューを通じてデータを更新することも可能です。ただし、ビューが特定の条件を満たしている必要があります(例:単一のテーブルに基づいている、集計関数を含まないなど)。

例: 更新可能なビュー

-- 単一のテーブルに基づくビューの作成
CREATE VIEW employee_salaries AS
SELECT employee_id, salary
FROM employees;

-- ビューを通じてデータを更新
UPDATE employee_salaries
SET salary = salary * 1.10
WHERE employee_id = 101;

非更新可能なVIEW

ビューが複数のテーブルを結合している場合や、集計関数を含む場合、そのビューは更新できません。

例: 非更新可能なビュー

-- 集計関数を含むビューの作成
CREATE VIEW department_salaries AS
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id;

-- 非更新可能なビューを通じての更新はエラーになります
-- UPDATE department_salaries
-- SET avg_salary = 50000
-- WHERE department_id = 10;

VIEWの管理

既存のビューを変更するためには、CREATE OR REPLACE VIEW文を使用します。また、ビューを削除するためには、DROP VIEW文を使用します。

VIEWの変更

-- 既存のビューを変更
CREATE OR REPLACE VIEW employee_names AS
SELECT employee_id, first_name, last_name, email
FROM employees;

VIEWの削除

-- ビューを削除
DROP VIEW employee_names;

ビューのセキュリティ

ビューを使用することで、ユーザーが直接テーブルにアクセスすることなく、必要なデータだけを提供できます。これにより、機密データを保護しつつ、必要なデータへのアクセスを制御できます。
例: ビューを使用したアクセス制御

-- 従業員の給与情報を含まないビューを作成
CREATE VIEW public_employee_info AS
SELECT employee_id, first_name, last_name, department_id
FROM employees;

-- 特定のユーザーにビューへのアクセス権を付与
GRANT SELECT ON public_employee_info TO public_user;
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?