PL/SQL - Records: Hướng dẫn cơ bản về dữ liệu có cấu trúc
Xin chào các pháp sư cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của PL/SQL Records. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng khám phá chủ đề này, từng bước một. Cuối cùng của bài hướng dẫn này, bạn sẽ ngạc nhiên về số lượng kiến thức bạn đã học được!
Records trong PL/SQL là gì?
Trước khi chúng ta đi sâu vào chi tiết, hãy hiểu records là gì. Hãy tưởng tượng bạn đang tổ chức một buổi tiệc sinh nhật, và bạn cần theo dõi thông tin của các khách mời. Bạn có thể viết tên, tuổi và hương vị bánh yêu thích của mỗi người. Trong PL/SQL, một record giống như danh sách đó, nhưng để lưu trữ dữ liệu liên quan trong một đơn vị duy nhất.
Records cho phép chúng ta nhóm các loại dữ liệu khác nhau lại với nhau, giúp mã của chúng ta trở nên tổ chức hơn và dễ quản lý hơn. Nó giống như có một tủ hồ sơ siêu hiệu quả cho dữ liệu của bạn!
Bây giờ, hãy cùng khám phá ba loại records trong PL/SQL:
- Records dựa trên bảng
- Records dựa trên con trỏ
- Records do người dùng định nghĩa
Records dựa trên bảng
Records dựa trên bảng giống như chụp một bức ảnh của một hàng trong bảng cơ sở dữ liệu của bạn. Chúng tự động khớp với cấu trúc của bảng, điều này làm cho chúng rất tiện lợi để sử dụng.
Giả sử chúng ta có một bảng叫做 employees
với các cột employee_id
, first_name
, last_name
, và salary
. Dưới đây là cách chúng ta có thể tạo và sử dụng một record dựa trên bảng:
DECLARE
emp_record employees%ROWTYPE;
BEGIN
SELECT * INTO emp_record
FROM employees
WHERE employee_id = 101;
DBMS_OUTPUT.PUT_LINE('Tên Nhân viên: ' || emp_record.first_name || ' ' || emp_record.last_name);
DBMS_OUTPUT.PUT_LINE('Lương: $' || emp_record.salary);
END;
/
Trong ví dụ này, emp_record
được khai báo là một record khớp với cấu trúc của bảng employees
. Chúng ta sau đó chọn một hàng từ bảng và lưu trữ nó trong record. Cuối cùng, chúng ta in ra một số thông tin từ record.
Hãy tưởng tượng như điền vào một biểu mẫu đã được thiết kế sẵn để khớp với cơ sở dữ liệu nhân viên của bạn. Nó nhanh chóng, dễ dàng và đảm bảo tất cả thông tin đều phù hợp hoàn hảo!
Records dựa trên con trỏ
Records dựa trên con trỏ tương tự như records dựa trên bảng, nhưng chúng dựa trên một con trỏ thay vì một bảng. Một con trỏ giống như một con trỏ có thể di chuyển qua các tập kết quả từ một truy vấn.
Dưới đây là một ví dụ về cách sử dụng một record dựa trên con trỏ:
DECLARE
CURSOR emp_cursor IS
SELECT employee_id, first_name, last_name, salary
FROM employees
WHERE department_id = 60;
emp_record emp_cursor%ROWTYPE;
BEGIN
OPEN emp_cursor;
LOOP
FETCH emp_cursor INTO emp_record;
EXIT WHEN emp_cursor%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('ID Nhân viên: ' || emp_record.employee_id);
DBMS_OUTPUT.PUT_LINE('Tên: ' || emp_record.first_name || ' ' || emp_record.last_name);
DBMS_OUTPUT.PUT_LINE('Lương: $' || emp_record.salary);
DBMS_OUTPUT.PUT_LINE('---');
END LOOP;
CLOSE emp_cursor;
END;
/
Trong ví dụ này, chúng ta định nghĩa một con trỏ chọn các cột cụ thể từ bảng employees
. Chúng ta sau đó khai báo một record dựa trên con trỏ này và sử dụng nó để lấy và hiển thị thông tin cho mỗi nhân viên trong phòng ban 60.
Hãy tưởng tượng bạn là một thám tử theo dõi một chuỗi manh mối. Con trỏ là kính lúp của bạn, và mỗi lần bạn tìm thấy một manh mối (hoặc trong trường hợp này, một nhân viên), bạn ghi lại chi tiết trong sổ tay đáng tin cậy của bạn (record).
Records do người dùng định nghĩa
Records do người dùng định nghĩa là loại linh hoạt nhất. Bạn có thể tạo cấu trúc tùy chỉnh của riêng mình để lưu trữ chính xác dữ liệu bạn cần. Nó giống như thiết kế biểu mẫu của riêng bạn từ đầu!
Dưới đây là cách tạo và sử dụng một record do người dùng định nghĩa:
DECLARE
TYPE book_record_type IS RECORD (
title VARCHAR2(100),
author VARCHAR2(50),
publication_year NUMBER,
is_bestseller BOOLEAN
);
my_favorite_book book_record_type;
BEGIN
my_favorite_book.title := 'Hướng dẫn du lịch vũ trụ';
my_favorite_book.author := 'Douglas Adams';
my_favorite_book.publication_year := 1979;
my_favorite_book.is_bestseller := TRUE;
DBMS_OUTPUT.PUT_LINE('Sách yêu thích của tôi là "' || my_favorite_book.title || '"');
DBMS_OUTPUT.PUT_LINE('Nó được viết bởi ' || my_favorite_book.author || ' vào năm ' || my_favorite_book.publication_year);
IF my_favorite_book.is_bestseller THEN
DBMS_OUTPUT.PUT_LINE('Nó là một bestseller!');
ELSE
DBMS_OUTPUT.PUT_LINE('Nó là một viên ngọc ẩn.');
END IF;
END;
/
Trong ví dụ này, chúng ta định nghĩa một loại record tùy chỉnh叫做 book_record_type
. Chúng ta sau đó tạo một record của loại này và điền thông tin về một cuốn sách yêu thích. Cuối cùng, chúng ta in ra chi tiết và kiểm tra xem nó có phải là bestseller hay không.
Records do người dùng định nghĩa giống như tạo ra công thức của riêng bạn. Bạn quyết định chính xác các nguyên liệu (trường) bạn cần, và ở proportions nào!
So sánh các loại records
Để giúp bạn hiểu khi nào nên sử dụng mỗi loại record, đây là bảng so sánh tiện lợi:
Loại Record | Trường hợp sử dụng | Ưu điểm | Nhược điểm |
---|---|---|---|
Dựa trên bảng | Khi làm việc với dữ liệu khớp với cấu trúc bảng | Dễ sử dụng, tự động khớp với cấu trúc bảng | Giới hạn trong cấu trúc bảng hiện có |
Dựa trên con trỏ | Khi làm việc với kết quả truy vấn | Linh hoạt, có thể dựa trên truy vấn phức tạp | Cần quản lý con trỏ |
Do người dùng định nghĩa | Khi bạn cần cấu trúc dữ liệu tùy chỉnh | Linh hoạt nhất, có thể lưu trữ bất kỳ tổ hợp dữ liệu nào | Cần nhiều mã thiết lập |
Kết luận
Và thế là bạn đã có, các học viên siêng năng! Chúng ta đã cùng nhau hành trình qua thế giới của PL/SQL Records, từ sự tiện lợi của records dựa trên bảng đến sự linh hoạt của records do người dùng định nghĩa. Nhớ rằng, việc chọn đúng loại record giống như chọn đúng công cụ cho công việc - nó có thể làm cho cuộc sống lập trình của bạn dễ dàng hơn.
Khi bạn tiếp tục hành trình PL/SQL của mình, bạn sẽ thấy records là những người bạn không thể thiếu trong việc tổ chức và quản lý dữ liệu. Chúng là những anh hùng vô danh của mã sạch, hiệu quả!
Tiếp tục thực hành, 保持好奇心, và trước khi bạn biết điều đó, bạn sẽ thành thạo trong việc tạo records PL/SQL. Chúc mừng coding, và hy vọng cơ sở dữ liệu của bạn luôn được tổ chức tốt và các truy vấn của bạn luôn nhanh như chớp!
Credits: Image by storyset