Ngôn ngữ dữ liệu trong Mô hình Quan hệ
1. Tổng quan về Ngôn ngữ dữ liệu
Ngôn ngữ dữ liệu là công cụ để người dùng giao tiếp với Hệ quản trị cơ sở dữ liệu (Hệ QTCSDL) nhằm định nghĩa và thao tác dữ liệu.
Phân loại ngôn ngữ truy vấn:
- Ngôn ngữ cấp thấp (Ngôn ngữ thủ tục): Người dùng phải chỉ ra dữ liệu nào cần và cách thức để lấy dữ liệu đó.
- Ví dụ: Đại số quan hệ (Relational Algebra), Tính toán vị từ.
- Ngôn ngữ cấp cao (Ngôn ngữ phi thủ tục/Tuyên bố): Người dùng chỉ cần chỉ ra dữ liệu nào cần mà không cần quan tâm đến cách thức lấy.
- Ví dụ: SQL (Structured Query Language), QBE.
2. Ngôn ngữ Đại số quan hệ (ĐSQH)
Là tập hợp các phép toán trên các quan hệ. Đầu vào là một hoặc nhiều quan hệ, đầu ra là một quan hệ mới.
Các phép toán quan hệ:
- Phép chiếu (
- Projection): Lựa chọn một số thuộc tính (cột) từ quan hệ. - Cú pháp:
- Cú pháp:
- Phép chọn (
- Selection): Lựa chọn các bộ (dòng) thỏa mãn điều kiện nhất định. - Cú pháp:
- Cú pháp:
- Phép kết nối (
- Join): Ghép các bộ từ hai quan hệ dựa trên điều kiện kết nối. - Kết nối tự nhiên (
): Kết nối dựa trên các thuộc tính trùng tên. - Kết nối ngoài (Outer Join): Giữ lại các bộ không tìm thấy phần tương ứng (Trái/Phải).
- Kết nối tự nhiên (
- Phép chia (
- Division): Tìm các giá trị trong quan hệ R1 xuất hiện cùng với tất cả các giá trị trong quan hệ R2.
Các phép toán tập hợp:
- Phép hợp (
): Tập các bộ thuộc ít nhất một trong hai quan hệ (phải cùng miền giá trị). - Phép giao (
): Tập các bộ thuộc cả hai quan hệ. - Phép trừ (
): Tập các bộ thuộc quan hệ thứ nhất nhưng không thuộc quan hệ thứ hai. - Phép tích đề-các (
): Kết hợp từng bộ của quan hệ này với mọi bộ của quan hệ kia.
3. Ngôn ngữ SQL (Structured Query Language)
SQL là ngôn ngữ chuẩn hóa để quản lý và thao tác dữ liệu trong CSDL quan hệ.
Các thành phần của SQL:
- DDL (Data Definition Language): Định nghĩa cấu trúc dữ liệu (
CREATE,DROP,ALTER). - DML (Data Manipulation Language): Thao tác dữ liệu (
INSERT,UPDATE,DELETE,SELECT). - DCL (Data Control Language): Quản lý quyền truy cập và bảo mật.
Định nghĩa dữ liệu (DDL):
- Tạo bảng:
CREATE TABLE TableName ( Col1 Type1 [NOT NULL] [PRIMARY KEY], Col2 Type2, CONSTRAINT Name FOREIGN KEY (Col1) REFERENCES OtherTable(Col) ); - Xóa bảng:
DROP TABLE TableName; - Sửa bảng:
ALTER TABLE TableName ADD/DROP/CHANGE COLUMN ...;
Thao tác dữ liệu (DML):
- Thêm:
INSERT INTO TableName (cols) VALUES (values); - Xóa:
DELETE FROM TableName WHERE condition; - Sửa:
UPDATE TableName SET col = value WHERE condition;
Truy vấn dữ liệu (SELECT):
Cấu trúc tổng quát:
SELECT [DISTINCT] thuộc_tính
FROM danh_sách_bảng
[WHERE điều_kiện_chọn]
[GROUP BY thuộc_tính_nhóm]
[HAVING điều_kiện_nhóm]
[ORDER BY thuộc_tính [ASC|DESC]];
- Toán tử điều kiện:
'=',!=,<,>,BETWEEN,IN,LIKE(sử dụng%cho chuỗi bất kỳ,_cho một ký tự). - Hàm gộp (Aggregate functions):
SUM,AVG,COUNT,MAX,MIN. - Truy vấn lồng: Sử dụng kết quả của một câu truy vấn này làm điều kiện cho câu truy vấn khác (với
IN,EXISTS,ALL,ANY). - Phép toán tập hợp:
UNION,MINUS(hoặcEXCEPT),INTERSECT.
4. Xử lý câu hỏi truy vấn
Khi nhận một câu lệnh SQL, Hệ QTCSDL thực hiện các bước:
- Phân tích cú pháp (Parser): Kiểm tra tính đúng đắn của câu lệnh.
- Chuyển đổi: Chuyển câu lệnh SQL sang biểu thức Đại số quan hệ.
- Bộ tối ưu hóa (Optimizer): Tìm phương án thực thi (Execution Plan) hiệu quả nhất.
- Bộ sinh mã: Tạo chương trình thực thi tối ưu để lấy dữ liệu từ CSDL.