[SQL]MySQL基本構文


よく使うSQLの基本文法を整理してみましょう.

SQLとは?

  • 構造化Query Languageの略、構造化クエリ言語
  • データの問合せ、変更、更新のコマンド
  • MySQL、Oracle、MariaDBなど(以下MySQLベース)
  • SELECT

  • SELECT文テーブルから必要な情報を取得するためのシンタックス
  • .
  • テーブル列に属するデータをロードします.
  • *はすべてをもたらすことを意味し、
  • SELECT col1, col2, ....
    FROM table_name;

    DISTINCT

  • を使用して冗長性を排除し、SELECTなどの一意の値
  • のみを出力する.
    SELECT DISTINCT col1, col2, ...
    FROM table_name;

    WHERE

  • 条件を使用して検索
    SELECT col1, col2, ...
    FROM table
    WHERE condition;
  • 比較演算子
  • に等しい場合"="
  • に等しくない場合"!=","<>"
  • より大きい場合"<"
  • 以上の場合"<="
  • AND, OR, NOT

  • 複合演算子
  • SELECT col1, col2, ...
    FROM table
    WHERE condition1 and condition2;
    
    SELECT col1, col2, ....
    FROM table
    WHERE condition1 or condition2;
    
    SELECT col1, col2, ...
    FROM table
    WHERE NOT condition;

    ORDER BY

  • 結果は、昇順または降順に
  • 並べ替えられた.
    SELECT col1, col2, ...
    FROM table
    ORDER BY col1 ASC|DESC;
    
    SELECT col1, col2, ...
    FROM table
    ORDER BY FIELD (col1, order1, order2, ...);

    順序が決まっていないとき。

  • order by field ( 컬럼명, "순서1", "순서2", .... )
  • 임의로 정한 순서대로 보여주려면 아래와 같이 하면 된다.
    
    select * from testbl where sid in (3,4,1)  order by field (sid, 3, 4, 1);

    LIMIT

  • 出力結果数は
  • に制限.
    SELECT * FROM table LIMIT 3;
    SELECT * FROM table LIMIT 2, 3;
    SELECT * FROM table LIMIT 0, 4;

    NULL VALUE


    検索
  • 値NULLの値
  • SELECT col1, col2, ...
    FROM table
    WHERE col_name IS NOT NULL;
    
    SELECT col1, col2, ...
    FROM table
    WHERE col_name IS NULL;

    IF NULL

  • の値をNULLに変更する
  • IFNULL(NAME, 'No name')

    LIKE

  • は、特定のモード
  • にナビゲートする.
    SELECT col1, col2, ...
    FROM table
    WHERE col_name LIKE pattern;
  • %, _
  • %:0文字以上
  • :
  • を表す文字

    IN()

  • WHERE節に複数の値を設定場合は
  • を用いる.
    SELECT col
    FROM table
    WHERE col_name IN (val1, val2, ...);

    BETWEEN

  • WHEREセクションの
  • を使用して検索条件の範囲を指定します.
    SELECT col1
    FROM table
    WHERE col_name BETWEEN val1 AND val2;

    JOIN


    2つ以上のテーブルのローを組み合わせたい場合は、
  • INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL OUTER JOINは
  • 存在する.
    SELECT col1
    FROM table1 INNER JOIN table2
    ON table1.col = table2.col;
    
    SELECT col1
    FROM table1 LEFT INNER JOIN table2
    ON table1.col = table2.col;
    
    SELECT col1
    FROM table1 RIGHT JOIN table2
    ON table1.col = table2.col;
    
    SELECT col1
    FROM table1 FULL OUTER JOIN table2 # 쉽게말해 합집합, A테이블이 가지고 있는 데이터 , B테이블이 가지고있는 데이터 모두 검색
    ON table1.col = table2.col;
    
    SELECT
    A.NAME, --A테이블의 NAME조회
    B.AGE --B테이블의 AGE조회
    FROM EX_TABLE A
    CROSS JOIN JOIN_TABLE B # 모든 경우의 수를 전부 표현해주는 방식

    UNION


    2つ以上のクエリー結果を1つのテーブルにマージするには、
  • SELECTの列リストから
  • を選択します.
    SELECT col FROM table1
    UNION
    SELECT col FROM table2;
  • 注意事項
  • UNIONデフォルトでは重複値が削除されますが、削除したくない場合はUNIOALLを使用します.
  • MIN, MAX, ABS, COUNT, AVG, SUM

    SELECT MIN (col) FROM table;
    SELECT MAX (col) FROM table;
    SELECT ABS (col) FROM table;
    SELECT COUNT (col) FROM table;
    SELECT AVG (col) FROM table;
    SELECT SUM (col) FROM table;

    GROUP BY


    特定の列をグループ化する GROUP BY
  • の集約関数とともに使用され、結果を指定したコラムでグループ化する場合は、
  • SELECT col1
    FROM table
    WHERE condition
    GROUP BY col_name;

    HAVING


    特定の列を組み合わせて、 HAVING
    保留できない集約関数は、
  • WHERE条件を使用して条件保留されます.
    SELECT col1
    FROM table
    WHERE condition
    GROUP BY col_name
    HAVING condition;

    CONCAT

  • を使用して複数の文字列を結合
    SELECT CONCAT(str1, str2, str3, ...);

    ROUND(), TRUNC()

  • ROUNDは四捨五入、TRUNCは四捨五入
  • SELECT ROUND|TRUNC (val, digit)
    FROM table

    注意:http://bigdata.dongguk.ac.kr/lectures/DB/_book/%EC%97%AC%EB%9F%AC-%ED%85%8C%EC%9D%B4%EB%B8%94%EC%9D%98-%EA%B2%B0%ED%95%A9%EC%9D%84-%ED%86%B5%ED%95%9C-%EA%B2%80%EC%83%89-join-%EA%B2%80%EC%83%89.html