SQL 기초 - 수정과 조건

이재현·2024년 7월 19일

SQL 기초

목록 보기
3/4

수정

Query를 쓰다 보면 변경하고 싶은 내용이 생기기 마련이다.

REPLACE

특정문자를 다른 문자로 변경하기 위해서 사용하는 함수

SELECT restaurant_name "원래 상점명",
       REPLACE(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
FROM food_orders
WHERE restaurant_name LIKE '%Blue Ribbon%'

SUBSTRING

특정 문자만 골라서 조회할 수 있게 해주는 함수
인수로 조회할 열과 그 중 어느 부분을 조회할 것을 설정합니다.

SELECT addr "원래 주소",
       SUBSTR(addr, 1, 2) "시도"
FROM food_orders
WHERE addr LIKE '%서울특별시%'

CONCAT

원하는 문자가 여러 열에 있을 때, 이를 합쳐서 사용할 수 있는 함수
인수로 붙이고 싶은 값들을 받아서 원래 조회한 값에 이를 붙인다.
이때 붙일 수 있는 데이터는 문자, 숫자, 특수문자, 열까지 붙일 수 있다.

SELECT restaurant_name "원래 이름",   
       addr "원래 주소",
       CONCAT('[', SUBSTRING(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
FROM food_orders
WHERE addr LIKE '%서울%'



조건에 따른 연산

IF

조건을 설정해주고 싶을 때, 이 함수를 적용한다.
IF의 인수로는 조건, 조건이 ture일 때의 값, 조건이 false일 때의 값을 지정해주어야 한다.

SELECT restaurant_name,
       cuisine_type "원래 음식 타입",
       IF(cuisine_type='Korean', '한식', '기타') "음식 타입"
FROM food_orders

SELECT addr "원래 주소",
       IF(addr LIKE '%평택군%', REPLACE(addr, '문곡리', '문가리'), addr) "바뀐 주소"
FROM food_orders
WHERE addr LIKE '%문곡리%'

SELECT SUBSTR(if(email LIKE '%gmail%', REPLACE(email, 'gmail', '@gmail'), email), 10) "이메일 도메인",
       COUNT(customer_id) "고객 수",
       AVG(age) "평균 연령"
FROM customers
GROUP BY 1

CASE

단일 조건이 아닌 여러 조건을 설정하고 싶을 때 사용하는 함수
CASE, WHEN, THEN, END로 구성되어 있으며, WHEN 구문에 조건을 설정하고, THEN 뒤에 조건이 부합할 때 수행할 구문을 넣는다.

SELECT order_id,
       price,
       quantity,
       CASE WHEN quantity=1 THEN price
            WHEN quantity>=2 THEN price/quantity
END "음식 단가"
FROM food_orders

SELECT restaurant_name,
       addr,
       CASE WHEN addr LIKE '%경기도%' THEN '경기도'
            WHEN addr LIKE '%특별%' OR addr LIKE '%광역%' THEN SUBSTR (addr, 1, 5)
            ELSE SUBSTR(addr, 1, 2) 
END "변경된 주소"
FROM food_orders

조건식은 조건식 내부에 다른 조건식을 추가할 수도 있고 각각의 조건에 다른 함수를 적용할 수 도 있다.

0개의 댓글