PostgreSQL - Cú pháp

Xin chào các pháp sư cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ lặn sâu vào thế giới kỳ diệu của cú pháp PostgreSQL. Đừng lo lắng nếu bạn là người mới bắt đầu lập trình - tôi sẽ là người hướng dẫn thân thiện của bạn trong cuộc phiêu lưu này. Vậy, cầm lấy những枝 c魔法 (bàn phím) của bạn, và chúng ta hãy bắt đầu!

PostgreSQL - Syntax

Câu lệnh SQL

Trước khi chúng ta nhảy vào chi tiết của PostgreSQL, hãy nói về các câu lệnh SQL nói chung. SQL, hoặc Structured Query Language, giống như cuốn sách phù thủy cho cơ sở dữ liệu. Đây là ngôn ngữ chúng ta sử dụng để giao tiếp với cơ sở dữ liệu và làm cho nó thực hiện ý muốn của chúng ta.

Cấu trúc cơ bản

Một câu lệnh SQL thường tuân theo cấu trúc này:

COMMAND action_to_perform
[ON object]
[WHERE conditions];

Hãy phân tích:

  1. COMMAND: Đây là điều bạn muốn làm (như SELECT, INSERT, UPDATE, v.v.)
  2. action_to_perform: Điều này chỉ định bạn đang làm gì với lệnh
  3. ON object: Đây là tùy chọn và chỉ định đối tượng cơ sở dữ liệu nào bạn đang làm việc
  4. WHERE conditions: Cũng là tùy chọn và cho phép bạn đặt các điều kiện cụ thể

Ví dụ

Dưới đây là một ví dụ đơn giản:

SELECT first_name, last_name
FROM employees
WHERE department = 'IT';

Trong câu lệnh này:

  • SELECT là lệnh của chúng ta
  • first_name, last_name là những gì chúng ta muốn lấy
  • FROM employees cho biết bảng nào chúng ta đang lấy dữ liệu
  • WHERE department = 'IT' là điều kiện của chúng ta, lọc ra nhân viên của phòng IT

Lệnh SQL của PostgreSQL

Bây giờ chúng ta đã bao gồm các nguyên tắc cơ bản, hãy nhìn vào một số lệnh cụ thể của PostgreSQL. Hãy nghĩ về những này như những phù thủy khác nhau trong sổ phù thủy SQL của bạn!

Lệnh Ngôn ngữ Định nghĩa Dữ liệu (DDL)

Những lệnh này được sử dụng để định nghĩa và修改 cấu trúc của các đối tượng cơ sở dữ liệu của bạn.

Lệnh Mô tả Ví dụ
CREATE Tạo một đối tượng cơ sở dữ liệu mới CREATE TABLE students (id INT, name VARCHAR(50));
ALTER Sửa đổi một đối tượng cơ sở dữ liệu hiện có ALTER TABLE students ADD COLUMN age INT;
DROP Xóa một đối tượng cơ sở dữ liệu DROP TABLE students;
TRUNCATE Xóa tất cả dữ liệu từ bảng TRUNCATE TABLE students;

Hãy nhìn vào một ví dụ chi tiết hơn của CREATE:

CREATE TABLE wizards (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
house VARCHAR(50),
wand_type VARCHAR(50),
enrollment_date DATE
);

Điều này tạo một bảng叫做 'wizards' với các cột cho id, tên, nhà, loại cây đũa và ngày nhập học. Kiểu SERIAL cho id có nghĩa là nó sẽ tự động tăng cho mỗi mục nhập mới.

Lệnh Ngôn ngữ Điều chỉnh Dữ liệu (DML)

Những lệnh này là những phù thủy... er, lệnh chúng ta sử dụng để làm việc với dữ liệu bên trong bảng của chúng ta.

Lệnh Mô tả Ví dụ
SELECT Lấy dữ liệu từ một hoặc nhiều bảng SELECT * FROM wizards;
INSERT Thêm dữ liệu mới vào bảng INSERT INTO wizards (name, house) VALUES ('Harry Potter', 'Gryffindor');
UPDATE Sửa đổi dữ liệu hiện có trong bảng UPDATE wizards SET house = 'Slytherin' WHERE name = 'Draco Malfoy';
DELETE Xóa dữ liệu từ bảng DELETE FROM wizards WHERE name = 'Voldemort';

Hãy nhìn vào một câu lệnh SELECT phức tạp hơn:

SELECT w.name, w.house, s.subject
FROM wizards w
JOIN subjects s ON w.id = s.wizard_id
WHERE w.house = 'Ravenclaw'
ORDER BY w.name;

Câu truy vấn này:

  1. Lấy tên và nhà của các phù thủy, cùng với môn học của họ
  2. Kết hợp bảng wizards với bảng subjects
  3. Lọc ra sinh viên của nhà Ravenclaw
  4. Sắp xếp kết quả theo tên của phù thủy

Lệnh Ngôn ngữ Điều khiển Dữ liệu (DCL)

Những lệnh này giống như phù thủy bảo mật của cơ sở dữ liệu chúng ta, kiểm soát quyền truy cập và quyền hạn.

Lệnh Mô tả Ví dụ
GRANT Cung cấp quyền hạn cụ thể cho người dùng GRANT SELECT ON wizards TO student_user;
REVOKE Bỏ quyền hạn cụ thể của người dùng REVOKE INSERT ON wizards FROM student_user;

Lệnh Điều khiển Giao dịch

Những lệnh này giúp chúng ta quản lý giao dịch - các nhóm câu lệnh SQL nên được thực hiện cùng nhau.

Lệnh Mô tả Ví dụ
BEGIN Bắt đầu một giao dịch BEGIN;
COMMIT Lưu thay đổi của giao dịch COMMIT;
ROLLBACK Hủy bỏ thay đổi của giao dịch ROLLBACK;

Dưới đây là cách bạn có thể sử dụng chúng trong thực tế:

BEGIN;
UPDATE account SET balance = balance - 100 WHERE id = 1;
UPDATE account SET balance = balance + 100 WHERE id = 2;
COMMIT;

Giao dịch này chuyển 100 đơn vị từ tài khoản 1 sang tài khoản 2. Nếu bất kỳ phần nào trong này thất bại, chúng ta có thể sử dụng ROLLBACK để hủy bỏ tất cả các thay đổi.

Lệnh Tiện ích

PostgreSQL cũng có một số lệnh tiện ích hữu ích:

Lệnh Mô tả Ví dụ
EXPLAIN Hiển thị kế hoạch thực thi của một câu lệnh EXPLAIN SELECT * FROM wizards;
VACUUM Dọn rác và tùy chọn phân tích cơ sở dữ liệu VACUUM wizards;

Lệnh EXPLAIN đặc biệt hữu ích cho việc tối ưu hóa truy vấn của bạn. Nó giống như có một quả cầu水晶 cho thấy bạn PostgreSQL có kế hoạch thực thi truy vấn của bạn như thế nào!

EXPLAIN SELECT * FROM wizards WHERE house = 'Hufflepuff';

Điều này sẽ hiển thị kế hoạch truy vấn, giúp bạn hiểu PostgreSQL đang xử lý truy vấn của bạn như thế nào và nơi bạn có thể tối ưu hóa.

Và đó là tất cả, các học trò SQL trẻ! Chúng ta đã bao gồm cú pháp và lệnh cơ bản của PostgreSQL. Nhớ rằng, giống như bất kỳ phù thủy nào, việc thành thạo SQL đòi hỏi phải luyện tập. Đừng ngại thử nghiệm và thử các lệnh khác nhau. Trước khi bạn biết, bạn sẽ Conjuring các truy vấn phức tạp với dễ dàng!

Lần tới, chúng ta sẽ đi sâu hơn vào nghệ thuật huyền bí của thiết kế cơ sở dữ liệu và truy vấn nâng cao. Đến那时, chúc may mắn cho các truy vấn của bạn nhanh chóng và kết quả phong phú!

Credits: Image by storyset