FE BE 개발 메모장/SQL & DataBase

SQL Select문

SQL SELECT 문은 하나 또는 그 이상의 테이블에서 데이터를 가져오는 데이터 조작 언어 중 하나이다. DQL문

 

 

SELECT문 공식문서 사양

SELECT
    [ALL | DISTINCT | DISTINCTROW ]
    [HIGH_PRIORITY]
    [STRAIGHT_JOIN]
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
    [SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
    select_expr [, select_expr] ...
    [into_option]
    [FROM table_references
      [PARTITION partition_list]]
    [WHERE where_condition]
    [GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
    [HAVING where_condition]
    [WINDOW window_name AS (window_spec)
        [, window_name AS (window_spec)] ...]
    [ORDER BY {col_name | expr | position}
      [ASC | DESC], ... [WITH ROLLUP]]
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
    [into_option]
    [FOR {UPDATE | SHARE}
        [OF tbl_name [, tbl_name] ...]
        [NOWAIT | SKIP LOCKED] 
      | LOCK IN SHARE MODE]
    [into_option]

into_option: {
    INTO OUTFILE 'file_name'
        [CHARACTER SET charset_name]
        export_options
  | INTO DUMPFILE 'file_name'
  | INTO var_name [, var_name] ...
}

 

SELECT 기본속성

SELECT 특성 as 바꿀_특성_이름
FROM 테이블_이름

 

1. 테이블의 모든 데이터를 출력

SELECT *  
FROM TABLE_A

 

2. 특정 컬럼만을 출력

SELECT TABLE_A.user
FROM TABLE_A

SELECT user
FROM TABLE_A

 

3. WHERE 특정 조건에 만족하는 데이터 출력 

SELECT *
FROM TABLE_A 
WHERE COLUMN_NAME="NAME" AND, OR, NOT, <, > ....

 

id가 10 이상 데이터를 출력

SELECT *
FROM TABLE_A 
WHERE id >= 10;

 

가입된 UserID 넘버가 100부터 500사이의 데이터를 출력

SELECT *
FROM TABLE_A 
WHERE UserID BETWEEN 100 AND 500 

 

이름이 M으로 시작하는 데이터를 출력

SELECT *
FROM TABLE_A 
WHERE Name LIKE "M%";

 

지역이 NewYork로 끝나는 데이터를 출력

SELECT *
FROM TABLE_A 
WHERE Contury LIKE "%NewYork"

 

이름에 da가 들어가는 데이터를 출력

SELECT *
FROM TABLE_A 
WHERE name LIKE "%da%"

 

성이 김 또는 박이 포함되는 데이터를 출력

SELECT *
FROM TABLE_A 
WHERE lastName LIKE "%Kim%" OR LastName LIKE "%Park%"

 

JOIN 테이블 끼리 결합

같은 스키마(DB)에 있는 테이블들을 결합하여 출력 할 수 있다. 테이블을 결합하기 위해서는 공통의 의미를 갖는 컬럼을 결합조건으로 지정해줘야한다.

 

INNER JOIN

양쪽 테이블을 참고하여 테이블을 결합한다. 결과값이 존재하면 INNER 값만 반환한다. 결과값이 없으면 NULL을 반환하고 INNER은 반환하지 않는다..

SELECT *
FROM TABLE_A 
INNER JOIN TABLE_B ON TABLE_A.Column_Name=TABLE_B.Column_Name

JOIN TABLE_B ON TABLE_A.Column_Name=TABLE_B.Column_Name

 

 

RIGHT JOIN TABLE_B ON TABLE_A.Column_Name=TABLE_B.Column_Name

 

 

RIGHT JOIN TABLE_B ON TABLE_A.Column_Name=TABLE_B.Column_Name