Thêm khóa mul MySQL

Xin chào,

Tôi gặp khó khăn trong việc tìm đúng hướng dẫn cách tạo đa khóa trong DB.
Tôi có 4 bàn. trong mỗi tôi có
TIME datatime
Nr int
Tôi muốn chúng làm khóa MUL, bạn có thể giúp tôi tạo . Mã có một lỗi trong cú pháp sql, Bạn có thể xem

  1. TẠO BẢNG BẢNG1 (
  2. giá trị int(11) KHÔNG NULL mặc định '0',
  3. thời gian ngày giờ KHÔNG NULL mặc định '0000-00-00 00. 00. 00',
  4. nr int(10) không dấu KHÔNG NULL mặc định '0',
  5. KEY `thời gian` (`thời gian`),
  6. KEY `node` (`node_nr`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1

Tôi không chắc về dấu nháy đơn.
Tôi rất biết ơn nếu được giúp đỡ, Cảm ơn.

08/12/07 #

5 12819

xin lỗi, đây là mã tôi có

  1. TẠO BẢNG BẢNG1 (
  2. giá trị int(11) KHÔNG NULL DEFAULT '0',
  3. thời gian ngày giờ KHÔNG NULL DEFAULT '0000-00-00 00. 00. 00',
  4. nr int(10) UNSIGNED NOT NULL DEFAULT '0',
  5. KEY `thời gian` (`thời gian`),
  6. KEY `nút` (`nr`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1

nó không hoạt động. mayby ​​bất kỳ ý tưởng. cảm ơn

08/12/07 #

Thêm khóa mul MySQL

xin lỗi, đây là mã tôi có

  1. TẠO BẢNG BẢNG1 (
  2. giá trị int(11) KHÔNG NULL DEFAULT '0',
  3. thời gian ngày giờ KHÔNG NULL DEFAULT '0000-00-00 00. 00. 00',
  4. nr int(10) UNSIGNED NOT NULL DEFAULT '0',
  5. KEY `thời gian` (`thời gian`),
  6. KEY `nút` (`nr`)
  7. ) ENGINE=MyISAM DEFAULT CHARSET=latin1

nó không hoạt động. mayby ​​bất kỳ ý tưởng. cảm ơn
Vui lòng POST lỗi của bạn ở đây để tham khảo?

08/12/07 #

Xin chào,

Tôi đã xóa dấu nháy đơn khỏi mã, nhưng lỗi vẫn còn

  1. mysql> TẠO BẢNG khói (
  2. ->   smoke varchar(5) KHÔNG NULL mặc định '0',
  3. ->   thời gian ngày giờ KHÔNG NULL mặc định '0000-00-00 00. 00. 00',
  4. ->   node_nr int(10) không dấu KHÔNG NULL mặc định '0',
  5. ->   KEY thời gian (thời gian),
  6. ->   KEY nút (node_nr);

LỖI 1064 (42000). Bạn có lỗi trong cú pháp SQL của mình;

Bạn nghĩ gì là sai trong mã? cảm ơn

09/12/07 #

09/12/07 #

tôi đã sử dụng myadmin. ) Và nó hoạt động. ít khó khăn

10/12/07 #

Đăng trả lời của bạn

Đăng nhập để đăng câu trả lời của bạn hoặc Đăng ký một tài khoản miễn phí

Lệnh ALTER TABLE được dùng  để thay đổi cấu trúc của một bảng hiện có. Nó giúp thêm hoặc xóa cột, tạo hoặc hủy chỉ mục, thay đổi loại cột hiện có, đổi tên cột hoặc chính bảng đó. Nó cũng có thể được sử dụng để thay đổi nhận xét cho bảng và loại bảng

cú pháp

ALTER [IGNORE] TABLE tbl_name
    [alter_specification [, alter_specification] ...]
    [partition_options]

alter_specification:
    table_options
  | ADD [COLUMN] col_name column_definition
        [FIRST | AFTER col_name ]
  | ADD [COLUMN] (col_name column_definition,...)
  | ADD {INDEX|KEY} [index_name]
        [index_type] (index_col_name,...) [index_option] ...
  | ADD [CONSTRAINT [symbol]] PRIMARY KEY
        [index_type] (index_col_name,...) [index_option] ...
  | ADD [CONSTRAINT [symbol]]
        UNIQUE [INDEX|KEY] [index_name]
        [index_type] (index_col_name,...) [index_option] ...
  | ADD FULLTEXT [INDEX|KEY] [index_name]
        (index_col_name,...) [index_option] ...
  | ADD SPATIAL [INDEX|KEY] [index_name]
        (index_col_name,...) [index_option] ...
  | ADD [CONSTRAINT [symbol]]
        FOREIGN KEY [index_name] (index_col_name,...)
        reference_definition
  | ALGORITHM [=] {DEFAULT|INPLACE|COPY}
  | ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
  | CHANGE [COLUMN] old_col_name new_col_name column_definition
        [FIRST|AFTER col_name]
  | LOCK [=] {DEFAULT|NONE|SHARED|EXCLUSIVE}
  | MODIFY [COLUMN] col_name column_definition
        [FIRST | AFTER col_name]
  | DROP [COLUMN] col_name
  | DROP PRIMARY KEY
  | DROP {INDEX|KEY} index_name
  | DROP FOREIGN KEY fk_symbol
  | DISABLE KEYS
  | ENABLE KEYS
  | RENAME [TO|AS] new_tbl_name
  | ORDER BY col_name [, col_name] ...
  | CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]
  | [DEFAULT] CHARACTER SET [=] charset_name [COLLATE [=] collation_name]
  | DISCARD TABLESPACE
  | IMPORT TABLESPACE
  | FORCE
  | ADD PARTITION (partition_definition)
  | DROP PARTITION partition_names
  | TRUNCATE PARTITION {partition_names | ALL}
  | COALESCE PARTITION number
  | REORGANIZE PARTITION partition_names INTO (partition_definitions)
  | EXCHANGE PARTITION partition_name WITH TABLE tbl_name
  | ANALYZE PARTITION {partition_names | ALL}
  | CHECK PARTITION {partition_names | ALL}
  | OPTIMIZE PARTITION {partition_names | ALL}
  | REBUILD PARTITION {partition_names | ALL}
  | REPAIR PARTITION {partition_names | ALL}
  | REMOVE PARTITIONING

index_col_name:
    col_name [(length)] [ASC | DESC]

index_type:
    USING {BTREE | HASH}

index_option:
    KEY_BLOCK_SIZE [=] value
  | index_type
  | WITH PARSER parser_name
  | COMMENT 'string'

table_options:
    table_option [[,] table_option] ..  (see CREATE TABLE options)

Tranh luận

TênMô tảCOLUMNDanh sách các cột. Cột FIRSTA có thể được thêm vào một vị trí cụ thể trong một hàng của bảng, sử dụng mệnh đề FIRST hoặc AFTER. Theo mặc định, cột được thêm vào cuối cùng. Bạn cũng có thể sử dụng FIRST và AFTER trong các thao tác THAY ĐỔI hoặc SỬA ĐỔI để sắp xếp lại các cột trong một bảng. MỤC LỤC. KEYKEY thường là từ đồng nghĩa với INDEXCONSTRAINTCONSTRAINT được sử dụng để xác định quy tắc cho phép hoặc hạn chế những giá trị nào có thể được lưu trữ trong cột. PRIMARY KEYA PRIMARY KEY là một chỉ mục duy nhất trong đó tất cả các cột chính phải được xác định là NOT NULL. Nếu không khai báo thì MySQL khai báo ngầm như vậy. Một bảng chỉ có thể có một KHÓA CHÍNH. UNIQUEA Chỉ mục ĐỘC ĐÁO tạo ra một ràng buộc trong đó tất cả các giá trị trong chỉ mục phải khác biệt. Xảy ra lỗi khi bạn cố gắng thêm hàng mới có giá trị khóa khớp với hàng hiện có. FULLTEXTFULLTEXT chỉ mục được sử dụng cho các tìm kiếm toàn văn. Chỉ công cụ lưu trữ MyISAM hỗ trợ các chỉ mục FULLTEXT. Chúng chỉ có thể được tạo từ các cột CHAR, VARCHAR và TEXT. Lập chỉ mục luôn xảy ra trên toàn bộ cột; . KHÔNG GIAN Các chỉ mục KHÔNG GIAN có thể được tạo trên các kiểu dữ liệu không gian. Các loại không gian chỉ được hỗ trợ cho các bảng MyISAM và các cột được lập chỉ mục phải được khai báo là NOT NULL. NGOẠI KHÓA Các bảng InnoDB và NDB hỗ trợ kiểm tra các ràng buộc khóa ngoại. Các cột của bảng được tham chiếu phải luôn được đặt tên rõ ràng. Cả chức năng BẬT XÓA và BẬT CẬP NHẬT trên khóa ngoại. KIỂM TRA Đối với các công cụ lưu trữ khác, Máy chủ MySQL phân tích cú pháp và bỏ qua cú pháp FOREIGN KEY và REFERENCES trong các câu lệnh CREATE TABLE khác với công cụ InnoDB và NDB. Mệnh đề KIỂM TRA được phân tích cú pháp nhưng bị bỏ qua bởi tất cả các công cụ lưu trữ. ALGORITHM=COPYBạn cần điều này khi bạn đang áp dụng ALTER TABLE trong các phiên bản trước của MySQL (< 5. 6) trong khi thay đổi bảng trực tuyến. Phương pháp này được sử dụng để sử dụng bảng tạm thời trong khi thay đổi bảng. ALGORITHM = DEFAULT giống như chỉ định không có mệnh đề ALGORITHM nào cả. ALGORITHM=INPLACEALGORITHM=INPLACE tiếp tục hoạt động bên trong các công cụ lưu trữ InnoDB bằng cách sử dụng kỹ thuật tại chỗ và không hỗ trợ các tính năng này có lỗi. LOCK = DEFAULTCho phép một loạt các sự kiện trùng hợp i. e. đọc và viết khi được hỗ trợ. Nếu không thì cho phép đọc đồng thời khi được hỗ trợ khác thực thi quyền truy cập độc quyền. LOCK = NONEKhi được hỗ trợ, cho phép đọc và ghi đồng thời nếu không sẽ trả về thông báo lỗi. KHÓA = CHIA SẺKhi được hỗ trợ, cho phép đọc đồng thời nhưng hạn chế ghi. Hãy nhớ rằng việc ghi sẽ bị chặn ngay cả khi công cụ lưu trữ hỗ trợ ghi đồng thời cho mệnh đề ALGORITHM đã cho (nếu có) và thao tác ALTER TABLE. Khi các lần đọc đồng thời không được hỗ trợ, một thông báo lỗi sẽ được trả về. LOCK = EXCLUSIVEĐiều này thực thi quyền truy cập độc quyền. Nó xảy ra ngay cả khi các lần đọc/ghi đồng thời được hỗ trợ bởi công cụ lưu trữ cho mệnh đề ALGORITHM đã cho (nếu có) và thao tác ALTER TABLE

Ví dụ cơ bản

Tạo một bảng testtable như hình bên dưới

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

Để đổi tên bảng từ testtable thành w3r1, hãy sử dụng câu lệnh sau

ALTER TABLE testtable RENAME w3r1;

Để thay đổi cột col1 từ INTEGER thành TINYINT NOT NULL (giữ nguyên tên) và để thay đổi cột b từ VARCHAR(15) thành CHAR(25) cũng như đổi tên nó từ col2 thành col3, có thể sử dụng câu lệnh sau

ALTER TABLE w3r1 MODIFY col1 TINYINT NOT NULL, CHANGE col2 col3 VARCHAR(25);

Để thêm cột DẤU THỜI GIAN mới có tên col4, có thể sử dụng câu lệnh sau

ALTER TABLE w3r1 ADD col4 TIMESTAMP;

Để thêm một chỉ mục trên cột col4 và một chỉ mục ĐỘC ĐÁO trên cột col1, có thể sử dụng câu lệnh sau

ALTER TABLE w3r1 ADD INDEX (col4), ADD UNIQUE (col1);

Để xóa cột col3 khỏi bảng w3r1, có thể sử dụng câu lệnh sau

ALTER TABLE w3r1 DROP COLUMN col3;

Để thêm một cột số nguyên AUTO_INCREMENT mới có tên col3, có thể sử dụng câu lệnh sau

ALTER TABLE w3r1 ADD col3 INT UNSIGNED NOT NULL AUTO_INCREMENT,   
ADD PRIMARY KEY (col3);

Ở đây trong ví dụ trên, chúng tôi đã lập chỉ mục col3 (dưới dạng KHÓA CHÍNH) vì các cột AUTO_INCREMENT phải được lập chỉ mục và chúng tôi khai báo col3 là NOT NULL vì các cột khóa chính không thể là NULL

Để thay đổi kiểu dữ liệu của col1 thành BIGINT, có thể sử dụng câu lệnh sau

________số 8

Nếu bạn muốn bao gồm các thuộc tính UNSIGNED DEFAULT 1 và COMMENT 'test column', hãy hiển thị câu lệnh bên dưới -

ALTER TABLE w3r1 MODIFY col1 BIGINT UNSIGNED DEFAULT 1 COMMENT 'test column';

Để thay đổi bộ ký tự mặc định của bảng và tất cả các cột ký tự (CHAR, VARCHAR, TEXT) thành bộ ký tự mới, hãy sử dụng câu lệnh như sau

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

0

MySQL ALTER TABLE chèn cột

Đây là cấu trúc của bảng newbook_mast

Đầu ra mẫu

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

1

Nếu bạn muốn thêm cột 'id' kiểu số nguyên vào bảng newbook_mast, có thể sử dụng câu lệnh sau

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

2

Đây là cấu trúc của newbook_mast sau khi thêm id cột

Thêm khóa mul MySQL

MySQL ALTER TABLE chèn cột FIRST

Đây là cấu trúc của bảng newbook_mast

Đầu ra mẫu

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

1

Nếu bạn muốn chèn một cột id kiểu số nguyên, làm cột đầu tiên của bảng newbook_mast, có thể sử dụng câu lệnh sau

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

4

Đây là cấu trúc của newbook_mast sau khi thêm id cột lúc đầu

Thêm khóa mul MySQL

MySQL ALTER TABLE để chèn cột SAU một cột

Đây là cấu trúc của bảng newbook_mast

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

1

Nếu bạn muốn thêm hai cột cụ thể pub_name và pub_add sau cột pub_id và dt_of_pub tương ứng, thì bạn có thể sử dụng câu lệnh sau

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

6

Đây là cấu trúc của newbook_mast sau khi thêm hai cột vào vị trí cụ thể đã nói ở trên

Thêm khóa mul MySQL

MySQL THAY ĐỔI BẢNG THÊM CHỈ SỐ

Nếu bạn muốn thêm chỉ mục có tên 'cate_id' trên cột 'cate_id' cho bảng 'newbook_mast', bạn có thể sử dụng câu lệnh sau.
CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

7

Đây là chỉ mục cho bảng newbook_mast sau khi thêm chỉ mục có tên cate_id vào cột cate_id

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

8

MySQL THAY ĐỔI BẢNG THÊM CHỈ SỐ DUY NHẤT

Nếu bạn muốn thêm một CHỈ SỐ DUY NHẤT có tên 'cate_id' trên cột 'cate_id' cho bảng 'newbook_mast', bạn có thể sử dụng câu lệnh sau

CREATE TABLE testtable (col1 INT(11), col2 VARCHAR(15));

9

Đây là các chỉ mục duy nhất cho bảng newbook_mast sau khi thêm một chỉ mục duy nhất có tên cate_id trên cột cate_id

Đầu ra mẫu

ALTER TABLE testtable RENAME w3r1;

0

BẢNG THAY ĐỔI MySQL THÊM KHÓA CHÍNH

Đây là cấu trúc của bảng tstpurch. Hình bên dưới cho thấy nó không có khóa chính

ALTER TABLE testtable RENAME w3r1;

1

Nếu bạn muốn tạo một KHÓA CHÍNH trên cột bill_no cho bảng tstpurch, có thể sử dụng câu lệnh sau

ALTER TABLE testtable RENAME w3r1;

2

Đây là khóa chính sau khi thêm khóa chính có tên là invoice_no trên cột invoice_no

ALTER TABLE testtable RENAME w3r1;

3

Dưới đây là chi tiết của chỉ số

Đầu ra mẫu

ALTER TABLE testtable RENAME w3r1;

4

BẢNG THAY ĐỔI MySQL THÊM KHÓA NGOÀI

Đây là cấu trúc của bảng toorder và bảng newbook_mast

ALTER TABLE testtable RENAME w3r1;

5

Nếu bạn muốn tạo một FOREIGN KEY với sự kết hợp của các cột book_id và cate_id của bảng newbook_mast với tham chiếu từ bảng thứ tự, có thể sử dụng câu lệnh sau

Làm cách nào để xác định khóa mul trong MySQL?

Tên xuất phát từ "multiple" vì cho phép nhiều lần xuất hiện của cùng một giá trị. Trực tiếp từ tài liệu MySQL. Nếu Key là MUL , cột này là cột đầu tiên của một chỉ mục không duy nhất trong đó nhiều lần xuất hiện của một giá trị nhất định được phép trong cột .

PRI và MUL trong MySQL là gì?

Nếu nhiều giá trị Khóa áp dụng cho một cột nhất định của bảng, thì Khóa sẽ hiển thị giá trị có mức độ ưu tiên cao nhất, theo thứ tự PRI , UNI , MUL . Một chỉ mục ĐỘC ĐÁO có thể được hiển thị dưới dạng PRI nếu nó không thể chứa các giá trị NULL và không có KHÓA CHÍNH trong bảng.

Làm cách nào để đặt hai khóa chính trong MySQL?

Chúng ta có thể đặt ràng buộc PRIMARY KEY trên nhiều cột của một bảng hiện có bằng cách sử dụng từ khóa ADD cùng với câu lệnh ALTER TABLE .

Làm cách nào để thêm khóa ngoại vào bảng hiện có trong MySQL?

Sau đây là cú pháp của câu lệnh ALTER TABLE để thêm khóa ngoại vào bảng hiện có. .
THAY ĐỔI BẢNG tên_bảng
THÊM [CONSTRAINT [ký hiệu]] KHÓA NGOẠI
[tên_chỉ_số] (tên_cột,. )
THAM KHẢO tên_bảng (tên_cột,. )
BẬT XÓA tham chiếuTùy chọn
TRÊN CẬP NHẬT tham chiếuTùy chọn