[SQL] Oracle DB 및 SQL, WHERE절과 연산자
업데이트:
개요
학습에 활용한 프로그램 버전 및 DB는 아래와 같다.
- Oracle 11g
- Toad for Oracle 13.3 trial
- db : SCOTT
Oracle과 Toad 설치 및 SCOTT계정의 연동은 인터넷에 잘 설명된 블로그가 많으니 참고
조건문을 활용한 데이터 추출
1. WHERE
SELECT [열이름]
FROM [테이블명]
WEHRE 조건식;
DEPTNO가 30인 데이터만 출력
2. AND, OR 연산자
AND
나 OR
연산자는 WHERE절의 조건을 여러개 지정하기 위한 연산자이다.
SELECT [열이름]
FROM [테이블명]
WEHRE 조건식1
AND(또는 OR) 조건식2;
DEPTNO가 30이고, JOB이 SALESMAN인 경우만 추출
AND는 교집합, OR는 합집합
3. 비교연산자
비교연산자도 당연히 조건문으로 활용이 가능하다.
문자열에 적용할 경우 알파벳 순으로 적용된다.
등가(같은지, 다른지) 비교연산자
등가 | 의미 |
---|---|
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 중 하나라면 출력
2.JOB열이 MANAGER, SALESMANE, CLERK 에 모두 해당하지 않으면 출력
5. BETWEEN A AND B 연산자
위에서 조건식을 사용한 것 처럼 SAL 열이 1000이상~1500이하인 데이터를 조회하고 싶을때, AND
를 사용했었다.
이때 BETWEEN
연산자를 사용할 수 있다.
SELECT [열이름]
FROM [테이블명]
WHERE 열이름 BETWEEN 최소값 AND 최대값;
마찬가지로 논리부정 연산자
NOT
을 활용할 수 있다.
6. LIKE연산자와 와일드카드
LIKE
와 와일드카드는 문자열이 포함된 데이터를 조회할때 활용된다.
종류 | 의미 |
---|---|
_ | 어떤 값이든 상관없이 한 개의 문자 데이터를 의미 |
% | 길이와 상관없이(문자가 없는 경우도 포함) 모든 문자 데이터를 의미 |
1.ENAME열 값이 대문자 S로 시작하는 데이터 추출
SELECT *
FROM EMP
WHERE ENAME LIKE 'S%';
2.ENAME열 값의 두번째 글자가 L인 데이터 추출
SELECT *
FROM EMP
WHERE ENAME LIKE '_L%';
3.ENAME열 값의 중간에 AM이 포함되어 있는 데이터 추출
SELECT *
From EMP
WHERE ENAME LIKE '%AM%';
4.와일드카드(_
, %
등)가 문자열 자체에 포함되어 있을 경우
예를들어 “A_ABCD”라는 문자가 있을때, 탈출코드
\
를 활용
SELECT *
FROM [테이블명]
WHERE [열이름] LIKE 'A\_A%' ESCAPE '\';
7. IS NULL 연산자
NULL은 비교연산자로 비교해도 값이 NULL이므로, IS NULL을 사용해야함
SELECT *
FROM EMP
WHERE COMM IS NULL;
SELECT *
FROM EMP
WHERE COMM IS NOT NULL;
8. 집합연산자 UNION
UNION 연산자는 합집합을 의미하는 연산자로, 두개의 SELECT문의 결과값을 연결할때 사용한다.
주의
- SELECT문의 출력 열의 개수가 같아야함
- SELECT문의 출력 열의 자료형이 (순서별로)같아야함
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO=10
UNION
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO=20;
열개수가 같고 자료형은 같으나, 동일한 열(col)은 아니여도, 결과는 반환된다.
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO=10
UNION
SELECT SAL, JOB, DEPTNO, SAL
FROM EMP
WHERE DEPTNO=20;
오라클DB에서 사용하는 집합연산자 4종류
종류 | 의미 |
---|---|
UNION | 중복을 제거한 합집합 |
UNION ALL | 중복 제거 없이 합집합 |
MINUS | 앞의 SELECT문 결과에 대한 다음 결과의 차집합 |
INTERSECT | 결과 값이 같은 것만 출력(교집합) |
댓글남기기