240902 TIL

mj_data·2024년 9월 2일

TIL

목록 보기
5/32

SQL 3, 4주차 강의 수강

REPLACE, SUBSTRING, CONCAT 함수

  • REPLACE
    컬럼의 특정 문자를 다른 문자로 바꿔준다.
replace(바꿀 컬럼, 현재 값, 바꿀 값)
  • SUBSTRING
    칼럼 중 특정 문자를 골라서 조회할 수 있다. 시작 위치와 글자 수를 정해서 추출한다.
substr(조회 할 컬럼, 시작 위치, 글자 수)
  • CONCAT
    여러 칼럼의 값을 하나로 합칠 수 있는 기능
select restaurant_name "원래 이름",   
       addr "원래 주소",
       concat('[', substring(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
from food_orders
where addr like '%서울%'

위와 같이 기존 칼럼들의 값에서 특정 부분을 추출하여 CONCAT하여 새로운 칼럼값을 만들 수 있다.

IF, CASE 함수

Python의 if, else와 비슷한 느낌이지만 구문은 완전히 다르다.

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

IF에는 애초에 else가 포함되어 있으며 elif 와 같이 여러 조건을 붙이고 싶다면 case를 쓰면 편하다.

  • CASE
case when 조건1 then(수식)1
     when 조건2 then(수식)2
     else(수식)3
end '새로운 칼럼명'

주의할 점은 마지막에 END를 써줌으로 조건들의 나열이 끝났음을 알려야 한다.

Subquery 사용

Subquery는 여러번의 연산을 수행할 때 사용한다. 대략적인 구조는 다음과 같다.

select column1, special_column
from
    (
    select column1, column2 special_column
    from table1
    ) a

상당히 복잡해보이지만 결국 서브쿼리에서 간단한 계산을 실행하고 새로 변수명을 지정해주고, 그걸 바깥쿼리에서 재사용하는 방식이다. Python이라면 계속해서 변수를 할당해주면서 계산하면 될텐데...

JOIN 함수

Python Pandas 라이브러리를 통해 데이터프레임을 조금 만져봤다면 쉽게 이해할 수 있다.

-- LEFT JOIN
select 조회 할 컬럼
from 테이블1 a left join 테이블2 b on a.공통컬럼명=b.공통컬럼명

-- INNER JOIN
select 조회 할 컬럼
from 테이블1 a inner join 테이블2 b on a.공통컬럼명=b.공통컬럼명

공통컬럼을 on을 통해 묶는 것 마저 비슷하다.

0개의 댓글