DQL - 연산자

ㅎㄱㅇ·2024년 1월 22일
0

DB공부

목록 보기
7/14

연산자의 종류

  • 산술 연산자
  • 연결 연산자
  • 논리 연산자
  • 비교 연산자

연결 연산자

연산자 ||

  • 여러 컬럼 값들을 하나의 컬럼처럼 연결할 수 있음
  • 컬럼과 리터럴을 연결할 수 있음

컬럼과 컬럼을 연결한 경우

SELECT EMP_ID || EMP_NAME || SALARY
FROM EMPLOYEE;

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

SELECT EMP_NAME || '의 월급은 ' || SALARY || '원 입니다.' AS "월 급여"
FROM EMPLOYEE;

리터럴

  • 값 자체
  • 임의로 지정한 문자열(' ')
  • 조회된 RESULT SET(결과창)의 모든 행에 반복적으로 출력



논리 연산자

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

AND

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

OR

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

NOT

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



비교 연산자

  • 표현식 사이의 관계를 비교하기 위해 사용
  • 비교 결과는 논리 결과(TRUE/FALSE/NULL)
    (* 비교하는 두 컬럽 값 / 표현식은 동일한 데이터 타입이어야 함)
    = : 같다
    >, < : 크다 / 작다
    >=, <= : 크거나 같다 / 작거나 같다
    <>, !=, ^= : 같지 않다
    BETWEEN AND : 특정 범위에 포함되는지 비교
    LIKE / NOT_LIKE : 문자 패턴 비교
    IS NULL / IS NOT NULL : NULL 여부 비교
    IN / NOT IN : 비교 값 목록에 포함 / 미포함 되는지 여부 비교

BETWEEN AND

비교하려는 값이 지정한 범위에 포함되면 TREU를 리턴하는 연산자
상한값과 하한값의 경계도 포함

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

-- AND 사용
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SALARY >= 3500000 AND SALARY <= 6000000

--BETWEEN 사용
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SALARY BETWEEN 3500000 AND 6000000;

LIKE

  • 비교하려는 값이 지정한 특정 패턴을 만족하면 TRUE를 리턴하는 연산자
  • %_를 와일드카드로 사용
-- ‘전‘씨 성을 가진 직원 이름과 급여 조회
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE EMP_NAME LIKE ‘전%;
-- 핸드폰의 앞 네 자리 중 첫 번호가 7인 직원 이름과 전화번호 조회
SELECT EMP_NAME, PHONE
FROM EMPLOYEE
WHERE PHONE LIKE ‘_ _ _7%;

와일드 카드 문자와 패턴의 특수문자가 동일한 경우

어떤 것을 패턴으로 결정하는지 구분하지 못하기 때문에
데이터로 처리할 와일드 카드 문자 패턴 기호 앞에 임의의 특수문자를 사용하고 ESCAPE OPTION으로 등록하여 처리

-- EMAIL ID 중 ‘_’의 앞이 3자리인 직원 이름, 이메일 조회
SELECT EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMAIL LIKE ‘_ _ _#_%’ ESCAPE ‘#';

NOT LIKE

-- ‘이’씨 성이 아닌 직원 사번, 이름, 이메일 조회
SELECT EMP_ID, EMP_NAME, EMAIL
FROM EMPLOYEE
WHERE EMP_NAME NOT LIKE ‘이%;

IS NULL / NOT NULL

NULL 여부를 비교하는 연산자

- 관리자도 없고 부서 배치도 받지 않은 직원 조회
SELECT EMP_NAME, MANAGER_ID, DEPT_CODE
FROM EMPLOYEE
WHERE MANAGER_ID IS NULL AND DEPT_CODE IS NULL;

IN

비교하려는 값 목록에 일치하는 값이 있으면 TRUE 를 반환하는 연산자

-- D6 부서와 D8 부서원들의 이름, 부서코드, 급여 조회

-- IN사용
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE DEPT_CODE IN (‘D6’, ‘D8’);

--`=`사용
SELECT EMP_NAME, DEPT_CODE, SALARY
FROM EMPLOYEE
WHERE DEPT_CODE = ‘D6’ OR DEPT_CODE = ‘D8’;

연산자 우선순위

  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

0개의 댓글