ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MySQL 제약 조건
    데이터베이스/MySQL 2020. 9. 25. 13:10

    제약조건(constraint)이란?

    데이터의 무결성을 위해 데이터 입력을 받을 때 실행하는 검사 규칙을 의미함.

     

    제약 조건은 'CREATE' 문으로 테이블을 생성하거나 'ALTER'문으로 필드 추가시에도 사용 가능.

    제약 조건 설정하는 방법

    CREATE TABLE Test(
    
    Null_TEST INT NOT NULL,  -- 제약조건으로 NOT NULL 설정
    
    Unique_Test INT UNIQUE,  -- 제약조건으로 UNIQUE 설정
    
    Primary_Test INT PRIMARY KEY,  -- 제약조건으로 PRIMARY KEY 설정
    
    Default_Test INT DEFAULT '디폴트',  -- 제약조건으로 DEFAULT 설정
    
    Foreign_Test INT,  -- FOREIGN KEY 테스트를 위한 필드 선언
    
    FOREIGN KEY (Foreign_Test) REFERENCES Test2 (Foreign_Test)\
    -- 제약 조건 FOREIGN KEY 설정.
    -- 'Foreign_Test'이 'Test2'의 'Foreign_Test'의 값을 참조하도록 설정
    
    );
    
    CREATE TABLE Test2(
    
    Foreign_Test INT  -- Test1에서 참조하는 FOREIGN KEY의 대상값
    
    )

     

    위와 같이 'CREATE'나 'ALTER'와 같이 필드값을 생성하거나 수정, 추가해줄 때 제약조건을 넣어서 설정해줄 수 있다.

     

    혹은 필드값 생성과 별개로 하단에 표기할 수 있다.

     

    CREATE TABLE Test(
    
    Null_TEST INT,
    
    Unique_Test INT,
    
    Primary_Test INT,
    
    Default_Test INT,
    
    constraint test_prkey Primary Key (Primary_Test)
    -- constraint + 조건명 + 제약조건 + (필드값)
    -- 위와 같이 입력하면 해당 필드에 제약조건을 걸 수 있다
    
    );
    

     

    이때는 "'constraint' 명령어+ 조건에 붙일 이름 + 제약 조건 ( 필드명 )" 순으로 작성하면 된다.

     

    예시의 'primary key' 뿐 아니라 다양한 조건 추가가 가능하다.

    제약 조건의 종류

    1. NOT NULL

    CREATE TABLE Test(
    
    Null_TEST INT NOT NULL -- NOT NULL을 설정함
    
    );

     

    'NOT NULL'을 제약 조건으로 추가하면 해당 필드에는 'NULL'값이 들어갈 수 없다는 뜻이다.

    2. UNIQUE

    CREATE TABLE Test(
    
    Unique_Test INT UNIQUE
    
    );

     

    'UNIQUE'를 제약 조건으로 추가하면 해당 필드 내에선 같은 'VALUE'를 입력할 수 없다.

     

    즉 중복값을 입력하는 것이 불가능해진다.

    3. PRIMARY KEY

    CREATE TABLE Test(
    
    Primary_Test INT PRIMARY KEY
    
    );

     

    'PRIMARY KEY'는 'NOT NULL'과 'UNIQUE'의 제약 조건을 합한 것과 같다.

     

    'PRIMARY KEY'를 지정하면 'NULL'값을 넣을 수도 없고 'UNIQUE'하게 중복값을 넣을 수도 없다.

    4. DEFAULT

    CREATE TABLE Test(
    
    Default_Test INT DEFAULT '디폴트'
    
    );

     

    'DEFAULT'를 설정하면 필드에 'VALUE'가 없을 경우에 미리 설정된 값을 입력될 수 있다.

    5. FOREIGN KEY

    CREATE TABLE Test(
    
    FOREIGN KEY (Foreign_Test) REFERENCES Test2 (Foreign_Test)
    
    );
    
    CREATE TABLE Test2(
    
    Foreign_Test INT
    
    );

     

    'FOREIGN KEY'의 경우 테이블이 2개가 필요하다.

     

    그리고 'FOREIGN KEY'를 설정하면 다른 테이블의 필드를 참조하여 두 테이블을 연결하게 만든다.

     

    즉 각각의 테이블은 'FOREIGN KEY'를 통해서 연결될 수 있다.

     

    'FOREIGN KEY'를 사용할 때 참조해야할 필드는 반드시 'UNIQUE' 또는 'PRIMARY KEY'가 적용되어있어야 한다.

Designed by Tistory.