SQLビューは、SELECTクエリによって生成された仮想テーブルまたは結果セットです。物理テーブルとは異なり、ビューはデータベースにデータを格納しません。 SELECTクエリを実行してデータを入力すると、ビュー(ビュー定義)を作成するクエリが実行されます。
MySQLでの表示とは
複数の結合と複雑なビジネスロジックを使用するを使用した複雑なSQLクエリがあるとします。このクエリは、アプリケーションコードで頻繁に使用します。ただし、ビジネス要件により、そのクエリロジックを変更する必要があります。クエリで行われた変更は、アプリケーション全体に反映される必要があります。
このような場合、SQLビューを作成し、その中にビジネスロジックをカプセル化することをお勧めします。さらに、クエリ定義を変更する場合は、アプリケーションで変更を加える代わりに、ビューの定義を変更できます。
ビューは、テーブルの実際の名前と詳細を非表示にする場合にも適用されます。顧客の機密情報をテーブルに保存し、主要な詳細のみを表示したい場合は、ビューを作成できます。
この記事では、ビューの作成について説明します。 、ビューの置換 およびドロップビュー MySQLサーバーでのステートメントの使用法。
サンプル データベース セットアップ
デモンストレーションのために、MySQLサーバーをインストールし、 EltechDBという名前のダミーデータベースを作成しました。 。そのデータベースに、 tblemployeeという名前のテーブルを作成しました。 。
次のクエリは、 EltechDBを作成します データベース:
Create database EltechDB;
次のクエリは、 tblemployeeを作成します テーブル:
CREATE TABLE tblemployees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
);
tblemployeeにダミーレコードを挿入しました 次のクエリを使用したテーブル:
INSERT INTO `EltechDB`.`tblemployees`
VALUES
(10001,'1953-09-02','Georgi','Facello','M','1986-06-26'),
(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21'),
(10003,'1959-12-03','Parto','Bamford','M','1986-08-28'),
(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01'),
(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12'),
(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02'),
(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10'),
(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15'),
(10009,'1952-04-19','Sumant','Peac','F','1985-02-18'),
(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
それでは、MySQLビューを管理するためのステートメントを明確にしましょう。
MySQLでビューを作成する方法
Create Viewステートメントは、データベースに新しいビューを作成します。構文は次のとおりです。
Create View view_name
As
Select * from base_table
ここ:
- view_name ビューの目的の名前です。
- select * from base_tableを使用してビューを生成するクエリです 。クエリはASの後に指定されます キーワード。
MySQLCreateView構文の例
従業員のリストにデータを入力するビューを作成するとします。ビューの定義は次のとおりです。
Create view vwEmployees
as
select * from tblemployees;
ビューのデータにアクセスするには、SELECTクエリを使用できます。 vwEmployeesのデータを表示するには 、次のクエリを実行します:
mysql> select * from vwEmployees;
出力:
WHERE句を使用してビューのデータをフィルタリングする
WHERE句を使用してView出力をフィルタリングできます。この例では、女性のリストを取得します。 従業員 vwEmployeesから 。クエリは次のとおりです。
mysql> select * from vwEmployees where gender='F';
クエリの出力は次のとおりです。
別の例を見てみましょう。従業員数が10005未満の従業員のリストを取得したい 。クエリは次のとおりです。
mysql> select * from vwemployees where emp_no<10005;
クエリ出力:
ビューで集計関数を使用する
ビューで集計関数を使用できます。
ここでは、 vwEmployeesの男性と女性の従業員の数を入力します。 意見。まず、COUNT関数を使用して従業員の数を取得します。次に、GROUP BY句を使用して、性別列に基づいて出力をグループ化します。クエリは次のとおりです。
mysql> select gender, count(emp_no)as 'Total Employees' from vwEmployees group by gender;
クエリ出力:
ビューで日時関数を使用する
View出力で日時関数を使用できます。入社年が1990年以上の従業員のリストを取得してみましょう。クエリは次のとおりです。
mysql> select * from vwemployees where Year(hire_date)>=1990;
クエリ出力:
ビューで制御フロー機能を使用する
ビューの出力でCASEまたはIF関数を使用できます。
性別の値を意味のある形式で印刷します。ビューによって返される性別列の出力は、MまたはFのいずれかです。Mを出力する代わりに、クエリは男性を返す必要があります。 。同様に、Fを出力する代わりに、クエリは女性を返す必要があります 。クエリは次のとおりです。
mysql> Select first_name, last_name, case when gender='M' then 'Male' when gender ='F' then 'Female' end as 'Gender', hire_date from vwEmployees;
クエリ出力:
SQLでビューを作成する方法の詳細をご覧ください。
ビューステートメントを置き換える
REPLACE VIEWは、ビューの定義を変更するために使用されます。 CREATEVIEWキーワードとREPLACEVIEWキーワードは一緒に使用されます。構文は次のとおりです。
Create or replace View view_name
As
Select * from base_table
ここ:
- ビューの作成または置換: これらのキーワードは、既存のビューを作成または置換するのに役立ちます。 createまたはreplaceviewステートメントを実行すると、MySQLはそれがデータベースに存在するかどうかをチェックします。ビューが存在する場合は、ASキーワードの後に指定されたクエリを使用してビュー定義を変更します。ビューが存在しない場合は、ASキーワードの後に指定されたクエリを使用して新しいビューを作成します。
- view_name ビューの目的の名前です。
- select * from base_tableを使用してビューを生成するために使用されるクエリです。 。クエリはASの後に指定されます キーワード。
注: ビューキーワードの作成または置換により、新しいビューを作成するか、既存のビュー定義を変更します。
ビュー名を「database_name」。「view_name」に入力します フォーマット 。 データベースを指定しないと、別のデータベースにビューを作成してしまう可能性があります。
MySQLCREATEビューまたはMySQLREPLACEビューステートメントの例
従業員の名前、名前、性別のみを表示したいと思います。また、列に適切な名前を付けたいと思います。たとえば、 first_name およびlast_name 列の値を組み合わせる必要があり、列名は従業員の名前である必要があります。 SQLクエリは次のようになります。
mysql> create or replace view vwEmployees(EmployeeName,gender) as select concat(first_name, " ",last_name),gender from tblEmployees;
次のSELECTクエリを実行して、 vwEmployeesからのデータを表示します。 :
mysql> select * from vwEmployees
クエリ出力:
ご覧のとおり、 first_name およびlast_name 値はEmployeeNameで結合されます ビュー定義が更新されたことを示す列。
MySQLDROPビューステートメント
DROP Viewキーワードは、データベースからビューを削除するのに役立ちます。構文は次のとおりです。
Drop View ‘database_name’.’view_name’
構文では、 view_name ドロップするビューの名前です。
vwEmployeesを削除しましょう DROPViewステートメントを使用して表示します。次のクエリを実行します:
mysql> DROP VIEW `eltechdb`.`vwemployees`;
ビューが削除されたことを確認するには、次のクエリを実行します。
mysql> SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW' and table_schema='EltechDB';
出力:
クエリはゼロ行を返したため、ビューが削除されたことを示しています。
概要
この記事では、MySQLビューと、それらのビューを作成および管理する方法について説明およびデモンストレーションしました。また、CREATE VIEW、REPLACE View、およびDROPViewステートメントの使用法を明確にしました。 CREATE Viewはビューの作成に使用され、REPLACE Viewはビューの定義を変更し、DROPViewはビューを削除します。