내배캠_Data_3기/TIL

240630_라이브세션 복습(1), SQL, 명령어

케일라(Data_3기) 2024. 6. 30. 16:50

SQL의 작동순서

FROM → ON → JOIN → WHERE → GROUP BY → HAVING → SELECT → DISTINCT → ORDER BY

 

SQL 조건문 : CASE WHEN

SELECT CASE WHEN 조건식1 THEN 결과1
            WHEN 조건식2 THEN 결과2
            ELSE 결과3 
            END AS 새로운 컬럼이름
FROM 테이블명

 

조건문을 지원하는 연산자

연산의 우선순위를 위해, 각 조건에 괄호()를 작성하여 우선적으로 연산.

해당 조건들을 모두 만족해야 하므로, 각 조건들은 AND 연산자로 묶어주어야 해요.

연산자
연산의 예
의미
>, <
N<10, N>10
N이 10 미만, N이 10 초과
>=, <=
N<=10, N>=10
N이 10 이하, N이 10 이상
=
N=10
N이 10인 값
!=
N!=10
N이 10이 아닌 값 
LIKE
LIKE('%과자%') 맛있는 과자 과자는 살찐다
문자열이 ~와 같을 때(문자열을 기준으로 앞,뒤 문자열과 상관없이 볼 때 %를 앞뒤에 작성해줍니다.)
AND
A AND B
A 그리고 B를 모두 만족하는 값
OR
A OR B
A 또는 B인 값
NOT, !
NOT A, !A
A가 아닌 값 
BETWEEN
A BETWEEN 10 AND 20
A가 10과 20 사이에 포함된 값
IN
A IN B
B에 A가 포함된 값
NOT IN
A NOT IN B
B에 A가 포함되지 않은 값
IS NULL
A IS NULL
A 값이 비어있는 값
IS NOT NULL
A IS NOT NULL
A 값이 비어있지 않는 값

 

ORDER BY

  • 오름차순은 ASC, 내림차순은 DESC
  • 특정 열(Column)을 기준으로 결과값을 출력 할 때 사용
  • 기본값은 ASC(Ascending, 오름차순)
select 조회할 컬럼
from 조회할 데이터테이블 
order by 기준이 될 컬럼 desc;

 

주석

  • SQL 문의 섹션을 설명하거나 SQL 문의 실행을 방지하는 데 사용
  • Single Line Comments (-- 또는 #)
  • Multi-line Comments (/**/)

HAVING과 WHERE의 차이

필터링 시점
WHERE
GROUP BY 전 데이터 필터링
HAVING
GROUP BY 후 결과값을 가지고 데이터 필터링

 

 

SUBQUERY 

N 번의 쿼리문 실행을 1번의 쿼리문으로 실행하기 위해 사용

실행 순서: 서브쿼리 실행 -> 메인쿼리 실행

()안에 SELECT, FROM 반드시 명시

 

백틱(``)의 사용

데이터베이스, 테이블, 컬럼 이름 등 객체의 이름을 감쌀 때 사용

MySQL의 예약어이거나, 공백이나 특수문자를 포함하는 경우에는 사용

 

따옴표('',"")의 사용

따옴표는 문자, 날짜 및 시간을 나타낼 때 사용

숫자형에 컬럼에 따옴표를 사용할 경우 문자열로 해석되어 잘못된 비교나 계산이 발생할 수 있음

 

문제 1

select count(distinct game_actor_id),
		avg(exp)
from users
group by serverno

 

 

문제2 

select date, 
		count(distinct game_actor_id) game_actor
from users
group by date
having game_actor>10

 

 

문제3

select *
from
(select date, count(game_actor_id) cnt_actor
from users
group by date ) a
where cnt_actor>10