담비의 개발블로그

국비지원교육 48일차(10주차&DB) 본문

국비교육

국비지원교육 48일차(10주차&DB)

담비12 2024. 1. 19. 09:47

 

데이터 사전

- 오라클 데이터베이스 테이블은 사용자 테이블과 데이터 사전으로 나뉜다. 데이터 사전에는 데이터베이스 메모리 · 성능 · 사용자  · 권한 · 객체 등 오라클 데이터베이스 운영에 중요한 데이터가 보관되어 있다.

- 사용 가능한 데이터 사전을 알고 싶다면  DICTIONARY 또는 DICT을 조회한다.

SELECT * FROM DICT;

접두어 설명
USER_XXXX 현재 데이트베이스에 접속한 사용자가 소유한 객체 정보(특정 계정이 가지고 있는 테이블 이름을 알고 싶을 때 유용하다)
ALL_XXXX 현재 데이터베이스에 접속한 사용자가 소유한 객체 또는 다른 사용자가 소유한 객체 중 사용 허락을 받은 객체, 즉 사용 가능한 모든 객체 정보
DBA_XXXX 데이터베이스 관리를 위한 정보(데이터베이스 관리 권한을 가진 SYSTEM, SYS 사용자만 열람 가능)
V$_XXXX 데이터베이스 성능 관련 정보(X$_XXXX테이블의 뷰)

 

인덱스(INDEX)

- 데이터 검색 성능의 향상을 위해 테이블 열에 사용하는 객체

CREATE INDEX 인덱스 이름

ON 테이블 이름(열 이름 1 ASC ORE EDSC,

                           열 이름 2 ASC ORE EDSC,

                            ...);

인덱스 삭제

DROP INDEX 인덱스 이름;

 

뷰(VIEW)

- 하나 이상의 테이블을 조회하는 SELECT문을 저장한 객체

- 읽기전용 테이블이라고 보면된다.

- SELECT문의 복잡도를 완화하기 위해 사용한다.(편리성)

- 테이블의 특정 열을 노출하고 싶지 않을 경우 사용한다.(보안성)

CREATE VIEW 뷰이름A AS (
SELECT FROM 구문);

 

시퀀스(SEQUENCE)

- 특정 규칙에 맞는 연속 숫자를 생성하는 객체이다.

CREATE SEQUENCE 시퀀스 이름

INCREMENT BY N  (시퀀스에서 생성할 번호의 증가 값 기본값은 1)

START WITH N (시퀀스에서 생성할 번호의 시작 값 기본값은 1)

MAXVALUE N 또는 NOMAXVAULE (최댓값)

MINVALUE N 또는 NO MINVALUE (최솟값)

CYCLE 또는 NOCYCLE (시퀀스에서 생성한 번호가 최댃밗에 도달했을 경우 CYCLE이면 시작값에서 다시 시작, NOCYCLE이면 번호 생성이 중단되고, 추가 번호 생성을 요청하면 오류 발생)

CACHE N 또는 NACACHE (시퀀스가 생성할 번호를 메모리에 미리 할당해 놓은 수를 지정, NOCACHE는 미리 생성하지 않도록 설정. 옵션을 모두 생략하면 기본값은 20)

 

시퀀스 사용

- 시퀀스에서 마지막으로 새성한 번호를 반환

시퀀스 이름.CURRVAL

- 다음 번호를 생성

시퀀스 이름.NEXTVAL

 

시퀀스 수정

ALTER SEQUESNCE 시퀀스 이름

INCREMENT BY N  

MAXVALUE N 또는 NOMAXVAULE 

MINVALUE N 또는 NO MINVALUE 

CYCLE 또는 NOCYCLE

CACHE N 또는 NACACHE

 

시퀀스 삭제

DROP SEQUESNCE 

 

동의어

- 테이블 · 뷰 · 시퀀스 등 객체 이름 대신 사용할 수 있는 다름 이름을 부여하는 객체이다.

- 주로 테이블 이름이 너무 길어 사용이 불편할 떄 좀 더 간단하고 짧은 이름을 하나 더 만들어 주기 위해 사용한다.

- 생성한 동의어는SELECT, INSERT, UPDATE, DELETE등 다양한 SQL문에서 사용할 수 있다.

CREATE PUBLIC SYNONYM 동의어 이름

FOR 사용자.객체이름;

 

동의어 삭제

DROP SYNONYM 동의어 이름;

 


 

제약조건 

 

- 오라클에서 사용하는 제약 조건은 테이블의 특정 열에 지정한다.

- 제약 조건을 지정한 열에 제약 조건에 부합하지 않는 데이터를 저장할 수 없다.

- 무결성을 보장하기 위해 사용된다.

 

무결성
개체 무결성 : pk; 똑같은 자료, null이 없게 유지
영역(도메인)무결성 : not null, defalt같이 정해진 내용으로 구성
참조 무결성 : fk; 지정한 값 이외의 값이 없게 유지

 

NOT NULL

- 특정 열에 데이터의 중복 여부와는 상관없이 NULL의 저장을 허용하지 않는 제약조건이다.- CREATE 문으로 테이블을 생성할 때 지정할 수 있다.- 제약 조건에 이름을 직접 지정하려면 CONSTRAINT 키워드를 사용한다.- 실무에서 제약 조건이 많아진 후 찾기 어려워질 수 있으므로 이름 붙이는 규칙을 정하여 제약 조건 이름을 직접 지정하는 경우가 많다.- 생성한 테이블에 제약조건을 추가할 때는 ALTER와 MODIFY 키워드를 사용한다.- 제약 조건을 삭제할 때는 ALTER 명령어에 DROP CONSTRAINT키워드를 사용한다.

 

UNIQUE

- 열에 저장할 데이터의 중복을 허용하지 않을 때 사용한다.

- CREATE 문으로 테이블을 생성할 때 지정할 수 있다.

- NULL저장은 가능하다. NULL은 존재하지 않는 값 또는 해당 사항이 없다는 의미로 사용되는 툭수한 값이므로 NULL과 NULL 을 비교했을 때 값이 같은지를 확인할 수 없다. 그래서 NULL에는 중복의 의미를 부여할 수 없다.

- 제약 조건에 이름을 직접 지정하려면 CONSTRAINT 키워드를 사용한다.

- ALTER 명령어로 이미 생성되어 있는 테이블에 제약조건을 추가할 수 있다.

- 제약 조건을 삭제할 때는 ALTER 명령어에 DROP CONSTRAINT키워드를 사용한다.

 

PRIMARY KEY

- UNIQUE 와 NOT NULL 제약 조건의 특성을 모두 가지는 제약 조건이다.

- 데이터 중복을 허용하지 않고, NULL도 허용하지 않는다.

- 테이블에 하나밖에 지정할 수 없다.

- 특정열을 PRIMARY KEY로 지정하면 해당 열에는 자동으로 인덱스가 만들어진다.

- CREATE 문으로 테이블을 생성할 때 지정할 수 있다.

- 제약 조건에 이름을 직접 지정하려면 CONSTRAINT 키워드를 사용한다.

 

FOREIGN KEY

- 서로 다른 테이블 간 관계를 정의하는 데 사용한다.

- 특정 테이블에서 PRIMARY KEY 제약 조건을 지정한 열을 다른 테이블의 특정 열에서 참조하겠다는 의미로 지정할 수 있다.

- CREATE 문으로 테이블을 생성할 때 지정할 수 있다. REFERENCES키워드를 같이 사용한다.

- 제약 조건에 이름을 직접 지정하려면 CONSTRAINT 키워드를 사용한다.

- 열 데이터를 삭제할 떄 이 데이터를 참조하고 있는 데이터도 함께 삭제하는 방법

CONSTRAINT 제약 조건 이름 REFERENCES 참조 테이블(참조할 열) ON DELETE SET CASCADE

- 열 데이터를 삭제할 때 이 데이터를 참조하는 데이터를 NULL로 수정하는 방법

CONSTRAINT 제약 조건 이름 REFERENCES 참조 테이블(참조할 열) ON DELETE SET NULL

 

CHECK

- 열에 저장할 수 있는 값의 범위 또는 패턴을 정의할 때 사용한다.

- CREATE 문으로 테이블을 생성할 때 지정할 수 있다. REFERENCES키워드를 같이 사용한다.

- 제약 조건에 이름을 직접 지정하려면 CONSTRAINT 키워드를 사용한다.

 

DEFAULT

- 특정 열에 저장할 값이 지정되지 않았을 경우에 기본값을 지정할 수 있다.

- DEFAULT 키워드로 사용한다.

 

 


스키마(schema)

- 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터의 집합이다. 좀 더 자세하게 말하면 DB를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한 것이다.

- SCOTT과 같은 계정은 사용자이고, SCOTT계정으로 만든 모든 객체를 SCOTT의 스키마라고 한다.

 

ROWNUM

- ROWNUM은 SELECT해온 데이터에 일련번호를 붙인다. 테이블이나, 특정 집합에서 원하는 만큼의 행만 가져오고 싶을 때 행의 개수를 제한하는 용도로 사용한다.