📃 요약
전세계 기업시장에서 굉장히 활용 많이 하는 관계형 DB 로 오라클이 있음.
상용 가격은 굉장히 비싸고, 유지보수 비용도 굉장히 높은것으로 알려져 있음.
마이크로서비스가 활성화 되면서 예전과 달리 비싼 비용의 오라클보다 무료 DB 로 전환하는 사례도 나타나고 있음
주로 서비스업체 중심으로 Mysql / Maria DB 가 많이 활용되고 SI 프로젝트는 아직도 전통의 강자 오라클이 많이 사용되고 있음
요소 기술 :
– Basic : SQL
📃 기술 구현
스펙 :
- SQL Developer - Oracle SQL
📃 시퀀스 기초
- 호출(실행)할때마다 자동적으로 숫자를 증가시키는 것(객체) - 기본키 용도로 사용(중복 없음 , null 없음) - 채번 : 자동적으로 1씩 증가시키는 값(1 ~ n : 시퀀스대상)
1. 시퀀스
1) 시퀀스 생성 :
사용법) CREATE SEQUENCE 시퀀스명 INCREMENT BY 증가값 START WITH 시작값 MINVALUE 최소값 MAXVALUE 최대값 예 : CREATE SEQUENCE SAMPLE_SEQ INCREMENT BY 10 START WITH 1;
2) 시퀀스명.NEXTVAL :
시퀀스가 증가함
사용법 : SELECT SAMPLE_SEQ.NEXTVAL FROM DUAL; 예 : SELECT SAMPLE_SEQ.NEXTVAL FROM DUAL;
3) 현재 증가된 시퀀스의 값을 확인
최초 1번은 시퀀스명.NEXTVAL 로 실행후 확인 가능
사용법) 시퀀스명.CURRVAL SELECT SAMPLE_SEQ.CURRVAL FROM DUAL;
4) 시퀀스 INSERT 시 활용
-- 시퀀스 생성 CREATE SEQUENCE SAMPLE_SEQ INCREMENT BY 10 START WITH 1; -- 생성(10씩 증가) -- INSERT 문 정의 후 4번 실행 INSERT INTO DEPT_TEMP VALUES(SAMPLE_SEQ.NEXTVAL, 'ACCOUNTING','NEW YORK');
5) 시퀀스 삭제
사용법) DROP SEQUENCE 시퀀스명 예 : DROP SEQUENCE SAMPLE_SEQ;
📃 인덱스(INDEX) 기초
- 컬럼에 인덱스를 지정하여 사용함 - 조회속도 향상을 위해 조건에 해당하는 컬럼에 인덱스를 생성함(지정함) - 기본키(PK) : 중복방지 + NULL값방지 + 자동인덱스생성
1) 인덱스 생성
사용법) CREATE INDEX 인덱스이름 ON 테이블명(컬럼명); 예 : CREATE INDEX IX_EMPLOYEE_ENAME ON EMPLOYEE(ENAME);
2) 인덱스 삭제
사용법) DROP INDEX 인덱스명; 예 : DROP INDEX IX_EMPLOYEE_ENAME;
3) 결합 인덱스 생성
사용법) CREATE INDEX 인덱스명 ON 테이블명(컬럼명, 컬럼명2,...); 예 : CREATE INDEX IX_DEPT_COM ON DEPARTMENT(DNAME, LOC);
4) 함수 인덱스 : 함수에 인덱스 걸기
-- 함수인덱스(수식인덱스) CREATE INDEX IX_EMP_ANNSAL ON EMPLOYEE(SALARY * 12);
📃 유저만들기(계정생성) ,권한주기
- 컬럼에 인덱스를 지정하여 사용함 - 조회속도 향상을 위해 조건에 해당하는 컬럼에 인덱스를 생성함(지정함) - 기본키(PK) : 중복방지 + NULL값방지 + 자동인덱스생성
1) 유저 생성
사용법 : CREATE USER 계정명 IDENTIFIED BY 암호; 예 : CREATE USER USERTEST01 IDENTIFIED BY pass1;
2) 유저에 권한 주기
사용법) GRANT 권한명 TO 유저명; 예 : -- 사용법) GRANT 권한명 TO 유저명; GRANT CREATE SESSION TO USERTEST01; -- 테이블 생성 권한 주기 GRANT CREATE TABLE TO USERTEST01; -- 공간에 대한 권한 주기(무한) : 테이블(논리공간) -> 물리공간 배정(할당) GRANT UNLIMITED TABLESPACE TO USERTEST01;
3) 유저에 롤 주기
- 롤 : 권한을 모아놓은 집합 - 접속 권한들의 모임 == CONNECT 롤 - 테이블,인덱스,함수등을 사용하는 권한 모임 == RESOURCE 롤
사용법) GRANT 권한명 TO 유저명; 예 : GRANT CONNECT, RESOURCE, CREATE VIEW TO USERTEST01;
3) 유저 삭제(DROP ~)
사용법) DROP USER 유저명; 예 : DROP USER USERTEST01;
4) 동의어(SYNONYM) 생성
- 동의어 : 다른 데이터베이스나 다른 계정의 테이블,인덱스 등에 별명을 붙이는것
사용법) CREATE SYNONYM 복사본명 FOR 원본명; 예 : CREATE SYNONYM SAMPLETBL FOR SYSTEM.SAMPLETBL;
5) 동의어(SYNONYM) 삭제
- 동의어 : 다른 데이터베이스나 다른 계정의 테이블,인덱스 등에 별명을 붙이는것
사용법) DROP SYNONYM 동의어명 예 : DROP SYNONYM SAMPLETBL;
📃 뷰(View) :
- 하나 이상의 테이블이나 다른 뷰를 이용해서 생성하는 가상의 테이블 - 보안을 유지하기 위해 사용 : 사원테이블 - 급여컬럼(비밀 유지:대외비) - SQL 문을 미리 만들어 놓고 재활용 : 코딩 생산성 향상
1) 뷰 생성
사용법) CREATE OR REPLACE VIEW 뷰이름(컬럼명,컬러명2,...) AS SELECT 원본컬럼명, 원본컬럼명2,... FROM 테이블명 WHERE 조건절 예 : CREATE OR REPLACE VIEW VW_EMP_JOB(사번, 사원이름, 부서번호, 담당업무) AS SELECT ENO, ENAME, DNO, JOB FROM EMPLOYEE WHERE JOB LIKE 'SALESMAN%';
2) 뷰 삭제
사용법) DROP VIEW 뷰이름; 예 : DROP VIEW VW_EMP_SALARY;