Database - Oracle DB/2주차(Database - Oracle DB) 12

[SQL] DB 스터디 - 17

FLASHBACK 메모리 - 사람 살리는 메모리 1. FLASHBACK 메모리- 사용자 실수에 의한 데이터 수정 시, 백업 없이 복구할 수 있음- FLASHBACK메모리는 Undo데이터를 기반으로 수정되는 정보를 저장하고 있음 2. FLASHBACK QUERY : 테이블이 특정 시점에 있는 정보들을 가져오는 작업- 삭제된 내용을 보고 실수한 데이터를 수정할 수 있음예)->-- 삭재된 시점의 번호 - 1 : 삭제 직전의 정보SELECT *FROM empl AS OF SCN 719742;-- empl 이라는 테이블을 719742의 시점의 정보로 되돌리는 작업 3. FLASHBACK VERSION QUERY : 테이블이 수정되는 시점들을 확인할 수 있는 작업- VERSIONS_STARTTIME : 테이블의 시..

[SQL] DB 스터디 - 16

WITH절 1. WITH절 이란- Oracle DB 10g부터 지원되는 SQL질의문- 하나의 쿼리 내에서 반복되는 쿼리 집합을 미리 정의하여 임시 테이블에 저장된 데이터로 사용- 문장을 작성 할 때 동일한 문장이 계속 사용되는 경우에 사용- SELECT 명령문보다 먼저 시행 됨, 별칭이 필요 함- WITH절에 있는 SELECT문에서 나온 결과는 임시 테이블에 저장되어 있음- 임시 테이블이 만들어 지기 때문에 디스크 내에 저장공간을 차지 하고 있음- JOIN에서는 잘 사용되지 않음- 행의 개수를 줄일 때 사용예)->-- 부서별 급여의 합을 계산 후 평균을 계산할 때WITH sum_sal AS (SELECT deptno, SUM(sal) AS SUMFROM empGROUP BY deptno )SELECT *..

[SQL] Advanced SQL - TOP-n 질의 활용

Advanced SQL - TOP-n 질의 활용 1. emp 테이블에서, 급여(sal)를 가장 많이 받는 3명을 검색 하시오. (ROWNUM 활용) 해답 SQL문 -- ROWNUM : 행 번호를 컬럼으로 만들어서 붙혀줌-- 처음 3개의 행만 출력-- Subquery로 급여를 기준으로 먼저 정렬 시킨 뒤 3개의 행만 출력SELECT E.*FROM (SELECT * FROM emp ORDER BY sal DESC) EWHERE ROWNUM RANK() : 중복된 값이 있다면 동일한 RANK를 부여, 그 다음 번호는 동일한 수 만큼 더한 번호부터 부여 -> DENSE_RAN() : 중복된 RANK가 있어도 그 다음 번호로 추가- 위 3가지 함수들은 OVER() 절과 함께 사용 해야 함*/SELECT empno..

[SQL] DB 스터디 - 15

다른 시간대에서 데이터 관리 1. TIME_ZONE 세션 파라미터- 다음과 같이 TIME_ZONE을 설정할 수 있음-> 절대 오프셋-> 데이터베이스 시간대-> OS 로컬 시간대-> 명명된 지역- OS차원에서 관리되는 시간 정보를 가져올 수 있음- 해당 DB에 접속하는 수 많은 사용자의 시간대는 다를 수 있음- 시간대는 사용자가 임의적으로 수정할 수 있음예)->-- 절대 오프셋ALTER SESSION SET TIME_ZONE = '-05:00'; -- 데이터베이스 시간대ALTER SESSION SET TIME_ZONE = dbtimezone; -- OS 로컬 시간대ALTER SESSION SET TIME_ZONE = local; -- 지정된 지역의 시간대ALTER SESSION SET TIME_ZONE =..

[SQL] DB 스터디 - 14

대형 데이터 집합 조작 ※ 대부분 DML명령어 1. Subquery를 사용하여 데이터 조작- DML문의 Subquery를 사용하여 다음의 작업을 수행할 수 있음-> 인라인 뷰에서 데이터 검색-> 테이블 간에 데이터 복사-> 다른 테이블의 값을 기반으로 테이블의 데이터 갱신-> 다른 테이블의 행을 기반으로 테이블에서 행 삭제예)->-- departments 테이블과 JOIN-- FROM절에 Subquery 사용SELECT department_name, cityFROM departmentsNATURAL JOIN (SELECT l.location_id, l.city, l.country_idFROM loc l JOIN countries cON ( l.country_id = c.country_id )JOIN re..

[SQL] DB 스터디 - 13

데이터 딕셔너리 뷰를 사용하여 객체 관리 1. 데이터 딕셔너리- 데이터 베이스에 저장되는 데이터는 유저 데이터와 딕셔너리 데이터 2 종류가 있음-> 유저 데이터 : 테이블로 구성되고, 저장 공간을 차지하고 있음. 사용자가 관리 하지 않음-> 딕셔너리 데이터 : DB를 운영 시키기 위해서 내부 적으로 관리되는 데이터(메타 데이터) 2. 데이터 딕셔너리 뷰- 접두어에 따라서 각 뷰는 다른 목적으로 사용 됨- USER_ : 유저의 뷰(유저의 스키마에 있는 내용, 유저가 소유한 내용)- ALL_ : 확장된 유저의 뷰(유저가 접근할 수 있는 내용)- DBA_ : 데이터베이스 관리자의 뷰(모든 사람의 스키마에 있는 내용)- V$(퍼포먼스 뷰) : 성능 관련 데이터예)->-- 접근 가능한 딕셔너리 뷰 확인SELECT..

[SQL] DB 스터디 - 12

스키마 객체 관리 1. 제약 조건 추가- ALTER TABLE문-> 새로운 컬럼 추가, 수정, 삭제 가능-> 추가하는 컬럼은 가장 마지막에 추가 됨- 추가 : ALTER TABLE table ADD (new_column datatype [, ...])- 수정 : ALTER TABLE table MODIFY column datatype [DEFAULT value]-> 기존에 있던 값에 영향을 미치지 않는 선에서만 수정 가능- 삭제 : ALTER TABLE table DROP COLUMN column;-> 테이블의 데이터가 많은 경우 해당 작업은 시간이 걸리는 작업임-> ALTER TABLE table SET UNUSED (column); -> ALTER TABLE table SET UNUSED COLUMN..

[SQL] DB 스터디 - 11

유저 액세스 제어 ※전제 예시DBA(DB관리자) : admin - adminDEV(개발자) : jiha - pwdUSER(사용자) : kjh - pwd- DBA-> DEPT와 EMP를 CREATE TABLE-> DBA는 DEPT와 EMP를 GRANT- DEV-> DEV는 조회를 해야 함 DBA.EMP-> CREATE SYNONYM EMP FOR DBA.EMP- USER-> SELECT * ... 1. 사용자 생성과 권한 부여- 권한-> 시스템 권한 : 데이터베이스 내에서 특정 작업 수행--> 사용자 생성 및 제거--> 테이블을 만들 수 있음(소유권은 테이블을 만든 사용자에게 있음)--> 테이블 제거 및 백업-> 스키마 : 테이블, 뷰 및 시퀀스와 같은 객체들의 모음- CREATE USER admin ID..

[SQL] DB 스터디 - 10

객체(VIEW, SEQUENCE, SYNONYM, INDEX) 1. VIEW(뷰)- CREATE VIEW view_name AS SELECT 명령문- SQL의 SELECT명령문은 다른 SQL명령문의 Subquery로 사용 되기도 함-> 일반 파일의 바로가기 기능과 같음- 테이블은 데이터를 실제로 가지고 있는 객체 임- VIEW는 SELECT명령문에 VIEW를 붙혀서 보는 것- 특정 부분만 한정해서 결과를 볼 수 있도록 만드는 것을 VIEW라고 함-> 테이블 복사와 비슷 함-> 테이블 복사와 다른 점은 VIEW를 만들 때 사용한 SELECT명령문을 가지고 있음-> 따라서 원본 데이터를 수정 시킬 수 있게 됨-> VIEW를 업데이트 시키는 것을 다르게 보면 기존 테이블 업데이트에 Subquery를 넣어서 실..

[SQL] DB 스터디 - 09

제약 조건 1. 제약 조건 포함- 제약 조건은 테이블 레벨에서 규칙을 강제 적용 시킴- 제약 조건은 테이블에 종속 관계가 있는 경우 삭제를 방지- 잘못된 입력을 방지- 유효한 제약 조건의 유형-> NOT NULL : NULL을 허용하지 않음-> UNIQUE : 들어오는 값이 중복만 이루어지지 않으면 됨, NULL은 들어올 수 있음-> PRIMARY KEY : 기본키, 동일한 값이 있을 수 없음(NOT NULL + UNIQUE)-> FOREIGN KEY : 다른 테이블 혹은 자신의 테이블의 값을 참조할 수 있음-> CHECK : 조건 식, 조건에 위배되지 않는 값만 들어올 수 있음- 테이블을 만들 때 정의할 수 있음- 테이블을 만들고 난 뒤 추가할 수 있음 2. 제약 조건 지침- 사용자가 제약 조건의 이름..