DB

[SQL] 기초 문법 및 기본 개념 - 비교연산, BETWEEN, IN, LIKE, 논리연산, 에러메세지 [2]

기석김 2024. 7. 23. 01:01

이 블로그를 학습 하시기 전에 https://kiseokkm.tistory.com/36 먼저 보고 오시면 좋습니다.

[블로그 학습 목표]

SQL에서 비교 연산자를 사용하여 데이터를 필터링하는 방법을 이해

BETWEEN, IN, LIKE 등의 조건을 이용하여 다양한 필터링 조건을 적용하는 방법

WHERE 절에 여러 조건을 적용하여 논리연산을 활용하는 방법

• SQL 쿼리 작성 시 발생할 수 있는 에러 메시지를 읽고 해결하는 능력

 

필터링을 할 때 유용한 표현 알아보기 (비교연산, BETWEEN, IN, LIKE)

✔️ 필터링 조건을 다양하게 지정하는 방법을 한번 보자

 

▼ 1) 같음, 큼, 작음 등의 조건을 지정해보기

     • 필터링은 같다 (=) 조건을 포함하여, 크다 (>), 작다 (<) 등을 모두 사용할 수 있다

     •  비교연산자의 종류

비교연산자 의미 예시
= 같다 age=21
gender='female'
< > 같지 않다 (다르다) age< >21
gender< >'female'
> 크다 age>21
>= 크거나 같다 age>=21
< 작다 age<21
<= 작거나 같다 age<=21

 

ex ) 비교연산자를 이용하여 ‘나이가 21세 미만인’ 고객을 조회한 예시

select *
from customers
where age<21

 

▼ 2) 다양한 조건의 종류 (BETWEEN, IN, LIKE)

SQL 문법은 비교연산자와 더불어 다양한 조건의 필터를 제공합니다.

 

BETWEEM : 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 '%임'

 

[실습] WHERE 절에 비교 연산자 적용하기

 

1.고객 (customers) 테이블에서 나이가 40세 이상인 고객 조회하기

 

1.1 기본구조를 적어줍니다

select
from
where

 

1.2 데이터를 가져올 테이블을 적어줍니다

select *
from customers
where

 

1.3 나이 40세 이상 조건을 지정해줍니다

select *
from customers
where age>=40

 

1.4 실행 결과

 

2.주문 (food_orders) 테이블에서 주문 금액이 15,000원 미만인 고객 조회하기

 

2.1~2.3 적용!

select *
from food_orders
where price<15000

 

2.4 실행 결과

 

[실습] WHERE 절에 다양한 조건을 적용하기

 

1.주문 (food_orders) 테이블에서 주문 금액이 20,000~30,000원 사이인 고객 조회하기

 

select *
from food_orders
where price between 20000 and 30000

 

2. 주문 (food_orders) 테이블에서 B 로 시작하는 상점의 주문 조회하기

select *
from food_orders
where restaurant_name like 'B%'

 

여러 개의 조건으로 필터링하기 (논리연산)

✔️ 여러개의 필터링 조건을 한 번에 적용하는 방법을 알아보자

 

WHERE 절에 여러 조건을 적용하기

지금까지 배운 필터링 조건 여러개를 하나의 쿼리문에서 적용 가능

ex) ‘나이가 20세 이상인’, ‘여성 고객’ 두가지 조건 적용

여러개의 조건을 적용할 때 사용되는 연산이 ‘논리연산’

논리연산의 종류

논리연산자 의미 예시
AND 그리고 age>20 and gender=’female’
→ 나이가 20세 이상이고, 여성
OR 또느 age>20 or gender=’female’
→ 나이가 20세 이상이거나, 여성
NOT 아닌 not gender=’female’
→ 여성이 아닌

 

 여러 조건을 적용하여 데이터 필터링 해보자

 

 1. 주문 (food_orders) 테이블에서 한국음식이면서, 가격이 30,000원 이상인 경우 조회

 

1.1 기본구조를 적어주기

select
from
where

 

1.2 데이터를 가져올 테이블 적어주기

select *
from food_orders
where

 

1.3 한국음식이면서, 가격이 30000원 이상인 조건 지정

select *
from food_orders
where cuisine_type='Korean' and price>=30000

 

2.결제 (payments) 테이블에서 카드로 결제했거나, vat 율이 0.2 이하인 경우 조회

 

select *
from payments
where pay_type='card' or vat<=0.2

 

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

✔️ Query 문을 실행했는데 에러메세지가 떴어요!! 당황하지 않고 대처하는 방법을 알아보자

 

☝ 에러메세지에서 확인 할 부분은 ‘에러코드’ 가 아닌 ‘왜 에러가 났는가’ 부분!!

 

일반적인 SQL의 에러문은 아래와 같이 나온다

 

에러코드 다음에 나오는 문장을 보면, 친절하게 에러가 난 이유를 설명해주는 것을 볼 수 있다

에러 코드를 보고 놀라거나, 포기하지 마시고! 침착하게 ‘에러가 난 이유’ 를 확인!!

 

자주 만날 수 있는 에러메세지

 

⚠️ 테이블 명을 다르게 적었을 때 → 테이블이 존재하지 않는다는 메시지

 

⚠️ 컬럼 명을 다르게 적었을 때 → 필드명이 잘못 되었다는 메시지

 

⚠️ 필터링 조건을 줄 때 문자에 ‘ ‘ 작은 따옴표를 안했을 때 → Korea 에 문제가 있다는 메시지

 

🔥 이 외에도 여러 경우가 있지만, 중요한 것은 ‘에러 메시지를 읽어보는 것!!