+ 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

📃 기술 구현

스펙 :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
- SQL Developer
- Oracle SQL
- SQL Developer - Oracle SQL
- SQL Developer
- Oracle SQL

📃 시퀀스 기초

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
- 호출(실행)할때마다 자동적으로 숫자를 증가시키는 것(객체)
- 기본키 용도로 사용(중복 없음 , null 없음)
- 채번 : 자동적으로 1씩 증가시키는 값(1 ~ n : 시퀀스대상)
- 호출(실행)할때마다 자동적으로 숫자를 증가시키는 것(객체) - 기본키 용도로 사용(중복 없음 , null 없음) - 채번 : 자동적으로 1씩 증가시키는 값(1 ~ n : 시퀀스대상)
- 호출(실행)할때마다 자동적으로 숫자를 증가시키는 것(객체)
- 기본키 용도로 사용(중복 없음 , null 없음)
- 채번 : 자동적으로 1씩 증가시키는 값(1 ~ n : 시퀀스대상)

1. 시퀀스

1) 시퀀스 생성 :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
CREATE SEQUENCE 시퀀스명
INCREMENT BY 증가값
START WITH 시작값
MINVALUE 최소값
MAXVALUE 최대값
:
CREATE SEQUENCE SAMPLE_SEQ
INCREMENT BY 10
START WITH 1;
사용법) CREATE SEQUENCE 시퀀스명 INCREMENT BY 증가값 START WITH 시작값 MINVALUE 최소값 MAXVALUE 최대값 예 : CREATE SEQUENCE SAMPLE_SEQ INCREMENT BY 10 START WITH 1;
사용법) 
    CREATE SEQUENCE 시퀀스명
    INCREMENT BY 증가값
    START WITH 시작값
    MINVALUE   최소값
    MAXVALUE   최대값

예 :
CREATE SEQUENCE SAMPLE_SEQ
INCREMENT BY 10
START WITH 1;

2) 시퀀스명.NEXTVAL :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
시퀀스가 증가함
시퀀스가 증가함
시퀀스가 증가함
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법 :
SELECT SAMPLE_SEQ.NEXTVAL FROM DUAL;
:
SELECT SAMPLE_SEQ.NEXTVAL FROM DUAL;
사용법 : SELECT SAMPLE_SEQ.NEXTVAL FROM DUAL; 예 : SELECT SAMPLE_SEQ.NEXTVAL FROM DUAL;
사용법 :
    SELECT SAMPLE_SEQ.NEXTVAL FROM DUAL;

예 : 
SELECT SAMPLE_SEQ.NEXTVAL FROM DUAL;

3) 현재 증가된 시퀀스의 값을 확인

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
최초 1번은 시퀀스명.NEXTVAL 로 실행후 확인 가능
최초 1번은 시퀀스명.NEXTVAL 로 실행후 확인 가능
최초 1번은 시퀀스명.NEXTVAL 로 실행후 확인 가능
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법) 시퀀스명.CURRVAL
SELECT SAMPLE_SEQ.CURRVAL FROM DUAL;
사용법) 시퀀스명.CURRVAL SELECT SAMPLE_SEQ.CURRVAL FROM DUAL;
사용법) 시퀀스명.CURRVAL
    SELECT SAMPLE_SEQ.CURRVAL FROM DUAL;

4) 시퀀스 INSERT 시 활용

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
-- 시퀀스 생성
CREATE SEQUENCE SAMPLE_SEQ
INCREMENT BY 10
START WITH 1; -- 생성(10씩 증가)
-- INSERT 문 정의 후 4번 실행
INSERT INTO DEPT_TEMP
VALUES(SAMPLE_SEQ.NEXTVAL, 'ACCOUNTING','NEW YORK');
-- 시퀀스 생성 CREATE SEQUENCE SAMPLE_SEQ INCREMENT BY 10 START WITH 1; -- 생성(10씩 증가) -- INSERT 문 정의 후 4번 실행 INSERT INTO DEPT_TEMP VALUES(SAMPLE_SEQ.NEXTVAL, 'ACCOUNTING','NEW YORK');
-- 시퀀스 생성
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) 시퀀스 삭제

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
DROP SEQUENCE 시퀀스명
:
DROP SEQUENCE SAMPLE_SEQ;
사용법) DROP SEQUENCE 시퀀스명 예 : DROP SEQUENCE SAMPLE_SEQ;
사용법) 
    DROP SEQUENCE 시퀀스명

예 :
DROP SEQUENCE SAMPLE_SEQ;

📃 인덱스(INDEX) 기초

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
- 컬럼에 인덱스를 지정하여 사용함
- 조회속도 향상을 위해 조건에 해당하는 컬럼에 인덱스를 생성함(지정함)
- 기본키(PK) : 중복방지 + NULL값방지 + 자동인덱스생성
- 컬럼에 인덱스를 지정하여 사용함 - 조회속도 향상을 위해 조건에 해당하는 컬럼에 인덱스를 생성함(지정함) - 기본키(PK) : 중복방지 + NULL값방지 + 자동인덱스생성
- 컬럼에 인덱스를 지정하여 사용함
- 조회속도 향상을 위해 조건에 해당하는 컬럼에 인덱스를 생성함(지정함)
- 기본키(PK) : 중복방지 + NULL값방지 + 자동인덱스생성

1) 인덱스 생성

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
CREATE INDEX 인덱스이름 ON 테이블명(컬럼명);
:
CREATE INDEX IX_EMPLOYEE_ENAME ON EMPLOYEE(ENAME);
사용법) CREATE INDEX 인덱스이름 ON 테이블명(컬럼명); 예 : CREATE INDEX IX_EMPLOYEE_ENAME ON EMPLOYEE(ENAME);
사용법) 
    CREATE INDEX 인덱스이름 ON 테이블명(컬럼명);

예 : 
CREATE INDEX IX_EMPLOYEE_ENAME ON EMPLOYEE(ENAME);

2) 인덱스 삭제

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
DROP INDEX 인덱스명;
:
DROP INDEX IX_EMPLOYEE_ENAME;
사용법) DROP INDEX 인덱스명; 예 : DROP INDEX IX_EMPLOYEE_ENAME;
사용법) 
    DROP INDEX 인덱스명;

예 : 
DROP INDEX IX_EMPLOYEE_ENAME;

3) 결합 인덱스 생성

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
CREATE INDEX 인덱스명 ON 테이블명(컬럼명, 컬럼명2,...);
:
CREATE INDEX IX_DEPT_COM ON DEPARTMENT(DNAME, LOC);
사용법) CREATE INDEX 인덱스명 ON 테이블명(컬럼명, 컬럼명2,...); 예 : CREATE INDEX IX_DEPT_COM ON DEPARTMENT(DNAME, LOC);
사용법) 
    CREATE INDEX 인덱스명 ON 테이블명(컬럼명, 컬럼명2,...);

예 : 
CREATE INDEX IX_DEPT_COM ON DEPARTMENT(DNAME, LOC);

4) 함수 인덱스 : 함수에 인덱스 걸기

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
-- 함수인덱스(수식인덱스)
CREATE INDEX IX_EMP_ANNSAL ON EMPLOYEE(SALARY * 12);
-- 함수인덱스(수식인덱스) CREATE INDEX IX_EMP_ANNSAL ON EMPLOYEE(SALARY * 12);
-- 함수인덱스(수식인덱스)
CREATE INDEX IX_EMP_ANNSAL ON EMPLOYEE(SALARY * 12);

📃 유저만들기(계정생성) ,권한주기

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
- 컬럼에 인덱스를 지정하여 사용함
- 조회속도 향상을 위해 조건에 해당하는 컬럼에 인덱스를 생성함(지정함)
- 기본키(PK) : 중복방지 + NULL값방지 + 자동인덱스생성
- 컬럼에 인덱스를 지정하여 사용함 - 조회속도 향상을 위해 조건에 해당하는 컬럼에 인덱스를 생성함(지정함) - 기본키(PK) : 중복방지 + NULL값방지 + 자동인덱스생성
- 컬럼에 인덱스를 지정하여 사용함
- 조회속도 향상을 위해 조건에 해당하는 컬럼에 인덱스를 생성함(지정함)
- 기본키(PK) : 중복방지 + NULL값방지 + 자동인덱스생성

1) 유저 생성

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법 :
CREATE USER 계정명 IDENTIFIED BY 암호;
:
CREATE USER USERTEST01 IDENTIFIED BY pass1;
사용법 : CREATE USER 계정명 IDENTIFIED BY 암호; 예 : CREATE USER USERTEST01 IDENTIFIED BY pass1;
사용법 : 
    CREATE USER 계정명 IDENTIFIED BY 암호;

예 : 
CREATE USER USERTEST01 IDENTIFIED BY pass1;

2) 유저에 권한 주기

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
GRANT 권한명 TO 유저명;
:
-- 사용법) GRANT 권한명 TO 유저명;
GRANT CREATE SESSION TO USERTEST01;
-- 테이블 생성 권한 주기
GRANT CREATE TABLE TO USERTEST01;
-- 공간에 대한 권한 주기(무한) : 테이블(논리공간) -> 물리공간 배정(할당)
GRANT UNLIMITED TABLESPACE TO USERTEST01;
사용법) GRANT 권한명 TO 유저명; 예 : -- 사용법) GRANT 권한명 TO 유저명; GRANT CREATE SESSION TO USERTEST01; -- 테이블 생성 권한 주기 GRANT CREATE TABLE TO USERTEST01; -- 공간에 대한 권한 주기(무한) : 테이블(논리공간) -> 물리공간 배정(할당) GRANT UNLIMITED TABLESPACE TO USERTEST01;
사용법) 
    GRANT 권한명 TO 유저명;

예 : 
-- 사용법) GRANT 권한명 TO 유저명;
GRANT CREATE SESSION TO USERTEST01;
-- 테이블 생성 권한 주기
GRANT CREATE TABLE TO USERTEST01;
-- 공간에 대한 권한 주기(무한) : 테이블(논리공간) -> 물리공간 배정(할당)
GRANT UNLIMITED TABLESPACE TO USERTEST01;

3) 유저에 롤 주기

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
- 롤 : 권한을 모아놓은 집합
- 접속 권한들의 모임 == CONNECT 롤
- 테이블,인덱스,함수등을 사용하는 권한 모임 == RESOURCE 롤
- 롤 : 권한을 모아놓은 집합 - 접속 권한들의 모임 == CONNECT 롤 - 테이블,인덱스,함수등을 사용하는 권한 모임 == RESOURCE 롤
- 롤 : 권한을 모아놓은 집합
- 접속 권한들의 모임 == CONNECT 롤
- 테이블,인덱스,함수등을 사용하는 권한 모임 == RESOURCE 롤
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
GRANT 권한명 TO 유저명;
:
GRANT CONNECT, RESOURCE, CREATE VIEW TO USERTEST01;
사용법) GRANT 권한명 TO 유저명; 예 : GRANT CONNECT, RESOURCE, CREATE VIEW TO USERTEST01;
사용법) 
    GRANT 권한명 TO 유저명;

예 : 
GRANT CONNECT, RESOURCE, CREATE VIEW TO USERTEST01;

3) 유저 삭제(DROP ~)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
DROP USER 유저명;
:
DROP USER USERTEST01;
사용법) DROP USER 유저명; 예 : DROP USER USERTEST01;
사용법) 
    DROP USER 유저명;

예 : 
DROP USER USERTEST01;

4) 동의어(SYNONYM) 생성

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
- 동의어 : 다른 데이터베이스나 다른 계정의 테이블,인덱스 등에 별명을 붙이는것
- 동의어 : 다른 데이터베이스나 다른 계정의 테이블,인덱스 등에 별명을 붙이는것
- 동의어 : 다른 데이터베이스나 다른 계정의 테이블,인덱스 등에 별명을 붙이는것
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
CREATE SYNONYM 복사본명 FOR 원본명;
:
CREATE SYNONYM SAMPLETBL FOR SYSTEM.SAMPLETBL;
사용법) CREATE SYNONYM 복사본명 FOR 원본명; 예 : CREATE SYNONYM SAMPLETBL FOR SYSTEM.SAMPLETBL;
사용법) 
    CREATE SYNONYM 복사본명 FOR 원본명;

예 : 
CREATE SYNONYM SAMPLETBL FOR SYSTEM.SAMPLETBL;

5) 동의어(SYNONYM) 삭제

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
- 동의어 : 다른 데이터베이스나 다른 계정의 테이블,인덱스 등에 별명을 붙이는것
- 동의어 : 다른 데이터베이스나 다른 계정의 테이블,인덱스 등에 별명을 붙이는것
- 동의어 : 다른 데이터베이스나 다른 계정의 테이블,인덱스 등에 별명을 붙이는것
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
DROP SYNONYM 동의어명
:
DROP SYNONYM SAMPLETBL;
사용법) DROP SYNONYM 동의어명 예 : DROP SYNONYM SAMPLETBL;
사용법) 
    DROP SYNONYM 동의어명

예 : 
DROP SYNONYM SAMPLETBL;

📃 뷰(View) :

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
- 하나 이상의 테이블이나 다른 뷰를 이용해서 생성하는 가상의 테이블
- 보안을 유지하기 위해 사용 : 사원테이블 - 급여컬럼(비밀 유지:대외비)
- SQL 문을 미리 만들어 놓고 재활용 : 코딩 생산성 향상
- 하나 이상의 테이블이나 다른 뷰를 이용해서 생성하는 가상의 테이블 - 보안을 유지하기 위해 사용 : 사원테이블 - 급여컬럼(비밀 유지:대외비) - SQL 문을 미리 만들어 놓고 재활용 : 코딩 생산성 향상
- 하나 이상의 테이블이나 다른 뷰를 이용해서 생성하는 가상의 테이블
- 보안을 유지하기 위해 사용 : 사원테이블 - 급여컬럼(비밀 유지:대외비)
- SQL 문을 미리 만들어 놓고 재활용 : 코딩 생산성 향상

1) 뷰 생성

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
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%';
사용법) 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%';
사용법) 
    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) 뷰 삭제

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
사용법)
DROP VIEW 뷰이름;
:
DROP VIEW VW_EMP_SALARY;
사용법) DROP VIEW 뷰이름; 예 : DROP VIEW VW_EMP_SALARY;
사용법) 
    DROP VIEW 뷰이름;

예 : 
DROP VIEW VW_EMP_SALARY;

답글 남기기

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