[엑셀보다 쉽고 빠른 SQL] 3주차 핵심정리

2024. 6. 14. 14:14·Mysql/SQL 기초
목차
  1. 1. 데이터 포맷 가공 (REPLACE, SUBSTRING, CONCAT)
  2. 2. 조건문 사용 (IF, CASE)
  3. 3. Data Type 오류 해결하기

 

1. 데이터 포맷 가공 (REPLACE, SUBSTRING, CONCAT)

 

1.1 REPLACE

: 특정 문자를 다른 것으로 바꾸는 함수

 

- 사용 방법

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

 

- 사용 예시

-- EX) 주소의 '문곡리'를 '문가리'로 바꾸기
-- 테이블: food_orders, 주소: addr
SELECT addr "원래주소"
		REPLACCE (addr, '문곡리', '문가리') "바뀐주소"
FROM food_orders
WHERE addr like '%문곡리%'

 

 

 

1.2 SUBSTRING(=SUBSTR)

: 특정 문자를 골라 조회하는 함수

 

- 사용 방법

SUBSTRING(조회 할 컬럼, 시작 위치, 글자 수)
SUBSTR(조회 할 컬럼, 시작 위치, 글자 수)
이때, 시작 위치에 '-'(마이너스)를 붙이면 앞이 아닌 뒤쪽 부터 시작함.

 

- 사용 예시

-- EX) 서울 음식점들의 주소를 전체가 아닌 ‘시도’ 만 나오도록 수정
-- 테이블: food_orders, 주소: addr

SELECT addr "원래 주소",
		SUBSTR(addr, 1, 2) "시도"	-- 주소 가장 첫번째 글자부터 2개만 조회
FROM food_orders
WHERE addr LIKE '%서울특별시%'

 

 

 

1.3 CONCAT

: 여러 컬럼의 값을 하나로 합치는 함수

 

- 사용 방법

CONCAT(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, ..... )
붙일 수 있는 문자의 종류 : 컬럼, 한글, 영어, 숫자. 기타 특수문자

 

- 사용 예시

-- 서울시에 있는 음식점을 ‘[서울] 음식점명’ 으로 수정
-- 테이블: food_orders, 식당이름: restaurant_name, 주소: addr

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

 

 

 


2. 조건문 사용 (IF, CASE)

 

2.1 IF

: 하나의 조건을 지정하고 싶을 때 사용

 

- 사용방법

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

 

- 사용 예시

-- 음식 타입이 ‘Korean’ 일 때는 ‘한식’, ‘Korean’ 이 아닌 경우에는 ‘기타’ 라고 지정
-- 테이블: food_orders, 식당: restaurant_name, 음식 타입: cuisine_type

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

 

 

 

2.2 CASE

: 조건을 여러가지 지정하고 싶을 때 사용. IF문을 여러번 쓴 효과를 낼 수 있다. 

 

- 사용방법

CASE WHEN 조건1 THEN 값(수식)1
           WHEN 조건2 THEN 값(수식)2
           ELSE 값(수식)3
END

 

- 사용 예시

/* 
음식 타입을 ‘Korean’ 일 때는 ‘한식’, 
‘Japanese’ 혹은 ‘Chienese’ 일 때는 ‘아시아’, 그 외에는 ‘기타’ 라고 지정 
*/

SELECT restaurant_name,
		cuisine_type "원래 음식 타입",
		CASE WHEN cuisine_type='Korean' THEN '한식'
			WHEN cuisine_type IN ('Japanese', 'Chienese') THEN '아시아'
			ELSE '기타' 
		END "음식타입"
FROM food_orders

 

 

 


3. Data Type 오류 해결하기

AVG, SUBSTR 등 함수를 썼을 때 에러메세지에 'data type' 단어가 뜨면서 실행되지 않는다!
☞ 사용하려는 컬럼(값)이 연산이나 함께 사용하는 컬럼의 데이터형이 다를 때 발생
☞  숫자 계산이나 문자 계산 시 자주 발생하는 오류 (문자+숫자 같은 연산을 하려는 경우)

 

- 예시

1. rating 컬럼은 숫자처럼 보이지만 문자이다. 따라서 숫자연산을 하려고 하면 data type 오류가 발생.

2. 식당 이름(restaurant_name)과 주문번호(order_id)를 CONCAT으로 합쳐 출력하려고 하면 주문번호가 숫자이기 때문에 data type 오류가 발생.

 

- 해결 방법 : CAST를 사용하여 데이터 타입 변경

-- 1. rating 컬럼을 숫자로 변경
CAST(IF(rating='Not given', '1', rating) AS DECIMAL) 

--2. order_id 컬럼을 문자로 변경 
CONCAT(restaurant_name, '-', CAST(order_id AS CHAR))

 

 

 

'Mysql > SQL 기초' 카테고리의 다른 글

[엑셀보다 쉽고 빠른 SQL] 4주차 핵심정리  (0) 2024.06.16
[엑셀보다 쉽고 빠른 SQL] 2주차 핵심정리  (0) 2024.06.13
[엑셀보다 쉽고 빠른 SQL] 1주차 핵심정리  (1) 2024.06.12
  1. 1. 데이터 포맷 가공 (REPLACE, SUBSTRING, CONCAT)
  2. 2. 조건문 사용 (IF, CASE)
  3. 3. Data Type 오류 해결하기
'Mysql/SQL 기초' 카테고리의 다른 글
  • [엑셀보다 쉽고 빠른 SQL] 4주차 핵심정리
  • [엑셀보다 쉽고 빠른 SQL] 2주차 핵심정리
  • [엑셀보다 쉽고 빠른 SQL] 1주차 핵심정리
G_vieve
G_vieve
할일을 하자.
G_vieve
개발하는 날
G_vieve
전체
오늘
어제
  • 분류 전체보기 (18)
    • TIL (5)
    • 코테 (0)
      • 문제 (0)
      • 알고리즘 이론 (0)
    • Programming Language (1)
      • Java (1)
    • Mysql (4)
      • SQL 기초 (4)
    • Git&GitHub (8)

인기 글

태그

최근 댓글

hELLO· Designed By정상우.v4.5.3
G_vieve
[엑셀보다 쉽고 빠른 SQL] 3주차 핵심정리

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.