Operating System

    [ORACLE] 뷰(Simple 뷰, Complex 뷰)

    [ORACLE] 뷰(Simple 뷰, Complex 뷰)

    * 뷰(View) CREATE [ OR REPLACE ] [ FORCE | NOFORCE ] VIEW view name [ alias...] AS sub query [ WITH CHECK OPTION [ CONSTRAINT constraint name ] ] [ WITH READ ONLY [ CONSTRAINT constraint name ] ] * Force / Noforce -> 뷰를 생성하는 대부분의 경우는 베이스 테이블이 존재한다는 가정하에서 이루어진다. 하지만 베이스 테이블이 존재하지 않는 경우에도 뷰를 생성할 수가 있는데 이때는 Force 옵션을 적용할 수 있다. Noforce 옵션의 경우는 뷰를 생성할 때 반드시 베이스 테이블이 존재해야 한 한다는 것을 의미한다. 특별한 설정이 없다면 Nof..

    [ORACLE] 제약 조건 (Constraints)

    [ORACLE] 제약 조건 (Constraints)

    * 관계형 데이터베이스라고 하면 임의의 데이터베이스 내에 존재하는 여러 테이블들이 서로 관계를 가지며 운영된다는 것을 의미한다. "데이터의 무결성을 설정한다"의 의미와 같다. 처음 데이터베이스 설계하는 과정 가운데서 테이블 사이의 관계를 분명하게 설정하고 그에 대한 제약조건들을 사용하여 각각의 테이블에 저장되는 데이터 또는 테이블에 적용하는 것을 말한다. 결국 이러한 제약조건의 사용은 데이터베이스 내에 보다 정확하고 분명한 데이터들을 가질 수 있도록 해주는 기능을 제공한다. 오라클에서 부여해줄 수 있는 제약 조건은 크게 4가지이다. * Not null 제약 조건 * Primary key 와 Foreign key 제약 조건 * Unique 제약 조건 * Check 제약 조건 * Not null 제약 조건 ..

    [ORACLE] 데이터 잠금 (Locking)

    [ORACLE] 데이터 잠금 (Locking)

    * 데이터 잠금은 오라클 데이터베이스를 사용하면서 요구되는 중요한 개념이다. 데이터가 어느 시점에 있어서 동일한 값이 쿼리 되어야 한다는 측면에서 데이터 잠금은 중요한 역할을 한다. 일단 트랜잭션이 시작되면 그 트랜잭션이 커밋 또는 롤백되기 전까지는 그 해당 로우에 잠금이 걸리게 된다. 그러므로 트랜잭션을 수행하고 있는 사용자만이 새롭게 갱신된 또는 변경된 데이터를 볼 수가 있다. 다른 사용자들은 그 해당 로우에 대하여 갱신되기 전 다시 말하자면 해당 로우에 잠금이 걸려있기 때문에 이전 데이터를 쿼리 하게 된다. 이러한 잠금이 요구되는 이유는 여러 명의 사용자들이 동시에 접속해서 작업을 할 수 있다고 가정한다면 어느 시점에서 데이터의 일고 나성이 없어질 수가 있기 때문이다. 이러한 측면에서 데이터 잠금은..

    [ORACLE] 커밋(Commit)과 롤백(Rollback)

    [ORACLE] 커밋(Commit)과 롤백(Rollback)

    * 트랜잭션 -> 마지막으로 실행한 커밋 명령 이후부터 새로운 커밋 명령을 실행하는 시점까지 수행된 DML 명령들을 말한다. 예를 들어 2시간 전에 커밋을 실행하고 나서 3개의 DML을 수행했다고 보자. 그리고 이제 새로운 커밋을 실행하려고 한다면 그 2시간 동안 수행됐던 3개의 DML 명령들이 하나의 트랜잭션이라고 볼 수 있다. 트랜잭션이 어떤 명령이든 하나의 명령 실행을 이야기하는 것으로 오해하는데 하나의 트랜잭션은 하나 또는 여러 개의 DML 명령을 모두 묶어서 의미할 수 있다. 다시 말해 트랜잭션은 커밋과 커밋 사이에 발생한 모든 DML을 의미한다는 것이다. -> DDL 문장 같은 경우 하나하나의 문장이 수행될 때마다 내부적으로 자동 커밋이 발생하므로 하나하나의 문장이 하나의 트랜잭션이라고도 말할..

    [ORACLE] DML (With Check Option)

    [ORACLE] DML (With Check Option)

    * DML 문장을 실행할 때 종종 서브 쿼리를 사용하는데 한 가지 유의할 사항이 있다. 서브 쿼리 내부 Where 절에서 사용한 컬럼 이름은 반드시 서브쿼리 내부의 Select 절에 명시되어야만 한다. With Check Option은 바로 이 부분에 대하여 확인해주는 역할을 한다. 먼저 With Check Option 없이 문장을 사용하겠다. -> 현재 'LEWIS'라는 사원의 정보를 새롭게 추가할 때 부서번호(deptno)가 30이라는 값과 Select 절에 명시한 컬럼 값을 설정하고 있다. 원래의 의도는 부서번호(deptno) 값도 함께 추가하여야 하지만 실제 실행 결과는 다르게 나온다. Select 절에 부서번호(deptno)를 명시하지 않았기 때문에 deptno=30이란 값은 추가되지 못하여 널..

    [ORACLE] 테이블 조인 ( TABLE join )

    [ORACLE] 테이블 조인 ( TABLE join )

    * Cartesian products -> 조인 조건이 설정되어 있지 않은 경우라든지 조인 조건이 유효하지 않은 경우에 오라클에서 내부적으로 처리하는 조인 방식. Cartesian products는 테이블 조인이 사용되지 않는 경우에 실행된다고 생각하면 편하다. 현재 emp 테이블에는 14개의 로우 데이터가 저장되어 있고 dept 테이블에는 4개의 로우 데이터가 저장되어있는 상태이다. Cartesian products 의 결과가 주는 의미는 모든 테이블의 로우 데이터들을 모두 조합시킨 값이기 때문에 사실 매우 약하다. * Equi 조인 -> Equi 조인은 보통 테이블을 조인할 때 사용하게 되는 기본적인 조인 방법이다. Where 조건절에 임의의 컬럼을 지정하는 경우 양쪽의 테이블에 공통으로 존재하는 컬..

    [ORACLE] Date 데이터 타입에 대한 출력 형식

    [ORACLE] Date 데이터 타입에 대한 출력 형식

    ※ Date 데이터 타입에 대한 출력 형식 * YYYY : 1998 * YEAR ( Year ) : NINETEEN EIGHTY NINE ( Nineteen Eighty Nine ) * MM : 12 * MONTH ( Month ) : DECEMBER ( December ) * MON ( Month ) : DEC ( Dec ) * DY ( Dy ) : FRI ( Fri ) * DAY ( Day ) : FRIDAY ( Friday ) * DD ( Dd ) : 24 * AM 또는 PM * A.M 또는 P.M * HH * HH12 : 시간 단위가 1부터 12 사이 * HH24 : 시간 단위가 1부터 24 사이 * MI : 분 단위가 0부터 59 사이 * SS : 초 단위가 0부터 59 사이 * SSSSS : ..

    [ORACLE] 조건부 함수 ( Case, Decode )

    [ORACLE] 조건부 함수 ( Case, Decode )

    * CASE Case 컬럼 when 비교 대상 then 실행 [when 비교 대상 then 실행] ..... else 실행 end -> job 칼럼을 통해서 job이 CLERK인 칼럼을 찾으면 그 로우에 해당하는 임금(sal)에 1.25를 곱한 값이 "updated_sal_info"라는 새로운 칼럼에 출력된다. 두 번째로 MANAGER를 찾고 그 로우에 해당하는 임금(sal) 값에 1.30을 곱한 값을 "updated_sal_info"라는 새로운 칼럼에 출력된다. 세 번째로 SALESMAN를 찾고 그 로우에 해당하는 임금(sal) 값에 1.40을 곱한 값이 "updated_sal_info"라는 새로운 칼럼에 출력된다. 현재 찾고 있는 특정 job 값에 대한 처리는 모두 끝난 상태이다. 하지만 이들 3가지..

    [ORACLE] sys, system 패스워드 변경 방법

    [ORACLE] sys, system 패스워드 변경 방법

    * oracle db 설치 중에 sys, system의 비번을 잊어버렸거나 새로 변경하고 싶을 때 사용 가능 * cmd 명령어 프롬프트 창으로 하는게 편하나 초보자들을 위해 기본적인 방법으로 설명하겠음 * 명령문 작성할 때 alter user 뒤에 패스워드를 바꾸고 싶은 계정 sys 나 system 작성 (나는 sys 계정 변경) * by 뒤에는 자기가 원하는 패스워드 작성 후 세미클론 * 변경 된 sys계정이 로그인이 되는지 확인하는 명령문 * 같은 방법으로 system 계정도 변경

    [ORACLE 12c] CDB와 PDB 동시 생성 (DBCA 사용)

    [ORACLE 12c] CDB와 PDB 동시 생성 (DBCA 사용)

    * CDB와 PDB를 동시에 생성할 때 Advanced mode 옵션을 적용하여 진행 - 전역 데이터베이스 이름 (Global database name) : korea.oracle.com (CDB) - SID : korea (CDB) - PDB 이름 : seoul * 데이터베이스 생성 모드(Creation mode)는 두 가지 옵션 중 하나를 선택할 수 있다. - Creation a database with default cinfiguration : 데이터베이스 생성과정이 내부 기본 옵션들로 설정되어 진행된다. 특히 샘플 스키마 설치가 지원되지 않으며 데이터베이스가 OMF 기반으로 생성되는 등 이후 다양한 구성 확인 시 여러모로 번거로울 듯하여 가급적이면 선택하지 않도록 한다. - Advanced mod..