TỔNG QUAN VỀ GIÁO TRÌNH NGÔN NGỮ SQL (MÃ SỐ: 3CD3)
Tổng quan về giáo trình
Giáo trình Ngôn ngữ SQL (Mã số môn học: 3CD3) là tài liệu học tập và nghiên cứu chuyên ngành do Bộ môn Các hệ thống thông tin, Khoa Công nghệ thông tin, Trường Đại học Công nghệ – Đại học Quốc gia Hà Nội biên soạn, được Sở Bưu chính Viễn thông Hà Nội trực thuộc Ủy ban Nhân dân Thành phố Hà Nội tổ chức xuất bản vào tháng 12 năm 2004 (phát hành năm 2005). Môn học có khối lượng thời lượng đào tạo là 45 tiết, bao gồm cả hai phần giảng dạy lý thuyết và hướng dẫn thực hành trên hệ thống.
Trong cấu trúc chương trình đào tạo ngành Công nghệ thông tin, môn học giữ vai trò cầu nối chuyên môn giữa lý thuyết cơ sở dữ liệu quan hệ và kỹ năng phát triển phần mềm ứng dụng. Mục tiêu học tập cốt lõi của giáo trình là trang bị cho học viên và các lập trình viên khả năng sử dụng thành thạo ngôn ngữ truy vấn mang tính cấu trúc SQL (Structured Query Language), làm chủ các nhóm lệnh định nghĩa dữ liệu (DDL), thao tác dữ liệu (DML) và kiểm soát dữ liệu (DCL).
Tài liệu được xây dựng dựa trên đặc tả của chuẩn quốc tế SQL-99 (trước đây gọi là SQL3), kế thừa từ chuẩn ANSI SQL và SQL-92 (SQL2), đồng thời bổ sung các đặc trưng quan hệ - đối tượng. Bố cục giáo trình được chia thành 3 chương chính theo lộ trình phát triển kiến thức: từ các truy vấn và cấu trúc cơ bản, các cơ chế kiểm soát toàn vẹn dữ liệu, cho đến các phương pháp lập trình nâng cao trong môi trường máy chủ - máy khách (Client-Server).
Điểm đặc thù của giáo trình là việc sử dụng một cơ sở dữ liệu mẫu mang tên "CÔNGTY" (gồm các quan hệ NHÂNVIÊN, ĐƠNVỊ, NHÂNVIÊN_DỰÁN) xuyên suốt các chương mục. Mọi khái niệm lý thuyết trừu tượng của đại số quan hệ đều được ánh xạ trực tiếp sang cú pháp SQL chuẩn kèm theo kết quả dạng bảng dữ liệu cụ thể, giúp người học đối chiếu trực quan cơ chế vận hành của hệ quản trị cơ sở dữ liệu.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Cấu trúc nội dung giáo trình được triển khai qua 3 chương chuyên sâu:
1. Chương I: SQL cơ bản
Chương này cung cấp hệ thống câu lệnh nền tảng của ngôn ngữ SQL:
- Cú pháp truy vấn tiêu chuẩn: Giới thiệu cấu trúc
SELECT - FROM - WHERE. Phép chiếu cho phép lựa chọn thuộc tính, thiết lập bí danh cột với từ khóa AS, tính toán biểu thức số học (+, -, *, /) và ghép hằng số vào kết quả. Phép chọn sử dụng các toán tử so sánh (=, <>, <, >, <=, >=), toán tử logic (AND, OR, NOT) và xử lý chuỗi ký tự qua mẫu đối sánh LIKE, NOT LIKE với ký tự đại diện % (chuỗi ký tự bất kỳ) và _ (ký tự đơn).
- Kiểu dữ liệu và logic ba giá trị: Mô tả cách biểu diễn ngày giờ với
DATE, TIME, TIMESTAMP. Phân tích chi tiết giá trị NULL và logic ba giá trị (TRUE, FALSE, UNKNOWN), trong đó phép toán số học với NULL cho kết quả NULL, so sánh với NULL sinh ra UNKNOWN. Toán tử IS NULL và IS NOT NULL được dùng để kiểm tra tính rỗng của dữ liệu.
- Hệ thống hàm tích hợp: Bao gồm hàm nhóm (
AVG, MIN, MAX, SUM, COUNT), hàm xử lý chuỗi (ASCII, CHAR, UPPER, LOWER, LEN, LTRIM, RTRIM, LEFT, RIGHT, CHARINDEX), hàm thời gian (GETDATE, DATEPART, DATEDIFF, DAY, MONTH, YEAR), hàm toán học (SQUARE, SQRT, ROUND) và hàm chuyển đổi (CAST, CONVERT).
- Truy vấn nâng cao và tập túi (Bag Semantics): Kỹ thuật liên kết nhiều quan hệ qua tích Đề-các (
CROSS JOIN), phép nối têta (JOIN ... ON), nối tự nhiên (NATURAL JOIN), các dạng nối ngoài (FULL OUTER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN). Kỹ thuật truy vấn con (truy vấn con vô hướng, điều kiện quan hệ EXISTS, IN, ALL, ANY, truy vấn con tương quan, truy vấn con trong mệnh đề FROM). Cơ chế xử lý tập túi bằng DISTINCT, UNION ALL, INTERSECT ALL, EXCEPT ALL. Gom nhóm dữ liệu với GROUP BY và lọc nhóm với HAVING.
- Định nghĩa lược đồ và chỉ số: Cú pháp định nghĩa bảng
CREATE TABLE với các kiểu dữ liệu nguyên tử (CHAR, VARCHAR, BIT, BOOLEAN, INT, REAL, FLOAT, DECIMAL), sửa đổi bảng ALTER TABLE (ADD, DROP), xóa bảng DROP TABLE, thiết lập giá trị ngầm định DEFAULT. Tối ưu truy vấn bằng cấu trúc chỉ mục CREATE INDEX, DROP INDEX. Định nghĩa bảng ảo thông qua khung nhìn CREATE VIEW. Các lệnh sửa đổi dữ liệu INSERT INTO, DELETE FROM, UPDATE ... SET.
2. Chương II: Các ràng buộc và các trigger
Nội dung chương tập trung vào cơ chế bảo vệ tính toàn vẹn của dữ liệu trong cơ sở dữ liệu:
- Ràng buộc khóa và toàn vẹn tham chiếu: Khai báo khóa chính
PRIMARY KEY, khóa duy nhất UNIQUE, ràng buộc khóa ngoài FOREIGN KEY, cơ chế duy trì toàn vẹn tham chiếu và cơ chế làm chậm kiểm tra ràng buộc (deferred constraints).
- Ràng buộc thuộc tính và bộ: Ràng buộc bắt buộc
NOT NULL, các biểu thức kiểm tra điều kiện miền giá trị CHECK áp dụng cho từng thuộc tính hoặc trên toàn bộ giá trị của một hàng.
- Sửa đổi ràng buộc và Trigger: Kỹ thuật đặt tên tường minh cho ràng buộc bằng từ khóa
CONSTRAINT, sửa đổi ràng buộc thông qua ALTER TABLE. Định nghĩa các ràng buộc mức lược đồ và thiết lập các trigger nhằm tự động hóa phản ứng của hệ thống trước các thao tác thay đổi dữ liệu.
3. Chương III: Lập trình với SQL
Chương cuối cùng giải quyết việc tích hợp SQL vào các môi trường ứng dụng thực tế:
- SQL trong môi trường ngôn ngữ chủ: Phân tích vấn đề trở ngại không phù hợp trở kháng (impedance mismatch) giữa ngôn ngữ SQL định hướng tập hợp và các ngôn ngữ lập trình bậc cao (C, Pascal) định hướng bản ghi. Kỹ thuật sử dụng biến dùng chung, câu lệnh
SELECT đơn hàng, quản lý và duyệt tập kết quả qua con trỏ (Cursor), con trỏ cuộn (Scrolling Cursor) và cập nhật dữ liệu thông qua con trỏ.
- Thủ tục lưu trữ (Stored Procedures) và hàm PSM: Thiết lập các module lưu trữ thường trực theo chuẩn PSM (Persistent Stored Modules), bao gồm câu lệnh gán, cấu trúc rẽ nhánh
IF-THEN-ELSE, cấu trúc vòng lặp (LOOP, WHILE, FOR).
- Giao diện mức gọi và kiến trúc hệ thống: Mô hình Client - Server trong môi trường SQL; giao diện mức gọi chuẩn SQL/CLI (Call-Level Interface) để kết nối và nhận dữ liệu từ ứng dụng.
- Giao tác và an toàn hệ thống: Bản chất của giao tác (Transaction), nguyên lý xếp hàng tuần tự (serializability), giao tác chỉ đọc (Read-Only Transaction), các mức độ cô lập dữ liệu để ngăn ngừa xung đột cập nhật đồng thời. Cơ chế an toàn và phân quyền người dùng qua lệnh
GRANT, REVOKE và quy trình kiểm tra đặc quyền truy cập.
Kiến thức nền tảng được xây dựng
Giáo trình thiết lập hệ thống tri thức dựa trên các nền tảng khoa học máy tính chuẩn xác:
- Lý thuyết đại số quan hệ hình thức: Ánh xạ các phép toán tập hợp toán học thuần túy (phép chiếu $\Pi$, phép chọn $\sigma$, tích Đề-các $\times$, phép nối $\bowtie$, hợp $\cup$, giao $\cap$, trừ $-$) sang các từ khóa SQL tương ứng.
- Mô hình ngữ nghĩa tập túi (Bag Semantics): Phân biệt sự khác nhau giữa tập hợp toán học (không chứa phần tử trùng lặp) và bảng dữ liệu SQL thực tế (cho phép lưu trữ các bộ giá trị trùng lặp trừ khi được chỉ định từ khóa
DISTINCT).
- Cơ chế logic ba giá trị (Three-Valued Logic): Thiết lập bảng chân trị hình thức cho ba trạng thái
TRUE (1), FALSE (0) và UNKNOWN (1/2), trong đó phép AND lấy giá trị cực tiểu ($\min$), phép OR lấy giá trị cực đại ($\max$), và phép NOT tính theo công thức $1 - v$.
| $x$ |
$y$ |
$x \text{ AND } y$ |
$x \text{ OR } y$ |
$\text{NOT } x$ |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
TRUE |
UNKNOWN |
UNKNOWN |
TRUE |
FALSE |
TRUE |
FALSE |
FALSE |
TRUE |
FALSE |
UNKNOWN |
TRUE |
UNKNOWN |
TRUE |
UNKNOWN |
UNKNOWN |
UNKNOWN |
UNKNOWN |
UNKNOWN |
UNKNOWN |
UNKNOWN |
FALSE |
FALSE |
UNKNOWN |
UNKNOWN |
FALSE |
TRUE |
FALSE |
TRUE |
TRUE |
FALSE |
UNKNOWN |
FALSE |
UNKNOWN |
TRUE |
FALSE |
FALSE |
FALSE |
FALSE |
TRUE |
Bảng chân trị cho logic ba giá trị trong SQL (Nguồn: Trích xuất từ Giáo trình)
- Hệ thống toàn vẹn dữ liệu và lý thuyết giao tác: Cơ sở kiểm soát toàn vẹn thực thể, toàn vẹn tham chiếu, nguyên tắc bảo đảm tính khả tuần tự và cô lập dữ liệu trong các hệ thống xử lý phân tán.
Kỹ năng phát triển
Nội dung giáo trình trang bị cho người học 3 nhóm kỹ năng cốt lõi:
- Kỹ năng kỹ thuật (Technical skills): Viết thành thạo các câu lệnh truy vấn từ đơn giản đến phức tạp (truy vấn lồng, truy vấn tương quan, nối nhiều quan hệ); định nghĩa cấu trúc bảng; thiết lập chỉ mục tối ưu tìm kiếm; lập trình thủ tục lưu trữ, hàm người dùng và trigger theo chuẩn PSM; kết nối SQL với ngôn ngữ lập trình bậc cao thông qua con trỏ và giao diện SQL/CLI.
- Kỹ năng phân tích (Analytical skills): Phân tích lược đồ quan hệ, nhận diện và xử lý các vấn đề liên quan đến giá trị rỗng (
NULL); đánh giá chi phí hiệu năng giữa việc tạo chỉ số tìm kiếm và chi phí tài nguyên khi thực hiện các phép cập nhật (INSERT, UPDATE, DELETE); phân tích các mức cô lập giao tác để hạn chế xung đột truy cập đồng thời.
- Năng lực thực hành (Practical competencies): Xây dựng hệ thống ràng buộc toàn vẹn vững chắc cho cơ sở dữ liệu doanh nghiệp; kiểm soát quyền hạn truy cập của người dùng; xử lý và chuyển đổi dữ liệu đa định dạng (chuỗi, số, ngày tháng).
Phương pháp giảng dạy và học tập
Giáo trình áp dụng phương pháp tiếp cận sư phạm diễn dịch kết hợp thực chứng: mỗi bài học đều bắt đầu từ định nghĩa cú pháp tổng quát, giải thích cơ chế biên dịch ngầm định của hệ thống, và minh họa bằng các đoạn mã nguồn cụ thể kèm bảng kết quả đối sánh.
TIẾN TRÌNH SƯ PHẠM
Hệ thống ví dụ trong sách được xây dựng đồng nhất trên cơ sở dữ liệu "CÔNGTY". Các bảng quan hệ đại diện cho các thực thể tổ chức thực tế:
- Bảng
NHÂNVIÊN (chứa các thuộc tính: Họđệm, Tên, MãsốNV, Ngàysinh, Lương, Giớitính, MãsốNGS, MãsốĐV)
- Bảng
ĐƠNVỊ (chứa các thuộc tính: MãsốĐV, TênĐV, MãsốNQL, Ngàybắtđầu)
- Bảng
NHÂNVIÊN_DỰÁN (chứa các thuộc tính: MãsốNV, MãsốDA, Sốgiờ)
Các bài tập và ví dụ được phân cấp độ phức tạp:
- Ví dụ mức cơ bản: Chiếu các cột cần thiết (
SELECT Họđệm, Tên FROM NHÂNVIÊN WHERE MãsốĐV = 5), tính toán lương mới tăng 10% (SELECT Lương*1.1 AS Lươngmới), lọc dữ liệu bằng điều kiện ghép AND/OR và toán tử LIKE.
- Ví dụ mức trung cấp: Phép nối hai bảng có thuộc tính trùng tên (
NHÂNVIÊN.MãsốĐV = ĐƠNVỊ.MãsốĐV), sử dụng biến bộ để tìm tên người giám sát (FROM NHÂNVIÊN NV, NHÂNVIÊN NV1), gom nhóm tính tổng lương và đếm số lượng nhân sự (GROUP BY MãsốĐV, HAVING COUNT(*) >= 3).
- Ví dụ mức nâng cao: Truy vấn con tương quan để tìm nhân viên có mức lương cao hơn lương trung bình của chính đơn vị họ công tác; kỹ thuật sử dụng truy vấn con trong mệnh đề
FROM; nối ngoài tự nhiên đầy đủ (NATURAL FULL OUTER JOIN) để xử lý các bộ giá trị bị khuyết thông tin người giám sát.
Phương pháp đánh giá kết quả học tập trong thời lượng 45 tiết bao gồm hai phần: kiểm tra lý thuyết (đánh giá mức độ hiểu biết về đại số quan hệ, bảng chân trị logic ba giá trị, các mức cô lập giao tác) và kiểm tra thực hành trên máy (yêu cầu viết đúng cú pháp truy vấn, định nghĩa lược đồ, tạo trigger, cài đặt thủ tục PSM và phân quyền người dùng).
Về định hướng tự học, giáo trình yêu cầu học viên phải nắm vững kiến thức cơ sở dữ liệu quan hệ trước khi tiếp cận; trong quá trình học cần thực hiện từng câu lệnh theo thứ tự trình bày, tự đối chiếu kết quả truy vấn với dữ liệu mẫu trong phụ lục, và giải quyết toàn bộ các bài tập củng cố được bố trí ở phần tổng kết cuối mỗi chương.
Điểm nổi bật và cập nhật
- Xây dựng trên nền tảng chuẩn SQL-99: Khác với các tài liệu chỉ dừng lại ở chuẩn SQL-92 (SQL2) hoặc ANSI SQL nguyên thủy, giáo trình cập nhật đầy đủ các đặc tả của chuẩn SQL-99 (SQL3). Điểm cải tiến này bao gồm việc bổ sung các đặc trưng quan hệ - đối tượng, mở rộng các biểu thức nối phức tạp (
FULL OUTER JOIN, NATURAL JOIN), hệ thống kiểu dữ liệu mở rộng (BIT VARYING, BOOLEAN), và tiêu chuẩn hóa module lập trình thủ tục PSM (Persistent Stored Modules).
- Phản ánh cấu trúc của các hệ quản trị CSDL công nghiệp: Giáo trình đối chiếu giữa các đặc tả chuẩn lý thuyết và các tính năng thực thi trong các hệ quản trị cơ sở dữ liệu thương mại. Tài liệu trình bày rõ hệ thống hàm tiện ích được ứng dụng rộng rãi trong thực tế như các hàm xử lý ngày tháng (
GETDATE, DATEPART, DATEDIFF), các hàm xử lý văn bản (LTRIM, RTRIM, CHARINDEX) và các hàm ép kiểu dữ liệu (CAST, CONVERT).
- Ứng dụng vào bài toán quản trị thực tế: Cơ sở dữ liệu mẫu "CÔNGTY" tái hiện đầy đủ các mối quan hệ nghiệp vụ của một tổ chức: phân cấp nhân sự - người quản lý, phân bổ nhân viên vào các phòng ban và phân công dự án theo thời gian công tác. Các truy vấn mẫu giải quyết trực tiếp các bài toán quản trị như: điều chỉnh thang bảng lương, tìm nhân sự có thu nhập cao nhất trong từng bộ phận, lọc danh sách phòng ban đạt quy mô nhân sự tiêu chuẩn.
- Tính kết nối môi trường phát triển ứng dụng: Giáo trình không xem xét SQL như một ngôn ngữ truy vấn độc lập mà mở rộng thành công cụ phát triển phần mềm qua giao diện mức gọi
SQL/CLI, con trỏ duyệt dữ liệu Cursor, thủ tục lưu trữ Stored Procedures và kỹ thuật kiểm soát giao tác Transaction, đáp ứng kiến trúc phát triển phần mềm nhiều tầng Client-Server.
Đối tượng sử dụng giáo trình
- Sinh viên và học viên chuyên ngành: Giáo trình được biên soạn chuyên biệt cho sinh viên bậc đại học, cao đẳng ngành Công nghệ thông tin, Hệ thống thông tin, Kỹ thuật phần mềm và Khoa học máy tính theo học môn học Ngôn ngữ SQL (Mã số: 3CD3) hoặc các học phần liên quan đến Quản trị Cơ sở dữ liệu. Tài liệu cũng được thiết kế phục vụ đối tượng học viên là các lập trình viên phần mềm cần chuẩn hóa kiến thức về ngôn ngữ truy vấn dữ liệu.
- Yêu cầu kiến thức nền tảng (Prerequisites): Người học bắt buộc phải hoàn thành học phần Cơ sở dữ liệu quan hệ trước khi nghiên cứu giáo trình này. Các khái niệm cần nắm vững bao gồm: cấu trúc mô hình dữ liệu quan hệ, khái niệm khóa chính, khóa ngoại, bộ giá trị, thuộc tính và các phép toán cơ bản trong đại số quan hệ.
- Ứng dụng cho giảng viên: Giảng viên có thể sử dụng giáo trình làm đề cương bài giảng chuẩn mực cho học phần 45 tiết. Cấu trúc 3 chương phân định rõ ràng giữa lý thuyết cơ sở, ràng buộc toàn vẹn và lập trình nâng cao, đi kèm hệ thống ví dụ chuẩn hóa từ CSDL "CÔNGTY" và các câu hỏi, bài tập cuối chương làm nguồn tư liệu xây dựng bài kiểm tra và bài thi kết thúc học phần.
- Tự học và tài liệu tra cứu: Lập trình viên đang làm việc thực tế có thể sử dụng giáo trình như một tài liệu tham khảo chuyên môn về cú pháp chuẩn SQL-99, bảng chân trị logic ba giá trị, cơ chế tối ưu hóa chỉ số (Index), kỹ thuật viết thủ tục PSM và phương pháp thiết lập các mức cô lập giao tác an toàn.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với ai?
Giáo trình được thiết kế cho sinh viên ngành Công nghệ thông tin, Hệ thống thông tin và các lập trình viên phần mềm có nhu cầu trang bị kiến thức bài bản, chính xác về ngôn ngữ SQL từ mức truy vấn căn bản đến kỹ thuật lập trình hệ thống.
2. Cần kiến thức nền nào để học?
Học viên bắt buộc phải có kiến thức nền tảng về lý thuyết Cơ sở dữ liệu quan hệ (mô hình dữ liệu quan hệ, đại số quan hệ, cấu trúc bảng, các phép toán tập hợp) trước khi học giáo trình này.
3. Điểm khác biệt cốt lõi so với các tài liệu SQL khác là gì?
Giáo trình trình bày dựa trên đặc tả chuẩn quốc tế SQL-99, phân tích tường minh mối quan hệ giữa đại số quan hệ và cú pháp SQL, làm rõ ngữ nghĩa tập túi (Bag semantics) và bảng chân trị của logic 3 giá trị (UNKNOWN). Đồng thời, sách mở rộng đầy đủ các chủ đề nâng cao như lập trình thủ tục PSM, con trỏ Cursor, giao diện SQL/CLI, và quản trị giao tác Transaction.
SO SÁNH CÁC TÀI LIỆU SQL TRUYỀN THỐNG VÀ GIÁO TRÌNH 3CD3
Tiêu chí Tài liệu thông thường Giáo trình SQL (3CD3)
Chuẩn kỹ thuật SQL-92 / Biến thể riêng Chuẩn SQL-99 (SQL3)
Xử lý logic 3 giá trị Mô tả sơ lược Bảng chân trị hình thức
Ngữ nghĩa tập hợp Xem như tập hợp thuần túy Phân tích tập túi (Bag)
Lập trình hệ thống Chỉ giới thiệu SELECT DML PSM, SQL/CLI, Cursor
Bảo toàn giao tác Ít đề cập Serializability, ACID
4. Làm sao để tự học giáo trình đạt hiệu quả cao?
Người học nên cài đặt một hệ quản trị cơ sở dữ liệu quan hệ trên máy tính cá nhân, khởi tạo cấu trúc và nạp dữ liệu cho cơ sở dữ liệu "CÔNGTY" theo mô tả tại phụ lục giáo trình, trực tiếp gõ và thực thi các câu lệnh ví dụ trong từng chương, sau đó tự làm toàn bộ bài tập cuối mỗi chương.
5. Có tài liệu và dữ liệu thực hành bổ trợ nào kèm theo giáo trình?
Giáo trình cung cấp sẵn lược đồ và bộ dữ liệu mẫu CSDL "CÔNGTY" tại phần Phụ lục, hệ thống tóm tắt lý thuyết trọng tâm và danh mục bài tập thực hành ứng dụng được bố trí ở cuối mỗi chương.
Kết luận
Giáo trình Ngôn ngữ SQL (Mã số: 3CD3) do Trường Đại học Công nghệ – ĐHQG Hà Nội biên soạn và Sở Bưu chính Viễn thông Hà Nội xuất bản là tài liệu học thuật có cấu trúc chặt chẽ, diễn giải chuẩn xác các nguyên lý cơ sở dữ liệu quan hệ trên nền tảng chuẩn SQL-99.
Lộ trình học tập khuyến nghị dành cho người học gồm 3 giai đoạn:
- Giai đoạn 1: Làm chủ các lệnh DDL, DML, logic ba giá trị và kỹ thuật xử lý tập túi trong Chương I.
- Giai đoạn 2: Cài đặt các ràng buộc toàn vẹn (
PRIMARY KEY, FOREIGN KEY, CHECK) và thiết kế Trigger trong Chương II.
- Giai đoạn 3: Làm chủ kỹ thuật lập trình nhúng, thủ tục lưu trữ
PSM, giao diện SQL/CLI và kiểm soát an toàn giao tác trong Chương III.
Để củng cố và mở rộng kiến thức, người học nên kết hợp nghiên cứu các tài liệu đặc tả chuẩn ISO/IEC SQL-99 và thực hành phát triển ứng dụng cơ sở dữ liệu trên các hệ quản trị CSDL thương mại.