n 312 SQL基本


🏆 学習目標
  • トランザクション.
  • ACIDについて説明できる必要があります.
  • SQLマルチテーブルクエリが使用可能である必要があります.
  • GROUP BYを提供する必要があります.
  • SQL


    データ照会(SELECT)と複数のセクション


    データ照会(SELECT)はデータオペレータ(DML)であり、データ分析で最もよく使われるコマンドである.

    「データ照会」(SELECT)は、分析に必要なデータを照会するために複数のセクションで使用されます.

    SQLコマンド


    SELECT
    「≪選択|Select|emdw≫」などのデータ・セットに含めるプロパティを指定します.
  • 一般文字列SELECT 'hello world';
  • 数字SELECT 2;
  • 単純演算SELECT 15 + 3;
  • FROM
    テーブルに関連付けられている場合は、必要なコマンドとして宣言する必要があります.結果をエクスポートするデータベース・テーブルを指定します.
  • の特定の属性
  • を使用するテーブル
    SELECT 특성_1
    FROM 테이블_이름;
    
    -- 예시
    SELECT FirstName
    FROM customers;
    テーブルでの特定のプロパティの使用
    SELECT属性1,属性2
    FROMテーブル名;
    --例
    SELECT customers.FirstName, customers.LastName
    FROM customers;
    表のすべての属性を選択
    SELECT *
    FROMテーブル名;
    --例
    SELECT *
    FROM customers;
  • は、ワイルドカード(ワイルドカード)であり、全選択に使用される.
  • WHERE
    (オプション)フィルタとして使用されるクエリー文.
    特定の値と同じデータを検索
    SELECT属性1,属性2
    FROMテーブル名
    WHERE属性1=「特定値」
    --例
    SELECT customers.FirstName, customers.LastName
    FROM customers
    WHERE customers.FirstName = 'Helena';
    特定の値以外のデータの検索
    SELECT属性1,属性2
    FROMテーブル名
    WHERE属性2<>「特定値」
    --例
    SELECT customers.FirstName, customers.LastName
    FROM customers
    WHERE customers.FirstName <> 'Helena';
    特定の値より大きいデータまたはそれより小さいデータをフィルタリングする場合、<、>、より大きい値、より小さい値には<=、>=が使用されます.
    SELECT属性1,属性2
    FROMテーブル名
    WHERE属性1>「特定値」;
    SELECT属性1,属性2
    FROMテーブル名
    WHERE特性1<="特定値";
    文字列内の特定の値に似た値をフィルタする場合は、LIKEと"%"または"*"を使用します.
    SELECT属性1,属性2
    FROMテーブル名
    WHERE特性2 LIKE"%特定文字列";
    --例
    SELECT customers.FirstName, customers.LastName
    FROM customers
    WHERE customers.LastName LIKE '%han%';
    INを使用して、リストの値に一致するデータをフィルタします.
    SELECT属性1,属性2
    FROMテーブル名
    WHERE属性2 IN(「特定値1」,「特定値2」)
    --例
    SELECT customers.FirstName, customers.LastName
    FROM customers
    WHERE customers.LastName IN ('Hansen', 'Johansson');
    値のないNULLを検索する場合は、ISを使用します.
    SELECT *
    FROMテーブル名
    WHERE属性1 IS NULL;
    --例
    SELECT *
    FROM employees
    WHERE employees.ReportsTo is NULL;
    NULLはどんな場合に使いますか?
    値がない場合はNOTを使用します.
    SELECT *
    FROMテーブル名
    WHERE特性1 IS NOT NULL;
    ORDER BY
    返されるデータ結果をソートする方法に関するオプション.
    デフォルトのソートは昇順です.
    SELECT *
    FROMテーブル名
    ORDER BY属性1;
    --例
    SELECT *
    FROM employees
    ORDER BY employees.EmployeeId;
    降順でソートすることもできます.
    SELECT *
    FROMテーブル名
    ORDER BY属性1 DESC;
    --例
    SELECT *
    FROM employees
    ORDER BY employees.EmployeeId DESC;
    LIMIT
    返されるデータ結果の数を決定します.クエリ文で使用する場合は、最後に追加する必要があります.
    データ結果の数を200個に制限できます.
    SELECT *
    FROMテーブル名
    LIMIT 200;
    --例
    SELECT *
    FROM customers
    LIMIT 10;
    DISTINCT
    ユニークな価格が欲しい場合は、SELECTの後ろに貼って使うことができます.
    属性1のみに基づいてユニークな値を選択します.
    SELECT DISTICT属性1
    FROMテーブル名;
    --例
    SELECT DISTINCT employees.Title
    FROM employees;
    プロパティ1、プロパティ2、およびプロパティ3のユニークな「組合せ」値を選択します.
    SELECT
    DISTINCT
    プロパティ.
    ,プロパティ2
    ,特性3
    FROMテーブル名;
    INNER JOIN
    共通の部分にのみ接続します.
    INNERJOINまたはJOINで運転可能
    SELECT *
    FROM表1
    JOIN表2 ON表1.属性A=表2.特性B;
    --例
    SELECT
    c.FirstName || ' ' || c.LastName AS 'Customer Name',
    e.Firstname || ' ' || e.LastName AS 'Employee Name'
    FROM customers AS c
    JOIN employees AS e ON c.SupportRepId = e.EmployeeId;
    OUTER JOIN
    Outer JOINには選択肢がたくさんあります
    基本的な「左包容性」「右包容性」「full outer join」を見てみましょう
    LEFT INCLUSIVEはLEFT OUTER JOINで行えます
    SELECT *
    FROM表1
    LEFTOUTER JOIN表2 ON表1.属性A=表2.属性B
    RIGHT INCLUSIVEはRIGHT OUTER JOINのように行うこともできます
    SELECT *
    FROM表1
    RIGHT OUTER JOIN表2 ON表1.属性A=表2.属性B
    sqliteではRIGHT OUTER JOIN/FLL OUTER JOINはサポートされていないため、LEFT JOINを使用するために並べ替える方法を使用しています.
    複数試行
    次に、各コマンドをマージして実行する練習をします.
    次の例では、Brazilからの顧客を都市別にグループ化し、各都市の数でソートし、顧客IDで昇順ソートした結果、3つしかありません.
    しかし、必ずしも1つのコマンドだけが正しいとは限らないかもしれません.次のSQLクエリ文の違いは何ですか?
    SELECT c.CustomerId, c.FirstName, count(c.City) as 'City Count'
    FROM customers AS c
    JOIN employees AS e ON c.SupportRepId = e.EmployeeId
    WHERE c.Country = 'Brazil'
    GROUP BY c.City
    ORDER BY 3 DESC, c.CustomerId ASC
    LIMIT 3;
    [reference]
    ER図/ERD符号と符号