DATABASE6

다원·2022년 12월 17일
0

DATABASE

목록 보기
7/13

group by 확장


-> group by 뒤에 그룹화할 조건 연결
group by를 확장해서 추가적인 작업을 할 수 있음, gruop by rollup, group by cube 함수를 사용 할 수 있음

  • group by rollup: 그룹화 할 조건이 있으면 우측으로 부터 하나씩 제외해 나아가면서 결과를 반환하는 기능

    -> 각각 그룹화 하여 세분화해서 보임을 확인할 수 있음
    괄호로 묶인 컬럼은 하나로,
  • group by cube : 3차원적인 분석을 가능하게 해주는 기능, rollup과 달리 groupby 절에 명시한 모든 컬럼에 대해 소그룹 정렬

:

계층적 질의

데이터가 포함하고 있는 계층적 관련성을 이요해서 계층적으로 데이터 상호 관계 표시
레벨로 표시해서 나타낼 수 있고 쿼리 문장
start with 시작점 connect by 논리식

OLTP(On-Line Transcation Processing)

온라인 상에서 Transaction 위주의 작업을 수행하는 시스템
Transaction 으로 발생한 많은 데이터들로부터 통계목적의 정보를 추출하기 위해서 사용

Transaction

: 하나의 연관되어 완성되는 작업 단위
프로세싱 끝에서 commit or rollback
=> DML이 정상적으로 실행되어도 처리 트랜잭션은 내부적으로 진행 중
완전히 DML 과정을 종료 시킬 경우 commit(or /) 해서 프로세스를 완료하거나 rollback 하여 프로세스를 취소 시킴

: 위와 같이 트랜잭션이 종료되지 않음을 확인할 수 있음


=> commit 을 실행 할 경우 트랜잭션이 종료되어있기에 외부에서도 확인이 가능

rollback



: 트랜잭션 commit 전에 rollback 처리 할 경우 해당 트랜잭션은 종료되어 레코드가 검색되지 않음

rownum

오라클은 테이블은 입력된 순서대로 rownumber를 부여함
rownum은 백업에 사용 할 수 있음

LOCK

LOCK는 트랜잭션과 연관, 사용자가 테이블 변경등의 작업을 수행한 뒤 commit 해당 작업을 완료하지 않으면, 다른 사용자가 똑같은 테이블의 동일한 항목에 대해서 쿼리나 변경 드의 작업을 시도 하면, 이전 사용자의 작업이 마무리 되지 않기에 이후 사용자의 작업이 수행되지 않아 TABLE LOCK 발생
=> 즉 사용중인 사용자가 commit 하기 전에 다른 사용자가 동일 프로세스를 사용할 수 없음

cmd에서 실행한 update 후 commit을 하지않아 웹 사이트에서 실행되고 있지 않음

커밋이 완료 된 이후 실행

=> 동시 작업이 된 것이 아니라 앞에 실행된 값에 대해 update 됨을 확인 할 수 있음

View

가상 테이블로써 데이터베이스에 저장해두고 일반 테이블처럼 사용 할 수 있음
select구문의 from 절에서 일반 테이블처럼 view테이블 지정

자주 사용하는 쿼리가 여러 테이블을 조인해서 이룰 때
필요한 항목들만 테이블에서 추출하여 JOIN 한 뒤 뷰테이블로 저장하여, 일반 테이블 처럼 사용 => 가상 테이블

명령어와 스크립트로 생성할 수 있음 JOIN 하는 과정을 스크립트를 만들어 두거나 STORED PROCEDURE 사용해서 서버에 저장되두고 사용 가능

스크립트는 파일 시스템에 저장되지만 SORED PROCEDURE 데이터 베이스에 저장되어 관리되므로, 최초로 COMPILE 한 이후로 수정해서 실행하면 됨

View 제한된 정보로 새로은 테이블을 생성했기에 내부의 달느 항목들이 보이지 않게 되모르 보안적으로 좋으며 관리자 권한 위임 등에서 부담이 없음

  • 주의점

    1. 쿼리 시 맨 끝에 where read only = 읽기 전용 뷰
    2. View table 에서 데이터 변경
      • 하나의 테이블에서 필요한 항목들만 추출한 단순 뷰-> insert, update, delete가 자유 (not null 컬럼 주의)
      • 복합 뷰의 경우 함수 등을 사용하기에 불가능
    3. 뷰 가상 테이블에서 데이터를 변경하면, 뷰가 참조하고 있는 원본 테이블에서도 데이터가 변경됨
    4. view로 생성한 테이블_명을 변경 할 수 없음
  • 뷰 생성

  • 뷰 확인

    text는 어떠한 명령어로 view를 생성했는지를 확인 할 수 있음

  • 기존의 view를 이용하여 새로운 view 생성 가능
    -> 일반 테이블처럼 select 문을 이용하고 찾고자 하는 데이터만 생성 가능

  • 뷰 테이블에서 데이터 변경해도 원본테이블에서도 변경 됨!
    엮으로 원본 테이블에서 변경해도 뷰테이블에 적용됨을 확인 할 수 있음

  • 스크립트를 이용한 뷰
    메모장에 .sql 확장자로 스크립트를 만들어서
    REM NAME : empINFO.sql //REM은 주석
    {} SELECT문 등의 SQL문 작성
    where employee_id = &employee_id; : 입력 값

profile
공부일지,

0개의 댓글