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

Cách tạo mảng liên kết trong cơ sở dữ liệu Oracle

Mảng liên kết trước đây được gọi là bảng PL / SQL trong PL / SQL 2 (phiên bản PL / SQL đi kèm với Oracle 7) và Index-by-Table trong Cơ sở dữ liệu Oracle 8. Sau Bảng lồng nhau và VARRAY, Mảng liên kết là loại tập hợp thứ ba được các nhà phát triển sử dụng rộng rãi.

Hãy cùng tìm hiểu câu trả lời của một số câu hỏi về mảng liên kết sẽ giúp bạn hiểu rõ hơn về chúng. Trong phần này, bạn cũng sẽ tìm ra một số điểm khác biệt và tương đồng cốt lõi giữa Mảng liên kết và các bộ sưu tập khác như VARRAY &Bảng lồng nhau.

Mảng liên kết được giới hạn hay không bị giới hạn?

Tương tự như bảng lồng nhau, Mảng liên kết là dạng tập hợp không liên kết. Điều này có nghĩa là không có giới hạn trên về số lượng phần tử mà nó có thể chứa. Điều tương tự cũng không đúng với VARRAY vì bản chất mảng biến có giới hạn.

Mảng liên kết bền vững hay không liên tục?

Không giống như Bảng lồng nhau &VARRAY, Mảng liên kết là dạng tập hợp không liên tục . Điều này có nghĩa là cả mảng và dữ liệu đều không thể được lưu trữ trong cơ sở dữ liệu mà chúng chỉ có sẵn trong các khối PL / SQL.

Mảng liên kết thưa thớt hay dày đặc?

Trong khi VARRAY là mảng đông dân cư, Bảng lồng nhau và Mảng liên kết là mảng dân cư thưa thớt có nghĩa là việc đánh số chỉ số con phải là duy nhất nhưng không nhất thiết phải tuần tự.

Chúng ta có thể tạo mảng liên kết làm đối tượng cơ sở dữ liệu không?

Do tính chất không liên tục của chúng, các mảng liên kết không thể được lưu trữ vào lược đồ. Chúng chỉ có thể được tạo trong các khối PL / SQL nhưng không được tạo ở cấp giản đồ dưới dạng đối tượng cơ sở dữ liệu.

Chúng tôi có thể sử dụng lại mảng kết hợp không?

Như đã đề cập ở trên, mảng liên kết là một tập hợp không liên tục, không thể được tạo ở cấp giản đồ, do đó nó không thể được lưu trữ vào lược đồ do đó không thể sử dụng lại.

Đánh số chỉ mục / Đánh số chỉ số trong mảng liên kết là ẩn hay rõ ràng?

Không giống như Bảng lồng nhau và VARRAY, lập chỉ mục trong mảng liên kết là rõ ràng. Trong trường hợp Oracle Engine gán chỉ số con / số chỉ mục cho các phần tử của bảng lồng nhau và các tập hợp VARRAY trong nền, trong mảng kết hợp, người dùng phải chỉ định số chỉ mục một cách rõ ràng trong khi điền tập hợp.

Làm cách nào để Dữ liệu được lưu trữ vào Mảng liên kết?

Mảng liên kết lưu trữ dữ liệu trong các cặp Khóa-Giá trị trong đó số chỉ mục đóng vai trò là khóa và dữ liệu được lưu trữ trong ô đóng vai trò là giá trị.

Đây là một vài câu hỏi cốt lõi mà bạn có thể mong đợi trong kỳ thi hoặc cuộc phỏng vấn của mình. Đọc cùng để tìm hiểu sự khác biệt về kỹ thuật giữa mảng liên kết và các bộ sưu tập khác.

Xác định Bộ sưu tập PL / SQL - Mảng liên kết?
Sử dụng thông tin thu được từ các câu hỏi trên, chúng ta có thể định nghĩa Mảng liên kết là tập hợp một chiều, đồng nhất, lưu trữ dữ liệu thành cặp khóa-giá trị. Bản chất nó thưa thớt, không liên kết và không dai dẳng.

Cú pháp của mảng liên kết PL / SQL là gì?

TYPE aArray_name IS TABLE OF element_datatype [Not Null]
INDEX BY index_elements_datatype;

Như đã nói ở trên mảng liên kết là kiểu tập hợp không liên tục, do đó nó không thể được tạo dưới dạng đối tượng cơ sở dữ liệu độc lập do đó không thể được sử dụng lại như phần còn lại của các tập hợp khác. Nó chỉ có thể có sẵn trong khối PL / SQL. Luôn đảm bảo rằng bạn tạo mảng liên kết của mình trong phần DELCARATION của Khối PL / SQL. [Đọc ở đây để biết có bao nhiêu phần trong khối PL / SQL?] Hãy xem cú pháp chi tiết:

Loại :Từ khóa đánh dấu phần đầu của câu lệnh.

aArray_name :Tên của mảng kết hợp. Nó hoàn toàn do người dùng định nghĩa và tuân thủ các tiêu chuẩn đặt tên của Cơ sở dữ liệu Oracle.

LÀ BẢNG CỦA :Cụm từ dành riêng cho Cơ sở dữ liệu Oracle bằng cách sử dụng người dùng nào cho trình biên dịch biết loại phần tử mà mảng sẽ chứa?

Element_Datype :Kiểu dữ liệu của các phần tử mà mảng sẽ giữ. Trong Cơ sở dữ liệu Oracle, tất cả các tập hợp đều có bản chất đồng nhất, có nghĩa là mọi phần tử của tập hợp phải có cùng một kiểu dữ liệu.

Not_null :Một mệnh đề tùy chọn, nếu được sử dụng đảm bảo rằng mọi chỉ mục đều có giá trị tương ứng với nó chứ không phải là NULL.

INDEX THEO :Mệnh đề sử dụng mà người dùng chỉ định kiểu dữ liệu của chỉ số con của mảng.

Index_elements_dataype :Loại dữ liệu của các phần tử chỉ số con của mảng.

Ví dụ:Cách tạo mảng liên kết trong cơ sở dữ liệu Oracle?

Mảng kết hợp chỉ có thể được tạo bên trong một khối PL / SQL do đó phạm vi của nó bị giới hạn trong khối mà nó được tạo ra, có nghĩa là nó không thể được sử dụng bên ngoài khối đó. Hãy xem cách tạo Mảng liên kết trong Cơ sở dữ liệu Oracle?

Bước 1:Tạo mảng liên kết

	SET SERVEROUTPUT ON;
	DECLARE
	    TYPE books IS TABLE OF NUMBER
	        INDEX BY VARCHAR2 (20);

Trong đoạn mã trên, chúng tôi đã tạo một mảng Liên kết với tên ‘ Sách 'Có thể chứa các phần tử của NUMBER kiểu dữ liệu và chỉ số con của kiểu dữ liệu VARCHAR2.

Bước 2:Tạo biến mảng kết hợp

Isbn Books;

Bạn cần một biến mảng liên kết để tham chiếu đến mảng trong chương trình. Biến mảng có thể được tạo rất dễ dàng. Bạn chỉ cần viết tên của biến (là ‘ isbn’ trong trường hợp của chúng tôi) được người dùng xác định theo sau là tên của mảng kết hợp.

Bước 3:Chèn dữ liệu vào mảng liên kết

Như đã đề cập ở trên, mảng liên kết giữ dữ liệu thành các cặp khóa-giá trị. Do đó, không giống như phần còn lại của các bộ sưu tập khác, người dùng phải chèn cả chỉ số con của mảng (khóa) và dữ liệu.

BEGIN
-- How to insert data into the associative array 
isbn('Oracle Database') := 1234;
isbn('MySQL') := 9876; 

Giống như bảng lồng nhau và các VARRAY, chúng tôi chèn dữ liệu vào mảng liên kết trong phần thực thi của khối PL / SQL. Nếu bạn nhận thấy ở đây không giống như các bộ sưu tập khác, chúng tôi không sử dụng câu lệnh INSERT DML để chèn dữ liệu mà chúng tôi đã chèn nó bằng cách sử dụng biến Mảng ‘ isbn’ . Dưới đây, bạn có thể thấy cú pháp của câu lệnh chèn cho mảng kết hợp bằng cách sử dụng biến mảng.

Array_variable (subscript/key) := data; 

Như bạn có thể thấy để chèn dữ liệu vào mảng kết hợp, trước tiên bạn phải viết tên của biến mảng, sau đó là chỉ số con của mảng và sau đó là dữ liệu cho mảng của bạn.

Bước 4:Làm cách nào để cập nhật dữ liệu của bộ sưu tập - Mảng liên kết?

Cập nhật các giá trị của mảng liên kết dễ dàng như chèn chúng. Nếu bạn muốn thay đổi bất kỳ giá trị nào, hãy viết cùng một câu lệnh được sử dụng để chèn với các giá trị đã sửa đổi. Ví dụ:giả sử bạn muốn thay đổi giá trị so với khóa MySQL từ 9876 thành 1010 thì bạn chỉ cần viết

	-- How to update data of associative array.	
	 	isbn('MySQL') := 1010; 

Một lần nữa, bạn không cần phải viết UPDATE DML để cập nhật các giá trị. Bạn chỉ cần sử dụng biến mảng.

Bước 5:Làm cách nào để truy xuất dữ liệu từ mảng Bộ sưu tập- Liên kết?

Giống như chúng tôi không cần câu lệnh Chèn DML để chèn giá trị hoặc Cập nhật DML để cập nhật giá trị, tương tự như vậy, chúng tôi không cần Chọn DML để truy xuất giá trị.

Giả sử bạn muốn xem giá trị được lưu trữ dựa trên khóa ‘Cơ sở dữ liệu Oracle’. Để làm được điều đó, bạn chỉ cần viết…

-- how to retrieve data using key from associative array.  	
	  DBMS_OUTPUT.PUT_LINE ('Value '||isbn ('Oracle Database'));

Hãy kết hợp tất cả các đoạn mã này thành một chương trình duy nhất.

SET SERVEROUTPUT ON;
DECLARE
    TYPE books IS TABLE OF NUMBER
        INDEX BY VARCHAR2(20);
    isbn Books;
BEGIN
    	-- How to insert data into the associative array 
    	isbn('Oracle Database') := 1234;
    	isbn('MySQL') := 9876;
    	DBMS_OUTPUT.PUT_LINE('Value Before Updation '||isbn('MySQL'));

    	-- How to update data of associative array.
    	isbn('MySQL') := 1010;
    
-- how to retrieve data using key from associative array.  
    	DBMS_OUTPUT.PUT_LINE('Value After Updation '||isbn('MySQL'));
END;
/

Đây là chương trình với một số sửa đổi nhỏ. Chương trình PL / SQL ở trên chỉ ra cách truy xuất một giá trị cụ thể bằng cách sử dụng khóa. Bạn có thể xem Video hướng dẫn để tìm hiểu cách truy xuất tất cả các giá trị từ Mảng liên kết bằng cách sử dụng Vòng lặp. Ở đó, tôi đã giải thích nó rất chi tiết.

Trước khi kết thúc hướng dẫn này, có một vài gợi ý mà tôi nghĩ bạn nên biết. Những con trỏ này -

  • PL / SQL Associative Array hỗ trợ BINARY_INTEGER, PLS_INTEGER, POSITIVE, NATURAL, SIGNTYPE hoặc VARCHAR2 dưới dạng kiểu dữ liệu chỉ mục.
  • RAW, NUMBER, LONG-ROW, ROWID và CHAR là các loại dữ liệu chỉ mục không được hỗ trợ.

Trong trường hợp kiểu dữ liệu yếu tố, hỗ trợ mảng liên kết bộ sưu tập PL / SQL -

  • Kiểu dữ liệu vô hướng PL / SQL :DATE, BLOB, CLOB, BOOLEAN hoặc NUMBER &VARCHAR2 với các loại phụ của chúng.
  • Dữ liệu được suy ra :Thuật ngữ được sử dụng cho các kiểu dữ liệu được kế thừa từ cột bảng, biểu thức con trỏ hoặc biến gói được xác định trước
  • Loại do người dùng xác định: Loại đối tượng hoặc loại tập hợp do người dùng xác định.

Đó là hướng dẫn chi tiết về PL / SQL Collection - Associative Array. Hướng dẫn này bao gồm tất cả các chủ đề mà bạn có thể mong đợi trong Kỳ thi Chứng chỉ Cơ sở dữ liệu Oracle cũng như trong Phỏng vấn. Hy vọng bạn thích đọc.

Bạn có thể giúp người khác học điều gì đó mới cũng như giúp chúng tôi tiếp cận với nhiều người hơn bằng cách chia sẻ blog này trên mạng xã hội của bạn. Đừng quên gắn thẻ chúng tôi vì chúng tôi thích đưa ra những Lời cảm ơn lớn đến tất cả những người ủng hộ, người xem và người đăng ký của chúng tôi. Cảm ơn và 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. Những điều bạn phải biết về Bảng FND_LOBS trong Ứng dụng Oracle

  2. Từng bước cài đặt R12.2.6 EBS trên Virtual Box

  3. Sửa lỗi “ORA-01790:biểu thức phải có cùng kiểu dữ liệu với biểu thức tương ứng”

  4. Hàm CEIL () trong Oracle

  5. Tìm việc làm hiện tại cho các biểu mẫu &báo cáo Oracle