DataBase/Oracle
-
SQL - 권한과 ROLEDataBase/Oracle 2022. 1. 28. 22:15
사용자 관리 사용자의 계정과 암호설정, 권한 부여 객체(테이블, 뷰 등)에 대한 권한 부여 다수의 사용자가 공유하는 데이터베이스 정보에 대한 보안 설정 데이터베이스에 접근하는 사용자마다 서로 다른 권한과 ROLE을 부여함 시스템 권한 데이터베이스 관리자가 가지고 있는 권한 오라클 접속, 테이블, 뷰, 인덱스 등의 생성 권한 - CREATE USER(사용자 계정 만들기) - DROP USER(사용자 계정 삭제) - DROP ANY TABLE(임의의 테이블 삭제) - QUERY REWRITE(함수 기반 인덱스 생성 권한) - BACKUP ANY TABLE(테이블 백업) 시스템 관리자가 사용자에게 부여하는 권한 - CREATE SESSION(데이터베이스에 접속) - CREATE TABLE(테이블 생성) - C..
-
SQL - 동의어(SYSNONYM)DataBase/Oracle 2022. 1. 28. 21:53
동의어(SYSNONYM) 란? CREATE SYNONYM 줄임말 FOR 사용자명.객체명 다른 데이터베이스가 가진 객체에 대한 별명 혹은 줄임말 여러 사용자가 테이블을 공유할 경우 다른 사용자가 테이블에 접근할 때 '사용자명.테이블명'으로 표현하는데 동의어를 사용하면 간단하게 사용할 수 있다. 동의어는 시스템 권한이 필요하다 GRANT CREATE SYNONYM TO 계정명 -- 동의어 생성 CREATE SYNONYM EMP FOR EMPLOYEE; -- 동의어를 이용한 SELECT문 SELECT E.* FROM EMP E;
-
SQL - 인덱스(INDEX)DataBase/Oracle 2022. 1. 28. 21:41
인덱스(INDEX) SQL명령문의 검색 처리 속도를 향상하기 위해 칼럼에 대해서 생성하는 오라클 객체 하드디스크의 어느 위치에 있는지 정보를 가진 주소록(ROWID) PK, UNIQUE이 있으면 자동으로 INDEX 객체가 생성된다. ROWID 구조 : 오브젝트 번호, 상대 파일 번호, 블록 번호, 데이터 번호 인덱스의 내부 구조는 이진트리 형식으로 구성되어 있고 인덱스를 생성하기 위해서는 시간이 필요하다. 또한 인덱스를 위한 추가 저장 공간이 필요하기 때문에 반드시 좋은 것은 아니다. 이러한 이유 때문에 인덱스가 생성된 칼럼에서 DML 작업이 빈번하게 일어나는 경우 처리 속도는 느려진다. 그 이유는 데이터의 변경 작업이 자주 일어나면 계속적으로 인덱스를 다시 REBUILD 작업을 주기적으로 해줘야 하고,..
-
SQL - 시퀀스(SEQUENCE)DataBase/Oracle 2022. 1. 28. 01:26
시퀀스(SEQUENCE) 란? 자동 번호 발생기 역할을 하는 객체 순차적으로 정수 값을 자동으로 생성해준다. SEQUENCE 생성 시작 값 : 300, 증가치 : 5, 최댓값 : 310 300 -> 305 -> 310 -> 오류 CREATE SEQUENCE SEQ_EMPID START WITH 300 INCREMENT BY 5 MAXVALUE 310 NOCYCLE NOCACHE; SEQUENCE 사용 CURRVAL : 해당 시퀀스가 가지고 있는 CURRENT VALUE (현재 값) NEXTVAL : 해당 시퀀스가 가질 다음 값 리턴 NEXTVAL를 최소 1회 수행해야 CURRVAL를 알아올 수 있다. SELECT문에서 사용 가능 INSERT문 SELECT 구문에서 사용 가능 INSERT문 VALUES 절..
-
SQL - VIEW, VIEW 옵션DataBase/Oracle 2022. 1. 28. 00:40
VIEW 란? CREATE [OR REPLACE] VIEW 뷰이름 AS 서브쿼리 SELECT 쿼리문을 저장한 객체 실질적인 데이터를 저장하고 있지 않은 논리적인 테이블 테이블을 사용하는 것과 동일하게 사용할 수 있다. 베이스 테이블의 정보가 변경되면 VIEW도 정보가 변경된다. 장점 : 복잡한 SELECT문을 다시 작성할 필요가 없음 민감한 데이터를 숨길 수 있음 VIEW를 생성하기 위해선 우선 시스템 계정에서 해당 계정에게 VIEW 생성 권한을 주어야 한다. GRANT CREATE VIEW TO C##EMPLOYEE; VIEW 생성 -- 사번, 이름, 직급명, 부서명, 근무지역을 조회하고, -- 그 결과를 V_RESULT_EMP 라는 뷰를 생성해서 저장하세요 CREATE OR REPLACE VIEW V..
-
SQL - DDL(Data Definition Language)의 ALTER, DROPDataBase/Oracle 2022. 1. 27. 22:08
ALTER 객체를 수정하는 구문 테이블 객체 수정, 칼럼 추가/삭제/수정, 제약조건 추가/삭제/수정, 테이블명 수정, 제약조건 이름 수정 칼럼 추가/삭제/수정 칼럼 추가 SELECT DC.* FROM DEPT_COPY DC; -- LNAME 칼럼 추가 ALTER TABLE DEPT_COPY ADD (LNAME VARCHAR2(20)); 칼럼을 추가할 때 DEFAULT 값 지정할 수 있다. -- 컬럼 생성 시 DEFAULT 값 지정 ALTER TABLE DEPT_COPY ADD (CNAME VARCHAR2(20) DEFAULT '한국'); SELECT DC.* FROM DEPT_COPY DC; 칼럼 삭제 -- 컬럼 삭제 ALTER TABLE DEPT_COPY DROP COLUMN LNAME; SELECT ..
-
SQL - TCL (Transaction Control Language)DataBase/Oracle 2022. 1. 27. 21:05
TCL (Transaction Control Language) 란? 한꺼번에 수행되어야 할 최소의 작업 단위를 말한다. 하나의 트랜잭션으로 이루어진 작업은 반드시 한꺼번에 완료(COMMIT)되어야 하며 그렇지 않은 경우에는 한꺼번에 취소(ROLLBACK)되어야 한다. DDL 경우 auto COMMIT이 된다. COMMIT : 트랜잭션 작업이 정상 완료되면 변경 내용을 영구히 저장 ROLLBACK : 트랜잭션 작업을 취소하고 최근 COMMIT 한 시점으로 이동 SAVEPOINT 세이브포인트 명 : 현재 트랜잭션 작업 시점에 이름을 정해줌 하나의 트랜잭션 안에 구역을 나눈다. ROLLBACK TO 세이브포인트명 : 트랜잭션 작업을 취소하고 SAVEPOINT 시점으로 이동 COMMIT과 ROLLBACK -- ..
-
SQL - DML(Data Manupulation Language) DELETE, DDL(Data Definition Language) TRUNCATEDataBase/Oracle 2022. 1. 27. 02:24
DELETE TRUNCATE DML(Data manipulation Language) 데이터 조작 언어 테이블에 값을 삽입, 수정, 삭제, 조회하는 언어 DELETE DELETE FROM 테이블명 WHERE 조건설정 테이블의 행을 삭제하는 구문 만약 WHERE 조건을 설정하지 않으면 모든 행이 다 삭제된다. 모든 행 삭제 DELETE FROM EMPLOYEE E; DELETE DELETE FROM EMPLOYEE E WHERE E.EMP_NAME = '장채현'; -- FOREIGN KEY 제약조건이 설정되어 있는 경우 -- 참조되고 있는 값에 대해서는 삭제할 수 없다. DELETE FROM DEPARTMENT D WHERE D.DEPT_ID = 'D1'; -- FOREIGN KEY 제약조건이 설정되어 있..