Tổng quan về giáo trình
Tài liệu "PHẦN II: CƠ SỞ DỮ LIỆU - NGÔN NGỮ SQL" là tài liệu học tập chuyên khảo thuộc khối kiến thức cơ sở ngành trong chương trình đào tạo Cử nhân và Kỹ sư các 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 tại các trường đại học. Về mặt vị trí chương trình đào tạo, nội dung giáo trình đóng vai trò cầu nối trung gian giữa lý thuyết mô hình dữ liệu quan hệ và kỹ năng triển khai cơ sở dữ liệu trên các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) trong thực tế.
Mục tiêu học tập của giáo trình được thiết kế nhằm trang bị cho người học:
- Khả năng hiểu và vận dụng đúng các tiêu chuẩn ANSI SQL89 và ISO 9075-1989.
- Kỹ năng tạo lập, hiệu chỉnh cấu trúc lưu trữ và thiết lập các ràng buộc toàn vẹn dữ liệu (DDL).
- Kỹ năng thao tác cập nhật, xóa, chèn bản ghi dữ liệu (DML).
- Năng lực quản trị, cấp phát và thu hồi quyền hạn truy cập của người dùng trên hệ thống (DCL).
- Năng lực xây dựng các câu lệnh truy vấn dữ liệu từ mức đơn giản đến các biểu thức truy vấn lồng liên kết phức tạp (DQL - SELECT).
Cấu trúc giáo trình được tổ chức tuần tự theo 5 chương nội dung logic đi kèm hệ thống bài tập thực hành theo từng chương và một bài tập thiết kế tổng hợp. Điểm tiếp cận sư phạm đặc trưng của tài liệu là phương pháp đối chiếu trực tiếp giữa tư duy lập trình thủ tục truyền thống (minh họa bằng cấu trúc dữ liệu bản ghi Record và vòng lặp duyệt mảng For...If trong ngôn ngữ Pascal) với bản chất phi thủ tục của SQL – nơi người lập trình chỉ cần khai báo yêu cầu lấy dữ liệu "CÁI GÌ" (WHAT) thay vì phải chỉ ra cách thức thực hiện "THẾ NÀO" (HOW).
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Giáo trình bao gồm 5 chương lý thuyết và thực hành được sắp xếp theo tiến trình phát triển từ tổng quan đến chuyên sâu:
-
Chương 1: Lịch sử phát triển và Đặc điểm của SQL
Trình bày bối cảnh ra đời của SQL từ dự án System R của IBM (giữa thập niên 1970), phiên bản SEQUEL2 (11/1976), thương phẩm đầu tiên của Oracle (1979), các hệ thống DB2, SQL/DS, cùng các mốc chuẩn hóa ANSI SQL89 và ISO 9075-1989. Chương này phân định rõ hai nhánh: SQL (ngôn ngữ hỏi đáp) và PL/SQL (ngôn ngữ lập trình thủ tục mở rộng), đồng thời phân loại 4 nhóm lệnh nền tảng: SELECT, DDL, DML, DCL.
-
Chương 2: Các lệnh định nghĩa dữ liệu (DDL)
Cung cấp cú pháp tạo cơ sở dữ liệu (CREATE DATABASE), tạo bảng (CREATE TABLE) và quy tắc định danh đối tượng. Nội dung đi sâu phân tích hệ thống kiểu dữ liệu trên MS Access (Text, Memo, Number, Date/Time, Currency, AutoNumber, Yes/No, OLE Object) và Oracle Database (CHAR, VARCHAR2, NUMBER(p,s), FLOAT, LONG, DATE, RAW/LONG RAW, ROWID, MLSLABEL). Đồng thời, chương trình bày chi tiết 6 loại ràng buộc toàn vẹn (NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY với tùy chọn ON DELETE CASCADE, CHECK, DEFAULT), các lệnh biến đổi cấu trúc (ALTER TABLE - ADD, ALTER/MODIFY, DROP COLUMN) và lệnh xóa đối tượng (DROP TABLE).
-
Chương 3: Các lệnh quản trị dữ liệu (DML)
Quy định cú pháp và ngữ nghĩa của các thao tác dữ liệu: thêm bản ghi mới (INSERT INTO dạng đơn dòng, dạng khuyết trường và dạng nạp từ truy vấn con), xóa bản ghi thỏa mãn điều kiện (DELETE FROM ... WHERE), và chỉnh sửa nội dung trường dữ liệu (UPDATE ... SET ... WHERE).
-
Chương 4: Ngôn ngữ điều khiển dữ liệu (DCL)
Trình bày cơ chế bảo mật phân quyền thông qua hai lệnh GRANT (cấp quyền) và REVOKE (thu hồi quyền). Hệ thống phân tách thành 2 cấp độ: cấp quyền thực thi lệnh hệ thống (CREATE TABLE, CREATE VIEW, CREATE PROCEDURE, BACKUP DATABASE, BACKUP LOG...) và cấp quyền thao tác trên đối tượng cơ sở dữ liệu (SELECT, INSERT, UPDATE, DELETE, EXECUTE trên bảng, cột hoặc khung nhìn).
-
Chương 5: Truy vấn dữ liệu (SELECT)
Chương trọng tâm với dung lượng lớn nhất, bao quát:
- Cú pháp chuẩn của câu lệnh
SELECT và các mệnh đề: FROM, WHERE, GROUP BY, HAVING, ORDER BY.
- Phép chiếu và chọn: loại bỏ trùng lặp (
DISTINCT), tính toán biểu thức số học, đặt bí danh (AS), các toán tử so sánh, toán tử logic (AND, OR, NOT), toán tử tập hợp (BETWEEN, IN, LIKE, IS NULL, EXISTS).
- Thư viện hàm xử lý phong phú: hàm số học (
ROUND, TRUNC, CEIL, FLOOR, POWER, EXP, SQRT, SIGN, ABS, MOD), hàm xử lý chuỗi (CONCAT, INITCAP, LOWER, UPPER, LPAD, RPAD, LTRIM, RTRIM, REPLACE, SOUNDEX, SUBSTR, TRANSLATE, INSTR, LENGTH), hàm ngày tháng (MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY, LAST_DAY), hàm chuyển đổi và logic (TO_CHAR, TO_NUMBER, TO_DATE, DECODE, NVL, GREATEST).
- Gom nhóm dữ liệu (
GROUP BY) kết hợp hàm tổng hợp (COUNT, SUM, AVG, MAX, MIN) và điều kiện nhóm (HAVING).
- Kỹ thuật kết nối bảng: nối bằng (Equi-Join), nối không bằng (Non Equi-Join), nối bảng với chính nó (Self-Join), và cú pháp chuẩn
JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN).
- Các phép toán tập hợp:
UNION, UNION ALL, INTERSECT, MINUS.
- Truy vấn lồng (Subqueries): truy vấn con trả về một giá trị đơn, truy vấn con trả về tập hợp nhiều hàng kết hợp toán tử
ANY, ALL, IN, EXISTS, và cơ chế thực thi của truy vấn lồng liên kết (Correlated Subquery).
Kiến thức nền tảng được xây dựng
Giáo trình xây dựng hệ thống tri thức dựa trên:
- Lý thuyết mô hình quan hệ: Ánh xạ các khái niệm quan hệ, bộ (tuple), thuộc tính (attribute) thành bảng (table), hàng (row) và cột (column).
- Đại số quan hệ hình thức: Hiện thực hóa các phép toán đại số quan hệ kinh điển gồm phép chiếu ($\pi$), phép chọn ($\sigma$), phép tích Descartes ($\times$), phép kết nối ($\bowtie$) và các phép toán tập hợp ($\cup, \cap, -$).
- Nguyên lý toàn vẹn dữ liệu: Xây dựng cơ chế bảo đảm tính toàn vẹn thực thể (Entity Integrity), toàn vẹn tham chiếu (Referential Integrity) và toàn vẹn miền giá trị (Domain Integrity) thông qua hệ thống Constraint.
Kỹ năng phát triển
- Kỹ năng kỹ thuật (Technical skills): Viết mã SQL chuẩn xác; khai báo cấu trúc bảng với đầy đủ ràng buộc; hiệu chỉnh lược đồ; viết câu lệnh truy vấn đa bảng và truy vấn con lồng nhau.
- Kỹ năng phân tích (Analytical skills): Phân tích yêu cầu bài toán nghiệp vụ, xác định đúng nguồn dữ liệu, thiết lập mối quan hệ liên kết bảng và lựa chọn cấu trúc lọc dữ liệu tối ưu.
- Kỹ năng thực hành (Practical competencies): Khả năng chuyển đổi qua lại giữa các cú pháp đặc thù của nhiều hệ quản trị CSDL như MS Access, Oracle Database và SQL Server.
Phương pháp giảng dạy và học tập
Giáo trình áp dụng phương pháp sư phạm cấu trúc quy nạp và thực nghiệm trực quan:
-
Bài tập và hệ thống Case Studies mẫu:
Các bài toán thực hành xuyên suốt tài liệu được xây dựng trên các mô hình quản lý thực tế:
- Cơ sở dữ liệu Quản lý thư viện (
QLTV): Thao tác trên bảng DOCGIA(MaDG, TenDG, DiaChi, Tuoi).
- Cơ sở dữ liệu Quản lý bán hàng: Minh họa các phép kết nối qua bảng
KHACHHANG(MaKH, TenKH) và DONHANG(MaSP, TenSP, MaKH).
- Cơ sở dữ liệu Quản lý nhân sự (
QLNhanVien): Cấu trúc hoàn chỉnh gồm 3 bảng quan hệ NHANVIEN(MaNV, HoTen, CongViec, Luong, MaDV, MaPT), DONVI(MaDV, TenDV) và BACLUONG(MaBac, BacThap, BacCao).
-
Phương pháp đánh giá và tự học:
Sau mỗi chương đều có hệ thống câu hỏi lý thuyết và bài tập viết lệnh cụ thể (như bài tập phân quyền người dùng phnhung, htvan, minhdd; bài tập sửa cấu trúc trường Ghichu; bài tập truy vấn lồng liên kết tìm nhân viên có mức lương cao hơn lương trung bình đơn vị). Người học được khuyến nghị cài đặt môi trường quản trị CSDL, tự gõ lại cú pháp và đối chiếu bảng kết quả in trong giáo trình với kết quả thực tế trên máy tính.
Điểm nổi bật và cập nhật
- Tính so sánh đối chiếu đa nền tảng RDBMS:
Tài liệu không đóng khung trong một hệ quản trị duy nhất mà so sánh chi tiết giữa MS Access và Oracle Database:
- Về kiểu dữ liệu: Đối chiếu các kiểu số (Byte, Integer, Long Integer, Single, Double của Access với kiểu
NUMBER(p,s) của Oracle), kiểu chuỗi biến đổi (Text/Memo trong Access với VARCHAR2/LONG trong Oracle), các kiểu đặc thù như OLE Object, AutoNumber, ROWID (cấu trúc block.file) và MLSLABEL.
- Về toán tử tìm kiếm: Phân tích sự khác biệt giữa ký tự đại diện chuẩn SQL (
%, _) và ký tự đại diện trong MS Access (*, ?).
| Tiêu chí so sánh |
MS Access |
Oracle Database |
| Chuỗi độ dài cố định |
Text (tối đa 255 ký tự) |
CHAR (tối đa 255 byte) |
| Chuỗi độ dài thay đổi |
Memo (tối đa 65.536 ký tự) |
VARCHAR2 (tối đa 2000 byte) |
| Văn bản dung lượng lớn |
OLE Object (lên tới 1 GB) |
LONG (tối đa 2 GB, kèm 6 ràng buộc kỹ thuật) |
| Ký tự đại diện chuỗi |
Ký tự * (chuỗi), ? (ký tự đơn) |
Ký tự % (chuỗi), _ (ký tự đơn) |
| Hàm chuyển đổi ngày |
Tự động định dạng |
TO_DATE, TO_CHAR với định dạng Julian |
-
Phân tích chi tiết các giới hạn kỹ thuật chuyên sâu:
Tài liệu liệt kê cụ thể 6 giới hạn khi thao tác với kiểu LONG trong Oracle: bảng chỉ chứa tối đa 1 cột LONG; không tham gia ràng buộc toàn vẹn ngoại trừ kiểm tra NULL; không thể lập chỉ mục (INDEX); không truyền tham số cho hàm/thủ tục; hàm không thể trả về kiểu LONG; không tham gia vào các mệnh đề WHERE, GROUP BY, ORDER BY, CONNECT BY, DISTINCT hoặc các hàm chuỗi (SUBSTR, INSTR).
-
Chuẩn hóa học thuật:
Hệ thống hóa chuẩn mực theo chuẩn ANSI SQL89 và ISO 9075-1989, giới thiệu hệ thống định dạng ngày tháng (SCC, YYYY, MONTH, J - Julian date từ năm 4713 TCN, HH24, MI, SS, SSSSS, RR) và khuôn dạng hiển thị số (9, 0, $, L, MI, PR, EEE, V, B).
Đối tượng sử dụng giáo trình
-
Sinh viên đại học:
- Sinh viên năm 2 và năm 3 thuộc các ngành: Công nghệ Thông tin, Khoa học Máy tính, Hệ thống Thông tin Quản lý, Mạng máy tính và Truyền thông dữ liệu.
- Đối tượng theo học các học phần: Cơ sở dữ liệu, Hệ quản trị cơ sở dữ liệu, Nhập môn SQL, Lập trình ứng dụng cơ sở dữ liệu.
-
Điều kiện tiên quyết (Prerequisites):
- Đã học qua học phần Nhập môn Lập trình hoặc Kỹ thuật Lập trình (hiểu các khái niệm kiểu dữ liệu, biến, bản ghi và biểu thức logic).
- Kiến thức cơ bản về Toán rời rạc (đặc biệt là lý thuyết tập hợp và logic vị từ).
-
Giảng viên và Cán bộ giảng dạy:
- Sử dụng làm khung tài liệu biên soạn đề cương bài giảng lý thuyết và xây dựng kịch bản thực hành phòng máy.
- Trích xuất hệ thống bài tập và bộ dữ liệu mẫu (
DOCGIA, NHANVIEN, DONVI, BACLUONG) để xây dựng ngân hàng câu hỏi kiểm tra, đánh giá học phần.
-
Kỹ sư và Người tự học:
- Dùng làm tài liệu tra cứu có hệ thống về cú pháp các hàm tích hợp sẵn, bảng mã định dạng chuỗi/ngày tháng và quy tắc viết truy vấn lồng liên kết.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với ai?
Tài liệu được biên soạn phù hợp cho sinh viên đại học khối ngành Công nghệ Thông tin đang học học phần Cơ sở dữ liệu, giảng viên cần tài liệu tham khảo giảng dạy, và lập trình viên cần nắm vững nền tảng ngôn ngữ SQL chuẩn ANSI.
2. Cần kiến thức nền nào để học?
Người học cần nắm vững kiến thức toán rời rạc cơ bản (logic mệnh đề, phép toán tập hợp) và hiểu biết căn bản về cấu trúc dữ liệu bản ghi trong lập trình để tiếp thu hiệu quả nguyên lý phi thủ tục của SQL.
3. Điểm khác biệt với giáo trình khác là gì?
Giáo trình phân tích chi tiết sự khác biệt về cú pháp, kiểu dữ liệu và ký tự đại diện giữa nhiều RDBMS (MS Access, Oracle Database), đồng thời giải thích rõ các cơ chế nâng cao như ngày Julian, địa chỉ ROWID và truy vấn lồng liên kết.
4. Làm sao để tự học hiệu quả?
Người học nên cài đặt một hệ quản trị CSDL quan hệ (như Oracle Database Express, MS SQL Server hoặc MS Access), thực hành lần lượt từng câu lệnh theo bảng dữ liệu mẫu và hoàn thành các bài tập kiểm tra ở cuối mỗi chương.
5. Có tài liệu bổ trợ nào kèm theo?
Giáo trình cung cấp sẵn hệ thống bảng dữ liệu mẫu (NHANVIEN, DONVI, DOCGIA, BACLUONG, KHACHHANG, DONHANG) cùng các bài tập tình huống thực hành, có thể sử dụng trực tiếp trên các công cụ quản trị dữ liệu mà không cần tạo thêm dữ liệu giả lập phức tạp.
Kết luận
Giáo trình "PHẦN II: CƠ SỞ DỮ LIỆU - NGÔN NGỮ SQL" cung cấp một khung kiến thức hoàn chỉnh, có hệ thống và chuẩn xác về ngôn ngữ truy vấn mang tính chuẩn mực quốc tế. Nội dung bao quát toàn diện từ lịch sử chuẩn hóa ANSI/ISO, phân loại tập lệnh (DDL, DML, DCL, DQL), kỹ thuật xử lý hàm số học, chuỗi, ngày tháng, đến các kỹ thuật truy vấn lồng và truy vấn lồng liên kết phức tạp.
Lộ trình học tập được thiết kế tuần tự từ việc định nghĩa lược đồ, kiểm soát toàn vẹn dữ liệu, phân quyền bảo mật đến khai thác thông tin đa chiều. Đây là tài liệu học thuật cơ sở giúp người học xây dựng tư duy dữ liệu quan hệ vững chắc trước khi tiếp cận các chủ đề nâng cao như tối ưu hóa câu lệnh (Query Optimization) hay lập trình thủ tục nâng cao với PL/SQL.