DBMS/Oracle SQL

DBMS SQL 연산자 BETWEEN, IN, ANY, ALL 등등

따`ddah 2024. 2. 23. 22:59

1. 연산자 (Operator)

- 예시) 데이터를 조회할 때 SALARY에서 1,000원씩 빼서 조회하겠다 할 때 사용

 

  연산자 종류 :       1. 연결 연산자        2. 산술 연산자      3. 관계 연산자      4. SQL 연산자      5. 논리 연산자

 

 

 2. SQL 연산자

- SQL에서만 존재하는 연산자

 

- SQL 연산자 종류

1.  BETWEEN a AND b       2. IN(a,b,c)      3. LIKE _/%    4. IS (NOT) NULL      5. ANY(a,b,c)      6. ALL(a,b,c)

 

1. BETWEEN a AND b
- a 이상 b 이하인 조건
2. IN(a,b,c)
- a 또는 b 또는 c 일때 조건
 3. LIKE
- 문자열 패턴을 검색할 때 연산자
- 문자열이 데이터에 부분일치하는지를 검사한다. 

- %(퍼센트) : 부분일치하는 데이터 검색
D% : D로 시작하는 데이터
%라면% : 앞뒤 무슨 글자이던지 라면이라는 문자가 있는 데이터
%e : e로 끝나는 데이터

- _(언더바) : 언더바 갯수에 따라 몇자리 글자인지를 검색한다. 
_ _ _ _ e : 5자리인데 마지막 글자가 e로 끝나는 데이터 검색
4. IS NULL / IS NOT NULL
- NULL 값을 검사할 때 사용하는 연산자

IS NULL : NULL값이 맞는지 검사할떄 사용
IS NOT NULL : NULL값이 아닌지 검사할때 사용

- NULL이란? 데이터가 없음을 나타내는 값
5. ANY(a,b,c)
- a, b, c중 아무거나 만족하는 조건
6. ALL(a,b,c)
- a, b, c를 전부 만족하는 조건

 

 

 

 

3. 전체 쿼리문

-----------------------------------------------------------------
-- SQL 연산자
-----------------------------------------------------------------


-----------------------------------------------------------------
-- 1. BETWEEN A AND B
-----------------------------------------------------------------
-- EMPLOYEES 테이블에서 SALARY가 10000이상 12000이하인 이름,성,봉급 조회
SELECT
	FIRST_NAME,
	LAST_NAME,
	SALARY
FROM
	EMPLOYEES
WHERE
	SALARY BETWEEN 10000 AND 12000;


-----------------------------------------------------------------
-- 2. IN(A,B,C)
-----------------------------------------------------------------
-- 봉급이 10000 또는 11000 또는 12000인 직원만 조회
SELECT
	FIRST_NAME,
	LAST_NAME,
	SALARY
FROM
	EMPLOYEES
WHERE
	SALARY IN(10000,11000,12000);


-----------------------------------------------------------------
-- 3. LIKE : 문자열 패턴을 검색할때 사용하는 연산자
-----------------------------------------------------------------
-- D% : D로 시작하는 아무거나 다 가져와
-- %e : e로 끝나는 아무거나 다
-- %e% : e가 들어간 아무거나 다 가져와 (자리 상관없이, 대소문자 구분)
SELECT
	FIRST_NAME
FROM
	EMPLOYEES
WHERE
	FIRST_NAME LIKE '%e%';


-- _:자리수
SELECT
	FIRST_NAME
FROM
	EMPLOYEES
WHERE
	FIRST_NAME LIKE '____e';


-----------------------------------------------------------------
-- 4. IS NULL / IS NOT NULL : NULL 값을 검사할 때 사용하는 연산자
-----------------------------------------------------------------
SELECT COMMISSION_PCT
FROM EMPLOYEES
WHERE COMMISSION_PCT IS NULL; 


-- NULL값과 다른 값들을 연산하면 결과는 무조건 NULL
SELECT NULL + 10
FROM EMPLOYEES;


-----------------------------------------------------------------
-- 5. ANY(a,b,c) : a, b, c중 아무거나 만족하는 조건
-----------------------------------------------------------------
SELECT SALARY
FROM EMPLOYEES
WHERE SALARY = ANY(10000,11000,12000)


-----------------------------------------------------------------
-- 6. ALL(a,b,c) : a, b, c 전부 만족하는 조건
-----------------------------------------------------------------
SELECT SALARY
FROM EMPLOYEES
WHERE SALARY = ALL(10000,11000,12000)


-----------------------------------------------------------------
-- [실습]
-----------------------------------------------------------------
-- 1. SALARY가 8000이상에 이름이 D로 시작하는 이름,성, 봉급 조회

SELECT
	FIRST_NAME,
	LAST_NAME,
	SALARY
FROM EMPLOYEES
WHERE 
	FIRST_NAME LIKE 'D%' AND SALARY >= 8000
	

-- 2. 보너스를 받지 않고 이름이 총 5자리수로 e로 끝나는 직원의 이름,성, 보너스 조회
SELECT
	FIRST_NAME,
	LAST_NAME,
	COMMISSION_PCT 
FROM
	EMPLOYEES
WHERE
	COMMISSION_PCT IS NULL AND FIRST_NAME LIKE '____e';

 

728x90