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

SQLでINNERJOINを使用する方法

    この記事では、INNER JOINの概念と、それをSQLでWHERE句を使用して使用する方法について学習します。

    SQLの内部結合とは何ですか?

    内部結合は、SQLの結合の一種です。 SQLの内部結合は、広く使用されている結合です。この結合は、両方のテーブルに共通する行のみを返します。内部結合は、2つのテーブルを結合するために使用されます。

    SQLの内部結合の構文:

    SELECT table1.columname1, table1.columnname2, table2.columnname1, table2.columnname2 FROM TABLE1 INNER JOIN TABLE2 ON table1.column = table2.column;

    Table1.column =table2.columnは、これら2つのテーブル間の親子関係を維持する共通の列です。

    SQLクエリの内部結合で使用する必要のある手順がいくつかあります。

    1. USEキーワードに続けてデータベース名を使用してデータベースを選択することにより、新しいデータベースを作成するか、既存のデータベースを使用します。

    2.選択したデータベース内に新しいテーブルを作成するか、作成済みのテーブルを使用できます。

    3.テーブルが新しく作成された場合は、INSERTクエリを使用して新しく作成されたデータベースにレコードを挿入します。

    4.内部結合クエリを使用せずにSELECTクエリを使用して、挿入されたデータを表示します。

    5これで、SQLクエリで内部結合を使用する準備が整いました。

    ステップ1:新しいデータベースを作成するか、作成済みのデータベースを使用します。

    私はすでにデータベースを作成しました。既存の作成済みデータベース名Companyを使用します。

    USE Company;

    会社はデータベース名です。

    データベースを作成していない人は、以下のクエリに従ってデータベースを作成します。

    CREATE DATABASE database_name;

    データベースを作成したら、USEキーワードに続けてデータベース名を使用してデータベースを選択します。

    ステップ2:新しいテーブルを作成するか、既存のテーブルを使用します:

    すでにテーブルを作成しました。内部結合クエリを実行するときに、EmployeesとManagerという名前の既存のテーブルを使用します。

    新しいテーブルを作成するには、以下のCREATETABLE構文に従います。

    CREATE TABLE table_name(

    columnname1 datatype(column size),

    columnname2 datatype(column size),

    columnname3 datatype(column size)

    );

    ステップ3:INSERTクエリを使用して新しく作成されたテーブルにレコードを挿入します

    次の構文を使用して、テーブルに新しいレコードを挿入します。

    INSERT INTO table_name VALUES(value1, value2, value3);

    ステップ4: SELECTクエリを使用してレコードを表示します。

    次の構文を使用して、テーブルのレコードを表示します。

    SELECT * FROM table_name;

    次のクエリは、従業員のレコードを表示します。

    SELECT * FROM Employees;

    上記のSELECTクエリの出力は次のとおりです。

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
    1002 VAIBHAV シャルマ 60000 NOIDA C# 5
    1003 NIKHIL VANI 50500 ジャイプール FMW 2
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    2002 BHAVESH JAIN 65500 PUNE FMW 2
    2003 ルチカ JAIN 50000 ムンバイ C# 5
    3001 PRANOTI SHENDE 55500 PUNE JAVA 3
    3002 ANUJA WANRE 50500 ジャイプール FMW 2
    3003 DEEPAM ジャウハリ 58500 ムンバイ JAVA 3
    4001 RAJESH GOUD 60500 ムンバイ テスト 4
    4002 ASHWINI バガット 54500 NOIDA JAVA 3
    4003 ルチカ AGARWAL 60000 デリー ORACLE 1
    5001 ARCHIT シャルマ 55500 デリー テスト 4
    5002 SANKET チャウハン 70000 ハイデラバード JAVA 3
    5003 ROSHAN NEHTE 48500 チャンディーガル C# 5
    6001 RAHUL NIKAM 54500 バンガロール テスト 4
    6002 ATISH JADHAV 60500 バンガロール C# 5
    6003 ニキタ INGALE 65000 ハイデラバード ORACLE 1

    次のクエリは、Managerのレコードを表示します。

    SELECT * FROM Manager;

    上記のSELECTクエリの出力は次のとおりです。

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

    次のクエリは、ラップトップのレコードを表示します。

    SELECT * FROM Laptop;

    上記のSELECTクエリの出力は次のとおりです。

    LAPTOPID 名前 EMPLOYEEID
    101 DELL NULL
    102 HP 1002
    103 LENOVO NULL
    104 HP 3003
    105 DELL 4002
    106 LENOVO 4003
    107 DELL 5001
    108 HP NULL
    109 DELL NULL
    110 HP NULL
    111 LENOVO 2002
    112 LENOVO 6003
    113 HP 1003

    ステップ5:クエリでINNERJOINを使用する準備ができました

    例を使って内部結合を理解しましょう。

    例1: 内部結合を使用して、従業員ID、名、姓、給与、市区町村を従業員のテーブルから表示し、マネージャーIDとマネージャー名をマネージャーテーブルから表示するクエリを記述します。

    SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.SALARY, E.CITY, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID;
    >

    上記のクエリでは、従業員のテーブルから従業員ID、名、姓、給与、都市、マネージャーID、マネージャーテーブルからマネージャー名を取得しました。ここで、従業員のテーブルマネージャーID列はマネージャーテーブルマネージャーID列と同じです。クエリは、両方のテーブルからすべての一致レコードを返します。マネージャーIDは、両方のテーブルに共通の列です。 Eは従業員のテーブルのエイリアス名であり、Mはマネージャーのテーブルのエイリアス名です。 manager id列は、従業員のテーブルで外部キーとして機能します。マネージャーIDは、マネージャーテーブルの主キーとして機能し、2つのテーブル間に親子関係を作成します。

    上記のクエリの出力は次のとおりです。

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    4003 ルチカ AGARWAL 60000 デリー ORACLE 1
    6003 ニキタ INGALE 65000 ハイデラバード ORACLE 1
    1003 NIKHIL VANI 50500 ジャイプール FMW 2
    2002 BHAVESH JAIN 65500 PUNE FMW 2
    3002 ANUJA WANRE 50500 ジャイプール FMW 2
    3001 PRANOTI SHENDE 55500 PUNE JAVA 3
    3003 DEEPAM ジャウハリ 58500 ムンバイ JAVA 3
    4002 ASHWINI バガット 54500 NOIDA JAVA 3
    5002 SANKET チャウハン 70000 ハイデラバード JAVA 3
    4001 RAJESH GOUD 60500 ムンバイ テスト 4
    5001 ARCHIT シャルマ 55500 デリー テスト 4
    6001 RAHUL NIKAM 54500 バンガロール テスト 4
    1002 VAIBHAV シャルマ 60000 NOIDA C# 5
    2003 ルチカ JAIN 50000 ムンバイ C# 5
    5003 ROSHAN NEHTE 48500 チャンディーガル C# 5
    6002 ATISH JADHAV 60500 バンガロール C# 5

    レコードは、デフォルトのマネージャーIDで昇順で表示されます。

    例2: Inner Joinを使用して、従業員のテーブルから従業員ID、名、姓、都市、部門を表示し、マネージャーテーブルからマネージャーIDとマネージャー名を表示するクエリを記述します。ここで、従業員の部門はC#です。

    SELECT E.EMPLOYEEID, E.FIRST_NAME, E.LAST_NAME, E.CITY, E.DEPARTMENT, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID =M.MANAGERID WHERE DEPARTMENT = ‘C#’;

    上記のクエリでは、従業員のテーブルから従業員ID、名、姓、市区町村、部門、マネージャーID、マネージャーテーブルからマネージャー名を取得しました。ここで、従業員テーブルのマネージャーIDはマネージャーテーブルのマネージャーIDと同じです。従業員部門がC#である従業員レコード。

    上記のクエリの出力は次のとおりです:

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    1002 VAIBHAV シャルマ 60000 NOIDA C# 5
    2003 ルチカ JAIN 50000 ムンバイ C# 5
    5003 ROSHAN NEHTE 48500 チャンディーガル C# 5
    6002 ATISH JADHAV 60500 バンガロール C# 5

    上記の出力では、部門がC#である従業員から取得されたレコードのみを確​​認できます。 INNER結合でWHERE句を使用します。

    例3: 内部結合を使用して、従業員のテーブルから従業員ID、名、給与、市、部門を表示し、ラップトップテーブルからラップトップIDとラップトップ名を表示するクエリを記述します。

    SELECT E.EMPLOYEEID, E.FIRST_NAME, E.SALARY, E.CITY, E.DEPARTMENT, L.LAPTOPID, L.NAME FROM EMPLOYEES E INNER JOIN LAPTOP L ON E.EMPLOYEEID = L.EMPLOYEEID;
    >

    上記のクエリでは、従業員ID、名、給与、市区町村、部門を従業員テーブルから取得し、ラップトップIDと名前をラップトップテーブルから取得しました。ここで、従業員テーブルの従業員IDはラップトップテーブルの従業員IDと同じです。 。従業員IDは、ラップトップテーブルの外部キーであり、従業員テーブルとラップトップテーブルの間に親子関係を作成します。

    上記のクエリの出力は次のとおりです:

    EMPLOYEEID FIRST_NAME 給与 CITY 部門 LAPTOPID 名前
    1002 VAIBHAV 60000 NOIDA C# 102 HP
    3003 DEEPAM 58500 ムンバイ JAVA 104 HP
    4002 ASHWINI 54500 NOIDA JAVA 105 DELL
    4003 ルチカ 60000 デリー ORACLE 106 LENOVO
    5001 ARCHIT 55500 デリー テスト 107 DELL
    2002 BHAVESH 65500 PUNE FMW 111 LENOVO
    6003 ニキタ 65000 ハイデラバード ORACLE 112 LENOVO
    1003 NIKHIL 50500 ジャイプール FMW 113 HP

    ラップトップが割り当てられている特定の出力には、これらのレコードのみが表示されます。

    例4: クエリを記述して、employeesテーブルの従業員ID、名、給与、部門、および給与>57000または部門がOracleの内部結合を使用してマネージャーテーブルのマネージャーIDとマネージャー名を表示します。

    SELECT EMPLOYEEID, FIRST_NAME, SALARY, DEPARTMENT, M.MANAGERID, M.MANAGER_NAME FROM EMPLOYEES E INNER JOIN MANAGER M ON E.MANAGERID = M.MANAGERID WHERE SALARY > 57000 OR DEPARTMENT = 'ORACLE';

    上記のクエリでは、従業員のテーブルから従業員ID、名、給与、部門を取得し、マネージャーテーブルからマネージャーIDとマネージャー名を取得しました。ここで、employeesテーブルのマネージャーIDは、マネージャーのマネージャーIDと同じです。給与が57000を超えるか、部門がOracleです。

    上記のクエリの出力は次のとおりです:

    EMPLOYEEID FIRST_NAME LAST_NAME 給与 CITY 部門 MANAGERID
    1001 VAIBHAVI MISHRA 65500 PUNE ORACLE 1
    2001 PRACHI シャルマ 55500 チャンディーガル ORACLE 1
    4003 ルチカ AGARWAL 60000 デリー ORACLE 1
    6003 ニキタ INGALE 65000 ハイデラバード ORACLE 1
    2002 BHAVESH JAIN 65500 PUNE FMW 2
    3003 DEEPAM ジャウハリ 58500 ムンバイ JAVA 3
    5002 SANKET チャウハン 70000 ハイデラバード JAVA 3
    4001 RAJESH GOUD 60500 ムンバイ テスト 4
    1002 VAIBHAV シャルマ 60000 NOIDA C# 5
    6002 ATISH JADHAV 60500 バンガロール C# 5

    上記の出力では、給与が57000を超える、または従業員部門が「Oracle」である従業員レコードのみが表示されます。 OR演算子は、クエリで指定された条件の1つが真である場合にレコードを表示します。


    1. SQL Server JSON_Modify、すべてを更新する方法は?

    2. エラー:列が存在しません

    3. PostgreSQLは構成/confファイルをどこに保存しますか?

    4. PostgreSQL11-手順