+ 00 00 0000

Have any Questions?

17_Simple Coding – Sequence – Index – Role – View – 기본 요약

17_Simple Coding – Sequence – Index – Role – View – 기본 요약

📃 요약

전세계 기업시장에서 굉장히 활용 많이 하는 관계형 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;

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다