TIL (ToDay I LearNEd)/SQL

SQL이란? where문 (비교연산자, between, in, like, 논리연산자)

sooyeoneo 2024. 9. 6. 17:19

SQL : 데이터베이스와 대화를 하기 위한 언어

 - SQL이라는 언어를 이용하여 데이터베이스에 요청하는 질의 : "Query"

 

데이터베이스 : 데이터가 저장되어있는 큰 폴더

테이블 : '데이터베이스' 라는 폴더 안에 '테이블' 이라는 파일

컬럼 혹은 필드 : '테이블' 안의 각각의 열

초록색 창은 테이블, 검은색 창은 컬럼 혹은 필드 (열)

 

 

가장 기본적인 Query 문

select : 데이터를 가져오는 기본 명령어, 데이터 조회하는 모든 Query 에 사용 

from : 데이터를 가져올 테이블을 특정해주는 문법

* : 모든 컬럼을 가져와준다

 

컬럼에 별명(alias) 주기

  1. 컬럼1 as 별명1
  2. 컬럼2 별명2

⚠ 주의 사항 ⚠

구분 영문, 언더바 특수문자, 한글
방법 별명만 적음 "별명"으로, 큰 따옴표 안에 적어줌
예시 ord_no "ord no"

"주문번호"

 

price와 quantity에 "가격", "수량" 별명 주기

 

where : 전체 데이터 중 원하는 데이터만 필터링할 수 있게 함.

 

조건 1.

select *
from 테이블
where 필터링 조건 (eg. 20살 이상)

 

select *
from customers
where age=21

 

조건을 지정할 때 =' ' 사용

select *
from food_orders
where cuisine_type='Korean' 

 

 

*필터링할 때 유용한 표현 (비교연산, between, in, like)

 

비교연산자

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

 

 

between A and B : A 와 B 사이

 

조건 2.

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

 

select *
from food_orders
where price between 20000 and 30000

 

조건 2. 실행 결과

 

in : '포함'하는 조건 주기 

in (A, B, C)

 

조건 3.

나이가 15, 21, 31 세인 경우
age in (15, 21, 31)

 

조건 4.

음식 종류가 한식, 일식인 경우
cuisine_type in ('Korean', 'Japanese')

 

 

like : 완전히 똑같지는 않지만, 비슷한 값을 조건으로 주기

 

1. 특정한 문자로 시작하는 경우

  • 기본 문법 : like ‘시작문자%'
  • 예시1 : ‘김’ 으로 시작하는 이름
name like '김%'

 

2. 특정한 문자를 포함하는 경우

  • 기본 문법 : like ‘%포함문자%’
  • 예시2 : 식당 이름에 ‘Next’ 를 포함하는 경우
restaurant_name like '%Next%'

 

3. 특정한 문자로 끝나는 경우

  • 기본 문법 : like ‘**%**끝나는문자’
  • 예시3 : ‘임’ 으로 끝나는 이름
name like '%임'

 

조건 5.

주문 (food_orders) 테이블에서 B 로 시작하는 상점의 주문 조회하기
select *
from food_orders
where restaurant_name like 'B%'

 

조건 5. 실행 결과

 

 

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

  • 필터링 조건 여러개를 하나의 Query 문에서 적용이 가능
  • 예) ‘나이가 20세 이상인’, ‘여성 고객’ 두가지 조건 적용
  • 여러개의 조건을 적용할 때 사용되는 연산 = ‘논리연산’

 

논리연산의 종류

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

 

 

 

and : 그리고, ~이고

 

조건 6.

주문 (food_orders) 테이블에서 한국음식이면서, 가격이 30,000원 이상인 경우 조회
select *
from food_orders
where cuisine_type='Korean' and price>=30000

 

조건 6. 실행 결과

 

 

or : 또는, ~이거나

 

조건 7.

결제 (payments) 테이블에서 카드로 결제했거나, vat 율이 0.2 이하인 경우 조회
select *
from payments
where pay_type='card' or vat<=0.2

 

조건 7. 실행 결과

 

 

조건 8.

상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하기
select restaurant_name, customer_id
from food_orders
where food_preparation_time between 20 and 30
and cuisine_type='Korean'

 

조건 8. 헷갈린 부분이 한국음식점에 대한 데이터 추출. cuisine_type을 확인하고 Korean만 조건 지정

 

 

조건 8. 실행 결과

 

 

 

 

TIL 9월 6일