728x90

■제약조건

=> 제약을 주는 조건

=> 조건이라는 걸 주어서 데이터에 무결성을 보장 

=> 조건에 맞는 데이터만 저장하게 함

=> 제약조건은 컬럼에 설치

=> 하나의 컬럼에 여러개의 제약조건 설치

not null -> 반드시 값이 있어야 한다.

unique -> 중복을 허용하지 않음, null 허용

primary key -> not null+unique, 테이블을 대표하는 컬럼에 설치,

가장 이상적인 테이블은 한개의 컬럼에 한개의 PK가 설치, 검색 속도 성능 향상

foreign key -> 대른 테이블의 컬럼의 데이터를 참조 -> 테이블과 테이블간의 관계 설정,

참조할 컬럼과 참조한 컬럼의 데이터 타입과 길이가 반드시 같아야 함,

또한 참조할 컬럼은 반드시 pk, uk설치가 되어 있어야함

check -> 사용자가 직접 조건을 만들어서 조건에 맞는 데이터만 삽입

 

● 제약 조건 지침

- 제약 조건에 이름을 지정하지 않으면 Oracle server가 SyS_Cn형식으 이름을 생성한다.

- 제약 조건 생성 시기

  - 테이블이 생성될때 

    (create table 포함)

  - 테이블이 생성된 후에

- 열 레벨 또는 테이블 레벨로 제약조건을 정의.

- 데이터 딕셔너리에서 제약조건을 본다

 

제약조건 정의방법
다른방법(가독성이 떨어짐)

* not null은 컬럼옆에 붙인다

** 복합 primary key

쇼핑몰에서는  주문내역을 한 주문번호에 여러개의 물품을 사기때문에 컬럼을 복합하여 PK지정을 한다.

 

● foreign key

● check 제약조건

* 코드 파일저장 

save test.sql

(.sql) => 스크립트 파일 

 

* 저장 파일 실행

@test.sql

■ 시퀀스

increment => 증가값

start with => 첫번째 생성되는 시퀀스 넘버

maxvalue => 최대로(마지막) 생성 시퀀스 넘버

nocache => defalut 값

nocycle => 사이클 허용

시퀀스 사용의 예

start with 변경불가

● 인덱스

4-~15%의 데이터를 찾을때 최적의 성능을 발휘한다.

 

● 뷰

내가 원하는 특정 데이터들만 볼 수 있는 기능

table 물리적 구조 (저장공간 할당)

- data dictionary(구조정보,제약조건정보)

- 실제 data 저장공간

view 논리/가짜/가상 table

- 물리적 구조X (dataX)

- 수정이 없기 때문에 alte는 사용X

- 대신 or replace로 사용

select rownum, last_name, salary
from employees
where rownum < 4
/
select rownum, last_name, salary
from employees
where rownum > 4
/

▲위의 코드는 불가능 아무것도 나오지 않는다./

select last_name, salary
from
(select last_name, salary
from employees
order by salary asc) => 테이블로 사용해서 정렬하고 시작한다.
where rownum<4
/
select department_id, avgsal
from
(select department_id, avg(salary) as avgsal
from employees
group by department_id
order by avg(salary) desc)
where rownum<4
/

 

■ DCL

DB보안정책

1) 권한이 없는 유저가 DB에 접근하는 것을 방지(인증서..)

2) 권한이 있는 유저가 DB내 불법적인 행위를 방지(제어)

 

select => 사용자, 개발자, DBA

DML => 개발자, DBA

DDL => 개발자,DBA

DCL => DBA

 

시스템 권한 100가지 -> DBA

객체 권한 table, view조작 -> DBA,권한소유자

 

dba

-sysdba

-sysopper

-dba

 

1. 사용자 생성 -> ID/PW

2. 권한부여 /회수

 

권한 부여 grant ~ to

grant create session to test
/

▲세션 접속 권한 부여

grant create table to test
/

▲테이블 생성 권한 부여

grant connect, resource to test
/

▲connect, resource 권한 부여

revoke connect, resource to test
/

▲connect, resource 권한 회수

롤이란 권한의 집합

connect => 60가지 db액세스

resource => 40가지 자원액세스

롤에 대한 예시

계정잠금

alter user test
account lock;

잠금풀기 => unlock

 

PS. 지금까지 배웟던 DB를 기초로 하여 SQLD에 접목하여 합격하도록 하자!

728x90
복사했습니다!