그래서 SQL은 실무에서 어떻게 쓰나요?
SQL을 쓰는 목적은 결국 실무에서 사용하기 위함이다.
하지만 실무에 필요한 데이터를 빼왔다고 해서 그 값을 바로 쓸 수 있는 경우가 얼마나 될까?
데이터가 잘못된 값이 있거나 표기하는 방법을 수정하고 싶을 때에 쓰는 쿼리문들이 있다.
잘못 표기된 문자를 올바른 것으로 바꾸고 싶을 때 쓰는 함수명은 REPLACE 함수이다.
REPLACE(바꿀 컬럼, 현재 값, 바꿀 값)
전체 데이터가 아닌 특정 문자만 필요할 때 지정하는 함수명은 SUBSTRING(SUBSTR)이다.
SUBSTR(조회할 컬럼, 글자 시작 위치, 끝낼 글자 위치)
여러 컬럼에 있는 문자를 합치고 싶을 때 쓰는 함수명은 CONCAT이다.
CONCAT(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3...)
▶︎ concat문에 붙일 수 있는 문자는 '컬럼','한글','영어','숫자','특수문자' 등이 있다.
예를 들어 나에게 전국 음식점 주소 데이터가 있다고 가정했을 때, 서울시에 있는 음식점을 [서울]음식점명이라고 보고서에 올리라는 지시가 내려왔다.
그러면 나는 필요한 데이터를 수정하기 위해서 CONCAT 함수를 아래와 같이 사용할 수 있다.
SELECT resturant_name AS "원래이름"
,addr AS "원래 주소"
,CONCAT('[','substr(addr,1,2,),']', restaurant_name) AS "바뀐이름"
FROM food_orders
WHERE addr Like '%서울%'
라는 코드를 입력하면 '[서울]음식점명' 으로 정리된 데이터를 뽑을 수 있다.
조건문은 무조건 WHERE 만 쓰나요?
SQL에서 일상 영어가 많이 보인다고 말했듯이 조건문이라면 우리가 많이 생각하는 'iF'도 당연히 조건문으로 쓰인다.
거기에 추가로 'CASE' 라는 조건문도 있다.
<if문 기초>
IF(조건, 조건을 충족할 때, 조건을 충족하지 못할 때)
<case문 기초>
CASE WHEN 조건 1 THEN 값 (수식) 1
WHEN 조건 1 THEN 값 (수식) 1
ELSE 값 (수식)
END
IF문은 원하는 조건에 충족할 때 적용할 방법과 아닌 방법을 지정해 줄 수 있다.
CASE문은 각 조건별로 적용할 값을 지정해 줄 수 있다.
조건별로 지정을 해주기 때문에 IF문을 여러번 쓴 효과를 낼 수 있다.
SQL에도 오류가 있나요?
숫자 계산이나 문자 가공 시 자주 발생하는 오류들이 있다.
데이터 타입이 다를 때 연산이 되지 않을 수 있다.
즉 숫자로 적혀있지만 문자 데이터로 입력 되어있거나, 문자로 적혀있지만 숫자 데이터로 입력되어 있는 경우에는 아무리 쿼리를 잘 써도 처리가 되지 않을 수 있다.
이럴 때 해결 방법은 간단하다. 데이터 타입을 바꿔주면 된다.
<숫자로 변경>
CAST(IF(조건='바꾸고 싶은 값', '참일 때 값', 거짓일때 값) AS decimal)
<문자로 변경>
CONCAT(숫자 표기 쿼리, '-', CAST(숫자 표기 쿼리 AS char)
오늘의 SQL 요약
▶ 잘못된 데이터를 올바르게 잡는 방법은 여러 함수명이 있다.
(REPLACE, CONCAT, SUBSTR)
▶ 조건문에도 다양한 문법이 있다.
▶ 데이터 처리가 안될 때는 데이터 표기가 제대로 되어있는지 확인하는게 오류를 줄일 수 있다.