PostgreSQL - Chức năng hữu ích

Xin chào các bạn yêu thích cơ sở dữ liệu! Tôi rất vui mừng được bắt đầu hành trình này cùng các bạn khi chúng ta khám phá thế giới kỳ diệu của các hàm PostgreSQL. Là một giáo viên khoa học máy tính gần gũi, tôi đã thấy biết bao nhiêu sinh viên từ những người mới bắt đầu với SQL trở thành các pháp sư cơ sở dữ liệu, và tôi rất háo hức giúp các bạn làm điều tương tự. Vậy, hãy c rolled up our sleeves và nhảy vào thế giới ma thuật của các hàm PostgreSQL!

PostgreSQL - Useful Functions

Hàm PostgreSQL là gì?

Trước khi chúng ta bắt đầu chơi với các hàm sang trọng, hãy hiểu chúng là gì. Hãy tưởng tượng các hàm PostgreSQL như những trợ lý cá nhân của bạn trong thế giới cơ sở dữ liệu. Chúng giống như những con robot nhỏ thực hiện các nhiệm vụ cụ thể cho bạn, giúp cuộc sống của bạn dễ dàng hơn và các truy vấn hiệu quả hơn.

Tại sao sử dụng hàm?

Hãy tưởng tượng bạn đang nướng bánh quy (mmm, bánh quy). Thay vì đo lường nguyên liệu mỗi lần, có phải sẽ tốt nếu bạn có những gói đã được đo lường sẵn? Đó là những gì các hàm làm cho các hoạt động cơ sở dữ liệu của bạn - chúng đóng gói các hoạt động thường xuyên sử dụng để dễ dàng tái sử dụng.

Loại hàm PostgreSQL

PostgreSQL cung cấp một loạt các hàm. Hãy cùng nhìn qua một số hàm hữu ích nhất:

1. Hàm chuỗi

Những hàm này giúp bạn manipulates dữ liệu văn bản. Hãy bắt đầu với một ví dụ đơn giản:

SELECT LOWER('HELLO, WORLD!');

Điều này sẽ xuất ra: hello, world!

Điều gì đã xảy ra ở đây? Hàm LOWER() đã lấy đầu vào của chúng ta và chuyển tất cả các chữ cái in hoa thành chữ cái in thường. Nó giống như dạy cơ sở dữ liệu của bạn cách thì thầm!

Đây là một ví dụ vui nhộn khác:

SELECT CONCAT('PostgreSQL', ' is ', 'awesome!');

Output: PostgreSQL is awesome!

Hàm CONCAT() giống như một con bạch tuộc thân thiện, bắt các chuỗi khác nhau và dán chúng lại thành một.

2. Hàm số học

Hãy crunch một số con số!

SELECT ROUND(3.14159, 2);

Output: 3.14

Hàm ROUND() giống như một giáo viên toán học nghiêm khắc, bắt pi của chúng ta phải hành xử và giữ ở hai chữ số thập phân.

Đây là một ví dụ thực tế hơn:

SELECT ABS(-15);

Output: 15

ABS() có nghĩa là giá trị tuyệt đối. Nó giống như một bảo vệ trong câu lạc bộ, từ chối các số âm và làm chúng dương tính.

3. Hàm ngày/giờ

Thời gian trôi nhanh khi bạn đang vui vẻ với cơ sở dữ liệu! Hãy xem chúng ta có thể manipulates ngày như thế nào:

SELECT CURRENT_DATE;

Điều này sẽ cho bạn ngày hôm nay. Nó giống như có một lịch内置 vào cơ sở dữ liệu của bạn!

Còn một ví dụ phức tạp hơn?

SELECT AGE(TIMESTAMP '2000-01-01', TIMESTAMP '1969-07-20');

Điều này sẽ tính toán thời gian giữa hai ngày. Nó hoàn hảo cho những câu hỏi "Khi bạn bao nhiêu tuổi khi..."!

4. Biểu thức điều kiện

Đôi khi chúng ta cần cơ sở dữ liệu của mình đưa ra quyết định. Đó là khi biểu thức CASE xuất hiện:

SELECT
product_name,
CASE
WHEN price < 10 THEN 'Cheap'
WHEN price < 50 THEN 'Moderate'
ELSE 'Expensive'
END AS price_category
FROM products;

Điều này giống như cho cơ sở dữ liệu của bạn một súng giá và bảo nó đánh dấu sản phẩm dựa trên giá của chúng. Nó là một cách tuyệt vời để phân loại dữ liệu nhanh chóng!

Tạo hàm tùy chỉnh

Bây giờ chúng ta đã xem qua một số hàm内置, hãy tạo hàm của riêng chúng ta! Nó giống như là một nhà khoa học điên, nhưng thay vì tạo ra các sinh vật, chúng ta tạo ra các trợ lý cơ sở dữ liệu hữu ích.

CREATE FUNCTION greet(name TEXT) RETURNS TEXT AS $$
BEGIN
RETURN 'Hello, ' || name || '! Welcome to PostgreSQL!';
END;
$$ LANGUAGE plpgsql;

Bây giờ chúng ta có thể sử dụng hàm của mình:

SELECT greet('Alice');

Output: Hello, Alice! Welcome to PostgreSQL!

Chúng ta vừa tạo một người chào mừng thân thiện cho cơ sở dữ liệu của mình. Nó giống như dạy cơ sở dữ liệu của bạn cách có phép lịch sự!

Ví dụ thực tế

Hãy áp dụng kiến thức mới của chúng ta vào một số tình huống thực tế:

Ví dụ 1: Chương trình khách hàng trung thành

Hãy tưởng tượng chúng ta đang chạy một chương trình khách hàng trung thành nơi khách hàng nhận được các trạng thái khác nhau dựa trên tổng số mua hàng của họ.

CREATE FUNCTION get_customer_status(total_purchases NUMERIC) RETURNS TEXT AS $$
BEGIN
RETURN CASE
WHEN total_purchases < 100 THEN 'Bronze'
WHEN total_purchases < 500 THEN 'Silver'
WHEN total_purchases < 1000 THEN 'Gold'
ELSE 'Platinum'
END;
END;
$$ LANGUAGE plpgsql;

-- Sử dụng hàm
SELECT
customer_name,
total_purchases,
get_customer_status(total_purchases) AS loyalty_status
FROM customers;

Hàm này hoạt động như một bảo vệ trung thành, cấp VIP status cho khách hàng của chúng ta dựa trên chi tiêu của họ.

Ví dụ 2: Tính toán tuổi

Hãy tạo một hàm để tính toán tuổi và phân loại người:

CREATE FUNCTION categorize_age(birthdate DATE) RETURNS TEXT AS $$
DECLARE
age_in_years INTEGER;
BEGIN
age_in_years := DATE_PART('year', AGE(CURRENT_DATE, birthdate));

RETURN CASE
WHEN age_in_years < 18 THEN 'Minor'
WHEN age_in_years BETWEEN 18 AND 65 THEN 'Adult'
ELSE 'Senior'
END;
END;
$$ LANGUAGE plpgsql;

-- Sử dụng hàm
SELECT
name,
birthdate,
categorize_age(birthdate) AS age_category
FROM people;

Hàm này giống như một con owl thông thái, nhìn vào ngày sinh và hoot ra các phân loại tuổi.

Kết luận

Chúc mừng! Bạn vừa bước vào thế giới kỳ diệu của các hàm PostgreSQL. Chúng ta đã xem qua manipulates chuỗi, số học, ngày/giờ và thậm chí tạo hàm tùy chỉnh của riêng mình. Nhớ rằng, thực hành làm nên hoàn hảo, vì vậy đừng ngại thử nghiệm và tạo hàm của riêng bạn.

Khi kết thúc, đây là bảng tóm tắt một số hàm chúng ta đã học:

Hàm Mục đích Ví dụ
LOWER() Chuyển đổi chuỗi thành chữ cái in thường LOWER('HELLO') → 'hello'
CONCAT() Kết hợp các chuỗi lại CONCAT('A', 'B', 'C') → 'ABC'
ROUND() Làm tròn một số ROUND(3.14159, 2) → 3.14
ABS() Lấy giá trị tuyệt đối ABS(-15) → 15
CURRENT_DATE Lấy ngày hiện tại CURRENT_DATE → '2023-06-15'
AGE() Tính toán thời gian giữa hai ngày AGE('2000-01-01', '1969-07-20')
CASE Biểu thức điều kiện CASE WHEN x > 0 THEN 'Positive' ELSE 'Non-positive' END

Nhớ rằng, những hàm này là bạn mới của bạn trong thế giới cơ sở dữ liệu. Chúng luôn sẵn sàng giúp bạn manipulates dữ liệu, đưa ra quyết định và tạo các truy vấn mạnh mẽ. Vậy, hãy tiến lên và hàm! Chúc may mắn trong việc truy vấn, và mong rằng cơ sở dữ liệu của bạn luôn được chuẩn hóa và các truy vấn của bạn được tối ưu hóa!

Credits: Image by storyset