ORACLE SQL

연산자

마이구미2 2021. 2. 25. 09:12

WHERE절

SELECT 컬럼명
FROM 테이블명
WHERE 조건;

 


조건에 사용되는 연산자

 

산술 연산자

+ - * / 

 

비교 연산자

문자도 비교 가능

 

- 대소비교연산자

연산자 TRUE 반환
A > B A 값이 B 값 초과
A >= B A 값이 B 값 이상
A < B A 값이 B 값 미만
A <= B A 값이 B 값 이하

- 등가비교연산자

연산자 TRUE 반환
A = B A 값이 B 값과 같을 경우
A != B A 값이 B 값과 다를 경우
A <> B
A ^= B

 

AND | OR 연산자

조건 여러 개를 연결할 때 사용

WHERE 조건1 
[AND|OR] 조건2 
[AND|OR] 조건3 
...

 

- TRUE, FALSE 항목에 따른 AND | OR 연산자 사용 결과

AND true false   OR true false
true true false true true true
false false false false true false


NOT 연산자

논리 부정 연산자

조건 앞에 NOT을 붙여 사용

 

IN | BETWEEN 연산자

여러 조건을 한 줄로 작성할 때 사용

-- 특정 컬럼(같은 컬럼)에 포함된 데이터를 여러 개 조회
-- OR 연산자
WHERE 컬럼명 = 데이터1
OR 컬럼명 = 데이터2
...
OR 컬럼명 = 데이터N

-- IN 연산자
WHERE 컬럼명 IN(데이터1, 데이터2, ... , 데이터N)

-- IN 연산자 사용 못하는 경우(같은 컬럼이 아님)
WHERE DEPTNO = 30 OR JOB = 'CLERK'


-- 특정 범위 내의 테이터 조회
-- AND 연산자
WHERE 컬럼명 >= A
AND 컬럼명 <= B

-- BETWEEN 연산자
WHERE 컬럼명 BETWEEN A AND B


-- NOT 연산자와 함께 사용할 경우
WHERE 컬럼명 NOT IN(데이터)
WHERE 컬럼명 NOT BETWEEN A AND B

 

LIKE 연산자와 와일드 카드

와일드카드 문자로 일부 문자열이 포함된 데이터 조회

- 와일드카드

   _ : 어떤 값이든 상관없이 한 개의 문자 데이터를 의미

   %: 길이와 상관없이(문자 없는 경우도 포함) 모든 문자 데이터를 의미

-- 'X'가 포함된 데이터 조회
WHERE 컬럼명 LIKE '%X%'

-- 'X'가 2번째 위치에 포함된 데이터 조회
WHERE 컬럼명 LIKE '_X%'

-- 'X'가 3번째 위치에 포함된 데이터 조회
WHERE 컬럼명 LIKE '__X%'

-- 와일드카드 문자(_|%)가 데이터의 일부일 경우
-- '_'가 포함된 데이터 조회
WHERE 컬럼명 LIKE '%\_%' ESCAPE '\'

 

IS NULL 연산자

NULL이란 데이터 값이 완전히 '비어 있는' 상태를 뜻함 (0이 아님)

 

의미 예시
값이 존재하지 않음 통장을 개설한 적 없는 고객의 계좌번호
해당 사항 없음 미혼인 고객의 결혼기념일
노출할 수 없는 값 고객 비밀번호 찾기 같은
열람을 제한해야 하는 특정 개인 정보
확정되지 않은 값 미성년자의 출신 대학
-- 값이 NULL인 데이터 조회
WHERE 컬럼명 IS NULL

-- 값이 NULL이 아닌 데이터 조회
WHERE 컬럼명 IS NOT NULL

 

- TRUE, FALSE, NULL 항목에 따른 AND | OR 연산자 사용 결과

AND true false null   OR true false null
true true false null true true true true
false false false false false true false null
null null false null null true null null

 

집합 연산자 

여러 개의 SELECT문을 통해 조회한 결과를 대상으로 집합 연산 수행

연산자 결과
UNION 여러 SELECT문의 합집합 조회 (중복 제거)
UNION ALL 여러 SELECT문의 합집합 조회 (중복 포함)
INTERSECT 여러 SELECT문의 교집합 조회 (중복 제거)
MINUS 앞의 SELECT문을 기준으로 뒤의 SELECT문에 대한 차집합 조회 (중복 제거)
SELECT ...
[UNION|UNION ALL|INTERSECT|MINUS]
SELECT ...;

집합 연산을 할 때 SELECT문의 컬럼 개수와 타입이 일치해야 함

결과 테이블의 Heading은 앞의 SELECT문에 의해 결정

 

연산자 우선순위



높음










낮음
연산자 설명
*, / 산술 연산자 곱하기, 나누기
+, - 산술 연산자 더하기, 빼기
=, !=, <>, ^=, >, >=, <, <= 대소 비교 연산자
IS (NOT) NULL, (NOT) LIKE, (NOT) IN (그 외) 비교 연산자
BETWEEN A AND B BETWEEN 연산자
NOT 논리 부정 연산자 NOT
AND 논리 연산자 AND
OR 논리 연산자 OR

 

-- AND | OR 연산자 우선순위
WHERE 조건1
OR 조건2
AND 조건3
OR 조건4

-- 잘못된 예상
WHERE (조건1 OR 조건2)
AND (조건3 OR 조건4)

-- 실제 실행
WHERE 조건1
OR (조건2 AND 조건3)
OR 조건4

* 여러 연산자, 조건문을 연결할 때 가독성과 착각 방지를 위해 괄호를 적절히 사용하여 입력하는 것이 좋음

 

'ORACLE SQL' 카테고리의 다른 글

다중행 함수 & 데이터 그룹화  (0) 2021.02.28
단일행 함수  (0) 2021.02.26
SELECT문  (0) 2021.02.24
데이터 형식  (0) 2021.02.24
테이블 & 데이터  (0) 2021.02.24