SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;
-- NEXT_DAY(SYSDATE, '월요일'): 오늘 날짜를 기준으로 다가오는 월요일 날짜는?
-- LAST_DAY(SYSDATE) : 해당 월의 마지막 날짜
SELECT NEXT_DAY(SYSDATE, '월요일')
, LAST_DAY(SYSDATE)
FROM DUAL;
-- 이번 달이 며칠이 남았는지 검색하시오.
-- ALIAS : 오늘 날짜, 이 달 마지막 날짜, 이번 달에 남은 날짜
SELECT SYSDATE AS 오늘날짜
, LAST_DAY(SYSDATE) AS 이달마지막날짜
, LAST_DAY(SYSDATE) - SYSDATE AS 이번달에남은날짜
FROM DUAL;
SELECT ROUND(MONTHS_BETWEEN(SYSDATE, '2021-01-01'),2)
FROM DUAL;
SELECT EXTRACT(YEAR FROM SYSDATE) AS 년도
, EXTRACT(MONTH FROM SYSDATE) AS 월
, EXTRACT(DAY FROM SYSDATE) AS 일
, EXTRACT(HOUR FROM SYSTIMESTAMP) + 9 AS 시간 -- UTC + 9 => 서울시간
, EXTRACT(MINUTE FROM SYSTIMESTAMP) AS 분
, EXTRACT(SECOND FROM SYSTIMESTAMP) AS 초
FROM DUAL;
1. 생일이 3월인 회원을 검색하시오.
- ALIAS : 회원ID(MEM_ID), 회원명(MEM_NAME), 생일(MEM_BIR)
/*
"생일이 3월인 회원"이라는 것은 조건이라는 것임
쿼리에서 조건을 해당되는 절은? WHERE
따라서 생일이 3월인 회원을 검색하려면 해당 조건을 WHERE절에서 처리해줘야함.
*/
SELECT MEM_ID AS 회원명
, MEM_NAME AS 회원명
, MEM_BIR AS 생일
FROM MEMBER
WHERE EXTRACT(MONTH FROM MEM_BIR) = 3; -- EXTRACT는 숫자형을 반환
-- MEM_BIR LIKE '%/03/%'
-- SUBSTR(MEM_BIR,4,2) = '03'
2. 입고상품(BUYPROD) 중에 3월에 입고된 내역을 검색하시오
- ALIAS : 상품코드(BUY_PROD), 입고일자(BUY_DATE), 매입수량(BUY_QTY), 매입단가(BUY_COST)
SELECT BUY_PROD AS 상품코드
, BUY_DATE AS 입고일자
, BUY_QTY AS 매입수량
, BUY_COST AS 매입단가
FROM BUYPROD
-- WHERE EXTRACT(MONTH FROM BUY_DATE) = 3;
-- WHERE SUBSTR(BUY_DATE,4,2) = '03';
WHERE BUY_DATE LIKE '%/03/%';
SELECT '[' || 'Hello' || ']' AS 형변환
, '[' || CAST('Hello' AS CHAR(30)) || ']' AS 형변환
, '[' || CAST('Hello' AS VARCHAR2(30)) || ']' AS 형변환
FROM DUAL;
-- 문자를 날짜형식의 문자로 못바꿈
-- 날짜를 날짜형식의 문자로 바꿀 수 있음
SELECT TO_CHAR(TO_DATE('2008-12-25'), 'YYYY.MM.DD HH24:MI:SS')
FROM DUAL;
3. 상품테이블에서 상품입고일을 '2008-09-28 12:00:00' 형식으로 나오게 검색하시오.
- ALIAS 상품명(PROD_NAME), 상품판매가(PROD_SALE), 입고일(PROD_INSDATE)
SELECT PROD_NAME AS 상품명
, PROD_SALE AS 상품판매가
, TO_CHAR(PROD_INSDATE,'YYYY-MM-DD HH:MI:SS') AS 입고일 -- 날짜형이므로 날짜형식의 문자형으로 변환 가능
FROM PROD;
4. 회원이름(MEM_NAME)과 생일(MEM_BIR)로 다음처럼 출력되게 작성하시오.(MEMBER)
Ex) 김은대님은 1976년 1월 출생이고, 태어난 요일은 목요일
SELECT MEM_NAME || '님은 ' || TO_CHAR(MEM_BIR,'YYYY"년 "MON"이고 태어난 요일은 "DAY') -- MM : 03, MON : 3월
FROM MEMBER;
5. 입고테이블(BUYPROD)을 사용하여 다음과 같이 출력하시오.
Ex) P202000001 상품은 2005년 1월 8일에 18개가 입고됨
SELECT BUY_PROD || ' 상품은 ' || TO_CHAR(BUY_DATE,'YYYY"년 "MON DD"일에 "')|| BUY_QTY || '개가 입고됨'
FROM BUYPROD;
SELECT TO_CHAR(1234.6, 'L9,999.00')
, TO_CHAR(-1234.6, 'L9,999.00MI')
, TO_CHAR(-1234.6, 'L9,999.00PR')
FROM DUAL;
6. 상품 판매가를 다음과 같은 형식으로 출력하시오.
Ex) ₩230,000
ALIAS : 상품ID(PROD_ID), 상품명(PROD_NAME) , 판매가(PROD_SALE)
SELECT PROD_ID AS 상품ID
, PROD_NAME AS 상품명
, TO_CHAR(PROD_SALE, 'L999,999,999PR') AS 판매가
FROM PROD;
SELECT TO_NUMBER('₩1,200','L999,999') + 1
, TO_CHAR(TO_NUMBER('₩1,200','L999,999') + 1 , 'L999,999')
FROM DUAL;
7. 상품 판매가를 다음과 같은 형식으로 출력하시오.회원테이블(MEMBER)에서 이쁜이회원(MEM_NAME = '이쁜이')의 회원ID 2~4 문자열을 숫자형을 치환한 후, 10을 더하여 새로운 회원ID로 조합하시오.
- ALIAS는 회원ID(MEM_ID) , 조합회원ID
SELECT MEM_ID AS 회원ID
, SUBSTR(MEM_ID,1,1) || TRIM(TO_CHAR(TO_NUMBER(SUBSTR(MEM_ID,2)) + 10, '009')) AS 조합회원ID
FROM MEMBER;
[Oracle DB 입문 11] 집계함수 (0) | 2021.03.12 |
---|---|
[Oracle DB 입문 10] SQL 함수 (0) | 2021.03.09 |
[Oracle DB 입문 08] SQL 예제 (0) | 2021.03.05 |
[Oracle DB 입문 07] SQL 예제 (0) | 2021.03.03 |
[Oracle DB 입문 06] SQL (0) | 2021.02.26 |