WHERE 조건
Last updated
Last updated
이번시간에는 데이터를 많이 넣어두고 진행해봅시다.
csv 파일을 다운로드 받고
기존 product 테이블의 데이터는 드래그 후 삭제 & 저장
데이터 가져오기 클릭 후 'csv에서 가져오기' 선택 후 다음
한글 들어있는 데이터의 경우 인코딩부분을 euc-kr로 변경해야 안깨집니다.
출력되는 행이 너무 많다면
WHERE 문법을 뒤에 붙여서 원하는 조건으로 필터링할 수 있습니다.
WHERE 뒤에 조건식을 입력하면 그거와 일치하는 행만 보여줍니다.
조건식 자리에는 컬럼명 = 값 이런 식으로 넣을 수 있는데
등호, 부등호 이런 것들을 전부 이용가능합니다.
이러면 카테고리 컬럼 값이 '가구' 인 행만 필터링해줍니다.
컬럼명에는 따옴표 안써도 되는데 '문자' 값은 따옴표 안에 적어야합니다.
>, <, =, != 이런거 다 됩니다. != 는 같지않다는 소리입니다.
- 크거나 같다를 표현하고 싶으면 >=, <= 이렇게 등호를 오른쪽에 씁니다.
- 문자값 표현할 땐 '어쩌구' 이렇게 따옴표 써야하지만 숫자는 따옴표 필요없음
- SQL 작성시 중간중간 엔터쳐도 상관없습니다.
영어숙련자라면 where 라는 단어 보면 자연스럽게 "조건식쓰는 부분이구나~" 가 떠오르는데
토종 한국인은 그런 느낌을 받을 수가 없으니까
그냥 where 조건식 쓰면 행 필터링 된다고 외워가면 됩니다.
가격이 5000이상 8000이하 이런걸 필터링하고 싶으면 컬럼명 BETWEEN A AND B 쓰면 됩니다.
A이상 & B이하를 표현하는 문법이라
위 코드에서는 가격이 딱 5000, 8000인 상품도 포함됩니다.
AND / OR / NOT으로 조건식 업그레이드 가능
가끔은 여러 조건을 넣고싶을 때가 있습니다.
예를 들어서 1. 카테고리가 가구 2. 가격이 5000원인 것들만 필터링하고 싶으면 어떻게합니까.
조건식이 2개 이상 필요한 경우 조건식 2개를 AND, OR, NOT 붙여서 연결해줄 수 있습니다.
AND는 왼쪽 오른쪽 조건이 전부 맞으면~ 이라는 뜻입니다.
그래서 위 코드를 실행하면 카테고리가 '가구' 이면서 가격이 5000인 것을 출력해줍니다.
OR는 왼쪽 오른쪽이 둘 중 하나만 맞아도~ 라는 뜻입니다.
그래서 위 코드를 실행하면 카테고리가 '가구' 또는 가격이 5000인 것을 출력해줍니다.
NOT은 제외라는 뜻입니다.
그래서 위 코드는 카테고리가 '가구'가 아닌 것들만 출력해줍니다.
이렇게 SQL은 영어단어 몇개만 알면 되는거라 초등학생 데려다놔도 잘합니다.
AND 혹은 OR이 여러개 있으면 괄호같은거 쳐도 됩니다.
괄호있으면 괄호안에 있는 것들 먼저 연산한다는거 초등학교 수학시간에 배웠죠?
SQL도 마찬가지로 괄호안에 있는 것들을 먼저 연산해줍니다.
그래서 위 코드는 뭐가 출력될지 한번 예상하고 실행해봅시다.
✨실습. 상품 카테고리가 신발, 가전, 식품인 것만 출력해보자.
IN 문법 쓰면 OR 여러개 필요없음
이렇게 OR 3번 쓰면 됩니다.
근데 이것보다 간단한 방법이 있습니다.
컬럼명 IN (값1, 값2 ... ) 쓰면 컬럼명에서 값1, 값2 등을 만족하는 행을 전부 출력해줍니다.
그래서 위 코드는 카테고리가 '신발' or '가전 or '식품' 인 행을 전부 출력해줍니다.
쉽게 말하면 그냥 같은 컬럼에서 OR 연산자가 여러개 필요할 때 IN () 문법을 쓰면 짧아집니다.
(참고)
- OR 여러개를 IN ()으로 축약할 수 있으면 하는게 좋습니다. 그게 처리속도가 대부분 더 빠름
- IN () 쓰면 괄호 안에 SELECT 또 사용할 수 있는데 나중에 알아봅시다. 서브쿼리라고 합니다.
Q1. 오늘 다룬 테이블에서 재고가 20이하인 상품들을 상품명 가나다 순으로 출력해보십시오.
Q2. 가격이 3000원 미만이거나 6000원 초과인 상품들만 출력해봅시다.
Q3. 카테고리가 옷이 아닌 것들 중 가격이 5천원인 상품들만 출력해봅시다.
Q4. 상품명이 셔츠, 반팔티, 운동화가 아닌 상품들만 출력해봅시다.