Handling Multiple Tables (MySQL)


Handling Multiple Tables


この記事はFastキャンパスで講義したMySQLデータベースコースのまとめです.
レッスンリンク

1.複数のテーブルの同時処理



合計:UNIONUNION ALL交点:INTERSECT差集:MINUSMySQLにはINTERSECTとMINUSキーワードが存在しないため、この2つの表現はJOINによって実現される.

2.データへのデータの追加

UNION , UNION ALL
  • 形式:[쿼리 A] UNION [쿼리 B][쿼리 A] UNION ALL [쿼리 B]
  • [クエリーA]と[クエリーB]の結果値を合わせて表示します.
  • UNION同じ値を表示している場合を除き、UNION ALL同じ値も含む.
  • [クエリA]と[クエリB]の結果値の個数は同一でなければならない.
  • 違うとエラー
  • ORDER BYクエリの最後に記入できるのは、[クエリA]にインポートされたカラムのみです.
  • SELECT [컬럼 이름]
    FROM [테이블 A 이름]
    UNION
    SELECT [컬럼 이름]
    FROM [테이블 B 이름];
    SELECT [컬럼 이름]
    FROM [테이블 A 이름]
    UNION ALL
    SELECT [컬럼 이름]
    FROM [테이블 B 이름];

    3.データからデータを削除する


    交差
    SELECT [컬럼 이름]
    FROM [테이블 A 이름] AS A
    INNER JOIN [테이블 B 이름] AS B
    ON A.[컬럼1 이름] = B.[컬럼1 이름]
    AND ...
    AND A.[컬럼n 이름] = B.[컬럼n 이름];
    交差を確認したいすべての色は標準に準じて合わせます(単純INNERJOINとの違い)
    ダイバーシティ
    SELECT [컬럼 이름]
    FROM [테이블 A 이름] AS A
    LEFT JOIN [테이블 B 이름] AS B
    ON A.[컬럼1 이름] = B.[컬럼1 이름]
    AND ...
    AND A.[컬럼n 이름] = B.[컬럼n 이름]
    WHERE B.[컬럼 이름] IS NULL;
    車の集合を確認するすべての列は基準に基づいて合併しなければならない.

    4.実習

    DROP DATABASE IF EXISTS pokemon;
    
    CREATE DATABASE pokemon;
    
    USE pokemon;
    
    CREATE TABLE mypokemon (
    		number int,
    		name varchar(20),
    		type varchar(10),
    		attack int,
    		defense int
    );
    
    CREATE TABLE friendpokemon (
    		number int,
    		name varchar(20),
    		type varchar(10),
    		attack int,
    		defense int
    );
    
    INSERT INTO mypokemon (number, name, type, attack, defense) VALUES	(10, 'caterpie', 'bug', 30, 35),
    		(25, 'pikachu', 'electric', 55, 40),
    		(26, 'raichu', 'electric', 90, 55),
    		(133, 'eevee', 'normal', 55, 50),
    		(152, 'chikoirita', 'grass', 49, 65);
    
    INSERT INTO friendpokemon (number, name, type, attack, defense)
    VALUES	(26, 'raichu', 'electric', 80, 60),
    		(125, 'electabuzz', 'electric', 83, 57),
    		(137, 'porygon', 'normal', 60, 70),
    		(153, 'bayleef', 'grass', 62, 80),
    		(172, 'pichu', 'electric', 40, 15),
    		(470, 'leafeon', 'grass', 110, 130);
    
    SELECT type
    FROM mypokemon
    UNION
    SELECT type
    FROM friendpokemon;
    
    /*
    SELECT DISTINCT type
    FROM mypokemon
    UNION
    SELECT DISTINCT type
    FROM friendpokemon;
    */
    
    -- DISTINCT : 중복 제거
    
    SELECT number, name, 'my' AS whose
    FROM mypokemon
    WHERE type = 'grass'
    UNION ALL
    SELECT number, name, "friend's" AS whose
    FROM friendpokemon
    WHERE type = 'grass';