Bài 7: Khóa Ngoại Trong SQL Server - VnCoder
Có thể bạn quan tâm
- Học lập trình
- |
- Bài viết
- |
- Tin tức
- |
- Tuyển dụng
- |
- Liên hệ
- |
- Đăng ký
- |
- Đăng nhập
PHP
Laravel
Android
Java
HTML5
CSS3
NodeJS
VueJS
Swift
Python
Machine Learning
C/C++
Linux/Server
SQL
Javascript
Game
Phân tích thiết kế hệ thống
Servlet/JSP
AI
- Trang chủ
- SQL
- Học SQL Server cơ bản
- Khóa ngoại trong SQL Server
- Bài 1: SQL Server là gì? Đặc điểm và vai trò của nó
- Bài 2: Cách cài đặt và kết nối SQL Server
- Bài 3: Khởi tạo Database trong SQL Server
- Bài 4: Khởi tạo, xóa, sửa Table trong SQL Server
- Bài 5: Kiểu dữ liệu trong SQL Server
- Bài 6: Khóa chính trong SQL Server
- Bài 7: Khóa ngoại trong SQL Server
- Bài 8: Câu lệnh Insert, Update và Delete trong SQL Server
- Bài 9: Các function thông dụng trong SQL Server
- Bài 10: Truy vấn dữ liệu trong SQL Server (Phần 1)
- Bài 11: Truy vấn dữ liệu trong SQL Server (Phần 2)
- Bài 12: SQL Joins
Bài 7: Khóa ngoại trong SQL Server - Học SQL Server cơ bản
Đăng bởi: Admin | Lượt xem: 8539 | Chuyên mục: SQL1. Khóa ngoại Foreign Key là gì?
Khóa ngoại hay còn gọi là foreign key, đây là mối liên kết giữa hai bảng với nhau tạo thành một lược đồ cơ sở dữ liệu quan hệ. Giả sử ta có hai bảng vendor_groups và vendors như sau:CREATE TABLE procurement.vendors ( vendor_id INT IDENTITY PRIMARY KEY, vendor_name VARCHAR(100) NOT NULL, group_id INT NOT NULL, ); CREATE TABLE procurement.vendor_groups ( group_id INT IDENTITY PRIMARY KEY, group_name VARCHAR (100) NOT NULL );Trong đó:- Bảng vendor_group sẽ lưu trữ danh sách các nhóm nhà cung cấp, ví dụ nhà cung cấp hạng A, hạng B, ...
- Bảng vendors sẽ lưu trữ danh sách nhà cung cấp
- Bảng A có khóa ngoại trỏ đến bảng B thì ta gọi A là bảng Cha, còn B là bảng con ( mình tự đặt cho dễ nhớ ;))
- Giá trị của khóa ngoại của bảng con phải tồn tại trong các giá trị khóa chính của bảng cha, đây ta gọi là ràng buộc toàn vẹn.
2. Cách tạo Freign Key trong SQL Server
Tương tự như khóa chính, chúng ta có hai cách để tạo khóa ngoại. Thứ nhất là tạo ngay lệnh create table và thứ hai là sử dụng lệnh alter table.Tạo ngay lệnh Create Table
Ta sử dụng từ khóa CONSTRAINT ngay ở phía cuối danh sách column.CREATE TABLE procurement.vendors ( vendor_id INT IDENTITY PRIMARY KEY, vendor_name VARCHAR(100) NOT NULL, group_id INT NOT NULL, CONSTRAINT fk_group FOREIGN KEY (group_id) REFERENCES procurement.vendor_groups(group_id) );Chú ý:- fk_group là tên của khóa ngoại, ta nên đặt tên để sau này dễ dàng quản lý
Tạo bằng lệnh Alter Table
Lệnh này chỉ được sử dụng sau khi bạn đã tạo xong table.ALTER TABLE procurement.vendors ADD FOREIGN KEY fk_group FOREIGN KEY (group_id) REFERENCES procurement.vendor_groups(group_id)3. Xóa khóa ngoại Foreign Key
Nếu bạn muốn xóa một Foreign Key nào đó thì sử dụng cú pháp sau:ALTER TABLE table_name DROP FOREIGN KEY foreign_key_name;Ví dụ: Xóa foreign key fk_group ra khỏi table vendorsALTER TABLE procurement.vendors DROP FOREIGN KEY fk_group;Trên là cách tạo và quản lý khóa ngoại trong SQL Server.4. Hành động đảm bảo ràng buộc toàn vẹn
Các ràng buộc khóa ngoại giúp đảm bảo tính toàn vẹn của dữ liệu của các tham chiếu, điều đó có nghĩa là khi bạn thêm một dòng record thì giá trị của khóa ngoại phải tồn tại ở bảng cha.Chúng ta có hai hành động chính tác động đến khóa ngoại đó là DELETE và UPDATE, và để giữ tính toàn vẹn thì SQL Server cung cấp hai referential actions như sau:FOREIGN KEY (foreign_key_columns) REFERENCES parent_table(parent_key_columns) ON UPDATE action ON DELETE action;Trong đó:- ON UPDATE action là ràng buộc dành cho hành động cập nhật
- ON DELETE action là ràng buộc dành cho hành động xóa
Action dành cho Delete
Chi tiết như sau:- ON DELETE NO ACTION SQL Server sẽ trả về một lỗi và dữ liệu ở bảng cha sẽ được khôi phục.
- ON DELETE CASCADE SQL Server xóa các hàng trong bảng con tương ứng với hàng đã xóa khỏi bảng cha.
- ON DELETE SET NULL SQL Server sẽ cập nhật dữ liệu ở bảng con sang NULL, để sử dụng được thiết lập này thì column foreign key phải cho phép NULL.
- ON DELETE SET DEFAULT SQL Server sẽ trả về giá trị mặc định, để sử dụng được thiết lập này thì foreign key phải có giá trị DEFAULT.
Action dành cho Update
Chi tiết như sau:- ON UPDATE NO ACTION SQL Server sẽ trả về lỗi và khôi phục hành động update ở bảng cha
- ON UPDATE CASCADE SQL Server sẽ cập nhật dữ liệu ở bảng con tương ứng với bảng cha
- ON UPDATE SET NULL SQL Server sẽ cập nhật dữ liệu ở bảng con sang NULl, để sử dụng được thiết lập này thì column foreign key phải cho phép NULL.
- ON UPDATE SET DEFAULT SQL Server sẽ trả về giá trị mặc định, để sử dụng được thiết lập này thì foreign key phải có giá trị DEFAULT.
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
Chia sẻ bài viết- Bài 1: SQL Server là gì? Đặc điểm và vai trò của nó
- Bài 2: Cách cài đặt và kết nối SQL Server
- Bài 3: Khởi tạo Database trong SQL Server
- Bài 4: Khởi tạo, xóa, sửa Table trong SQL Server
- Bài 5: Kiểu dữ liệu trong SQL Server
- Bài 6: Khóa chính trong SQL Server
- Bài 7: Khóa ngoại trong SQL Server
- Bài 8: Câu lệnh Insert, Update và Delete trong SQL Server
- Bài 9: Các function thông dụng trong SQL Server
- Bài 10: Truy vấn dữ liệu trong SQL Server (Phần 1)
- Bài 11: Truy vấn dữ liệu trong SQL Server (Phần 2)
- Bài 12: SQL Joins
Từ khóa » Khóa Phụ Sql
-
Khóa Ngoại Foreign Key Trong SQL Server
-
Khóa Ngoại Trong SQL Server | How Kteam
-
Khác Biệt Giữa Khóa Chính Và Khóa Ngoại Trong SQL - Viblo
-
Cách Sử Dụng Ràng Buộc FOREIGN KEY Trong SQL - BAC
-
Khóa Ngoại Foreign Key Trong SQL - Freetuts
-
Khóa Ngoại (Foreign Key) Trong MySQL - Freetuts
-
Thế Nào Là Khóa Phụ - Xây Nhà
-
[Tự Học SQL] Tìm Hiểu Về Khoá Chính(PRIMARY KEY), Khoá Ngoại ...
-
Hệ Quản Trị SQL Server - Xóa Khóa Ngoại
-
Hạn Chế Tính Toàn Vẹn Tham Chiếu Không đánh Giá Chính Xác Khi Sử ...
-
Hệ Quản Trị SQL Server - Khóa Ngoại Trong SQL
-
Xóa Khóa Ngoại Trong SQL Server
-
Chi Tiết Bài Học 05.4 Các Ràng Buộc SQL-FOREIGN KEY - Vimentor
-
FOREIGN KEY Trong SQL Server