연산자
사칙연산자(+,-,/,*) :
나머지연산자가 오라클에서는 와일드 카드로 쓰여짐. 나머지는 MOD, REMINDER과 같은 함수로 수행
관계연산자(>,<,>=,<=,=,!=(<>)) :
SELECT절에서 별칭은 WHERE절에서 못씀
-- 크다의 반대는 작거나 같다. 작다의 반대는 크거나 같다.
-- 자바는 문자우선 오라클은 숫자우선.
논리연산자(not,and,or)
기타연산자(IN,ANY,SOME,ALL,EXISTS,LIKE,BETWEEN)
-- EXISTS는 뒤에 서브쿼리 반드시 나와야함
-- LIKE는 문자열타입 비교하는 연산자. 날짜 놉
-- BETWEEN 범위를 지정해서 비교할때. EX. BETWEEN 20210401 AND 20210430
문자열 결합 연산자
'||' -- 을 사용하면 문자열이 우선순위되어서 다 문자열타입으로 자동형변환됨
사칙연산자, 관계연산자, 논리연산자
**
사용예) 회원테이블에서 마일리지가 3000이상인 회원들을 조회하시오
조회할 컬럼은 회원번호, 회원명, 주소, 나이, 마일리지다.**
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_ADD1||' '||MEM_ADD2 AS "주 소",
EXTRACT(YEAR FROM SYSDATE) -
EXTRACT(YEAR FROM MEM_BIR) AS 나이,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_MILEAGE>=3000;
-- FROM 키워드가 안보인다는 오류에는 SELECT문 확인.
항상 한컬럼이 끝나면 반드시 그끝은 콤마.
사용예) 상품테이블에서 매입가가 10만원 이상인 상품을 조회하시오
Alias는 상품코드, 상품명, 매입가, 거래처명
SELECT A.PROD_ID AS 상품코드,
A.PROD_NAME AS 상품명,
A.PROD_COST AS 매입가,
B.BUYER_NAME AS 거래처명
-- A대신 PROD, B대신 BUYER써도 무방하나 길어짐.
FROM PROD A, BUYER B -- 테이블조인
WHERE A.PROD_COST >=100000
AND A.PROD_BUYER = B.BUYER_ID;
-- PROD_BUYER를 가지고 거래처 테이블을 찾아서
그 거래처코드에 해당하는 거래처명을 알 수 있음.
사용예) 사원테이블에서 급여가 5000이상 10000이하인 사원을 조회하시오
Alias는 사원번호, 사원명, 입사일, 부서코드, 급여
SELECT EMPLOYEE_ID AS 사원번호,
FIRST_NAME||' '|| LAST_NAME AS 사원명,
HIRE_DATE AS 입사일,
DEPARTMENT_ID AS 부서코드, -- 사원이소속되어있는 부서코드여야 해서
DEPARTMENT 테이블의 부서코드안씀.
-- 사원이소속되어있는 부서코드가 없을때 DEPARTMENT
테이블의 부서코드 JOIN
-- JOBS테이블이 EMPLOYEES테이블의 부모
SALARY AS 급여
FROM HR.EMPLOYEES
WHERE SALARY >=5000 AND SALARY <=10000
ORDER BY 4, 5;
--부서코드 오름차순 정렬. 부서코드 같으면 급여순 내림차 정렬=
DEPARTMENT_ID ASC, SALARY DESC
-- 또는 SALARY BETWEEN 5000 AND 10000;
사용예) 2005년 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 '2005/01/01' AND '2005/01/31'
-- WHERE BUY_DATE >= TO_DATE('20050101')
AND WHERE BUY_DATE <= TO_DATE('20050131')
ORDER BY 1;
사용예) 2005년 1월 매입정보 중 매입수량이 20개 이상인 상품만 조회하시오
Alias는 일자, 상품코드, 매입수량, 매입단가, 금액
SELECT BUY_DATE AS 일자,
BUY_PROD AS 상품코드,
BUY_QTY AS 매입수량,
BUY_COST AS 매입단가,
BUY_QTY * BUY_COST AS 금액
FROM BUYPROD
WHERE BUY_DATE >= TO_DATE('20050101')
AND BUY_DATE <= TO_DATE('20050131')
AND BUY_QTY>=20
ORDER BY 1;
사용예) 회원테이블에서 직업이 주부이면서 마일리지가 3000이상인 회원조회
Alias는 회원번호, 회원명, 직업, 마일리지
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_JOB = '주부' AND MEM_MILEAGE >= 3000;