[SQL] Oracle DB 및 SQL, WHERE절과 연산자

업데이트:

개요

png

학습에 활용한 프로그램 버전 및 DB는 아래와 같다.

  • Oracle 11g
  • Toad for Oracle 13.3 trial
  • db : SCOTT

Oracle과 Toad 설치 및 SCOTT계정의 연동은 인터넷에 잘 설명된 블로그가 많으니 참고


조건문을 활용한 데이터 추출

1. WHERE

SELECT [열이름]
	FROM [테이블명]
  	WEHRE 조건식;

DEPTNO가 30인 데이터만 출력

png

2. AND, OR 연산자

ANDOR 연산자는 WHERE절의 조건을 여러개 지정하기 위한 연산자이다.

SELECT [열이름]
	FROM [테이블명]
  	WEHRE 조건식1
    AND(또는 OR) 조건식2;

DEPTNO가 30이고, JOB이 SALESMAN인 경우만 추출

png

AND는 교집합, OR는 합집합

3. 비교연산자

비교연산자도 당연히 조건문으로 활용이 가능하다.

png

문자열에 적용할 경우 알파벳 순으로 적용된다.

png

등가(같은지, 다른지) 비교연산자

등가 의미
A = B A와 B가 같다.
A != B A와 B가 다르다.
A <> B A와 B가 다르다.
A ^= B A와 B가 다르다.

논리 부정 연산자

조건식의 정 반대의 결과를 원할때

...
WHERE NOT 조건식;

4. IN 연산자

IN은 특정 열이 여러 값을 가지는 경우 출력하고 싶을때, OR연산자를 이용하는 대신 한번에 명령을 수행할 수 있다.

SELECT [열이름1], ...
FROM [테이블명]
WHERE [열이름] IN (1, 2, 3, ...);

1.JOB열이 MANAGER, SALESMANE, CLERK 중 하나라면 출력

png

2.JOB열이 MANAGER, SALESMANE, CLERK 에 모두 해당하지 않으면 출력

png

5. BETWEEN A AND B 연산자

위에서 조건식을 사용한 것 처럼 SAL 열이 1000이상~1500이하인 데이터를 조회하고 싶을때, AND를 사용했었다.
이때 BETWEEN연산자를 사용할 수 있다.

SELECT [열이름]
FROM [테이블명]
WHERE 열이름 BETWEEN 최소값 AND 최대값;

png

마찬가지로 논리부정 연산자 NOT을 활용할 수 있다.

6. LIKE연산자와 와일드카드

LIKE와 와일드카드는 문자열이 포함된 데이터를 조회할때 활용된다.

종류 의미
_ 어떤 값이든 상관없이 한 개의 문자 데이터를 의미
% 길이와 상관없이(문자가 없는 경우도 포함) 모든 문자 데이터를 의미

1.ENAME열 값이 대문자 S로 시작하는 데이터 추출

SELECT *
FROM EMP
WHERE ENAME LIKE 'S%';

png

2.ENAME열 값의 두번째 글자가 L인 데이터 추출

SELECT *
FROM EMP
WHERE ENAME LIKE '_L%';

png

3.ENAME열 값의 중간에 AM이 포함되어 있는 데이터 추출

SELECT * 
From EMP
WHERE ENAME LIKE '%AM%';

png

4.와일드카드(_, %등)가 문자열 자체에 포함되어 있을 경우

예를들어 “A_ABCD”라는 문자가 있을때, 탈출코드 \를 활용

SELECT *
FROM [테이블명]
WHERE [열이름] LIKE 'A\_A%' ESCAPE '\';

7. IS NULL 연산자

NULL은 비교연산자로 비교해도 값이 NULL이므로, IS NULL을 사용해야함

SELECT *
FROM EMP
WHERE COMM IS NULL;

png

SELECT *
FROM EMP
WHERE COMM IS NOT NULL;

png

8. 집합연산자 UNION

UNION 연산자는 합집합을 의미하는 연산자로, 두개의 SELECT문의 결과값을 연결할때 사용한다.

주의

  1. SELECT문의 출력 열의 개수가 같아야함
  2. SELECT문의 출력 열의 자료형이 (순서별로)같아야함
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO=10
UNION
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO=20;

png

열개수가 같고 자료형은 같으나, 동일한 열(col)은 아니여도, 결과는 반환된다.

SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO=10
UNION
SELECT SAL, JOB, DEPTNO, SAL
FROM EMP
WHERE DEPTNO=20;

png

오라클DB에서 사용하는 집합연산자 4종류

종류 의미
UNION 중복을 제거한 합집합
UNION ALL 중복 제거 없이 합집합
MINUS 앞의 SELECT문 결과에 대한 다음 결과의 차집합
INTERSECT 결과 값이 같은 것만 출력(교집합)

댓글남기기