Trong bài viết này, tôi sẽ thảo luận về Ràng buộc Khoá ngoại trong Oracle. Khóa ngoại trỏ đến khóa chính hoặc khóa duy nhất

Bạn đang xem: ví dụ về khóa ngoại oracle sql

Ràng buộc Khoá Ngoại trong Oracle với các ví dụ

Trong bài viết này, tôi sẽ thảo luận về Ràng buộc khóa ngoại trong Oracle với các ví dụ. Vui lòng đọc bài viết trước của chúng tôi, nơi chúng tôi đã thảo luận về Ràng buộc khóa chính trong Oracle cùng với các ví dụ. Ở cuối bài viết này, tôi sẽ thảo luận mọi thứ về Ràng buộc khóa ngoại trong Oracle với các ví dụ.

Ràng buộc khóa ngoại trong Oracle là gì?

Tạo mối quan hệ giữa các bảng cơ sở dữ liệu là một trong những khái niệm quan trọng nhất trong cơ sở dữ liệu. Mối quan hệ giữa nhiều bảng cung cấp cơ chế liên kết các kho dữ liệu trong nhiều bảng và truy xuất chúng một cách hiệu quả.

Để tạo liên kết giữa hai bảng, chúng ta phải chỉ định Khóa ngoại trong một bảng tham chiếu đến một cột trong bảng khác. Điều đó có nghĩa là ràng buộc Khóa ngoại trong Oracle được sử dụng để liên kết hai bảng với nhau và sau đó xác minh sự tồn tại của một dữ liệu bảng trong các bảng khác.

Lưu ý: Khóa ngoại trong một BẢNG trỏ đến khóa chính hoặc khóa duy nhất trong một bảng khác trong Oracle. Các ràng buộc khóa ngoại về cơ bản được sử dụng để thực thi tính toàn vẹn của tham chiếu.

Cách tạo Ràng buộc Khoá Ngoại trong Oracle?

Để tạo Ràng buộc khóa ngoại trong Oracle, chúng tôi yêu cầu những điều sau

  1. Chúng tôi yêu cầu hai bảng để liên kết với nhau và hai bảng đó phải có một cột chung để liên kết các bảng.

  2. Cột chung có trong cả hai bảng không được trùng tên nhưng kiểu dữ liệu của chúng phải giống nhau.

  3. Cột chung có trong bảng mẹ hoặc bảng chính được gọi là cột khóa tham chiếu và hơn nữa, cột khóa tham chiếu không được chứa bất kỳ giá trị trùng lặp nào. Vì vậy, chúng ta cần áp đặt ràng buộc chính DUY NHẤT hoặc CHÍNH XÁC cho cột đó.

  4. Cột chung có trong bảng con hoặc bảng chi tiết được gọi là cột Khoá ngoại và chúng ta cần áp đặt ràng buộc Khoá ngoại cho cột tham chiếu đến cột khoá tham chiếu của bảng chính. < / p>

  5. Giá trị cột khóa ngoại chỉ được khớp với khóa chính hoặc giá trị cột khóa duy nhất. Nói chung, khóa chính hoặc Khóa duy nhất không được phép trùng lặp các giá trị trong khi khóa ngoại được phép trùng lặp & amp; giá trị rỗng.

Nếu những điểm trên vẫn chưa rõ ràng vào lúc này, đừng lo lắng, chúng tôi sẽ cố gắng giải thích tất cả những điểm trên bằng các ví dụ.

Áp đặt Ràng buộc NGOẠI KHÓA ở cấp độ cột trong Oracle.

Cú pháp: & lt; TÊN CỘT THÔNG DỤNG CỦA CON & gt; & lt; Loại dữ liệu & gt; [SIZE] TÀI LIỆU THAM KHẢO & lt; TÊN BẢNG PHỤ HUYNH & gt; (& lt; TÊN CỘT CHUNG CỦA PHỤ HUYNH & gt;)

Hãy để chúng tôi hiểu cách tạo mối quan hệ khóa chính và khóa ngoại giữa hai bảng trong Oracle bằng cách áp đặt các Ràng buộc NGOẠI KHÓA ở Cấp Bảng. Đầu tiên, chúng ta sẽ tạo một bảng với tên Department bằng cách sử dụng ràng buộc CHÍNH CHÍNH bằng cách thực hiện truy vấn CREATE Table bên dưới. Bảng này sẽ là bảng mẹ hoặc bảng chính chứa cột khóa tham chiếu. Ở đây, chúng tôi đã tạo cột tham chiếu (Id) bằng cách sử dụng ràng buộc Khóa chính.

 TẠO BẢNG
(
    Id INT KEY CHÍNH,
    Đặt tên VARCHAR2 (20),
    Vị trí VARCHAR2 (20)
);

Sau khi bạn tạo bảng Cục, bây giờ hãy chèn một số dữ liệu chính vào bảng này bằng cách thực thi Tập lệnh SQL bên dưới.

 CHÈN VÀO Phòng (Id, Tên, Vị trí) CÁC GIÁ TRỊ (10, 'IT', 'Hyderabad');
INSERT INTO Department (Id, Name, Location) CÁC GIÁ TRỊ (20, 'HR', 'Delhi');
INSERT INTO Department (Id, Name, Location) CÁC GIÁ TRỊ (30, 'Finance', 'Mumbai');

Ngay bây giờ. chúng ta sẽ tạo một bảng khác với tên Employee bằng cách sử dụng ràng buộc FOREIGN KEY bằng cách thực thi SQL Script bên dưới. Bảng này sẽ là bảng khóa ngoại hoặc bảng con của chúng ta. Ngoài ra, nếu bạn nhận thấy trong truy vấn dưới đây, chúng tôi đã đánh dấu cột DepartmentId là TỪ KHÓA NGOẠI LỆ tham chiếu đến cột Id của bảng Department.

 TẠO NHÂN VIÊN BẢNG
(
    ID INT KEY CHÍNH,
    Đặt tên VARCHAR2 (20),
    Lương INT,
    DepartmentId INT TÀI LIỆU THAM KHẢO Bộ phận (Id)
);

Khi bạn thực hiện các Câu lệnh CREATE Bảng ở trên, bảng Nhân viên sẽ được tạo với các Ràng buộc Khóa Ngoại.

Lưu ý: Cột Bộ phận trong bảng Nhân viên và cột Id của bảng Bộ phận phải có cùng kiểu dữ liệu, nếu không thì không thể có mối quan hệ khóa ngoại. Trong trường hợp của chúng tôi, cả hai cột đều có cùng kiểu dữ liệu INT.

Bây giờ, hãy thực thi câu lệnh INSERT sau để chèn ba bản ghi vào bảng Nhân viên.

 CHÈN vào GIÁ TRỊ Nhân viên (101, 'Anurag', 25000, 10);
CHÈN vào GIÁ TRỊ Nhân viên (102, 'Pranaya', 32000, 20);
CHÈN vào GIÁ TRỊ Nhân viên (103, 'Hina', 35000, 30);

Khi bạn thực hiện các câu lệnh chèn ở trên, ba bản ghi được chèn vào bảng Nhân viên như mong đợi như thể hiện trong hình ảnh bên dưới.

Ràng buộc khóa ngoại trong Oracle với ví dụ

Bây giờ, hãy thử thực hiện Câu lệnh INSERT sau. Ở đây, chúng tôi đang chuyển giá trị Mã Bộ phận là 40, giá trị này thực sự không tồn tại trong bảng Bộ phận.

 CHÈN vào GIÁ TRỊ Nhân viên (104, 'Sambit', 52000, 40); 

Khi bạn cố gắng thực thi Câu lệnh SQL INSERT ở trên, bạn sẽ gặp lỗi ORA-02291: ràng buộc toàn vẹn (SYSTEM.SYS_C007663) bị vi phạm – không tìm thấy khóa cha như được hiển thị trong hình ảnh bên dưới. Nó nói rõ ràng rằng bạn không thể thêm hoặc cập nhật một hàng con nếu giá trị khóa ngoại không tồn tại trong bảng mẹ. Trong trường hợp này, giá trị khóa ngoại, tức là 40 mà chúng tôi muốn chèn vào bảng nhân viên không tồn tại trong bảng Bộ phận và do đó chúng tôi gặp lỗi bên dưới.

Ràng buộc khóa ngoại

Các quy tắc cần tuân theo khi làm việc với Khóa ngoại trong Oracle:

Khi chúng tôi áp đặt ràng buộc Khoá ngoại và thiết lập mối quan hệ giữa các bảng trong Oracle, 3 quy tắc sau đây sẽ xuất hiện.

Quy tắc 1:

Chúng tôi không thể chèn một giá trị vào cột khóa ngoại nếu giá trị đó không tồn tại trong cột khóa tham chiếu của bảng mẹ (chính). Ví dụ:

 CHÈN vào GIÁ TRỊ Nhân viên (104, 'Sambit', 52000, 40); 

Khi chúng tôi cố gắng thực thi Câu lệnh INSERT ở trên, bạn sẽ gặp lỗi ORA-02291: ràng buộc toàn vẹn (SYSTEM.SYS_C007663) bị vi phạm – không tìm thấy khóa mẹ như được hiển thị trong hình ảnh bên dưới. < / p>

Ràng buộc khóa ngoại trong Oracle với ví dụ

Quy tắc 2:

Chúng tôi không thể cập nhật giá trị khóa tham chiếu của bảng mẹ nếu giá trị đó có bản ghi con tương ứng trong bảng con mà không giải quyết những việc cần làm với các bản ghi con. Ví dụ:

CẬP NHẬT BỘ BỘ PHẬN Id = 100 WHERE Id = 10;

Vì chúng tôi có một bản ghi con với id phòng ban 10 trong bảng Nhân viên, do đó, việc cố gắng cập nhật bản ghi giống nhau trong bảng Phòng ban sẽ khiến bạn gặp lỗi ORA-02292: ràng buộc toàn vẹn (SYSTEM.SYS_C007663) bị vi phạm – bản ghi con được tìm thấy như trong hình ảnh bên dưới.

Ràng buộc khóa ngoại trong Oracle

Quy tắc 3:

Chúng tôi không thể xóa bản ghi khỏi bảng mẹ với điều kiện là giá trị khóa tham chiếu bản ghi có bản ghi con trong bảng con mà không giải quyết những việc cần làm với bản ghi con. Ví dụ:

XÓA KHỎI Sở TẠI ĐÂU Id = 10;

Vì chúng tôi có một bản ghi con với id phòng ban 10 trong bảng Nhân viên, vì vậy, việc cố gắng xóa bản ghi giống nhau trong bảng Phòng ban sẽ gây ra cho bạn lỗi ORA-02292: ràng buộc toàn vẹn (SYSTEM.SYS_C007663) bị vi phạm – bản ghi con được tìm thấy như trong hình ảnh bên dưới.

Ràng buộc khóa ngoại

Lưu ý: Nếu chúng tôi muốn xóa hoặc cập nhật một bản ghi khỏi bảng mẹ khi chúng có các bản ghi con tương ứng trong bảng con thì chúng tôi cần cung cấp một số bộ quy tắc để thực hiện xóa và cập nhật các phép toán trên bảng cha. Các quy tắc đó được gọi là “ QUY TẮC CASCADE ” và chúng tôi sẽ thảo luận chi tiết trong bài viết tiếp theo của chúng tôi.

Làm cách nào để thêm Ràng buộc Khoá Ngoại vào Bảng Hiện có trong Oracle?

Cũng có thể tiên tri thêm các Ràng buộc Khoá Ngoại vào Bảng Hiện có. Hãy để chúng tôi hiểu điều này với một ví dụ. Trước tiên, hãy tạo một bảng không có ràng buộc Khoá ngoại bằng cách thực thi Câu lệnh SQL bên dưới.

 TẠO BẢNG NHÂN VIÊN1
(
    ID INT KEY CHÍNH,
    Đặt tên VARCHAR2 (20),
    Lương INT,
    DepartmentId INT
);

Sau khi bảng được tạo, chúng tôi muốn thêm Khoá Ngoại vào cột DepartmentId, cột này sẽ tham chiếu đến cột Id của bảng Department. Bạn có thể làm điều tương tự bằng cách sử dụng câu lệnh ALTER TABLE như được hiển thị trong truy vấn bên dưới.

ALTER TABLE Nhân viên1 THÊM TỪ KHÓA NGOÀI NƯỚC (DepartmentId) TÀI LIỆU THAM KHẢO Bộ phận (Id);

Áp đặt Ràng buộc NGOẠI KHÓA ở Cấp Bảng trong Oracle.

Trong khi tạo ràng buộc khóa ngoại ở cấp bảng, chúng ta cần sử dụng mệnh đề khóa ngoài chỉ định rõ ràng trong khi không bắt buộc phải tạo khi tạo ở cấp cột vì ràng buộc chỉ được xác định bên cạnh cột khóa ngoại. Sau đây là cú pháp để Tạo Ràng buộc NGOẠI KHÓA ở Cấp Bảng.

Cú pháp: TẠO BẢNG & lt; TN & gt; (& lt; COL1 & gt; & lt; DT & gt; [SIZE], & lt; COL2 & gt; & lt; DT & gt; [SIZE], ……………………… .. , TỪ KHÓA NGOẠI LỆ (& lt; COL1 & gt;, & lt; COL2 & gt;, …… ..) TÀI LIỆU THAM KHẢO & lt; TÊN BẢNG PHỤ HUYNH & gt; (& lt; COL1 & gt ;, & lt; COL2 & gt;, ……………… .);

Ví dụ:

Trong câu lệnh Tạo Bảng, trước tiên, chúng tôi tạo tất cả các cột, sau đó chúng tôi tạo các ràng buộc NGOẠI KHÓA và trong khi tạo các ràng buộc NGOẠI KHÓA, chúng tôi cần chỉ định cột NGOẠI KHÓA, tức là DepartmentId trong bảng của chúng tôi và tên bảng Tham chiếu và tức là cột Id bảng Phòng ban là Phòng ban (Id).

 TẠO BẢNG NHÂN VIÊN2
(
    ID INT KEY CHÍNH,
    Đặt tên VARCHAR2 (20),
    Lương INT,
    DepartmentId INT,
    TỪ KHÓA NGOẠI LỆ (DepartmentId) TÀI LIỆU THAM KHẢO Phòng (Id)
);

Sự khác biệt giữa Khóa chính và Ràng buộc khóa ngoài trong Oracle là gì?

Khóa chính trong Oracle:

  1. Ràng buộc Khóa Chính trong Oracle là xác định duy nhất một bản ghi trong bảng.

  2. Ràng buộc Khóa chính không chấp nhận giá trị rỗng hoặc giá trị trùng lặp trên cột mà nó được áp dụng.

  3. Chúng tôi chỉ có thể tạo một Khóa chính trên bảng trong Oracle và ràng buộc khóa chính đó có thể được tạo trên một cột hoặc nhiều cột.

Khóa ngoại trong Oracle:

  1. Khoá Ngoại trong Oracle là một cột trong bảng là khoá duy nhất (khoá chính hoặc khoá duy nhất) trong một bảng khác.

  2. Khoá ngoại có thể chấp nhận cả giá trị rỗng và giá trị trùng lặp.

  3. Chúng tôi có thể tạo nhiều hơn một Khoá ngoại trên một bảng trong Oracle.

Chúng ta có thể tạo một bảng với nhiều khóa chính, khóa ngoại hoặc khóa duy nhất trong Oracle không?

Chúng ta có thể tạo một bảng trong Oracle với nhiều khóa ngoại và duy nhất. Nhưng không thể tạo bảng có nhiều Khóa chính.

Có thể khóa ngoại tham chiếu đến khóa không phải khóa chính trong Oracle không?

Có, có thể. Điểm bạn cần lưu ý là một khóa ngoại thực sự tham chiếu đến một khóa phải chứa các giá trị duy nhất. Vì vậy, nó có thể là khóa chính hoặc khóa duy nhất vì cả hai khóa đều duy trì tính duy nhất của cột trong bảng.

Khóa ngoại có thể chấp nhận giá trị null trong Oracle không?

Có, một khóa ngoại trong MySQL có thể chấp nhận các giá trị NULL. Điều này là do Khóa ngoại có thể tham chiếu đến các khóa duy nhất hoặc không phải khóa chính có thể chứa giá trị NULL.

Trong bài viết tiếp theo, tôi sẽ thảo luận về Ràng buộc về tính liêm chính được tham chiếu trong Oracle với các ví dụ. Ở đây, trong bài viết này, tôi cố gắng giải thích Ràng buộc NGOẠI KHÓA trong Oracle với các ví dụ và tôi hy vọng bạn thích bài viết này.


Xem thêm những thông tin liên quan đến chủ đề ví dụ về khóa ngoại oracle sql

SQL Triggers | SQL Tutorial for Beginners in 2021| SQL Triggers with Examples | Great Learning

alt

  • Tác giả: Great Learning
  • Ngày đăng: 2021-07-12
  • Đánh giá: 4 ⭐ ( 4890 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Looking for a career upgrade & a better salary? We can help, Choose from our no 1 ranked top programmes. 25k+ career transitions with 400 + top corporate companies. Exclusive for working professionals: https://glacad.me/3r2d0rb

    🔥 Get your free certificate of completion for the SQL for Data Science Course, Register Now: https://glacad.me/3kgKNv4 🔥

    In this video we discuss SQL Triggers. A SQL trigger is a database object which fires when an event occurs in a database. We can execute a SQL query that will “do something” in a database when a change occurs on a database table such as a record is inserted or updated or deleted. A trigger is a stored procedure in a database that automatically invokes whenever a special event in the database occurs. For example, a trigger can be invoked when a row is inserted into a specified table or when certain table columns are being updated.

    00:01:20 – Agenda
    00:02:01 – Introduction
    00:05:13 – Syntax of Trigger
    00:06:46 – Before Insert Trigger
    00:17:18 – After Insert Trigger
    00:28:58 – Before Update Trigger
    00:35:47 – After Update Trigger
    00:45:00 – Advantages
    00:45:58 – Summary

    Visit Great Learning Academy, to get access to 300+ free courses with 1000+ hours of content on Data Science, Data Analytics, Artificial Intelligence, Big Data, Cloud, Management, Cybersecurity, Software Development and many more. These are supplemented with free projects, assignments, datasets, quizzes. You can earn a certificate of completion at the end of the course for free. https://glacad.me/3xFecTK

    Get the free Great Learning App for a seamless experience, enroll for free courses and watch them offline by downloading them. https://glacad.me/3cSKlNl

    About Great Learning:
    – Great Learning is an online and hybrid learning company that offers high-quality, impactful, and industry-relevant programs to working professionals like you. These programs help you master data-driven decision-making regardless of the sector or function you work in and accelerate your career in high growth areas like Data Science, Big Data Analytics, Machine Learning, Artificial Intelligence & more.

Ràng Buộc Khoá Ngoại Trong SQL

  • Tác giả: www.codehub.com.vn
  • Đánh giá: 5 ⭐ ( 1329 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Khoá ngoại (foreign key) là một trường ( hoặc nhiều trường ) trong một bảng tham chiếu tới `khoá chính` của bảng khác.

Khóa ngoại Foreign Key trong SQL

  • Tác giả: vi-magento.com
  • Đánh giá: 3 ⭐ ( 7878 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Khóa ngoại (Foreign Key) trong MySQL

  • Tác giả: freetuts.net
  • Đánh giá: 5 ⭐ ( 2009 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Tìm hiểu Khóa ngoại (Foreign Key) trong MySQL, một số cách tạo khóa ngoại (foreign key) và xóa khóa ngoại với lệnh drop trong mysql

Khóa chính là gì? Phân biệt khóa chính và khóa ngoại trong SQL

  • Tác giả: timviec365.vn
  • Đánh giá: 5 ⭐ ( 3362 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Khóa chính nghĩa là gì? Khóa chính có tác dụng gì trong đời sống hằng ngày, đặc biệt là với các cơ sở dữ liệu tin học? Cùng tìm hiểu bài viết dưới đây nhé!

Chi tiết bài học 05.4 Các ràng buộc SQL-FOREIGN KEY

  • Tác giả: vimentor.com
  • Đánh giá: 5 ⭐ ( 1178 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Vimentor chi tiết bài học

Cách tạo khóa ngoại trên bảng trong Oracle SQL

  • Tác giả: helpex.vn
  • Đánh giá: 5 ⭐ ( 5965 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong bài viết này, tôi sẽ giải thích cách tạo khóa ngoại trên bảng trong Oracle SQL . Khóa ngoại là gì? Đầu tiên, hãy giải thích khóa ngoại là gì. Khóa ngoại là một ràng buộc được thêm vào…

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Khái niệm lập trình hướng đối tượng (OOP) trong Java - oops trong java là gì

By ads_php