카테고리 없음

사전캠프 (SQL강의)

bbborang 2026. 4. 24. 18:04

 

 

데이터베이스 = 데이터가 저장되어있는 큰 폴더

데이터를 조회 = 데이터베이스라는 폴더에서 테이블이라는 폴더를 열어서 본다. / 그 테이블 안에 데이터가 컬럼으로 하나하나 저장이 되어있다.

 

SELECT, FROM = 가장 기본적인 문법, 모든 SQL에는 반드시 들어간다

 

SELECT = 데이터를 가져오는 기본 명령어

FROM = 데이터를 가져올 테이블을 특정해주는 문법

* = 모든 컬럼을 가져와준다는 의미

 

1) 원하는 컬럼을 선택하기

테이블의 모든 컬럼이 필요하지 않을 때, 필요한 것만 선택하여 조회 가능

모든 것을 조회한다는 ‘*’ 대신에, 필요한 컬럼만 적어줌

-> 컬럼의 이름이 길기 때문에 오타없이 잘 적어주기

 

select 컬럼1, 컬럼2
from 테이블

 

2) 컬럼에 별명 붙이기

 

- 방법1 : 컬럼1 as 별명1
- 방법2 : 컬럼2 별명2

 

별명 지을때 유의사항

영어, 언더바 -> 그대로

띄어쓰기, 한글, 특수문자 -> 따옴표 안에

 

ex) e-mail 같은 경우네는 -(하이픈)이 특수문자 이기 때문에, email 자체는 영어일지 몰라도 특수문자를 포함한 형태이기 때문에

"따옴표" 안에 써줘야한다

 

+) SQL문 같은 경우에는 컬럼을 적어줄때, 옆으로 쭈르륵 나열해도 되지만, 한칸 밑으로 띄어서 적어줘도 실행하는데는 문제없음

-> 보기편한 형태 / 나중에 수정하기 편한 형태로 맞춰서 쓰기

 

3) WHERE절

select *
from 테이블
where 필터링 조건

 

where age=21

where gender='female'

 

숫자는 그냥 사용

기본조건은 = 사용

문자를 사용할때는 작은 따옴표 사용

  • BETWEEN : A 와 B 사이
    • 기본 문법 : between a and b
    • 예시 : 나이가 10 과 20 사이
    • where age between 10 and 20
  • IN : ‘포함’ 하는 조건 주기
    • 기본 문법 : in (A, B, C)
    • 예시1 : 나이가 15, 21, 31 세인 경우
    • age in (15, 21, 31)
    • 예시2 : 음식 종류가 한식, 일식인 경우
    • cuisine_type in ('Korean', 'Japanese')
  • LIKE : 완전히 똑같지는 않지만, 비슷한 값을 조건으로 주기
    • 특정한 문자로 시작하는 경우
      • 기본 문법 : like ‘시작문자**%**’
      • 예시 : ‘김’ 으로 시작하는 이름
      • name like '김%'
    • 특정한 문자를 포함하는 경우
      • 기본 문법 : like%포함문자%
      • 예시 : 식당 이름에 ‘Next’ 를 포함하는 경우
      • restaurant_name like '%Next%'
    • 특정한 문자로 끝나는 경우
      • 기본 문법 : like ‘**%**끝나는문자’
      • 예시 : ‘임’ 으로 끝나는 이름
      • name like '%임'
  •  

 

여러 조건을 적용하는 경우

 

 

4) 에러메세지에 당황하지 않고 스스로 문제 해결하기

숙련된 데이터분석가도 에러메세지는 늘상 본다고한다.

 

 

-----------------------------------------------------------------------------------------------------------

 

<함수>

  • 합계 : SUM(컬럼)
  • 평균 : AVG(컬럼)
  • 데이터 갯수 : COUNT(컬럼) ---> 컬럼명 대신 1 혹은 * 사용 가능 ---> COUNT(1) 또는 COUNT(*)
  • 몇개의 값을 가지고 있는지 구할 때 : DISTINCT
  • 최솟값 : MIN(컬럼)
  • 최댓값 : MAX(컬럼)

컬럼명 -> 대소문자 구분 있음

함수 -> 대소문자 구분 없음

 

 

 

<카테고리별로 숫자 연산을 간단하게 하기>

 

" 범주별로 값을 구하는 group by "

 

select 카테고리컬럼(원하는컬럼 아무거나),
       sum(계산 컬럼),
from
group by 카테고리컬럼(원하는컬럼 아무거나)

 

-> bold 및 underline 해놓은 부분을 group by 뒤에 동일하게 작성하라는 뜻임

 

 


<조회된 데이터를 업무나 사용용도에 맞게 바로 사용할 수 있도록 데이터를 보기좋게 정렬하는 방법>


" 정렬문 Order by "

 

기본정렬 = 오름차순 정렬

(기본값이 오름차순 정렬이므로 오름차순은 아무것도 적어주지 않아도됨)

참고로 '내림차순'은 영어로 descending order 

 

범주별로 계산을 해야할때

group by 절은 (where절까지 다 쓰고나서) 마지막에 오는것임

구조는 select from where group by 순서로 쓰는거임

 

한글기준으로는 ㄱ이 제일 작은값
영어기준으로는 a가 제일 작은값

 

order by gender, name 으로 작성하게되면 (두가지 이상을 정렬하고 싶을때는 "쉼표"로 연결해주면 된다)

female 기준으로 'ㄱ'부터 'ㅎ'까지

그 다음에 male 기준으로 'ㄱ'부터 'ㅎ'까지

 

 

-------------------------------------------------------------------------------------------------------------------------------------

 

 

* 업무 필요한 문자 포맷이 다를 때, SQL로 가공하기 (REPLACE, SUBSTRING, CONCAT)

 

함수명 : replace

replace(바꿀 컬럼, 현재 값, 바꿀 값)

함수명 : substring (substr)

substr(조회 할 컬럼, 시작 위치, 글자 수)

substr(addr, 1, 2) : 1번째부터 2글자씩만 뽑아와줘

substr(addr, 10, 터무니없이 큰숫자) 또는 substr(addr, 10) : 10번째 글자부터 맨끝까지 다 불러와

 

함수명 : concat

concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)

-> 문자데이터를 붙이고싶다면 반드시 작은따옴표를 붙여줘야 한다는 것을 기억하기!!!!!

-> 띄어쓰기 넣고싶을땐 작은따옴표 안에다가 띄어쓰기 하고나서 그다음걸 써주면 된다

 

 

* 조건에 따라 포맷을 다르게 변경해야한다면 (IF, CASE) 

 

 

함수명 : if

if(조건, 조건을 충족할 때, 조건을 충족하지 못할 때)

-> 조건을 지정해주는 가장 기초 문법은 ‘If’ 문입니다 (엑셀의 기능과 유사합니다)

 

 

함수명 : case

case when 조건1 then 값(수식)1
         when 조건2 then 값(수식)2
         else 값(수식)3
end

 

<구조익히기>

case로 시작

end로 끝

가운데 조건은 when으로 준다

 

부합하지 않을때는 else로 써야하는데,

만약 부합하지 않을때가 없다하면 else 생략가능

-> else 는 혹시모를 조건에 부합하지 않는것 위해서 써주는 구문이다 그래서 생략이 가능하다

 

 

[실습] SQL로 간단한 User Segmentation 해보기

=> 카테고리별로 분류작업해보기

=> 여러가지 조건 적어줄때 헷갈리면 본인이 알아보기 쉽게 괄호로 묶어줘도 무방함