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

SQL以外

    SQLでは、おそらくJOIN句を使用して、1つまたは複数のテーブルから結合された結果を受け取ります。ただし、一方のテーブルのデータを含む結果が必要な場合があり、そのレコードをもう一方のテーブルで使用できないようにする必要があります。その場合、SQLの概念名はSQLExceptです。

    複数のテーブルからデータを精製するために、SQLExceptを使用しました。 SQL Exceptは、数学で行うマイナス演算子と同じです。 SQL Exceptは、最初にクエリ内の2つまたは3つ以上のSELECTステートメントをマージし、最初のSELECTステートメントからデータを返します。別のSELECTステートメントの結果では利用できません。

    SQLEXCEPTルール

    SQLでEXCEPTクエリを使用する前に、すべてのルールと規制を理解する必要があります。

    • 指定されたテーブルの列の数と順序は、SELECTクエリ全体で同じである必要があります。
    • 列のデータ型は同じか互換性がある必要があります。

    SQL EXCEPT

    の構文
    SELECT * FROM table1 EXCEPT SELECT * FROM table2;

    Table1とTable2がテーブルの名前になります。

    例:

    同じ列数と列の順序を持​​つ2つのテーブルがあると仮定します。

    • 表1:T1、列数:3、データ:A、B、C、D
    • 表2:T2、列数:3、データ:B、D、F、G

    これらの2つのテーブルでEXCEPTクエリを実行すると、AとCが取得されます。これは、これら2つのデータがテーブルT2に存在しないため、BとDは両方のテーブルで共通であり、破棄されます。

    例を使ってSQLEXCEPTの概念を理解しましょう。与えられたレコードと一緒に次の表を検討してください。

    表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:従業員

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    1001 Vaibhav シャルマ 65000 PUNE ORACLE 1
    1002 ニキル ヴァニ 60000 NOIDA ORACLE 1
    1003 Vaibhavi ミシュラ 50000 ジャイプール FMW 2
    2001 ルチカ Jain 55500 チャンディーガル ORACLE 1
    2002 プラチ シャルマ 65500 PUNE FMW 2
    2003 Bhavesh Jain 50000 ムンバイ テスト 4
    3001 Deepam ジャウハリ 55500 PUNE JAVA 3
    3002 ANUJA 場所 50500 ジャイプール FMW 2
    3003 プラノティ シェンデ 58500 ムンバイ JAVA 3
    4001 RAJESH GOUD 60500 ムンバイ テスト 4

    表3:マネージャー

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

    表4:マネージャー1

    Managerid manager_name manager_department
    1 石田アグラワル ORACLE
    2 Kirti Kirtane FMW
    3 Abhishek Manish JAVA
    4 Paul Oakip テスト

    例1: EXCEPT演算子を使用して、SELECTクエリで上記の2つのテーブルEmpとEmployeeを結合するとします。

    SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, DEPARTMENT MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER ON EMP.MANAGERID = MANAGER.MANAGERID EXCEPT SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, DEPARTMENT, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER1 ON EMPLOYEE.MANAGERID = MANAGER1.MANAGERID;

    EmpテーブルとEmployeeテーブルの間にINNERJOIN句を使用しており、EXCEPT演算子を使用して、従業員ID、名前、都市、部門、マネージャーID、およびマネージャー名を表示しています。上記のクエリでは、両方のテーブル間で一意の値のみが表示されます。

    上記のクエリは次の出力を提供します:

    テーブルデータを観察すると、両方のテーブルEmpテーブルとEmployeeテーブルの間に2つの共通データがあります。つまり、従業員ID3002と4001です。従業員ID4001の詳細は3002を除いて表示されます。従業員ID3002マネージャー名は両方のテーブルマネージャーで同じであるためおよびManager1ですが、従業員ID 4001のマネージャー名は両方のテーブルで異なり、従業員ID4002の詳細が表示されます。

    例2: EXCEPT演算子を使用してSELECTクエリで上記の2つのテーブルEmpとEmployeeを結合し、結果セットを給与で降順に並べ替えるとします。 ORDER BY句を使用して、SQLクエリの結果セットを並べ替えます。

    SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, SALARY, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER ON EMP.MANAGERID = MANAGER.MANAGERID EXCEPT SELECT EMPLOYEEID, CONCAT(FIRST_NAME, LAST_NAME) AS NAME, CITY, SALARY, MANAGER1.MANAGERID, MANAGER1.MANAGER_NAME FROM EMPLOYEE INNER JOIN MANAGER1 ON EMPLOYEE.MANAGERID = MANAGER1.MANAGERID ORDER BY SALARY;

    上記のクエリは、次の出力を示しています。

    例3: EXCEPT演算子を使用してSELECTクエリで上記の2つのテーブルEmpとEmployeeを結合するとします。ここで、Empテーブルと従業員都市からの55000を超える従業員の給与には、Employeeテーブルからの「Pune」、「Mumbai」、「Jaipur」が含まれます。

    >
    SELECT * FROM EMP WHERE SALARY > 55000 EXCEPT SELECT * FROM EMPLOYEE WHERE CITY IN ('Pune', 'Mumbai', 'Jaipur');   

    上記のクエリの最初のSELECTステートメントは、給与が55000を超える従業員のすべての詳細をEmpテーブルからフェッチします。 2番目のSELECTステートメントは、都市にプネ、ムンバイ、ジャイプールが含まれる従業員のすべての詳細をEmployeeテーブルからフェッチします。次に、EmpテーブルとEmployeeテーブルの間でEXCEPT演算子が実行されます。

    これにより、次の出力が得られます。


    1. MySQLのデータファイルのロードでアクセスが拒否されました

    2. Oracleのテーブルから列名を取得するにはどうすればよいですか?

    3. パフォーマンスの驚きと仮定:カウントをオンに設定

    4. OracleインデックスとOracleのインデックスの種類と例