생각하는 감쟈
[Oracle] SQL 연산자_01 : 산술 연산자, 비교 연산자 본문
연산자 종류
- 산술연산자 (+,-,/,*)
비교(관계)연산자 (>, <, ==, >=, <=, !=(<>))
논리연산자 (NOT, AND, OR) --연산자들을 연결 할 때
기타연산자 (IN, ANY, SOME, ALL, EXISTS, BETWEEN, LIKE)
WHERE 절
- WHERE절에 사용될 조건문 구성이나 표현식의 조건문에 사용
- FROM - WHERE - SELECT 절 순서로 수행
사용예) 회원테이블에서 마일리지가 3000이상인 회원의 정보를 조회하시오
Alias는 회원번호, 회원명, 직업, 성별,마일리지
단, 성별별로 출력 해라 (ORDER BY 해야함)
(조건 : 마일리지가 3000이상) --성별 테이블은 새로 만들어야 함
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
CASE WHEN SUBSTR (MEM_REGNO2,1,1) IN('2','4') THEN '여성회원'
ELSE '남성회원' END AS 성별,
--MEM_REGNO2(주민번호 뒤에 7자리 테이블 에서 첫번째 숫자 1개를 추출 했을때 2,4이면 여성회원 ELSE 남설회원
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_MILEAGE >=3000
ORDER BY 4;
사용예) 상품테이블에서 매출가격이 50만원 이상인 상품을 조회하시오
Alias는 상품번호, 상품명, 분류코드, 매출가격
단, 분류코드별로 조회하시오.
SELECT PROD_ID AS 상품번호,
PROD_NAME AS 상품명,
PROD_LGU AS 분류코그,
PROD_PRICE AS 매출가격
FROM PROD
WHERE PROD_PRICE>=500000
ORDER BY 3;
1. 산술연산자
(+, -, /, *)
-나머지 연산자는 없음 함수있음 MOD()
- 연산 결과는 수치 데이터
사용예) 이번달 급여를 계산하여 출력하시오
지급액는 기본금(SALARY) + 보너스
보너스는 기본급(SALARY) + (COMMISSION_PCT)의 50%이다
Alias는 사원번호(EMPLOYEE_ID), 사원명(EMP_NAME), 기본금(SALARY),
보너스(BOUNS), 지급액(SALARY_AMT)이다.
SELECT EMPLOYEE_ID AS 사원번호,
EMP_NAME AS 사원명,
SALARY AS 기본금,
--NVL NULL처리 함수/ NULL값을 A로 대치 시키는 NVL(,A)
NVL(COMMISSION_PCT,0) AS 영업실적,
NVL(SALARY*COMMISSION_PCT*0.5,0) AS 보너스,
SALARY + NVL(SALARY*COMMISSION_PCT*0.5,0) AS 지급액 --변수가 없어서 길어짐
--데이터를 입력하지 않으면 상관없이 다 NULL값이 들어감
FROM HR.EMPLOYEES;
2. 관계연산자
(>, <, ==, >=, <=, !=(<>))
- 연산결과는 참(true) 또는 거짓(false)
- 조건문 구성에 사용
- 논리연산자는 하나이상의 조건문을 결합할 때 사용
-----------------------------------------------
입력 출력
-----------------------------------------------
A B AND OR EX-OR
-----------------------------------------------
0 0 0 0 0
0 1 0 1 1
1 0 0 1 1
1 1 1 1 0
-----------------------------------------------
사용예) 매입정보(BUYPROD) 테이블에서 2020년 1월 매입수량이 10개 이상인
정보만 출력하시오.
Alias는 매입일자, 매입상품코드, 수량
SELECT BUY_DATE AS 매입일자,
BUY_PROD AS 매입상품코드,
BUY_QTY AS 수량
FROM BUYPROD
WHERE BUY_DATE >= TO_DATE('20200101') AND BUY_DATE <= TO_DATE('20200131')
AND BUY_QTY>=10;
사용예) 매입정보(BUYPROD) 테이블에서 2020년 1월 매입금액을 계산하시오.
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 TO_DATE('20200101') AND BUY_DATE TO_DATE('20200131');
사용예) 매입정보(BUYPROD) 테이블에서 2020년 1DNJF 매입금액이 100만원 이상인 매입만 조회하시오.
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 TO_DATE('20200101') AND BUY_DATE TO_DATE('20200131')
AND BUY_QTY * BUY_COST>=100000;
사용예)회원테이블에서 직업이 '주부'이면서 마일리지가 2000이상인 회원의
회원번호,회원명,직업,마일리지를 조회하시오.
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_JOB = '주부' AND MEM_MILEAGE >=2000;
사용예)2020년 6월 제품을 구매하지 않은 회원을 조회하시오
AliaS는 회원번호
--제품을 구매하지 않는 : MEM 회원테이블에서 - CART 테이블(장바구니)
--구매 중복 제거
SELECT DISTINCT CART_MEMBER
FROM CART
WHERE CART_NO LIKE '202006%'
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 이름
FROM MEMBER
WHERE MEM_ID NOT IN ( SELECT DISTINCT CART_MEMBER
FROM CART
WHERE CART_NO LIKE '202006%');
사용예)HR계정 사원테이블에서 영업실적이 없는 사원들을 조회하시오
Alias는 사원번호,사원명,부서코드 영업실적 (COMMISSION_PCT)
SELECT EMPLOYEE_ID AS 사원번호,
EMP_NAME AS 사원명,
DEPARTMENT_ID AS 부서코드
FROM HR.EMPLOYEES
WHERE COMMISSION_PCT IS NULL; --영업실적이 없는 사원
--NULL값을 판단할 때는 NULL값은 =으로 판단할 수 없고 IS연산자를 사용해야함
사용예)HR계정 사원테이블에서 소속부서가 없는 사원들을 조회하시오
Alias는 사원번호,사원명,입사일,급여,직무코드
SELECT EMPLOYEE_ID AS 사원번호,
EMP_NAME AS 사원명,
HIRE_DATE AS 입사일,
SALARY AS 급여,
JOB_ID AS 직무코드
FROM HR.EMPLOYEES
WHERE DEPARTMENT_ID IS NULL; --부서코드가 없는