[SQL] 기본 문법

데린이·2022년 3월 23일
0

SQL 기본 문법을 정리해보자.

Table 조회

SELECT와 FROM을 이용하여 데이터 조회한다.
(table name) : 데이터가 저장되어 있는 table 이름
(column name) : 불러온 table에서 출력할 column 이름

SELECT (column name) FROM (table name);

모든 컬럼 조회

(column name) 부분에 *를 작성하면 모든 필드를 의미한다.

SELECT * FROM (table name);

특정 다수 컬럼 조회

조회할 컬럼 명들을 ','를 이용해 구분하여 작성한다.

SELECT (column name1, column name2) FROM (table name);

조회할 데이터 개수 제한하기

LIMIT를 이용해 조회할 데이터 개수(n)를 제한한다.

SELECT * FROM (table name) LIMIT n;

데이터 정렬하기

ORDER BY (column name) (ASC(default),DESC)
column name의 데이터를 오름차순(ASC) 혹은 내림차순(DESC)으로 정렬한다.

오름차순 정렬

두 코드는 같은 결과를 출력한다. ASC는 작성하지 않아도 무방하다.

SELECT * FROM (table name) ORDER BY (column name);
SELECT * FROM (table name) ORDER BY (column name) ASC;

내림차순 정렬

DESC를 이용해 내림차순 정렬을 진행한다.

SELECT * FROM (table name) ORDER BY (column name) DESC;

다중 조건의 정렬

첫번째 조건(column name1)으로 정렬하되, 동일 값을 가진 경우 두번째 조건(column name2)으로 정렬하고 싶다면?

SELECT * 
FROM (table name) 
ORDER BY (column name1) ASC/DESC (column name2) ASC/DESC;

조건에 해당하는 데이터 출력

WHERE을 사용하여 조건문을 작성하면 된다.

SELECT * FROM (table name) WHERE (Condition);
SELECT * FROM (table name) WHERE (Condition) ORDER BY (column name);

ORDER BY가 WHERE 뒤로 와야 에러가 생기지 않는다.

해당 값을 가진 데이터 출력

SELECT * FROM (table name) WHERE (column_name = 'a');

해당 값을 가지고 있지 않은 데이터 출력

!=는 사용할 수 없다. 대신 WHERE NOT 사용.

SELECT * FROM (table name) WHERE NOT (column_name = 'a');

조건이 LIST인 경우

IN을 사용해서 조건의 범위를 지정한다.
예시) column name의 값이 value1 또는 value2인 경우 출력

SELECT * 
FROM (table name) 
WHERE (column name) in ('value1','value2');

특정 문자 찾는 조건

LIKE를 활용한다.
LIKE 와 IN을 같이 사용하는 방법을 찾지못했다.

특정 문자로 시작하는 데이터 찾기

abc로 시작하는 데이터 찾기

SELECT * 
FROM (table name) 
WHERE (column name) LIKE 'abc%'

특정 문자로 끝나는 데이터 찾기

abc로 끝나는 데이터 찾기

SELECT * 
FROM (table name) 
WHERE (column name) LIKE '%abc'

특정 문자가 들어간 데이터 찾기

abc가 들어간 데이터 찾기

SELECT * 
FROM (table name) 
WHERE (column name) LIKE '%abc%'

데이터 개수 구하기

COUNT를 이용해 데이터 개수를 구한다.
COUNT(column name) column name의 NULL을 제외한 데이터 개수를 출력한다.

Table 전체 데이터 개수

SELECT 뒤에 COUNT(*)를 작성한다.

SELECT COUNT(*) FROM (table name);

중복 제외하여 데이터 개수 구하기

COUNT(DISTINCT (column name))

SELECT COUNT(DISTINCT (column name)) FROM (table name);

COUNT(column name) 변수 변경하기

COUNT 함수 뒤에 AS (replace name)을 덧붙인다.

SELECT COUNT(column name) AS (replace name)
FROM (table name);

결과;
replace name의 변수명으로 column name에 해당하는 non-null 데이터 개수 출력

그룹별 통계 산출

GROUP BY를 이용한다.
column name에 해당하는 값들의 group 통계를 산출한다.
집계함수 자리에 COUNT, SUM 등을 기입하면 된다.

SELECT 집계함수(column name)
FROM (table name)
GROUP BY (column name);

GROUP BY 결과를 필터링하는 함수: having

예를 들어,반의 평균 점수가 80점이 넘는 반을 출력하라라는 문제가 있다.
각 반의 평균 점수를 GROUP BY로 산출하고,해당 결과 값을 having으로 필터링 한다.

SELECT class AVG(score) AS score
FROM students_score
GROUP BY class
having score > 80;

조건에 따른 새로운 변수 생성

CASE WHEN THEN ELSE를 사용하자
SELECT 옆에 들어감. , 잊지말자.

condition을 만족할 경우, 지정 변수1로 표기.
만족하지 않을 경우, 지정 변수2로 표기.
생성된 변수는 new column name으로 표기.

SELECT (column name), 
CASE (column name) WHEN (condition) THEN (지정 변수1) ELSE (지정 변수2) END AS (new column name)
FROM (table name);

특정 값인 경우를 찾아 새로운 변수를 할당

(예시) 과일 이름이 사과인 경우, 0을 할당하자.

SELECT fruit_name, 
CASE fruit_name WHEN fruit_name ='apple' THEN 0 ELSE 1 END AS '사과인 경우 (1)'
FROM fruit;

또는 WHEN 뒤에 column name을 없애도 된다.

SELECT fruit_name, 
CASE fruit_name WHEN 'apple' THEN 0 ELSE 1 END AS '사과인 경우 (1)'
FROM fruit;

특정 string이 들어간 경우를 찾아 새로운 변수를 할당

특정 string이 들어간 경우를 찾기 위해서 LIKE를 사용한다.
(예시) ap가 들어간 이름을 가진 데이터를 0으로 할당하라.

(ERROR)
SELECT fruit_name, 
CASE fruit_name WHEN LIKE '%ap%' THEN 0 ELSE 1 
FROM fruit;

WHEN LIKE는 사용할 수 없다.

(corrected)
SELECT fruit_name, 
CASE fruit_name WHEN fruit_name LIKE '%ap%' THEN 0 ELSE 1 
FROM fruit;
profile
취뽀를 기원하는 취준생입니다!

0개의 댓글