SQL - WHERE

김규린·2024년 8월 13일
0

Data Base

목록 보기
4/20
  • 쿼리 진행 순서

  1. tbl_menu라는 테이블에서
  2. 조건부와 값이 같을 경우 true로 나오고, 다를 경우 false가 나오는데 y인 값만 출력하도록 되어 있으니 y인 값을 조회해서
  3. select 절에 있는 데이터를 모두 조회할 수 있도록 함

MySQL Ver

-- where절

-- orderable_status = 'N'인 행들 조회하기
-- 주문 불가능한 메뉴 조회(메뉴명, 메뉴코드)
SELECT
menu_name
, menu_code
--, orderable_status
FROM tbl_menu
WHERE orderable_status = 'N';

-- desc를 통한 컬럼명 빠르게 확인
DESC tbl_menu;

-- --------------------------------------------------------------------------------------
-- 1) 10,000원 이상의 메뉴 조회
SELECT * FROM tbl_menu;

SELECT *
FROM tbl_menu
WHERE menu_price >= 10000;

-- 2) 10,000원 미만의 메뉴 조회
SELECT *
FROM tbl_menu
WHERE menu_price < 10000;

-- 3) 10,000원 이상  12,000원 이하  메뉴 조회
SELECT *
FROM tbl_menu

WHERE menu_price >= 10000 
AND menu_price <= 12000;

-- and or 연산자 > 논리 연산자(=참과 거짓만으로 연산하는 것)
-- and > 둘 다 만족, 이면서, 그리고, 동시에
-- or > 둘 중에 아무거나, 또는, 이거나
  1. 비교 연산자
-- -------------------------------------------------------------------------------
-- '기타' 카테고리에 해당하지 않는 메뉴를 조회하시오.

-- 1) '기타' 카테고리의 번호 파악하기
SELECT *
FROM tbl_category
WHERE category_name = '기타'; -- category_code가 '10번'임을 알아냄

-- 2) 해당 번호를 가지지 않는 메뉴 조회
SELECT *
FROM tbl_menu
WHERE category_code != 10;

SELECT *
FROM tbl_menu
WHERE category_code <> 10;

같지 않음 연산자: != or <>
같음 연산자: =

  1. AND 연산자 활용
  • and or 연산자 > 논리 연산자(=참과 거짓만으로 연산하는 것)
  • AND 연산자와 함께 WHERE절 사용
  • 0과 NULL이 아닌 값들일 경우 1이다.
  • 하나라도 0이거나 둘 다 0일 경우 0을 반환한다.(이미 0이면 뒤를 연산하지 않는다.)
  • 0이 아닌 값과 NULL이거나 둘 다 NULL일 경우 NULL을 반환한다.
  • AND 결과 표
-- 3) 10,000원 이상  12,000원 이하  메뉴 조회
SELECT *
FROM tbl_menu

WHERE menu_price >= 10000 
AND menu_price <= 12000;

-- and > 둘 다 만족, 이면서, 그리고, 동시에
  1. OR 연산자 활용
  • OR 연산자와 함께 WHERE절 사용
  • 둘 다 NULL이 아니면서 하나라도 0이 아닌 값이 있을 경우 1을 반환한다.(이미 1이면 뒤를 연산하지 않는다.)
  • 둘 다 0일 경우 0을 반환한다.
  • 1을 제외한 값들에서 하나라도 NULL이거나 둘 다 NULL일 경우 NULL을 반환한 다.
  • OR 결과 표
  • 0이 아닌 값은 TRUE
  • 0인 값은 FALSE
  • NULL 값은 NULL
       SELECT 
       		menu_code
       		, menu_name
       		, menu_price
       		, category_code
       		, orderable_status
       	FROM tbl_menu
       	WHERE menu_price > 5000
       		OR category_code = 10;
      
  1. BETWEEN 연산자 활용
  • BETWEEN 연산자 예제와 함께 WHERE절 사용
-- --------------------------------------------------------------------------------
-- between 연산자 활용하기(feat. 이상 이하만 가능(초과, 미만은 불가능))
-- 가격이 5000원 이상 9000원 이하인 전체 컬럼 조회
SELECT
		*
	FROM tbl_menu
	WHERE menu_price >= 5000
	AND menu_price <= 9000;

SELECT
		*
	FROM tbl_menu
	WHERE menu_price BETWEEN 5000 AND 9000;
  • 반대의 경우
-- 반대의 범위로 했을 경우
SELECT
		*
	FROM tbl_menu
	WHERE menu_price < 5000
	or menu_price > 9000;

-- not의 위치는 컬럼명 앞 뒤로 가능
-- where not menu_price btween 5000 and 9000;
SELECT
		*
	FROM tbl_menu
	WHERE menu_price not BETWEEN 5000 AND 9000;
  1. LIKE 연산자 활용
  • LIKE 연산자와 함께 WHERE절 사용
-- ---------------------------------------------------------------------------
-- like
-- 메뉴 이름에 '밥'이 들어간 메뉴 조회

SELECT
		*
	FROM tbl_menu
	WHERE menu_name LIKE '%밥%';
  • 반대의 표현
-- 메뉴 이름에 '밥'이 안들어간 메뉴 조회
SELECT
		*
	FROM tbl_menu
	WHERE NOT menu_name LIKE '%밥%';
  1. IN 연산자 활용
  • IN 연산자와 함께 WHERE절 사용
-- ------------------------------------------------------------------------------
-- in연산자 

-- or을 활용한 '중식', '커피', '기타' 카테고리의 메뉴 조회하기
SELECT
		*
	FROM tbl_menu
	WHERE category_code = 5
	OR category_code = 8
	OR category_code = 10;
	
-- in 연산자 활용(위에 or을 활용한 카테고리의 메뉴 조회와 같은 결과가 추출됨)
SELECT
		*
	FROM tbl_menu
	WHERE category_code IN (5, 8, 10);
  1. IS NULL 연산자 활용
  • IS NULL 연산자와 함께 WHERE절 사용
-- -------------------------------------------------------------------------------
-- is null 연산자 활용

SELECT * FROM tbl_category;

-- ref_category_code(상위 카테고리 번호)가 없는 카테고리 조회
SELECT
		*
	FROM tbl_category
	WHERE ref_category_code IS NULL;
  • 부정 표현
-- 반대도 해보자.
SELECT
		*
	FROM tbl_category
	WHERE ref_category_code IS not NULL;

OracleDB ver

  1. WHERE 절과 비교 연산자

-- orderable_status = 'N'인 행들 조회하기
-- 주문 불가능한 메뉴 조회(메뉴명, 메뉴코드)
SELECT
    menu_name,
    menu_code
FROM tbl_menu
WHERE orderable_status = 'N';

-- desc를 통한 컬럼명 빠르게 확인
DESC tbl_menu;

-- 1) 10,000원 이상의 메뉴 조회
SELECT *
FROM tbl_menu
WHERE menu_price >= 10000;

-- 2) 10,000원 미만의 메뉴 조회
SELECT *
FROM tbl_menu
WHERE menu_price < 10000;

-- 3) 10,000원 이상 12,000원 이하 메뉴 조회
SELECT *
FROM tbl_menu
WHERE menu_price >= 10000 
AND menu_price <= 12000;
  1. 비교 연산자
profile
나는 할 수 있다...!

0개의 댓글