Khóa ngoại trong sql là gì

Khóa ngoại được dùng để làm tăng tính tsay mê chiếu trong cửa hàng tài liệu Squốc lộ Server. Khóa ngoại nghĩa là giá trị vào bảng này cần mở ra trong bảng không giống.

Bạn đang xem: Khóa ngoại trong sql là gì

Bảng tham mê chiếu call là bảng bà bầu, còn bảng đựng khóa nước ngoài Call là bảng nhỏ. Khóa ngoại vào bảng bé hay tsi mê chiếu tới khóa chínhPRIMARY KEYvào bảng chị em.

Khóa nước ngoài có thể được chế tạo ra bởi lệnhCREATE TABLEhoặc lệnhALTER TABLE.

Cú pháp:

CREATE TABLE bang_bé ( cot1 kieudulieu < NULL | NOT NULL >, cot2 kieudulieu < NULL | NOT NULL >, … CONSTRAINT fk_ten FOREIGN KEY (cot_con1, cot_con2, … cot_con_n) REFERENCES bang_me (cot_me1, cot_me2, … cot_me_n) < ON DELETE NO ACTION > < ON UPDATE CASCADE > );

Giải mê thích các tmê man số trên

bang_con

Tên của bảng con ước ao tạo thành.

cot1, cot2

Cột ao ước sinh sản trong bảng. Mỗi cột có một một số loại tài liệu, buộc phải được chỉ định và hướng dẫn là cất quý hiếm NULL tốt NOT NULL, nếu như không sẽ mang định là NULL.

fk_ten

Tên của buộc ràng khóa nước ngoài ý muốn sinh sản.

cot_con1, cot_con2, … cot_con_n

Cột vào bang_nhỏ ao ước tsay mê chiếu tới khóa bao gồm trong bang_me.

bang_me

Tên của bảng người mẹ đựng khóa thiết yếu được dùng vào bang_con.

cot_me1, cot_me2, … cot_me_n

Cột khiến cho khóa bao gồm trong bang_me. Khóa ngoại sẽ tạo nên buộc ràng giữa tài liệu và những cột cot_con1, cot_con2, … cot_con_n trong bang_nhỏ.

ON DELETE

Tùy chọn. Cho biết đang làm cái gi với tài liệu nhỏ Khi tài liệu chị em bị xóa. Có những chắt lọc NO ACTION, CASCADE, SET NULL và SET DEFAULT.

ON UPDATE

Tùy chọn. Cho biết vẫn làm những gì cùng với tài liệu bé lúc dữ liệu người mẹ được cập nhật. Có những sàng lọc NO ACTION, CASCADE, SET NULL cùng SET DEFAULT.

Xem thêm: #1 : Top 20 Game Nhập Vai Offline Hay Cho Pc, Top Game Offline Hay Cho Pc Và Link Download

NO ACTION

Dùng với ON DELETE hoặc ON UPDATE, nghĩa là ko làm những gì cùng với dữ liệu con lúc dữ liệu người mẹ bị xóa hoặc update.

CASCADE

Dùng với ON DELETE hoặc ON UPDATE, tức là tài liệu bé bị xóa hoặc update khi tài liệu người mẹ bị xóa hoặc update.

SET NULL

Dùng cùng với ON DELETE hoặc ON UPDATE, nghĩa là tài liệu nhỏ được đặt là NULL Khi tài liệu mẹ bị xóa hoặc update.

SET DEFAULT

Dùng với ON DELETE hoặc ON UPDATE, tức thị dữ liệu bé được đặt thành cực hiếm khoác định khi dữ liệu chị em bị xóa hoặc cập nhật.

Khóa nước ngoài Foreign Key (Cascade Delete) vào Squốc lộ ServerKhóa nước ngoài Foreign Key (Set Null) trong SQL Server

lấy ví dụ :

Chúng ta đã nhị bảng"products" và"inventory". Trong bảng "products" có khóa chủ yếu là"product_id" cũng chính là khóa ngoại trong bảng "inventory".

CREATE TABLE products ( product_id INT PRIMARY KEY, product_name VARCHAR(50) NOT NULL, category VARCHAR(25) ); CREATE TABLE inventory ( inventory_id INT PRIMARY KEY, product_id INT NOT NULL, quantity INT, min_level INT, max_level INT, CONSTRAINT fk_inv_product_id FOREIGN KEY (product_id) REFERENCES products (product_id) ); Kết quả:

*

Tên khóa buộc ràng khóa nước ngoài trong bảng "inventory"fk_inv_product_id.Nó đang thiết lập quan hệ nam nữ duy trì hai bảng"inventory" với "products" bên trên cộtproduct_id.

Chúng ta hoàn toàn có thể bình chọn 2 bảng:.

*
*

Tạo khóa nước ngoài áp dụng các trường

Create foreign key with more than one field

Trong ví dụ bên trên bọn họ chế tạo khóa nước ngoài áp dụng một cột, vào ví dụ sau bọn họ sẽ khởi tạo khóa nước ngoài nhiều hơn nữa một trường.

Giờ chúng ta tạo thành nhì bảng"products2" "inventory2". Trong ví dụ này bảng "products2"gồm khóa đó là nhì cộtproduct_name vàlocation. Do đó, bảng lắp thêm nhị nên tất cả khóa ngoại là nhị cột này

Trong ví dụ này, thương hiệu khóa nước ngoài làfk_inv_product tđắm say chiếu mang lại bảng products gồm nhì trường: the product_name vàlocation.

CREATE TABLE products2 ( product_name VARCHAR(50) NOT NULL, location VARCHAR(50) NOT NULL, category VARCHAR(25) CONSTRAINT products_pk PRIMARY KEY (product_name, location) ); CREATE TABLE inventory2 ( inventory_id INT PRIMARY KEY, product_name VARCHAR(50) NOT NULL, location VARCHAR(50) NOT NULL, quantity INT, min_level INT, max_level INT, CONSTRAINT fk_inv_product FOREIGN KEY (product_name, location) REFERENCES products2 (product_name, location) ); Kết quả: