sql >> データベース >  >> RDS >> Mysql

MySQLビューの作成、ビューの置換、およびビューステートメントの削除を例に

    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はビューを削除します。


    1. SQLクエリ結果の列名として列値を設定する

    2. WindowsマシンでPostgresql11を実行すると、Moreが認識されない...エラーが発生する原因は何ですか?

    3. パターンに一致する値を含むオブジェクトのJSON配列を検索します

    4. SQLServerデータベースで有効/無効なチェック制約のリストを取得する方法-SQLServer/TSQLチュートリアルパート86