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

SQLビュー

    SQL VIEWの概念は、レコードの難しさを隠すのに役立ち、データベースへのアクセスに制限を提供します。

    SQLビューはSQLテーブルに似ています。 SQLテーブルでは、データ全体を行と列に格納します。同様に、SQLビューは行と列にレコードを格納するためにも使用されますが、不要なデータではなく、ユーザーが必要とするデータのみを格納します。

    SQLVIEWは仮想テーブルです。 SQLビューでは、テーブルデータ全体ではなく、特定の列レコードにのみアクセスできます。

    CREATE VIEWキーワードを使用して1つ以上のテーブルを選択することにより、ビューを簡単に作成できます。ビューを更新および削除することもできます。

    この記事全体では、ビューの作成、ビューの削除、およびビューの更新の方法に関するビューの概念を理解します。

    1 SQLビューの作成:-

    SQLでは、CREATEVIEWキーワードを使用してビューを簡単に作成できます。単一のテーブルと複数のテーブルのビューを作成できます。

    CREATE VIEW(単一テーブル)の構文

    CREATE VIEW VIEW_NAME AS SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME WHERE CONDITION;    

    上記の構文は、単一のテーブルからビューを作成するためのものです。上記の構文では、VIEW_NAMEはSQLでビューを作成するためのビューの名前です。 Table_nameは、特定のレコードを選択するテーブルの名前です。SQLクエリではWHERE句はオプションです。

    CREATE VIEW(複数テーブル)の構文

    CREATE VIEW VIEW_NAME AS SELECT T1.COLUMN_NAME, T1.COLUMN_NAME2, T2.COLUMN_NAME1, T2.COLUMN_NAME2 FROM T1, T2 WHERE CONDITION;

    上記の構文は、複数のテーブルからビューを作成するためのものです。上記の構文では、VIEW_NAMEはSQLでビューを作成するためのビューの名前です。 T1、T2は、特定のレコードを選択するテーブルの名前です。SQLクエリではWHERE句はオプションです。

    与えられたレコードと一緒に次の表を検討してください。

    表1:Emp

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
    1002 VAIBHAV シャルマ 60000 NOIDA ORACLE 1
    1003 NIKHIL VANI 50000 ジャイプール FMW 2
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    2002 BHAVESH JAIN 65500 PUNE FMW 2
    2003 ルチカ JAIN 50000 ムンバイ テスト 4
    3001 PRANOTI SHENDE 55500 PUNE JAVA 3
    3002 ANUJA 場所 50500 ジャイプール FMW 2
    3003 DEEPAM ジャウハリ 58500 ムンバイ JAVA 3
    4001 RAJESH GOUD 60500 ムンバイ テスト 4

    表2:マネージャー。

    Managerid manager_name manager_department
    1 Snehdeep Kaur ORACLE
    2 Kirti Kirtane FMW
    3 Abhishek Manish JAVA
    4 アヌパムミシュラ テスト

    単一のテーブルからVIEWを作成する例。

    例1:従業員ID、名、姓、Empテーブルの給与を使用してビューを作成するクエリを記述します。

    CREATE VIEW EMPLOYEE_VIEW AS SELECT EMPLOYEEID, CONCAT (FIRST_NAME, CONCAT (“ ”, LAST_NAME)) AS NAME, SALARY FROM EMP;

    上記のクエリでは、従業員IDを使用してビュー名EMPLOYEE_VIEWを作成し、名と姓をName、EmpTableからの給与として連結しました。

    テーブル内のレコードを確認する場合は常に、SELECT*FROMクエリを使用します。ビューに対して行うのと同じ方法で、テーブル名の代わりにビュー名を使用します。

    SELECT * FROM EMPLOYEE_VIEW;

    例2:クエリを記述して、マネージャーID、マネージャー名、およびマネージャーテーブルの部門を含むビューを作成します。

    CREATE VIEW MANAGER_VIEW AS SELECT MANAGERID, MANAGER_NAME, MANAGER_DEPARTMENT FROM MANAGER;

    上記のクエリでは、マネージャーID、マネージャー名、およびマネージャーテーブルの部門を使用してビュー名MANAGER_VIEWを作成しました。

    テーブル内のレコードを確認する場合は常に、SELECT*FROMクエリを使用します。ビュー名を使用します。同様に、テーブル名の代わりにビューに対して行います。

    SELECT * FROM MANAGER_VIEW; 

    例3:クエリを記述して、従業員ID、名、姓、給与、給与が54000を超える従業員の市区町村、および市区町村にEmpテーブルのPuneとMumbaiが含まれるビューを作成します。

    CREATE VIEW EMPLOYEE_VIEW1 AS SELECT EMPLOYEEID, CONCAT (FIRST_NAME, CONCAT (“ ”, LAST_NAME)) AS NAME, SALARY, CITY FROM EMP WHERE SALARY > 54000 AND  CITY IN (‘PUNE’, ‘MUMBAI’);

    上記のクエリでは、従業員IDを使用してビュー名EMPLOYEE_VIEW1を作成し、名、給与、給与が54000を超える従業員の名前、給与、市を連結し、市のAND演算子を使用してEmpTableのPuneとMumbaiを含めました。 。

    テーブル内のレコードを確認する場合は常に、SELECT*FROMクエリを使用します。ビュー名を使用します。同様に、テーブル名の代わりにビューに対して行います。

    SELECT * FROM EMPLOYEE_VIEW1;

    例4:クエリを記述して、マネージャーID、マネージャー名、およびマネージャーテーブルの部門が「Oracle」および「Java」であるマネージャーの部門を含むビューを作成します。

    CREATE VIEW MANAGER_VIEW1 AS SELECT MANAGERID, MANAGER_NAME, MANAGER_DEPARTMENT FROM MANAGER; WHERE MANAGER_DEPARTMENT IN (‘ORACLE’, ‘JAVA’);

    上記のクエリでは、マネージャーID、マネージャー名、および部門が「Oracle」であるマネージャーの部門、およびマネージャーテーブルの「Java」を使用してビュー名MANAGER_VIEWを作成しました。

    テーブル内のレコードを確認する場合は常に、SELECT*FROMクエリを使用します。ビュー名を使用します。同様に、テーブル名の代わりにビューに対して行います。

    SELECT * FROM MANAGER_VIEW1;

    上記のCREATEVIEWの例はすべて、単一のテーブルからのものです。 CREATE VIEWの次の例は、複数のテーブルからのものです。

    与えられたレコードと一緒に次の表を検討してください。

    表1:Emp

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    1001 VAIBHAVI MISHRA 65000 PUNE ORACLE 1
    1002 VAIBHAV シャルマ 60000 NOIDA ORACLE 1
    1003 NIKHIL VANI 50000 ジャイプール FMW 2
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    2002 BHAVESH JAIN 65500 PUNE FMW 2
    2003 ルチカ JAIN 50000 ムンバイ テスト 4
    3001 PRANOTI SHENDE 55500 PUNE JAVA 3
    3002 ANUJA 場所 50500 ジャイプール FMW 2
    3003 DEEPAM ジャウハリ 58500 ムンバイ JAVA 3
    4001 RAJESH GOUD 60500 ムンバイ テスト 4

    表2:マネージャー。

    Managerid manager_name manager_department
    1 Snehdeep Kaur ORACLE
    2 Kirti Kirtane FMW
    3 Abhishek Manish JAVA
    4 アヌパムミシュラ テスト

    例1:Empテーブルとマネージャーテーブルから従業員ID、名前、市区町村、マネージャーID、マネージャー名を使用してビューを作成するクエリを記述します。

    CREATE VIEW EMP_MAN_VIEW AS SELECT EMP.EMPLOYEEID, CONCAT(EMP.FIRST_NAME, CONCAT(“ ”, EMP.LAST_NAME)) AS NAME, CITY, MANAGER.MANAGERID, MANAGER.MANAGER_NAME FROM EMP, MANAGER WHERE EMP.MANAGERID = MANAGER.MANAGERID;   

    上記のクエリでは、従業員ID、名前、都市、マネージャーID、およびマネージャー名を使用して、Empテーブルとマネージャーテーブルからビューを作成しました。

    テーブル内のレコードを確認する場合は常に、SELECT*FROMクエリを使用します。ビュー名を使用します。同様に、テーブル名の代わりにビューに対して行います。

    SELECT * FROM EMP_MAN_VIEW;

    2 SQLビューの更新:-

    updateステートメントは、SQLの既存のテーブルと既存のビューを変更します。 SQLの既存のビューに新しいデータを挿入することもできます。 SQLでは、以下の条件が満たされた場合にのみビューが変更されます。指定された条件の1つが満たされない場合、ビューを変更することはできません。

    • DISTINCTキーワードはSELECTステートメントでは使用しないでください。
    • ビューにすべてのNOTNULL値を含めることはできません。
    • SELECTステートメントでビューを作成するときに、ORDERBY句とGROUPBY句を使用しないでください。
    • 作成されたビューに単一のテーブルの列が含まれている場合、ビューを変更できます。つまり、ビュー内で複数のテーブルを使用することは許可されていません。
    • サブクエリを使用してビューを作成したり、複雑なクエリを含めたりしないでください
    • ビューにはSQL集計関数が含まれています。既存のビューを変更することは許可されていません。

    CREATE OR REPLACE VIEWステートメントは、ビューから新しいフィールドを追加したり、フィールドを削除したりするために使用されます。

    構文:

    CREATE OR REPLACE VIEW VIEW_NAME AS SELECT COLUMN_NAME1, COLUMN_NAME2 FROM TABLE_NAME WHERE CONDITION;    

    例1:Employee_Viewを更新し、ビューのEmpテーブルからManagerId列を追加するクエリを記述します。

    CREATE OR REPLACE VIEW EMPLOYEE_VIEW AS SELECT EMPLOYEEID, CONCAT(FIRST_NAME,CONCAT(" ", LAST_NAME)) AS NAME, SALARY, MANAGERID FROM EMP WHERE DEPARTMENT IN ('ORACLE', 'FMW');

    上記のクエリは、既存のEmployee_viewを変更し、指定されたSELECTクエリに基づいてレコードを変更します。

    テーブル内のレコードを確認する場合は常に、SELECT*FROMクエリを使用します。ビュー名を使用します。同様に、テーブル名の代わりにビューに対して行います。

    SELECT * FROM EMPLOYEE_VIEW;

    例2:Manager_Viewを更新するクエリを記述します。

    CREATE OR REPLACE VIEW MANAGER_VIEW AS SELECT MANAGERID, MANAGER_NAME FROM MANAGER WHERE MANAGER_NAME LIKE ‘A%’;

    上記のクエリは、既存のEmployee_viewを変更し、指定されたSELECTクエリに基づいてレコードを変更します。

    テーブル内のレコードを確認する場合は常に、SELECT*FROMクエリを使用します。ビュー名を使用します。同様に、テーブル名の代わりにビューに対して行います。

    SELECT * FROM MANAGER_VIEW; 

    既存のビューに新しいレコードを挿入する

    新しいレコードをテーブルに挿入します。同様に、ビューに挿入することもできます。

    構文

    INSERT INTO VIEW_NAME VALUES(VALUE1, VALUE2);

    例:Manager_viewに新しいレコードを挿入するクエリを記述します。

    INSERT INTO MANAGER_VIEW VALUES (5, ‘Akash Kadam’);

    Manager_Viewに新しいレコードを挿入します。新しいデータが挿入されているかどうかを確認するには、SELECTクエリを使用します:

    SELECT * FROM MANAGER_VIEW; 

    3ドロップビュー:-

    テーブルを落とします。同様に、ビューをドロップすることもできます。

    構文:

    DROP VIEW VIEW_NAME;

    例:EMP_MAN_VIEWを削除するクエリを記述します。

    DROP VIEW EMP_MAN_VIEW; 

    ビューが削除されているかどうかを確認する場合は、SHOWTABLESクエリを使用します。

    SHOW TABLES;

    ビュー名EMP_MAN_VIEWがデータベースにありません。これは、ビューを正常に削除したことを意味します。


    1. タイムスタンプのインデックス:インデックス式の関数はIMMUTABLEとしてマークする必要があります

    2. Java +MysqlUTF8の問題

    3. nvarchar連結/インデックス/nvarchar(max)不可解な動作

    4. MySQLでNOTNULL制約を追加する方法