2014-07-06 4 views
0

데이터베이스에 테이블을 만들고 몇 가지 제약 조건을 추가했습니다. 내 테이블에 DESC 키워드를 사용하면 배치 한 제약 조건에 따라 키 열의 레코드가 변경됩니다.DESC 명령과 키 열

여기에 테이블 정의입니다 :

CREATE TABLE t(
sif INT, 
sif2 INT NOT NULL, 
sif3 INT   UNIQUE, 
sif4 INT NOT NULL UNIQUE 
); 

하고 여기에 DESC 결과입니다 :

 

    mysql> desc t; 
    +-------+---------+------+-----+---------+-------+ 
    | Field | Type | Null | Key | Default | Extra | 
    +-------+---------+------+-----+---------+-------+ 
    | sif | int(11) | YES |  | NULL |  | 
    | sif2 | int(11) | NO |  | NULL |  | 
    | sif3 | int(11) | YES | UNI | NULL |  | 
    | sif4 | int(11) | NO | PRI | NULL |  | 
    +-------+---------+------+-----+---------+-------+ 
    4 rows in set (0.01 sec) 

왜 내 열 SiF4를 키 값 PRI셨어요? 기본 키 정의에 대해서는 언급 한 적이 없지만 DESC 키워드는 열이 기본 키로 설정되었음을 보여줍니다.

답변

2

DESC t 또는 DESCRIBE tSHOW COLUMNS FROM t과 같습니다. SHOW COLUMNS 명령의 출력에서 ​​널 값을 포함 할 수없고 테이블에 기본 키가없는 경우 고유 색인은 PRI으로 표시 될 수 있습니다. 이 NULL 값을 포함하고 할 수없는 경우 UNIQUE 인덱스가 PRI로 표시 될 수 있습니다

: 그것이 documentation에서

sif4 INT NOT NULL UNIQUE 

로 선언 된 것 같이 귀하의 경우에는

sif4 열은 자격 테이블에 PRIMARY KEY가 없습니다. UNIQUE 인덱스는 여러 개의 열이 복합 UNIQUE 인덱스를 형성하는 경우 MUL으로 표시 될 수 있습니다. ; 열의 조합은 고유하지만 각 열은 이 주어진 값의 여러 항목을 계속 보유 할 수 있습니다.