Infrastructure/Database

    oracle 뷰

    oracle 뷰

    -- 뷰 생성 예시. emp a의 ename과 dept b의 dname의 deptno =20 조건에 맞는 이름을 찾아 뷰로 만들었다 create or replace view name_query as select a.ename, b.dname from emp a, dept b where a.deptno = b.deptno and b.deptno = 20; select * from name_query; -- with cehck option -- view의 조건식을 만족하는 데이터만 intert 또는 update가 가능하도록 하는 옶션 create or replace view Check_Option as select empno, ename, deptno from emp where deptno = 10 with..

    oracle 조인

    oracle 조인

    -- 조인(join) -- 둘 이상의 테이블을 연결하여 데이터를 검색하는 방법 -- 보통 둘이상의 행들의 공통된 값 primary key 및 foreign key 값을 사용하여 조인 -- 그러모르 두 개의 테이블을 select문장 안에서 조인하려면 적어도 하나의 컬럼이 그 두 -- 테이블 사이에서 공유 되어야 한다 -- 조인 종류 -- * equijoin -- * non-equijoin -- * outer join -- * self join -- 조인방법 -- 똑같은 컬럼명이 존재하는 테이블이 있을 경우는 반드시 컬럼명 앞에 테이블명을 붙인다 -- n개의 테이블을 조인하려면 최소한 n-1번의 조인 조건문이 필요하다 -- equi join : 조인조건이 정확히 일치하는 경우에 사용(pk와 fk를 사용하여)..

    oracle 서브쿼리(단일행,다중행,다중열,from절,상관관계,집합)

    oracle 서브쿼리(단일행,다중행,다중열,from절,상관관계,집합)

    -- 서브쿼리 : 다른 하나의 sql 문장의 절에 neseded된 select 문장 -- select, updaate, delete, insert와 같은 dml문과 create table또는 view에서 이용 될 수 있다 -- 알려지지 않은 조건에 근거한 값들을 검색하는 select 문장을 작성하는데 유용하다 -- subquery는 main query가 실행되기 이전에 한번 실행 된다. -- * subquery는 괄호로 묶어야 한다 -- * 두 종류의 비교 연산자들이 subquery에 사용된다 -- * 단일 행 연산자(=,>,>=,=,(select sal from emp where ename = 'SCOTT'); -- 사원테이블에서 사원명, 입사일, 담당업무, 부서코드를 선택하되 'ADAMS'와 같은 업..

    oracle merge, case, nullif, coalesce

    oracle merge, case, nullif, coalesce

    -- merge : 한번에 조건에 따라 insert, update 가능 -- 해당 row가 있으면 update, 업으면 insert 문장이 실행 된다 -- 테스트를 위한 테이블 생성 create table emp_test as select * from emp where deptno = 10; -- 테스트 진행전 확인 select empno, ename, sal from emp_test; -- emp_test 테이블에 데이터가 있으면 급여를 10% 인상하고 없으면 새로 insert merge into emp_test et using emp e on(et.empno = e.empno) when matched then update set et.sal = e.sal * 1.1 when not matched th..

    oracle 테이블의 제약조건

    oracle 테이블의 제약조건

    --not null : 컬럼을 필수 필드화 시킬 때 사용 create table emp(ename varchar2(20) constraint emp_nn_ename not null); * 이런식으로 하면 ename 컬럼에는 꼭 데이터를 입력해야만 한다 여기서 emp_nn_ename은 (테이블이름_제약조건이름_컬럼이름) 형식으로 constraint name을 정의한다 constraint name은 user_constraints 뷰를 통해서 확인 가능하다 -- 제약조건 확인하기 select constraint_name from user_constraints; select * from user_constraints; // 유저가 소유한 모든 제약 사항 확인 select * from user_cons_colum..

    oracle 데이터 타입

    oracle 데이터 타입

    * 문자 데이터 - 문자 데이터는 데이터베이스에 고정길이, 또는 가변 길이 문자열로 저장될 수 있다 - char와 ncahr같은 고정 길이 문자 데이터 유형은 고정 길이까지 공백으로 채워서 저장한다 - nchar는 고정 포(fixed-width), 또는 가변 폭(variable-width) character set의 저장을 가능하게 하는 NLS 데이터 유형 최대 크기는 한 문자를 저장하는데 필요한 바이트 수에 따라 결정되며 한 행 당 2000 바이트가 상한 기본값은 character set에 따라 1문자, 또는 1 바이트 - 가변 길이 문자 데이터 유형은 실제 컬럼 값을 저장하는데 필요한 바이트만큼만을 사용하며 각 행에 따라 그 크기가 다양하다 * 숫자 데이터 - 오라클 데이터베이스에서 숫자는 항상 가변..

    oracle 테이블의 생성

    oracle 테이블의 생성

    ** 테이블 생성시 제한사항과 고려할점 - 테이블 이름과 컬럼은 항상 알파벳 문자로 시작해야 하며 A~Z까지의 문자, 0~9까지의 숫자, 그리고 $, #, _ 를 사용할 수 있다(공백 사용 불가능) - 테이블의 컬럼 이름은 30자를 초과할 수 없고, 예약어를 사용할 수 없다 -오라클 테이블 한 계정안에서 테이블 이름은 다른 테이블 이름과 달리 유사해야 한다 - 한 테이블 안에서 컬럼 이름은 같을 수 없으며, 다른 테이블에서의 컬럼 이름과는 같을 수 있다. - schema : 테이블의 소유자 - table_name : 테이블 이름 - column : 컬럼의 이름 - datatype : 컬럼의 데이터 유형 - tablespace : 테이블이 데이터를 저장 할 테이블 스페이스를 지정 * 테이블 생성시 주의사항..

    oracle 트랜잭션 commit, rollback

    oracle 트랜잭션 commit, rollback

    commit : 변경사항 저장 rollback : 변경사항 취소 1. commit과 rollback의 장점 - 데이터의 일관성을 제공 - 데이터를 영구적으로 변경하기 전에 데이터 변경을 확인 - 관련된 작업을 논리적으로 그룹화 - commit, savepoint, rollback 문자으로 transaction의 논리를 제어 가능 2. commit이나 rollback 이전의 데이터 상태 - 데이터 이전의 상태로 복구 가능 - 현재 사용자는 select 문장으로 dml 작업의 결과를 확인 가능 - 다른 사용자는 select 문장으로 현재 사용자가 사용한 dml 문장의 결과를 확인할 수 없다 - 변경된 행은 lock이 설정되어서 다른 사용자가 변경할 수 없다 3. commit 이후의 상태 - 데이터베이스에 데..