ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 5.SQL연산자 : IN, BETWEEN A AND B, LIKE, IS NULL, NOT
    Oracle 2023. 7. 31. 14:35

    5.4 다양한 SQL연산자

    5.4.1 IN : 목록 연산자

    select *
    from emp
    where job = 'PRESIDENT' or job = 'ANALYST' or job = 'CLERK';
    select *
    from emp
    where job IN ('PRESIDENT', 'ANALYST', 'CLERK');

    위의 두 코드가 같은 결과를 반환한다.

    활용해보자.

     

    Q. 업무가 'PRESIDENT', 'ANALYST', 'CLERK'인 사원 중 81년도에 입사한 사원 정보를 출력하는 쿼리를 작성하세요.

     

    desc: 테이블의 구조를 보여주는 명령어

    NUMBER(P[, S]) P: 최대 ~38, 전체 숫자의 자릿수, S: 소수점 아래 자릿수
    VARCHAR2(size) 가변 길이 문자 데이터 타입(저장되는 문자열의 실제 크기만큼만 자원 사용), size: 바이트 , 최대 ~8000byte
    DATE: date 타입에서 날짜만 저장하면, 시간값은 자동으로 0시 0분 0초가 됨

     

    5.4.2 BETWEEN A AND B

    A이상 B 이하

    select *
    from emp
    where sal >= 1300 and sal <= 3000;
    select *
    from emp
    where sal between 1300 and 3000;

    select *
    from emp
    where ename between 'C' and 'G';

    위 문제를 between을 쓰면,

     

    5.4.3 LIKE: 검색 연산자

    • _: underscore. 하나의 문자를 대체
      • ex) '_AMES' ⇒ 빈 자리에 어떤 문자가 와도, 뒤의 'AMES'만 동일하면 선택
    • %: 없거나 하나 또는 여러 문자를 대체
      • ex) '%ORACLE%' ⇒ ORACLE의 앞 뒤로 아무 문자도 없어도, 하나의 문자가 있어도, 그 이상의 문자가 있어도 선택
    SELECT *
    FROM emp
    WHERE ename LIKE '_I%';

    SELECT *
    FROM emp
    WHERE sal LIKE '2%';

    ✽ 단, LIKE는 검색 대상을 문자열로 인식한다. 따라서

    • 따옴표를 꼭 써줘야 하며
    • 년도는 SQL 기본 형식(곧, 82=>1982)를 지원하지 않아, 82로 저장된 년도를 1982로 검색할 경우 선택되지 않는다.
    • 날짜와 숫자를 검색할 때는 유의할 것

    ✽ ESCAPE절: 데이터에 '_' 문자나 '%'문자가 포함되어 있다면?

    X_Y문자를 앞부분에 가지고 있는 데이터를 찾으려면 다음의 코드를 쓴다.

    SELECT *
    FROM emp
    WHERE ename LIKE 'X₩_Y' ESCAPE '₩';

     

    5.4.4 IS NULL 연산자: NULL값 비교

    SELECT *
    FROM emp
    WHERE comm = null;

     

    위 코드는 작동하지 않는다.

    SELECT *
    FROM emp
    WHERE comm IS NULL;

    null 값을 조회할 때는 IS NULL 연산자를 사용한다.

     

    5.4.5 NOT 연산자

    NOT IN
    NOT BETWEEN A AND B
    NOT LIKE
    IS NOT NULL

    NOT은 기존 연산자의 의미를 반전 시킨다. 곧,

    조건에 해당하는 데이터를 제외한 나머지 데이터들을 조회한다.

Designed by Tistory.