Làm cách nào để thay đổi bảng thêm khóa ngoại SQL?

Chúng tôi muốn tạo một bảng có tên

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
6 chứa khóa ngoại đề cập đến cột
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
7 trong bảng
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
8

Giải pháp 1 [bảng mới]

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT FOREIGN KEY REFERENCES city[id]
];

Thảo luận

Để tạo một bảng mới chứa một cột khóa ngoài tham chiếu đến một bảng khác, hãy sử dụng từ khóa

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
9 ở cuối định nghĩa của cột đó. Theo đó với tên của bảng được tham chiếu và tên của cột được tham chiếu trong ngoặc đơn

Trong ví dụ của chúng tôi, chúng tôi tạo bảng

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
6 bằng cách sử dụng mệnh đề
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
1. Chúng tôi liệt kê tên của các cột và đặt kiểu dữ liệu tương ứng của chúng trong ngoặc đơn. Cột
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
2 là khóa ngoại trong bảng này và cho biết giá trị của ID được lưu trữ trong cột
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
7 trong bảng
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
8. Chúng tôi viết
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
9 ở cuối định nghĩa của cột này và theo sau nó là bảng và cột được tham chiếu.
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
6

Hãy nhớ rằng bạn có thể tạo nhiều khóa ngoại cho một bảng

Giải pháp 2 [bảng mới]

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];

Thảo luận

Một cách khác để xác định khóa ngoại trong khi tạo bảng là sử dụng mệnh đề

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
9 ở cuối định nghĩa cột. Trong trường hợp này, sau mệnh đề
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
8, chúng tôi chỉ định cột khóa ngoại. Tiếp theo là mệnh đề
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
9 cùng với tên của bảng và cột được giới thiệu

Bạn có thể tạo khóa ngoại trên nhiều cột, như hình bên dưới

Giải pháp 3 [bảng mới]

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];

Trong ví dụ này, ràng buộc

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];
0 là khóa ngoại bao gồm hai cột.
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];
1 và
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];
2. Hai cột khóa ngoại này đề cập đến hai cột trong bảng
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];
3 –
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];
1 và
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];
2

Đây là một ví dụ khác

Giải pháp 4 [bảng mới]

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
4

Thảo luận

Trong mã này, chúng ta lại có mệnh đề

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];
6 với tên của ràng buộc này. Sử dụng tên dễ đọc và dễ hiểu. Trong ví dụ của chúng tôi, chúng tôi sử dụng tên
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];
7, cho biết bảng và cột có liên quan. Tiếp theo, chúng tôi viết
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
8 và thêm [trong ngoặc đơn] tên của cột trở thành khóa ngoại. Sau đó, chúng ta có mệnh đề
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
9 theo sau là tên của bảng và cột được tham chiếu [ở đây.
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
7]

Giải pháp 5 [bảng hiện có]

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
9

Thảo luận

Cũng có thể thêm khóa ngoại mới vào bảng hiện có. Ở đây, bảng được thay đổi bằng cách sử dụng mệnh đề

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
41. Tên bảng [trong ví dụ của chúng tôi,
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
6] được đặt sau từ khóa
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
41. Tiếp theo, mệnh đề
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
44 được theo sau bởi tên của cột sẽ được sử dụng làm khóa ngoại. Sau đó, chúng ta có
CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
45 với tên của bảng được tham chiếu và tên của cột khóa chính trong ngoặc đơn

Lưu ý rằng bảng bạn đang sửa đổi phải tồn tại trước khi lệnh này được thực thi

Giải pháp 6 [bảng hiện có, ràng buộc khóa ngoài]

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
city_id INT,
FOREIGN KEY [city_id] REFERENCES city[id]
];
4

Thảo luận

Sử dụng truy vấn như thế này nếu bạn muốn đặt tên cột khóa ngoại làm ràng buộc cho bảng hiện có. Ở đây, ràng buộc khóa ngoại được đặt tên là

CREATE TABLE student [
id INT PRIMARY KEY,
first_name VARCHAR[100] NOT NULL,
last_name VARCHAR[100] NOT NULL,
score_id INT,
subject_id INT,
      CONSTRAINT fk_student_score_subject_id 
      FOREIGN KEY [subject_id, score_id] REFERENCES score_subject[subject_id, score_id]
];
7. Nếu bạn không chỉ định tên ràng buộc, cơ sở dữ liệu sẽ tạo một tên ràng buộc mặc định [tên này sẽ thay đổi tùy theo cơ sở dữ liệu]

Bạn có thể thêm khóa ngoại bằng ALTER TABLE không?

Chúng ta có thể thêm ràng buộc FOREIGN KEY vào một cột của bảng MySQL hiện có với sự trợ giúp của câu lệnh ALTER TABLE .

Chúng ta có thể thay đổi khóa ngoại trong SQL không?

Để sửa đổi khóa ngoại. Trong Object Explorer, mở rộng bảng bằng khóa ngoại rồi mở rộng Keys. Nhấp chuột phải vào khóa ngoại cần sửa đổi và chọn Sửa đổi .

Làm cách nào để thêm cột khóa ngoại mới trong MySQL?

Đôi khi cần thêm khóa ngoại vào cột của bảng hiện có; . 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ó. ALTER TABLE table_name . THÊM [CONSTRAINT [biểu tượng]] KHÓA NGOÀI .

Chủ Đề