Database/Theory

[Database/Theory]06. SQL syntax(4) - Constraint, rest

양승길 2016. 6. 7. 00:12

06. SQL syntax(4) - Constraint, rest

- Constraint

   Table을 만들기 전제 규정하는 것을 제약조건(Constraint)라고 한다.

   제약조건은 결함이 없다는 뜻을 가진 무결성을 특징으로 표현한다.

   그 무결성은 두가지로 분류된다.

   

   * 개체 무결성 : Table의 한 Record에 대하여, 대표하는 값이 부재상태가 있을수 없고 고유하지 아니하여야 되는 특징.

   * 참조 무결성 : Table끼리 관계를 가진 특징. 

                       다른 Table의 Column을 참조하는 Table의 Record에 대하여, 

                       참조되는 Column의 값이 들어갈 수 없다는 특징.

   

   * 제약조건 Key Word

     PRIMARY KEY(PK) : 개체 무결성을 가진 키. Record를 대표하는 Column. NOT NULL과 UNIQUE의 성격이 있다. 

     FOREIGN KEY(FK) : 참조 무결성을 가진 키. 참조되는 Column의 관계를 적용하고 설정.

     CHECK(CK)     : TRUE값을 지키는 조건을 설정.


   Ex : 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
CREATE TABLE emp_test01(
    /*제약 조건의 이름을 걸어준다*/
    id            NUMBER(3)        CONSTRAINT    emp_test01_id_pk        PRIMARY KEY,
    name        VARCHAR2(12)    CONSTRAINT    emp_test01_name_nn        NOT NULL,
    salary        NUMBER(7,2)        CONSTRAINT    emp_test01_salary_ch    CHECK (SALARY >=1000),
    title        VARCHAR2(15)    DEFAULT '사원',
    in_date        DATE            DEFAULT SYSDATE,
    dept_name    VARCHAR2(15)    
);
 
 
 
INSERT
INTO emp_test01
VALUES(1 , '홍길동' , 2000 , '부장' , SYSDATE , '총무부' );
 
/*
  1행에 오류:
  ORA-00001: 무결성 제약 조건(SCOTT.EMP_TEST01_ID_PK)에 위배됩니다
*/
 
 
INSERT
INTO emp_test01
VALUES2 , NULL , 3000'사원' , SYSDATE , '총무부' );
 
 
/*
  3행에 오류:
  ORA-01400: NULL을 ("SCOTT"."EMP_TEST01"."NAME") 안에 삽입할 수 없습니다
*/
 
 
INSERT
INTO emp_test01
VALUES(2,'홍길동',500,'사원',SYSDATE,'총무부');
 
 
/*
  1행에 오류:
  ORA-02290: 체크 제약조건(SCOTT.EMP_TEST01_SALARY_CH)이 위배되었습니다
*/


- rest


   * set linesize : 출력할 Table 너비 설정

   * set pagesize : 출력할 Table 폭   설정

   * COMMIT : 현재까지 입력된 Table의 내용을 Persistant 저장

     ROLLBACK : COMMIT이후에 입력된 모든 명령어들 취소

   * Default가 설정된 DataType은 NULL, null, ''로 대입이 가능하다.

   * USER: 사용자의 정보

     Ex 

1
 INSERT INTO table VALUES(USER);
cs