DBMS
(Database Management System, 데이터베이스 관리 시스템)
데이터베이스 오브젝트(Object, 객체)
데이터베이스의 저장 공간을 차지하는 대표적인 오브젝트(객체)가 테이블과 인덱스이다.
테이블과 인덱스는 물리적인 데이터 파일에 저장된다.
테이블(table)
테이블은 행(Row)과 칼럼(Column)으로 구성되는 가장 기본적인 데이터베이스 객체로
데이터베이스 내에서 모든 데이터는 테이블을 통해 저장된다.
인덱스(Index)
인덱스는 어떤 종류의 검색 연산을 최적화하기 위해 데이터베이스상에 로우들의 정보를 구성하는 데이터 구조이다.
데이터베이스 계정
관리자 계정(Administrator Account) 데이터베이스의 생성과 관리를 담당하는 슈퍼 유저(Super User) 계정이며, 오브젝트 (Object)의 생성, 변경, 삭제 등의 작업이 가능하다. 데이터베이스에 대한 모든 권한과 책임을 가지는 계정이다. |
시스템 권한 (System Privilege) 오라클 접속, 테이블.뷰.인덱스 생성 권한 등이 있다. 관리자 계정에 부여 되는 권한이다. SYS, SYSTEM 계정으로 부여 가능하다. |
사용자 계정(General User Account) 데이터베이스에 대하여 질의(Query), 갱신, 보고서 작성 등의 작업을 수행할 수 있는 계정이다. 일반 계정은 보안을 위하여 업무에 필요한 최소한의 권한만 가지는 것을 원칙으로 |
객체 권한 (Object Privilege) 테이블.뷰.시퀀스.함수에 대한 DML(select, insert, delete) 사용 권한이다. 객체의 소유자나 관리자 계정으로 부여 가능하다 |
데이터베이스 계정 생성
Create User 명령어로 생성한다. 비밀번호 변경은 Alter user로 가능하다
오라클 데이터베이스
데이터 베이스 버전 확인 명령어
SELECT * FROM v$version;
생성
CREATE USER [유저 이름] IDENTIFIED BY [비밀번호];
비밀번호 변경
ALTER USER [유저이름] IDENTIFIED BY [비밀번호]
create user joe identified by black default tablespace hr_data01 temporary tablespace temp; alter user joe identified by white; |
데이터베이스 오브젝트 생성 계획 수립
생성 계획 수립의 필요성 데이터베이스에 저장될 많은 수의 오브젝트(Object)(대표적으로 테이블, 인덱스)를 빠뜨리지 않고 오브젝트 생성에 필요한 옵션 등을 정확하게 구현하기 위해서이다. |
계획 수립 방법 설계 단계에서 분석된 테이블에 대해 정확한 데이터 타입과 데이터의 길이, 기본 값 (Default), 인덱스의 종류, 인덱스 컬럼의 개수와 순서, 뷰(View), 시퀀스(Sequence) 등을 재점검한 후 오브젝트 생성 작업을 수행해야 한다. |
데이터베이스 오브젝트(Object, 객체)
데이터베이스의 저장 공간을 차지하는 대표적인 오브젝트(객체)가 테이블과 인덱스이다. 테이블과 인덱스는 물리적인 데이터 파일에 저장된다.
일반(Normal) 테이블(table)
테이블은 행(Row)과 칼럼(Column)으로 구성되는 가장 기본적인 데이터베이스 객체로
데이터베이스 내에서 모든 데이터는 테이블을 통해 저장된다.
인덱스(Index)
인덱스는 어떤 종류의 검색 연산을 최적화하기 위해 데이터베이스상에 로우들의 정 보를 구성하는 데이터 구조이다.
인덱스를 이용하면 전체 데이터를 검색하지 않고 데이터베이스에서 원하는 정보를 빠르게 검색할 수 있다.
테이블에 데이터가 수천만 개로 증가하여도 인덱스를 이용한 접근 경로와 검색 범위가 동일하다면 속도의 변화는
거의 발생하지 않는다. DBMS 종류에 따라 인덱스가 테이터 파일에 함께 저장될 수도 있고,
별도의 인덱스 파일에 저장되기도 한다
데이터 정의어(DDL)
데이터베이스 오브젝트(객체)를 생성, 변경과 삭제 시 사용하는 SQL문을 DDL이라고 한다.
객체에는 테이블, 인덱스, 뷰, 시퀀스, 트리거, 프로시저 등이 있다
테이블 |
오라클에서 데이터 저장소 기본 단위인 테이블은 스키마 오브젝트schema cbjects의 일종으로 관계형 데이터베이스를 구성하는 기본 데이터 구조입니다. |
인덱스 |
데이터가 위치한 장소의 정보를 가진 일종의 주소록입니다. 데이터의 주소(ROWID)를 가지고 있습니다. 인덱스는 빠르게 데이터 작업을 하기 위한 한 방법으로 사용되고 있습니다. |
뷰 |
하나이상의 테이블 또는 다른 뷰를 기반으로 만들어진 가상의 창(WINDOW) 같은 것으로 뷰를 만드는 SQL문장만 오라클 딕셔너리에 저장되고 SQL문에서 테이블 처럼 사용가능한 가상 테이블 입니다. |
시퀀스 |
연속적인 숫자를 생성해내는 객체이다. 테이블에 데이터를 삽입(Insert) 할때마다, 자동으로 각 로우를 식별할 수 있는 시퀀스값이 할당되어 저장된다. 이때, 시퀀스값은 보통 자동으로 +1씩 늘어나게 설정해 놓고 사용한다. |
트리거 |
데이터베이스에서 트리거를 뜻하는 말은 총의 방아쇠를 당기는 것과 같이 어떤 이벤트의 자동으로 실행되는 것을 뜻합니다. 구체적으론 데이터가 삭제되었을 때,변경되었을 때, 추가되었을 때에 따라 트리거를 생성해 실행시킬 수 있습니다. |
프로시저 |
데이터베이스에 대한 일련의 작업을 정리한 절차를 관계형 데이터베이스 관리 시스템에 저장한 것으로 영구저장모듈(Persistent Storage Module)이라고도 불립니다. 보통 저장 프로시저를 프로시저라고 부르며, 일련의 쿼리를 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합입니다. |
객체 종류 | DDL |
테이블 | CREATE TABLE ALTER TABLE DROP TABLE TRUNCATE |
인덱스 | CREATE INDEX ALTER INDEX DROP INDEX |
뷰 | CREATE VIEW ALTER VIEW DROP VIEW |
테이블 생성
오라클 데이터베이스
CREATE TABLE 테이블명 ( 컬럼명 1 데이터 타입, , 컬럼명 2 데이터 타입 [{제약 조건}],....]); 테이블명은 user 내에서 unique하다. 테이블명은 문자로 시작하며 문자, 숫자, _$# 등의 특수 문자를 사용할 수 있다. 테이블명의 길이는 30byte 이내로 한다. |
유형 | 데이터 형식(Data Type) | 설명 |
숫자 | NUMBER | 정수, 실수 등 숫자 정보(Oracle의 경우 NUMBER로 SQL Server 의 경우 다수의 숫자 타입이 존재함.) Oracle의 NUMBER는 전체 자릿수를 먼저 지정한 후, 소수 부분의 자릿수를 지정한다. ex: 123.45 = NUMBER(3,2) |
문자 | CHARACTER | 정수, 실수 등 숫자 정보(Oracle의 경우 NUMBER로 SQL Server 의 경우 다수의 숫자 타입이 존재함.) Oracle의 NUMBER는 전체 자릿수를 먼저 지정한 후, 소수 부분의 자릿수를 지정한다. ex: 123.45 = NUMBER(3,2) |
VARCHAR | 가변 길이 문자열 정보, CHARACTER VARYING의 약자이다. (Oracle의 경우 VARCHAR2로 SQL Server의 경우 VARCHAR로 표기) 최소 1바이트에서 최대 4,000바이트 이상의 길이를 할당할 수 있다. (Oracle은 4,000바이트, SQL Server는 8,000바이트) 설정된 만큼 길이를 갖지만 가변적으로 적용되어 할당된 변수의 길이 만큼만 바이트가 적용된다. |
|
날짜 | DATETIME | 날짜와 시각에 대한 정보 (Oracle의 경우 DATA로 SQL Server의 경우 DATETIME로 표기) Oracle은 1초 단위, SQL Server는 3.33ms(millisecond) 단위 로 관리된다. * 1ms = 1/1000초 |
Constraint | 설명 |
UNIQUE | 컬럼의 데이터가 중복되지 않도록 한다 |
NOT NULL | 컬럼의 NULL 값이 입력되지 않도록 한다 |
PRIMARY KEY | 컬럼 값을 primary key로 정의한다 |
FOREIGN KEY, REFERENCES |
컬럼 값이 다른 컬럼에 반드시 존재해야 한다 |
CHECK | 컬럼 값의 범위 등을 지정한다 |
오라클(Oracle)(CRUD) 쿼리문 정리
INSERT (생성) |
INSERT INTO [테이블명](column1, column2, ...) VALUES(data1, data2, ...) |
SELETE (조회) |
SELECT * FROM TBL_USER; |
UPDATE (수정) |
UPDATE [테이블명] SET 컬럼1='값1', 컬럼2='값2' WHERE 조건 |
DELETE (삭제) |
DELETE FROM [테이블명] WHERE 조건 |
인덱스
오라클 데이터베이스
Primary key, Unique constraint 정의 시에는 자동으로 인덱스가 생성된다.
테이블의 데이터를 갱신하면 자동으로 인덱스의 내용도 갱신된다.
CREATE [UNIQUE] INDEX 인덱스명 ON 테이블명 (컬럼명 [, 컬럼명, …]) |
뷰(View)
오라클 데이터베이스
CREATE [OR REPLACE] [FORCE | NOFORCE] VIEW 뷰 이름 [(alias [, alias, …])] AS Subquery [WITH CHECK OPTION] [WITH READ ONLY] 함수를 사용한 컬럼은 반드시 alias를 지정해야 한다. NOFORCE 기본 테이블이 있을 때에만 뷰를 생성한다. |
시퀀스(Sequence) 생성
CREATE SEQUENCE seq INCRMENT BY 1 START WITH 100 MINVALUE 100 MAXVALUE 1000 NOCYCLE NOCACHE NOORDER; 100부터 시쟉하여 1000까지 1씩 증가 NOCACHE, NOCYCLE |
윈도우 사용 환경변수 %JAVA_HOME% 리눅스 사용 환경변수 $JAVA_HOME$ |