본문 바로가기
DB/SQL(오라클)

오라클(SQL)연산자 (사칙 연산자, in, or, any, between)

by redbear0077 2021. 3. 12.
반응형

연산자

테이블 다운로드

 

-4칙 연산자(+, -, /, *)
-나머지 값은 MOD()와 REMAINDER()함수로 제공
-관계연산자(>, >=, <, <=, =, !=(<>))
-논리연산자(AND, OR, NOT)
1.기타 연산자
 1)IN 연산자
   -주어진 값 중 어느하나와 일치하면 전체가 참(TRUE)가 되는 연산자
   -RO연산자로 바꾸어 쓸수 있다.

(사용형식)

컬럼명 IN(값1, 값2, ......값N)
    .WHERE 절의 조건 구성에 사용

사용예) 사원테이블에서 부서가 60,40,20번 부서에 속한 사원정보를 조회하시오

ALIAS는 사원번호, 사원명, 부서번호, 입사일이다.

SELECT EMPLOYEE_ID AS 사원번호, 
       EMP_NAME AS 사원명, 
       DEPARTMENT_ID AS 부서번호, 
       HIRE_DATE AS 입사일
  FROM EMPLOYEES
 WHERE DEPARTMENT_ID IN (60,40,20)
 ORDER BY 3;

[OR 연산자 사용] 

SELECT EMPLOYEE_ID AS 사원번호, 
       EMP_NAME AS 사원명, 
       DEPARTMENT_ID AS 부서번호, 
       HIRE_DATE AS 입사일
  FROM EMPLOYEES
 WHERE DEPARTMENT_ID = 60
    OR DEPARTMENT_ID = 40
    OR DEPARTMENT_ID = 20
 ORDER BY 3;

2)ANY(SOME)연산자
    -기능은 IN 연산자와 동일함

(사용형식)

컬럼명 관계연산자 ANY|SOME (값1, 값2....값N)

[ANY 연산자 사용]

SELECT EMPLOYEE_ID AS 사원번호, 
       EMP_NAME AS 사원명, 
       DEPARTMENT_ID AS 부서번호, 
       HIRE_DATE AS 입사일
  FROM EMPLOYEES
WHERE DEPARTMENT_ID = ANY(60,40,20)-- ANY,SUM은 결과가동일하다.
 --WHERE DEPARTMENT_ID = SOME(60,40,20)
 ORDER BY 3;

3) BETWEEN 연산자
    -범위를 지정하여 비교할때 사용
    -AND연산자로 변환 가능

(사용형식)
   

컬럼명 BETWEEN A AND B 
    .컬럼에 저장된 값의 범위가 A~B아이 값이면 참(TRUE)반환

예)매인 테이블(BUYPROD)에서 2005년 2월16일 사이에 입고된 상품정보를 조회하시오
ALIAS는 날짜, 상품코드,수량,단가, 금액이다.

SELECT BUY_DATE AS 날짜,
       BUY_PROD AS 상품코드,
       BUY_QTY AS 수량,
       BUY_COST AS 단가,
       BUY_QTY*BUY_COST AS 금액
  FROM BUYPROD
 WHERE BUY_DATE BETWEEN '20050205' AND '20050216';

문제) 회원테이블에서 40대 여성회원의 보유마일리지를 조회하시오
       ALIAS는 회원번호, 외원명, 나이, 마일리지이다.
       **함수 SUBSTR(문자열컬럼, 시작위치,글자구)->결과는 문자열
       TO_NUMBER(문자열데이터)->'문자열데이터'를 숫자로 변환

SELECT MEM_ID AS 회원번호,
        MEM_NAME AS 회원명, 
        MEM_BIR AS 나이, 
        MEM_MILEAGE AS 마일리지,
        MEM_REGNO2 AS 여자
   FROM MEMBER
  WHERE SUBSTR(MEM_REGNO2,1,1)='2' AND -- '여성회원';
        SUBSTR(MEM_REGNO1,1,2)<=81 AND
        SUBSTR(MEM_REGNO1,1,2)>=72 ;
 
반응형