본문 바로가기
Database

MySQL 기본구문 - 분석을 위한 조건을 정확하게! 필터 역할 'WHERE'

by 나룽나룽 2023. 10. 10.

WHERE 구

  • 테이블에 ‘검색하고 싶은’ 조건 적용하기 위한 방법
  • 엑셀에서 필터의 역할이라고 할 수 있음. : ‘데이터를 걸러주는 역할’
  • 조건에 맞게 테이블이 축소되고, 축소된 테이블에서 select 를 함.
  • from 테이블명 다음에 where 구문 작성해야함.
  • 검색하고 싶은 조건은 연산자 (비교/SQL/논리 연산자) 를 사용하여 조건을 적용할 수 있음.

WHERE 구 연산자를 위한 데이터 행 이해

  • 데이터형에 따라서 연산자 작성방법이 다를 수 있음.
  • 문자와 날짜에서도 대소 비교연산자 사용 가능.

문자 - VACHAR, CHAR, STRING (ex. ‘SQL’, ‘기획자’)

날짜 - DATE, DATETIME (ex. ‘2015-07-14’)

⇒ 문자 날짜는 싱글쿼테이션 (’ ‘)이 필요.

숫자(정수형) - INT (ex. 2123)

숫자(소수) DOUBLE, FLOAT (ex. 91.2)

 

WHERE구 비교연산자

문자와 날짜도 크고 작음을 판단할 수 있음.

*ㄱ~ㅎ 오름차순, 내림차순 개념으로 이해.

테이블 스키마

: 자동으로 스키마 저장될 수 있게 설정해두면,

각 데이터를 어떤 유형으로 저장되는지 설정됨.

-- '=' 같은 값을 찾는 비교 연산자
select *
from orders
where category = ‘hotel’

-- '!=', '<>' 다른 값을 찾는 비교 연산자
select *
from orders
where category <> 'hotel'

-- '>=' ~보다 크거나 같은 값을 찾는 비교연산자

select *
from orders
where price >= 50000

select *
from orders
where reg_date >= '2021-07-01'

'>=' 날짜에서 해당 일자 이후로 이해하면 됨. 

 

WHERE구 논리연산자

  • 2가지 조건을 조합하기 위한 연산자
  • 합집합, 교집합 등 집합의 개념으로 적용

and : 교집합, 두가지의 조건 모두 충족하는 경우

or : 합집합, 두가지의 조건 중 한가지라도 충족하는 경우

not : not 뒤의 조건과 반대인 경우

--조건1 and 조건2, 앞뒤의 조건 모두 만족하는 경우
select *
from orders
where cateogry = 'hotel'
			and region = 'seoul'

--조건1 or 조건2, 앞뒤의 조건 중 하나라도 만족하는 경우
select *
from orders
where cateogry = 'hotel'
			or region = 'seoul'

--not 조건1, 조건이 아닌 경우
select *
from orders
where not category = 'hotel'

 

WHERE 구 SQL 연산자

  • ‘컬럼명’ between (a) and (b) : a 이상 b 이하인 경우
  • N ≤ 컬럼 and 컬럼 ≤ x 와 같이 비교 연산자 표현 가능.
  • ‘컬럼명’ in (리스트)
  • 컬럼에 a 또는 b가 있는 경우 ⇒ 컬럼 in (’a’, ‘b’)
  • ‘컬럼명’ like ‘비교문자’
  • 일치 여부를 확인할 수 없는 경우 사용
    • ~같은, ~처럼 해석하여 조건 적용
    • 기호 연산자 ‘%’, ‘_’ (wild card)와 함께 사용

% : 검색하고자 하는 문자수를 반영 X

  • like ‘%치킨’ : ‘치킨’ 단어가 맨 마지막에 위치
  • like ‘치킨%’ : ‘치킨’ 단어가 맨 앞에 위치
  • like ‘%치킨%’ : 치킨 단어가 중간에 위치

_ : 검색하는 문자수를 표현할 수 있음.

  • like ‘_ _ _ 치킨’ : ‘치킨’ 단어가 맨 마지막 위치, 치킨 앞에 3개의 문자만 있어야 함.
  • ‘컬럼명’ is null
    • 컬럼에 데이터가 없는 경우 (공백인 경우)
    • 0 과 null은 다름. 0은 0이라는 데이터가 있는 것.
    • null 연산자는 데이터가 없기 때문에 비교연산자 (=)로 비교가 불가능. ‘is’ be동사를 활용.