KEY 키워드는 무엇을 의미합니까?


141

이 MySQL 테이블 정의에서 :

CREATE TABLE groups (
  ug_main_grp_id smallint NOT NULL default '0',
  ug_uid smallint  default NULL,
  ug_grp_id smallint  default NULL,
  KEY (ug_main_grp_id)
);

무엇을 않는 KEY의미하는 키워드? 기본 키가 아니며 외래 키가 아니기 때문에 인덱스입니까? 그렇다면 KEY?로 작성된이 유형의 인덱스에서 특별한 점은 무엇 입니까?


1
"KEY"연산자는 더 이상 MySQL Server 5.5에서 사용되지 않는 것 같습니다. 언제 제거되었는지 확실하지 않지만 관련된 문제는 5.1에는 있지만 5.5에는 없습니다.
경사

답변:


190

http://dev.mysql.com/doc/refman/5.1/en/create-table.html 에서 인용

{INDEX|KEY}

그래서 KEY이다 INDEX)


9
일반적으로 {INDEX | KEY} 표기법은 INDEX와 KEY가 동일한 의미를 갖거나 KEY가 INDEX임을 의미하지는 않습니다.)
sergtk

1
@sergtk : MySQL 매뉴얼의 표기법에 따라 FOO | BAR은 키워드 FOO 또는 키워드 BAR을 사용할 수 있음을 의미합니다. 가장 중요한 것은 동의어입니다.
dotancohen

4
바로 그거죠! MySql 매뉴얼은 INDEX와 KEY가 동의어임을 명확히합니다. 이것이 내가 대답을 찬성 한 이유입니다. 그러나 BNF 표기법 {|}은이 경우뿐만 아니라 항상 동의어를 설명했다고 결론을 내릴 수 있습니다.
sergtk

3
이것은 정확하지 않습니다. Quora에서 가장 좋은 답변을 찾았습니다 (사용자 Kristian Kohntopp 참조) quora.com/… : KEY는 제약 조건이며 INDEX는 해당 제약 조건을 구현하는 데 필요한 데이터 구조입니다. 실제로, 예를 들어 FK가있는 경우 KEY key_name (user_id), CONSTRAINT foreign_key_constraint_name FOREIGN KEY (user_id) REFERENCES auth_user (id)추가로 사용되는 INDEX를 지정하려고 할 수 있습니다 (HASH vs BTREE). 이 예는 KEY와 INDEX가 동의어가 아님을 보여줍니다.
oneloop

4
더 이상 사용되지 않는 키워드는 무엇인지 설명한 사람이 없습니다. 기본 키가 있으면 "키"도있는 이유는 무엇입니까? 두 지수의 요점은 무엇입니까? plz는 내가 이것에 대해 아무것도 찾을 수 없다고
밝힙니다

36

KEY일반적으로의 동의어입니다 INDEX. 키 속성 PRIMARY KEYKEY열 정의에 제공 될 때 와 같이 지정할 수도 있습니다 . 이것은 다른 데이터베이스 시스템과의 호환성을 위해 구현되었습니다.

column_definition:
      data_type [NOT NULL | NULL] [DEFAULT default_value]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      ...

참조 : http://dev.mysql.com/doc/refman/5.1/en/create-table.html

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.