My SQL (4) - TCP SCHOOL

5800 ワード

JOIN


JOINは、データベース内の複数のテーブルからインポートされたレコードを組み合わせて1つのテーブルとして表す.主にSELECT文とともに使用されます.

INNER JOIN



INNERJOINは1番目のテーブルと2番目のテーブルの共通データを持ってきますすなわち,条件を満たすものはすべてレコードにインポートされる.
1. 첫번째테이블이름

INNER JOIN 두번째테이블이름

ON 조건

2. 첫번째테이블이름

JOIN 두번째테이블이름

ON 조건
  • SELECT * FROM Reservation
    INNER JOIN Customer
    ON Reservation.Name= Customer.Name;
    // 기본 sql 문법
    
    SELECT * FROM Reservation,Customer
    WHERE Reservation.Name = Customer.Name;
    // MySQL 문법
    
    SELECT * FROM Reservation AS r, Customer AS c
    WHERE r.Name = c.Name;
    // 별칭 사용 간략화
    

    LEFT JOIN


    LEFTJOINは、1枚目のテーブルを基準に2枚目のテーブルを組み合わせます.
    つまり、最初のすべてのテーブルがインポートされ、2番目のテーブルは条件を満たすフィールド値のみがインポートされ、残りのテーブルはNULLとして表示されます.

    使い方はINNERJOINと同じです.
  • 運転画面
  • RIGHT JOIN


    LEFT JOINの反対2テーブル目がスタンダード

    UNION


    UNIXは、複数のSELECT文の結果を1つのテーブルまたは結果セットとして表すために使用されます.
    各SELECT文で選択したフィールドの数とタイプは同じでなければなりません.フィールドの順序も同じでなければなりません.
    SELECT 필드이름
    
    FROM 테이블이름
    
    UNION
    
    SELECT 필드이름
    
    FROM 테이블이름
    UNIXは、重複データを自動的に除外します.重複データを回避するには、UNIX ALLを使用します.

    サブクエリ


    サブクエリ(Subquery)とは、他のクエリに含まれるSELETE文のことです.
    EX)
    SELECT ID, ReserveDate, RoomNum
    
       FROM Reservation
    
    ② WHERE Name IN (SELECT Name
    
                      FROM Customer
    
                      WHERE Address = '서울')
    これにより、WHERE文またはFROM文にサブクエリを挿入して条件を設定できます.
  • サブクエリのフィーチャー

    -クエリを構造化し、クエリを明確にする.
    -JOINやユニオンより読みやすい.
  • FROMセクションのサブクエリ

    SELECT ...
    
    FROM (서브쿼리) [AS] 이름
    
    ...
    SELECT文のFROMセクションで使用されるすべてのテーブルに名前が必要です.
    したがって、FROMセクションで使用されるサブクエリは、上記の構文のように名前を定義する必要があります.
    EX)
     SELECT Name, ReservedRoom
    
     FROM (SELECT Name, ReserveDate, (RoomNum + 1) AS ReservedRoom
    
             FROM Reservation
    
           WHERE RoomNum > 1001) AS ReservationInfo;

    説明:


    まず、FROM文のサブクエリが最初に実行されます.
    RoomNum+1という名前の値にReservedRoomの別名を付けます.
    RoomNum>1001を満たす値をReservationから取得し、Name、ReserveDate、およびReservedRoom値を抽出します.
    抽出されたデータセットに別名ReservationInfoを付与します.
    ReservationInfoからNameとReservedRoomデータを出力します.