SQL/개념

SQL | 기본 개념

jjangdoll 2024. 12. 22. 12:10

기본 구조 

SELECT 컬럼1, 
       컬럼2, 
       컬럼3, ...
FROM 테이블
# 모든 쿼리는 이 구조

별명(alias) 지어주기

컬럼1 as 별명1
컬럼2 별명2 # as 생략 가능

필터링 할 때 : WHERE, BETWEEN, IN, LIKE

WHERE BETWEEN a AND b # (a와 b사이) - a와 b 포함, SQL에서는 a<x<b 이런 삼항조건식은 안됨
WHERE IN (a, b) # (리스트 안에 a와 b 인 경우) - NOT LIKE도 가능
WHERE LIKE '@%' # (@으로 시작하는 단어) - NOT IN도 가능

여러 개 조건

A AND B # A 그리고 B 
A OR B # A 또는 B
NOT B # B가 아닌
<>, != # 같지 않은 - 조건문에서 사용할 수 있는 연산자

계산

SUM(컬럼) # 합계
AVG(컬럼) # 평균
COUNT(1 or * or 컬럼) # 데이터 갯수
DISTINCT # 몇 개의 값을 가지고 있는지 구할 때 - SELECT 절에서만 사용 가능
MIN(컬럼) # 최소
MAX(컬럼) # 최대

범주별

SELECT 카테고리 컬럼,
       SUM(계산 컬럼)
FROM
GROUP BY 카테고리컬럼
ORDER BY 정렬하고 싶은 컬럼 # (카테고리, SUM 둘 다 가능) DESC (내림차순 : 점점 작아짐, 생략할 경우 오름차순)

데이터 가공

REPLACE(바꿀 컬럼, 현재 값, 바꿀 값) # 다른 문자로 변경
SUBSTR(조회할 컬럼, 시작 위치, 글자 수) # 원하는 글자만 골라서 조회
CONCAT(붙이고 싶은 값1, 2, 3, ...) # 문자 합치기

조건에 따라 다르게 변경할 때

IF(조건, 조건에 부합할 때, 조건에 부합하지 않을 때)
# 조건 여러 개 지정 하고 싶을 때 : CASE 문
CASE WHEN 조건1 THEN 값(수식)1
     WHEN 조건2 THEN 값(수식)2
     [ELSE 값(수식)3] # ELSE가 없어도 동작함, 하지만 쓰는걸 권장
END

여러 번의 연산을 한 번의 SQL문으로 수행 : 서브쿼리

SELECT 칼럼1, 
       스페셜 칼럼
FROM
    (
    SELECT 칼럼1, 
           칼럼2, 
           스페셜 칼럼
    FROM 테이블
    ) a

다른 데이블에 있는 데이터 조회할 때

SELECT 조회할 컬럼
FROM 테이블1 줄임말1 LEFT JOIN 테이블2 줄임말 2 ON 줄임말1.공통칼럼명=줄임말2.공통컬럼명
 # 테이블1 데이터 모두 조회

SELECT 조회할 컬럼
FROM 테이블1 줄임말1 INNER JOIN 테이블2 줄임말 2 ON 줄임말1.공통칼럼명=줄임말2.공통컬럼명
 # 두 테이블에 있는 데이터만 조회

데이터에 값이 없다면

-- 없는 값을 제거
null(=inner join과 동일)

-- 다른 값을 대신 사용
if(조건, 대체값) #  다른 값이 있을 때
coalesce(칼럼, 대체값) # null 값일 때

SQL로 피벗 테이블 만들기

if(앞에 max 붙임), case when 이용해서

Window Function

WINDOW_FUNCTION(함수에 따라 작성하거나 생략) OVER (PARTITON BY 그룹 기준 컬럼 ORDER BY 정렬 기준)
WINDOW_FUNCTION # 기능명 (ex : sum, avg, rank...)
PARTITON BY # 그룹 나누기 위한 기준
ORDER BY # 정렬할 컬럼 기준

날짜

-- 날짜 데이터로 변경
SELECT DATE(날짜 컬럼) 별명,
       DATE
FROM 테이블

DATE_FORMAT(날짜데이터, 년월일요일 중 원하는거) 표현할 글자
NOW : 현재 날짜 (시간 포함)
CURDATE : 현재 날짜
DATEDIFF(날짜1, 날짜2) : 날짜2 - 날짜1 (일수로 가져옴)
TIMESTAMPDIFF(단위, 날짜1, 날짜2)
/*  단위
	SECOND : 초
	MINUTE : 분
	HOUR : 시간
	DAY : 일
	WEEK : 주
	MONTH : 월
	QUARTER : 분기
	YEAR : 년도 */

 

'SQL > 개념' 카테고리의 다른 글

SQL 라이브 세션 4회차  (0) 2025.01.02
SQL | 대여기간, DATE_FORMAT vs YEAR  (0) 2025.01.02
SQL 라이브 세션 3회차  (0) 2024.12.23
SQL 라이브 세션 2회차  (0) 2024.12.23
SQL 라이브 세션 1회차  (0) 2024.12.23