본문 바로가기
DB

[SQL] SELECT문 명령어 - DISTINCT, WHERE, 연산자

by chan10 2021. 2. 27.

DISTINCT

o  컬럼에 포함된 데이터 중 중복 값을 제외하고 한 번씩만 표시하고자 할 때 사용

o  DISTINCTSELECT문에 한 개만 사용이 가능하다.

SELECT DISTINCT JOB_CODE FROM EMPLOYEE;

SELECT DISTINCT DEPT_CODE, JOB_CODE FROM EMPLOYEE; -- 동시 중복만 제거

SELECT DISTINCT DEPT_CODE, DISTINCT JOB_CODE FROM EMPLOYEE;  --에러

 

WHERE

o 검색할 컬럼의 조건을 설정하여 RESULT SET Row(DATA)값을 필터링하여 조회할 수 있다.

o  필터링을 원하는 경우에만 WHERE를 사용하면 되기에 생략이 가능하다.

o  사용 형식 : SELECT 컬럼명, 컬럼명, ... FROM 테이블명 [WHERE 조건식(==,!=,>,<)]

부서코드가 ‘D9’인 직원의 이름, 부서코드 조회

급여가 4000000보다 많은 직원 이름과 급여 조회

SELECT EMP_NAME, DEPT_CODE

FROM EMPLOYEE

WHERE DEPT_CODE = D9;

SELECT EMP_NAME, SALARY

FROM EMPLOYEE

WHERE SALARY > 4000000;

 

o  AND/OR 사용하여 여러 개 조건 식을 작성할 수 있다.

부서코드가 ‘D6’이고 급여를 2000000보다 많이 받는 직원의 이름, 부서코드, 급여 조회

부서코드가 ‘D6’이거나 급여를 2000000보다 많이 받는 직원의 이름, 부서코드, 급여 조회

SELECT EMP_NAME, DEPT_CODE, SALARY

FROM EMPLOYEE

WHERE DEPT_CODE = D6AND SALARY > 2000000;

SELECT EMP_NAME, DEPT_CODE, SALARY

FROM EMPLOYEE

WHERE DEPT_CODE = D6OR SALARY > 2000000;

 

연결 연산자

o  ||’를 사용하여 여러 컬럼을 하나의 컬럼인 것처럼 연결하거나 컬럼과 리터럴을 연결함

컬럼과 컬럼을 연결한 경우 컬럼과 리터럴을 연결한 경우

SELECT EMP_ID || EMP_NAME || SALARY

FROM EMPLOYEE;

SELECT EMP_NAME || ‘의 월급은 ‘ ||

SALARY || ‘원 입니다.

FROM EMPLOYEE;

 

논리 연산자

o  여러 개의 제한 조건 결과를 하나의 논리 결과로 만들어 줌

연산자

설명

AND

여러 조건이 동시에 TRUE일 경우에만 TRYE값 반환

OR

여러 조건들 중에 어느 하나의 조건만 TURE이면 TRUE값 반환

NOT

조건에 대한 반대 값으로 반환(NULL제외)

 

비교연산자

o  표현식 사이의 관계를 비교하기 위해 사용하고 비교 결과는 논리 결과(TRUE/FALSE/NULL) 중 하나가 됨

o  단 비교하는 두 컬럼 값/표현식은 서로 동일한 데이터 타입이어야 함

연산자

설명

=

같다

>, <

크다 / 작다

>=, <=

크거나 같다 / 작거나 같다

<>, !=, ^=

같지 않다

BETWEEN … AND …

특정 범위에 포함되는지 비교

LIKE / NOT LIKE

문자 패턴 비교

IS NULL / IS NOT NULL

NULL 여부 비교

IN / NOT IN

비교 값 목록에 포함 / 미포함 되는지 여부 비교

 

동등비교 연산자

SELECT * FROM EMPLOYEE WHERE EMP_NAME='송종기';

 

비교 연산자

SELECT * FROM EMPLOYEE WHERE SALARY>2000000;

 

부정 연산자

SELECT * FROM EMPLOYEE WHERE JOB_CODE!='J5';

SELECT * FROM EMPLOYEE WHERE JOB_CODE<>'J5';

SELECT * FROM EMPLOYEE WHERE JOB_CODE^='J5';

논리연산 연결

o  AND, OR, NOT을 사용하여 여러 연산자들을 연결해서 사용할 수 있게 한다.

EMPLOYEE테이블에서 DEPT_CODE D5이면서 SALARYRHK 300백만원 이상인 사원.

급여를 3500000보다 많이 받고 6000000보다 적게 받는 직원 이름과 급여 조회

SELECT *

FROM EMPLOYEE

WHERE DEPT_CODE='D5' AND SALARY>=3000000;

SELECT EMP_NAME, SALARY

FROM EMPLOYEE

WHERE SALARY >= 3500000 AND SALARY <= 6000000;

 

연산자 우선순위

우선순위

연산자

1

산술 연산자

2

연결 연산자

3

비교 연산자

4

IS NULL / IS NOT NULL / LIKE, IN / NOT IN

5

BETWEEN AND / NOT BETWEEN AND

6

논리 연산자 – NOT

7

논리 연산자 – AND

8

논리 연산자 – OR