Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cách tạo bảng lồng nhau bằng kiểu dữ liệu do người dùng xác định trong cơ sở dữ liệu Oracle

Này các cậu! Hôm nay chúng ta sẽ học cách tạo bộ sưu tập kiểu bảng lồng nhau bằng cách sử dụng kiểu dữ liệu do người dùng xác định. Hy vọng bạn đã có thời gian tuyệt vời với hướng dẫn cuối cùng, nơi chúng ta đã tìm hiểu quy trình tạo bảng lồng nhau với kiểu dữ liệu nguyên thủy. Tôi thực sự khuyên bạn nên xem hướng dẫn đó vì chúng ta sẽ sử dụng các khái niệm từ đó.

Tương tự như kiểu dữ liệu nguyên thủy, một bảng lồng nhau cũng có thể được tạo bằng cách sử dụng kiểu dữ liệu do người dùng xác định. Đối với phần trình diễn, chúng tôi sẽ sử dụng Oracle Object của người dùng. Đối tượng không cần giới thiệu, nếu bạn đã từng nghiên cứu các Khái niệm OOP. Trong Oracle, giống như các ngôn ngữ lập trình khác, kiểu đối tượng là một loại kiểu dữ liệu hoạt động giống như các kiểu dữ liệu khác như Char, Varchar2, Number, v.v. nhưng linh hoạt hơn.

Để tạo một Đối tượng Oracle, chúng tôi sử dụng câu lệnh 'Create Type' cũ và đáng tin cậy của chúng tôi.

CREATE OR REPLACE TYPE object_type AS OBJECT (
  obj_id  NUMBER,
  obj_name  VARCHAR2(10)
);
/

Câu lệnh trên sẽ tạo một đối tượng oracle với tên ‘object type’ với hai thuộc tính obj_id và obj_name khi thực thi thành công. Sau đó, kiểu dữ liệu này có thể được sử dụng để tạo một bảng lồng nhau.

CREATE OR REPLACE TYPE My_NT IS TABLE OF object_type;
/

Tôi nghĩ nếu bạn đã kiểm tra hướng dẫn cuối cùng thì bạn sẽ thấy câu lệnh trên rất quen thuộc, ngoại trừ loại phần tử là một kiểu dữ liệu nguyên thủy ở đó. Ở đây chúng tôi sử dụng kiểu dữ liệu do người dùng xác định là Đối tượng Oracle.

Tuyên bố trên đã được giải thích chi tiết trong hướng dẫn cuối cùng mà bạn có thể kiểm tra tại đây.

Tạo bảng lồng nhau bằng Oracle Object có nghĩa là gì?

Bất cứ khi nào bạn tạo một bảng lồng nhau bằng Đối tượng Oracle thì các thuộc tính của Đối tượng sẽ trở thành các cột của bảng đó. Ví dụ:trong trường hợp của chúng tôi, chúng tôi đã tạo một bảng lồng nhau ‘My_NT’ bằng cách sử dụng kiểu dữ liệu do người dùng xác định là Đối tượng Oracle ‘Object_Type’ có hai thuộc tính obj_id và obj_name. Hai thuộc tính này của đối tượng sẽ đóng vai trò là các cột của bảng. Hình ảnh sau đây sẽ giúp bạn hiểu điều này rõ ràng hơn.

Bây giờ chúng ta đã tạo bảng lồng nhau bằng cách sử dụng kiểu dữ liệu do người dùng xác định, đã đến lúc đưa nó vào hoạt động.

CREATE TABLE Base_Table(
  tab_id  NUMBER,
  tab_ele My_NT
)NESTED TABLE tab_ele STORE AS stor_tab_1;
/

Bảng trên có tên ‘Base_Table’ là một bảng đơn giản có 2 cột ‘tab_id’ và ‘tab_ele’. Cột đầu tiên thuộc Loại dữ liệu số trong khi cột thứ hai thuộc loại Bảng lồng nhau. Điều này có nghĩa là cột thứ hai chứa một bảng trong đó và bảng đó là bảng lồng nhau ‘My_Nt’

của chúng tôi

Mặc dù ‘Base_Table’ này là một bảng đơn giản nhưng một trong các cột của nó chứa một bảng được lồng vào đó, điều này nảy sinh một số câu hỏi như:

Làm thế nào để chèn dữ liệu vào bảng? Làm thế nào để cập nhật dữ liệu của bảng? Hoặc làm thế nào để lấy dữ liệu từ bảng? Hãy thử lần lượt tìm ra câu trả lời cho tất cả những câu hỏi này.

Làm cách nào để chèn dữ liệu vào bảng lồng nhau?

Có, tôi đồng ý rằng việc chèn dữ liệu vào một bảng có một cột kiểu bảng lồng nhau có thể khó nhưng bằng cách nào đó chúng ta phải tìm ra cách thực hiện. Vì một bảng không có dữ liệu không có ích gì đối với chúng tôi. Đúng? Hãy xem chúng ta có thể làm điều đó như thế nào.

 INSERT INTO base_table (tab_id, tab_ele) VALUES
 (801,  -- value for 1st colum 
   My_NT (object_type (1,'Superman') -- values for 2nd column )
 );

Như bạn có thể thấy trong câu lệnh INSERT này, mọi thứ đều giống như một Chèn DML bình thường ngoại trừ dòng số 3 nơi chúng ta đang chèn dữ liệu vào cột thứ hai của bảng. Để chèn dữ liệu vào cột thuộc loại Bảng lồng nhau, trước tiên bạn phải viết tên của bảng lồng nhau, trong trường hợp này là 'My_NT', sau đó bạn phải viết tên Đối tượng Oracle của mình ở đây là 'Object_Type' tiếp theo là các giá trị bạn muốn chèn vào bảng của mình. Đừng quên đối sánh dấu ngoặc đơn cho tên bảng và tên đối tượng, nếu không bạn sẽ gặp lỗi.

Làm cách nào để cập nhật các giá trị của bảng lồng nhau?

UPDATE base_table SET tab_ele = My_NT(object_type(1,'SpiderMan')) WHERE tab_id = 801; 

Câu lệnh DML ở trên sẽ cập nhật các giá trị tương ứng khi thực thi thành công.

Cách truy xuất dữ liệu từ bảng lồng nhau?

Bạn có thể chỉ cần thực hiện câu lệnh Chọn trên bảng của mình để lấy dữ liệu.

Select tab_id, tab_ele FROM base_table;

Hình ảnh sau đây sẽ cho bạn thấy kết quả trả về từ bảng này.

Như bạn có thể thấy, câu lệnh SELECT này sẽ hiển thị cho bạn dữ liệu từ các cột thuộc kiểu dữ liệu chính nhưng chỉ tên của bảng lồng nhau của bạn cùng với Đối tượng Oracle từ cột mà bạn xác định là kiểu Bảng lồng nhau. Bạn có thể dễ dàng khắc phục sự cố này bằng cách sử dụng biểu thức TABLE như thế này.

SELECT * FROM TABLE(
  SELECT tab_ele FROM Base_Table WHERE tab_id = 801
)

Thực hiện thành công truy vấn trên sẽ hiển thị cho bạn dữ liệu từ cột thứ hai trong bảng ‘Base_Table’ của bạn ở định dạng quan hệ.

Đó là nó cho hướng dẫn này, hy vọng bạn thích và học được điều gì đó mới. Hãy chắc chắn để đăng ký và đăng ký. Chúc một ngày tốt lành!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chạy Oracle Forms độc lập mà không cần trình duyệt

  2. Truy vấn Oracle Pivot đưa ra các cột có dấu ngoặc kép xung quanh tên cột. Gì?

  3. Bật TLS trong Ứng dụng Oracle R12.2

  4. có cách nào để ghi lại tất cả các câu lệnh sql bị lỗi trong oracle 10g không

  5. Các chức năng phân tích LEAD và LAG