SQLBolt 참고
SELECT 열이름1,열이름2 FROM 테이블이름;
ex) SELECT * FROM MOVIES 영화테이블에서 전체 열 선택
SELECT * FROM movies
WHERE 조건1 AND/OR 조건2;
ex) SELECT * FROM MOVIES 영화테이블 전체 열 선택
WHERE Year BETWEEN 2000 and 2010 AND Titles LIKE "%Toy%"
2000~2010년 개봉과 Toy 글자가 들어가는 영화(행) 선택
SELECT DISTINCT 열1,열2 FROM 테이블이름
WHERE condition(s);
SELECT 열1,열2 FROM mytable
WHERE condition(s)
ORDER BY column ASC/DESC;
SELECT column, another_column, …
FROM mytable
WHERE condition(s)
ORDER BY column ASC/DESC
LIMIT num_limit OFFSET num_offset;
ex) SELECT Title FROM Movies
ORDER BY Title
LIMIT 5 OFFSET 5 영화제목 알파벳 순서 6번째부터 5개
SELECT column, another_table_column, …
FROM mytable
INNER JOIN another_table
ON mytable.id = another_table.id
On 양쪽 테이블의 id가 일치하는 부분 Join데이터를 얼마나 분석할 것인지에 따라 때론 Inner Join으로 충분하지 않을 수 있다. 결과 테이블에는 두 테이블 모두에 속하는 데이터만 포함되기 때문이다.
두 테이블에 비대칭 데이터(다른 값의 데이터)가 있을 경우 필요한 데이터가 결과에서 제외되지 않도록 left JOIN, Right JOIN 또는 FULL JOIN을 사용해야 한다.
SELECT column, another_column, …
FROM mytable
INNER/LEFT/RIGHT/FULL JOIN another_table
ON mytable.id = another_table.matching_id
A와 B 데이터가 있을 경우 LEFT JOIN은 모든 A의 ROW를 포함하고, RIGHT JOIN은 모든 B의 ROW를 포함한다. FULL JOIN은 A와 B의 모든 열을 포함한다.
JOIN을 사용할 때 결과 및 제약 조건에서 NULL을 처리하는 추가 논리를 작성해야 할 수 있다.
SELECT column, another_column, …
FROM mytable
WHERE column IS/IS NOT NULL
AND/OR another_condition
AND/OR …;
SQL database NULL
데이터베이스에서의 NULL의 대안은 0이나 -와 같은 적절한 기본값을 사용하는 것이지만, 이것은 자료를 왜곡할 수도 있다. 때론 NULL을 피할 수 없는 경우(비대칭 자료)도 있다. 이럴땐 WHERE IS/IS NOT NULL로 컬럼을 확인해볼 수 있다.