Development Study/Backend

[SQL] 실습 정리 (View)

  • -
728x90

SUBSTR 연습 많이 할 것

신입사원들이 가장 많이 혼동하는 것이 문자를 다루는 함수들에
문자가 아닌 다른 형태를 쓰는 경우가 많다고 한다

특히 분석과 쪽에서는 시계열 자료들을 많이 보려고 하기 때문에
타입을 잘 확인하고 적용해야 한다
EX) 연도별, 일별, 월별 판매금액 등

DATEDIFF(DATE1, DATE2) = DATE2와 DATE1의 날짜 차이를 계산 해준다)
SYSDATE = 시스템상의 날짜를 반환한다

1.REPLACE.1 휴대폰 첫 자리가 000인 경우 010으로 바꿔서 출력하시오

SELECT REPLACE(phone,"000","010")
FROM Customer
RESULT

1.DATE_FORMAT.2 ORDERDATE를 STRING TYPE의 yyyymmdd로 바꿔보기

SELECT DATE_FORMAT(orderdate,'%Y%m%d')
FROM Orders
RESULT

1.SUBSTR.3 1.DATE_FORMAT.2문제에서 SUBSTR을 이용하여 년, 월만 나오게 출력하기

SELECT SUBSTR(DATE_FORMAT(orderdate,'%Y-%m-%d'),1,7)
FROM Orders
RESULT

2.SYSDATE().1 오늘 일자 출력

SELECT SYSDATE()
RESULT

2.DATE_FORMAT().2 오늘 일자의 날짜 부분만 출력

SELECT DATE_FORMAT(SYSDATE(), '%Y%m%d')
RESULT

2.DATE_ADD().3 오늘 일자 기준으로 15일 후 날짜를 출력

SELECT DATE_FORMAT(DATE_ADD(SYSDATE(), INTERVAL 15 DAY), '%Y%m%d') AS LATER15
RESULT

2.DATEDIFF().4 오늘 일자와 ORDERDATE 날짜 차이(일수) 계산

SELECT orderid, DATEDIFF(SYSDATE(), orderdate)
FROM Orders
RESULT

2.ADDDATE().5 ORDERDATE와 ORDERDATE 15일 후 일자 출력

SELECT orderdate, ADDDATE(orderdate, INTERVAL 15 DAY) AS 15DaysLater
FROM Orders
RESULT


3.SET(),@SEQ.1 예제: 행 번호

SET @SEQ:=0;
SELECT (@SEQ:=@SEQ+1), custid, name
FROM Customer
WHERE @SEQ < 2;
RESULT

4.JOIN.2 예제

SELECT A.name, B.bookid, B.saleprice
FROM Customer A, Orders B
WHERE A.custid = B.custid
    AND A.name = 'Park JiSung';
RESULT

4.SCALAR_SUB_QUARY.3 예제이지만 추천은 하지 않는 방식의 JOIN관련 예제

SELECT A.custid,
      (SELECT B.name FROM Customer B
        WHERE A.custid = B.custid),
        A.saleprice
FROM Orders A
RESULT

4.SCALAR_SUB_QUARY.4 위의 예제 말고 추천하는 방식의 JOIN문

SELECT A.custid, B.name, A.saleprice
FROM Orders A, Customer B
WHERE A.custid = B.custid;
RESULT

4.INLINE_VIEW.5 종종 쓰이는 INLINE_VIEW 방식의 SQL문, 코딩테스트에서 쓰면 감점될 수 있다
고객 번호가 2 이하인 고객의 판매금액 출력(고객이름과 판매액)

SELECT A.custid, A.name, B.saleprice
FROM (SELECT custid, name
  FROM Customer
  WHERE custid <= 2) A,
  Orders B
WHERE A.custid = B.custid
# 위 처럼 쓰면 저 자체만으로 TABLE A가 된다
RESULT

4.VIEW.6 종종 쓰이는 VIEW 방식으로, 테이블이 아니라, 항상 join해야 하는 부분의 값을 저장시켜두고 미리 구동시킨 다음 테이블처럼 볼 수 있도록 만들어두는 기능을 가진 SQL문
실질적으로 존재하지는 않지만 종종 사용한다
주문번호, 고객번호, 고객이름, 도서번호, 도서이름, 판매금액
VIEW는 V로 시작하는 이름을 가지게 설정한다
이제 방법을 알았으니 요긴하게 쓰면 된다

CREATE VIEW V_Orders
AS
SELECT A.orderid, A.custid, B.name, A.bookid, C.bookname, A.saleprice
FROM Orders A, Customer B, Book C
WHERE A.custid = B.custid
    AND A.bookid = C.bookid;
RESULT
RESULT_VIEW

728x90
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.