Từ khóa KEY có nghĩa là gì?


141

Trong định nghĩa bảng MySQL này:

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)
);

Không những gì KEYtừ khóa nghĩa là gì? Nó không phải là khóa chính, nó không phải là khóa ngoại, vậy nó chỉ là một chỉ mục? Nếu vậy, điều gì đặc biệt về loại chỉ mục này được tạo ra KEY?


1
Dường như toán tử "KEY" không còn được sử dụng trong MySQL Server 5.5. Không chắc chắn khi nào nó được gỡ bỏ, nhưng một vấn đề tôi gặp phải với nó hiện diện vào ngày 5.1, nhưng không phải là 5.5.
nghiêng

Câu trả lời:


190

Trích dẫn từ http://dev.mysql.com/doc/refman/5.1/en/create-table.html

{INDEX|KEY}

Vậy KEYlà một INDEX;)


9
Ký hiệu {INDEX | KEY} nói chung không có nghĩa là INDEX và KEY có cùng ý nghĩa hoặc KEY là INDEX;)
sergtk

1
@sergtk: Theo ký hiệu trong hướng dẫn sử dụng MySQL, FOO | BAR có nghĩa là từ khóa FOO hoặc từ khóa BAR có thể được sử dụng. Id est, chúng là từ đồng nghĩa.
dotancohen

4
Chính xác! Hướng dẫn MySql làm rõ rằng INDEX và KEY là từ đồng nghĩa - đây là lý do tại sao tôi nêu lên câu trả lời. Nhưng có thể kết luận từ câu trả lời rằng Ký hiệu BNF {|} luôn luôn mô tả các từ đồng nghĩa, không chỉ trong trường hợp này.
sergtk

3
Điều này LAF không đúng. Tôi đã tìm thấy câu trả lời tốt nhất trong Quora (xem người dùng Kristian Kohntopp) quora.com/ Kẻ : KEY là một ràng buộc, INDEX là cấu trúc dữ liệu cần thiết để thực hiện ràng buộc đó. Trong thực tế, nếu bạn có FK chẳng hạn KEY key_name (user_id), CONSTRAINT foreign_key_constraint_name FOREIGN KEY (user_id) REFERENCES auth_user (id)thì bạn cũng có thể muốn chỉ định INDEX nào được sử dụng (HASH vs BTREE). Ví dụ này cho thấy KEY và INDEX không đồng nghĩa.
oneloop

4
Không ai từng giải thích việc sử dụng từ khóa đó là gì, nếu nó lỗi thời hay không. Nếu tôi có khóa chính thì tại sao cũng có "khóa"? điểm của hai chỉ số là gì? Xin hãy khai sáng cho tôi Tôi không thể tìm thấy bất cứ điều gì về điều này
Barbz_YHOOL

36

KEYthường là một từ đồng nghĩa cho INDEX. Thuộc tính khóa PRIMARY KEYcũng có thể được chỉ định như chỉ KEYkhi được đưa ra trong một định nghĩa cột. Điều này đã được thực hiện để tương thích với các hệ thống cơ sở dữ liệu khác.

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

Tham chiếu: http://dev.mysql.com/doc/refman/5.1/en/create-table.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.