환경설정 -> SQLDEVELOPER(ORACLE)/MAC
LIST
- CONSTRAINT
- TRANSACTION CONTROL
- DICTIONARY
- DDL
- DCL
1.Constratint
Constratint란? 데이터 무결성 유지를 위하여 사용자가 지정할 수 있는 성질. 즉 제약 조건이다.
모든 Constraint은 데이터 사전(Data Dictionary)에 저장.
이름 관련 권고 사항
의미 있는 이름이어야 참조가 쉬움
표준 객체 명명법을 따르길 권장
한 사용자 내에서 중복 불가
이름을 생략했다면 ORACLE은 SYS_Cn형식의 이름을 만듬.
1. Not Null
-> null 값을 컬럼에서 가질수 없다!!
2. UNIQUE
-> 컬럼이나 컬럼의 조합이 테이블의 각 행을 유일하게 구별 시킨다!
-> 테이블 레벨이나 컬럼 레벨에서 정의 가능
-> UNIQUE 칼럼에 대한 레벨에서 정의 가능
3. PK( Primary Key)
-> 테이블에 단하나의 PK 만 허용
-> 여러 칼럼이여도 NULL 값을 허용 하지 않음
->테이블 레벨이나 컬럼 레벨에서 정의 가능
-> UNIQUE인덱스 자동 생성
4. FK ( Foreign Key)
-> FOREIGN KEY는 자식(child)테이블에 정의
-> 부모(parent) 테이블의 값과 일치하거나 NULL이어야 한다.
-> 테이블 레벨이나 컬럼 레벨에서 정의 가능
FOREIGN KET 제약 조건을 줄 때 주의 사항
1.참조하고자 하는 테이블이 먼저 생성되어 있어야 한다.
2.참조하고자 하는 컬럼이 PRIMARY KEY 또는 UNIQUE 제약 조건이 있어야 한다.
3.참고하고자 하는 칼럼의 데이터 타입이 일치해야 한다.
-> ON DELETE CASCADE 옵션 : 참조하는(child) 테이블 쪽에 이 옵션을 주면 참조되는(parent)
테이블의 행을 삭제 가능하게 할 뿐만 아니라 참조하는 행들도 자동으로 삭제해주는 옵션
5. Check
◦ 각 행이 만족해야하는 조건을 정의
◦ CHECK 제약 조건에서 사용할 수 없는 것들
- CURRVAL, NEXTVAL, LEVEL, ROWNUM에 대한 참조
- SYSDATE, UID, USER, USERENV 함수에 대한 호출
- 다른 행의 값을 참조
- ORACLE server의 예약어는 쓸 수 없다
- 컬럼이나 테이블 레벨에서 모두 정의할 수 있다.
//Constraint 정의 방법 두 가지
- 컬럼 레벨 제약조건 - 어떤 유형의 제약조건도 정의 가능
컬럼[CONSTRAINT 제약조건 이름] 제한조건 유형
- 테이블레벨 제약 조건 - 어떤 제약조건도 정의 가능.(NOT NULL제외)
컬럼 레벨 제약과 별개이며, 여러 컬럼에 제약조건을 정의할 때 사용.
컬럼,...
[CONSTRAINT 제약조건 이름] 제한조건 유형 (컬럼1, 컬럼2)
2.TRANSACTION
transaction - > 논리적인 업무의 작업단위
Transaction Control Language ( 트랙잭션 처리어 ) ↓↓↓↓↓
COMMIT : D아직 저장되지 않은 데이터 변경 사항을 DB에 저장하고 현재 트랜잭션 종료 (DDL 혹은 DCL 명령실행시 자동으로 COMMIT 된다. COMMIT 이 되고나면 이전 데이터는 사라지고 DB에 변경사항이 반영되며 다른 유저들도 수정 가능.)
SAVEPOINT 이름 : 현재의 트랜잭션에 SAVEPOINT 지정
ROLLBACK : 아직 저장되지 않은 모든 데이터 변경 사항 취소하고 트랜잭션 종료. ( 즉 커밋 되지 않은 상태에 대해 변경사항을 돌린다 Ctrl z 같은 되돌리기 BUT 다른 유저들이 조작을 할 수 없습니다.)
* 단지 buffer에만 영향을 받았기 때문에 데이터의 이전 상태는 복구될 수 있다. * 현재 사용자는 SELECT문으로 작업의 결과를 확인할 수 있다. * 다른 사용자는 현재 사용자가 수행한 작업의 결과를 볼 수 없다. * 변경된 행은 Lock이 설정되어서 다른 USER가 변경할 수 없다. | * 데이터에 대한 변경사항은 데이터베이스에 반영된다. * 이전 데이터는 영원히 잃어버리게 된다. * 모든 사용자는 결과를 볼 수 있다. * 관련된 행에 대한 Lock이 풀리고 다른 사용자들이 행을 조작할 수 있게 된다. | * 데이터에 대한 변경사항은 취소된다. * 이전 데이터는 다시 재저장된다. * 관련된 행에 대한 Lock이 풀리고, 다른 사용자들이 행을 조작할 수 있게 된다. |
3.DICTIONARY
Dictionary란?? -> 시스템 전체에서 나타나고 있는 데이터 항목에대한 정보를 지정하는 저장소
(ORACLE SERVER명, 사용자에게 허가된 권한 , 데이터베이스 객체명 , 테이블 제약조건....)
- ORACLE SERVER에 의해서 생성되고 유지보수
- 데이터베이스에 대한 정보를 가짐
- 읽기 전용으로만 제공되는 뷰(VIEW)와 테이블의 집합
- 데이터 사전(data dictionary) 테이블은 SYS 사용자가 소유
4.데이터 정의어(DDL)
Data Definition Language
데이터 정의어 : SCHEMA, DOMAIN, TABLE, VIEW, INDEX를 정의하거나 변경 또는 삭제할 때 사용하는 언어
↑↑↑↑↑↑
모두데이터 정의 명령어로 실행시 자동 commit 후에
rollback 될수 없으므로 주의해서 실행 !!!!
5.DCL(데이터 제어어)
Data Control Language
!!!권한(Privilege): 특정한 SQL문장을 수행하거나 특정 object에 허가된 작업.
- 시스템 권한(system privilege) :
- 특정한 SQL문장을 실행할 수 있는 권한.
- 대개 데이터베이스 관리자(DBA)가 부여
GRANT 권한[, 권한...] TO 사용자 [, 사용자...]
[WITH ADMIN OPTION];
REVOKE 권한[, 권한...] FROM 사용자 [, 사용자...]
오브젝트 권한(object privilege) :
- 특정한 오브젝트 에 대한 접근을 제어하는 권한.
- DBA는 특정한 object에 대해서 사용자에게 action을 수행하도록 허가 할 수 있다.
- 오브젝트 권한은 오브젝트 타입에 따라 다양하다.
- 오브젝트 소유자는 다른 사용자엑 특정 오브젝트 권한을 부여할 수 있다.
!!!역할(Role): 권한 부여와 접근제어 관리를 손쉽게 하기 위해 연관된 권한들의 집합을 묶어서 정의해 놓은 것.
- Role을 이용하면 권한부여와 회수를 쉽게 할 수 있다.
- 한 사용자가 여러 Role을 access할 수 있고, 여러 사용자에게 같은 Role을 부여할 수 있다.
- 사용자는 Role에 Role을 부여할 수도 있다.
'프로그래밍 > DB' 카테고리의 다른 글
[SQL] 오라클 JOIN 및 개념 (0) | 2018.02.12 |
---|