SQL
-
[오라클] ORACLE VIEW(뷰) 사용법 및 예제SQL 2019. 10. 13. 20:36
1. VIEW 란 무엇인가? - 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블이다. - 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다. - 뷰는 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용된다. - 뷰는 조인문의 사용 최소화로 사용상의 편의성을 최대화 한다. ※ 뷰테이블이란 표현은 잘못된 표현 X 뷰쿼리가 맞는 표현 O 2. 뷰(View)의 특징 - 뷰는 기본테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다. - 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다. - 데이터의 논리적 독립성을 ..
-
[오라클] WITH문 사용법 및 예제SQL 2019. 10. 6. 19:07
WITH절은 서브쿼리가 여러 번 다시 사용될 때 편리하게 사용 (성능면에서도 좋음) FROM에서 어떠한 조건을 가진 테이블을 불러올 때, 그 조건을 가진 테이블 자체에 이름을 붙여서, 별도의 테이블로 인식하게 한다. WITH는 오라클9이상 지원 [장점] 같은 서브쿼리가 여러 번 사용된다면, WITH구문을 사용하는 것이 가독성이 좋다. WITH구문이 여러 번 사용될 때 성능적으로도 좋음 [단점] SELECT를 사용할 때는 보기 편한 장점이 있지만 INSERT나 UPDATE, DELETE 처럼 직접 데이터에 변경이 있는 구문에 WITH구문을 '사용할 수는 있지만' WITH 구문을 통째로 넣어야하기 때문에 비효율적이다. (WITH를 사용하는 의미가 없다.) 만약 직접 데이터의 변경이 있을 것 같을때는 사용하지..
-
오라클 UNION, INTERSECT, MINUSSQL 2019. 9. 29. 18:02
1. UNION( 중복 제거 합집합 ), UNION ALL ( 중복 포함 합집합 ) UNION은 합집합을 의미 한다. 2개 이상의 테이블 조회 결과중 중복을 제외 하고 모두 출력 된다. 예제를 통해 이해를 돕도록 하겠다. SELECT CLASS FROM SCHOOL_CLASS WHERE CREDIT > 10; [결과] A B SELECT CLASS FROM SCHOOL_CLASS WHERE CREDIT 10 UNION SELECT CLASS FROM SCHOOL_CL..
-
오라클 LOOP사용, 테이블에 테스트 데이터 넣기SQL 2019. 4. 12. 17:01
1. 테이블에 테스트 데이터 500건 인서트 하기 DECLARE v_cnt NUMBER := 0; --초기값 BEGIN LOOP -- 반복문 선언 EXIT WHEN v_cnt > 500; -- 조건v_cnt가 501되면 loop종료, 이 조건은 인서트문 아래에 선언해도 상관없다. v_cnt := v_cnt+1; -- 증가치 1씩 증가, 이 조건은 인서트문 아래에 선언해도 상관없다. INSERT INTO REST_BBS( REST_BBS_IDX , TITLE , CONTENTS , CRT_DTM , UPD_DTM , MEMBER_IDX )VALUES( REST_SEQ.nextval , '제목'||to_char(v_cnt) , '내용'||to_char(v_cnt) , sysdate , sysdate , '1..
-
(DATABASE) 날짜추가 함수 ( 오라클 / MSSQL / Mysql )SQL 2019. 4. 8. 14:50
일간 SYSDATE + 1 주간 SYSDATE + 7 월간 ADD_MONTHS(SYSDATE, 1) 년간 ADD_MONTHS(SYSDATE, 12) 일간 DATEADD( DAY , 1 , GETDATE()) 주간 DATEADD( DAY , 7 , GETDATE()) 월간 DATEADD( MONTH , 1 , GETDATE()) 연간 DATEADD( YEAR , 1 , GETDATE()) 일간 DATE_ADD(now(), INTERVAL 1 DAY) 주간 DATE_ADD(now(), INTERVAL 1 WEEK) 월간 DATE_ADD(now(), INTERVAL 1 MONTH) 년간 DATE_ADD(now(), INTERVAL 1 YEAR) 날짜를 현재 날짜에서 더해주는 쿼리.
-
[오라클] 게시판 이전페이지, 다음페이지값 얻기 (LEAD, LAG)SQL 2017. 10. 29. 14:58
오라클에서 LEAD , LAG 함수를 이용하면 이전,다음 SEQ값을 구할 수 있다. SELECT SEQ ,LEAD(SEQ컬럼,1) OVER(ORDER BY SEQ컬럼) AS NEXT ,LAG(SEQ컬럼,1) OVER(ORDER BY SEQ컬럼) AS PREV FROM BBS_TABLE 결과SEQ NEXT PREV1 2 null2 3 13 null 2 조건이 들어가게 되면 LEAD,LAG 함수를 FROM 안에 쓰고 AS 명을 최상단 SELECT문에 지정해줘야하는 불편함이 있다.쿼리가 길어져도 FROM절안에 넣거나 LEAD,LAG 각각 서브쿼리로 빼면 될 것 같다. SELECT NEXT, PREVFROM( SELECT BBS_SEQ, LEAD(BBS_SEQ,1) OVER (ORDER BY BBS_SEQ) A..
-
[오라클] RANK OVER PARTITION BYSQL 2017. 7. 23. 16:35
조회된 로우(행)들의 순위를 정할때 쓰는 함수 아래와 같은 테이블이 있을때 가정하고 STUDENT 테이블 (이름) (반) (점수) NAME | CLASS | SCORE ---------------------------- TTT | A | 90 AAA | A | 80 BBB | B | 100 CCC | A | 10 DDD | B | 40 EEE | B | 60 FFF | A | 20 select NAME, SCORE, rank() over(partition by CLASS order by SCORE desc) RANK from STUDENT 사용방법은 partition by CLASS를 쓰면 학급별로 순위를 만들고 order by SCORE 점수의 desc로 정렬해서 순위를 매긴다 당연히 partition..