CHƯƠNG 5 SQL (Structured Query Language) Bài giảng môn Cơ sở dữ liệu © Bộ môn Hệ Thống Thông Tin ‐ Khoa Công Nghệ Thông Tin ‐ Trường Đại học Khoa học Tự nhiên Nội dung Giới thiệu Định nghĩa dữ liệu Truy vấn dữ liệu Cập nhật dữ liệu Khung nhìn (view) Chỉ mục (index) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 2 Giới thiệu Ngôn ngữ ĐSQH - Cách thức truy vấn dữ liệu - Khó khăn cho người sử dụng SQL (Structured Query Language) - Ngôn ngữ cấp cao - Người sử dụng chỉ cần đưa ra nội dung cần truy vấn - Được phát triển bởi IBM (1970s) - Được gọi là SEQUEL - Được ANSI công nhận và phát triển thành chuẩn SQL‐86 SQL‐92 SQL‐99 © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 3 Giới thiệu (tt) SQL gồm - Định nghĩa dữ liệu (DDL) - Thao tác dữ liệu (DML) - Định nghĩa khung nhìn Lý thuyết : Chuẩn SQL‐92 - Ràng buộc toàn vẹn - Phân quyền và bảo mật - Điều khiển giao tác SQL sử dụng thuật ngữ Thương mại : SQL Server - Bảng ~ quan hệ - Cột ~ thuộc tính - Dòng ~ bộ © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 4 Nội dung chi tiết Giới thiệu Định nghĩa dữ liệu - Kiểu dữ liệu - Các lệnh định nghĩa dữ liệu Truy vấn dữ liệu Cập nhật dữ liệu Khung nhìn (view) Chỉ mục (index) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 5 Định nghĩa dữ liệu Là ngôn ngữ mô tả - Lược đồ cho mỗi quan hệ - Miền giá trị tương ứng của từng thuộc tính - Ràng buộc toàn vẹn - Chỉ mục trên mỗi quan hệ Gồm - CREATE TABLE (tạo bảng) - DROP TABLE (xóa bảng) - ALTER TABLE (sửa bảng) - CREATE DOMAIN (tạo miền giá trị) - CREATE DATABASE © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 6 Kiểu dữ liệu Số (numeric) - INTEGER - SMALLINT - NUMERIC, NUMERIC(p), NUMERIC(p,s) - DECIMAL, DECIMAL(p), DECIMAL(p,s) - REAL - DOUBLE PRECISION - FLOAT, FLOAT(p) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 7 Kiểu dữ liệu (tt) Chuỗi ký tự (character string) - CHARACTER hoặc CHAR - CHARACTER(n) hoặc CHAR (n) - CHARACTER VARYING(n) hoặc VARCHAR(n) - NATIONAL CHARACTER (n) hoặc NCHAR(n) Chuỗi bit (bit string) - BIT, BIT(x) - BIT VARYING(x) Ngày giờ (datetime) - DATE gồm ngày, tháng và năm - TIME gồm giờ, phút và giây - TIMESTAMP gồm ngày và giờ - DATETIME: gồm DATE và TIME (Chỉ có trong SQL của SQL © Bộ môn Server) HTTT - Khoa CNTT - Trường ĐH KHTN 8 Lệnh tạo bảng Để định nghĩa một bảng - Tên bảng - Các thuộc tính Tên thuộc tính Kiểu dữ liệu Các RBTV trên thuộc tính Cú pháp CREATE TABLE <Tên_bảng> ( <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>], <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>], … [<RBTV>] ) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 9 Ví dụ ‐ Tạo bảng Tạo bảng lưu trữ thông tin giáo viên với các thuộc tính và quy định sau: - MaGV : Khoá chính - HoTen: Họ tên của giáo viên không được để trống - Luong: Mặc định là 1000 - Phai: Phải là Nam hoặc Nữ - NgaySinh: Ngày tháng năm sinh của giáo viên - SoNha, Duong, Quan, ThanhPho : địa chỉ của giáo viên - GVQLCM: mã giáo viên quản lý chuyên môn của giáo viên (khoá ngoại) - MaBM: mã bộ môn của giáo viên (khoá ngoại) © Bộ môn HTTT - Khoa CNTT - Trường ĐH KHTN 10 Ví dụ ‐ Tạo bảng CREATE TABLE GIAOVIEN ( MaGV CHAR(9), HoTen NVARCHAR(50), Luong INT, Phai CHAR(3), NgaySinh DATETIME, SoNha NVARCHAR(10), Duong NVARCHAR(50), Quan NVARCHAR(50), ThanhPho NVARCHAR(50), GVQLCM CHAR(9), MaBM CHAR(9) ) © Bộ môn HTTT - Khoa…
Giáo Trình Cơ Sở Dữ Liệu: Chương 5 - Ngôn Ngữ Định Nghĩa Dữ Liệu (DDL) và Truy Vấn Dữ Liệu SQL
Tổng quan về giáo trình
Bài giảng "Chương 5: SQL (Structured Query Language)" là học liệu cốt lõi trong chương trình đào tạo học phần Cơ sở dữ liệu, được biên soạn bởi Bộ môn Hệ thống Thông tin – Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên (ĐHQG-HCM). Trong chương trình đào tạo bậc đại học khối ngành Công nghệ Thông tin và Hệ thống Thông tin, học phần Cơ sở dữ liệu giữ vị trí môn học cơ sở ngành bắt buộc, đóng vai trò bản lề kết nối giữa kiến thức toán rời rạc, cấu trúc dữ liệu với các kỹ thuật xây dựng ứng dụng phần mềm và quản trị dữ liệu nâng cao.
+-------------------------------------------------------------------------------+
| BỘ MÔN HỆ THỐNG THÔNG TIN - KHOA CÔNG NGHỆ THÔNG TIN |
| TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN |
+-------------------------------------------------------------------------------+
|
v
GIÁO TRÌNH MÔN HỌC: CƠ SỞ DỮ LIỆU
|
v
CHƯƠNG 5: SQL (STRUCTURED QUERY LANGUAGE)
+-----------------------------------+-----------------------------------+
| Phân hệ Định nghĩa Dữ liệu (DDL) | Phân hệ Thao tác Dữ liệu (DML) |
| - Cấu trúc Lược đồ bảng | - Cú pháp SELECT - FROM - WHERE |
| - Hệ thống Kiểu dữ liệu | - Biểu thức Boolean & Phép nối |
| - Ràng buộc Toàn vẹn (Constraint) | - Xử lý giá trị NULL |
+-----------------------------------+-----------------------------------+
Mục tiêu học tập của bài giảng bao gồm:
- Cung cấp hiểu biết toàn diện về lịch sử hình thành, chuẩn hóa và kiến trúc phân lớp của ngôn ngữ SQL từ chuẩn ANSI (SQL-86, SQL-92, SQL-99) đến các hệ quản trị thương mại như Microsoft SQL Server.
- Giúp người học làm chủ ngôn ngữ định nghĩa dữ liệu (DDL - Data Definition Language) nhằm thiết lập cấu trúc bảng, khai báo kiểu dữ liệu và định nghĩa hệ thống ràng buộc toàn vẹn trên lược đồ quan hệ.
- Xây dựng kỹ năng chuyển dịch từ mô hình đại số quan hệ lý thuyết sang các câu lệnh truy vấn dữ liệu thực tế bằng ngôn ngữ SQL cấp cao.
Cách tiếp cận của giáo trình đi từ việc giải thích nền tảng lý thuyết chuẩn hóa đến việc hiện thực hóa cú pháp chi tiết trên hệ quản trị cơ sở dữ liệu quan hệ cụ thể. Điểm đặc thù của tài liệu là việc sử dụng đồng nhất một cơ sở dữ liệu mẫu mang tính học thuật cao về quản lý hoạt động nghiên cứu khoa học của giảng viên (bao gồm các thực thể: GIAOVIEN, BOMON, KHOA, DETAI, CONGVIEC, THAMGIADT) xuyên suốt toàn bộ ví dụ minh họa và bài tập phân tích cú pháp.
Nội dung kiến thức cốt lõi
Các chương và chủ đề chính
Nội dung bài giảng được cấu trúc thành các module kiến thức tuần tự, đảm bảo tính liên tục và logic từ khâu tạo dựng cấu trúc dữ liệu đến khâu trích xuất thông tin:
[Tổng quan & Lịch sử SQL]
- Giới thiệu tổng quan và lịch sử SQL:
- Khái quát về hạn chế của ngôn ngữ đại số quan hệ thuần túy trong tương tác người dùng.
- Nguồn gốc của ngôn ngữ SEQUEL do IBM phát triển vào thập niên 1970 và tiến trình chuẩn hóa bởi ANSI thông qua các mốc: SQL-86, SQL-92, SQL-99.
- Phân loại các phân hệ trong SQL: Định nghĩa dữ liệu (DDL), Thao tác dữ liệu (DML), Định nghĩa khung nhìn (View), Kiểm soát ràng buộc toàn vẹn, Phân quyền bảo mật và Điều khiển giao tác.
- Bảng quy đổi thuật ngữ giữa lý thuyết đại số quan hệ và hệ thống cơ sở dữ liệu thương mại:
| Lý thuyết (Đại số quan hệ / Chuẩn SQL-92) | Thương mại (Hệ quản trị MS SQL Server) |
|---|---|
| Quan hệ (Relation) | Bảng (Table) |
| Thuộc tính (Attribute) | Cột (Column) |
| Bộ (Tuple) | Dòng (Row / Record) |
-
Hệ thống kiểu dữ liệu trong SQL:
- Nhóm kiểu số (Numeric):
INTEGER,SMALLINT,NUMERIC(p, s),DECIMAL(p, s),REAL,DOUBLE PRECISION,FLOAT(p). - Nhóm kiểu chuỗi ký tự (Character string):
CHAR(n),VARCHAR(n)(chuỗi thay đổi độ dài), và các định dạng hỗ trợ ký tự quốc tế Unicode gồmNCHAR(n),NVARCHAR(n). - Nhóm kiểu chuỗi bit (Bit string):
BIT,BIT(x),BIT VARYING(x). - Nhóm kiểu ngày giờ (Datetime):
DATE(ngày/tháng/năm),TIME(giờ/phút/giây),TIMESTAMP(ngày và giờ theo chuẩn ANSI) vàDATETIME(kiểu dữ liệu kết hợp ngày giờ trong Microsoft SQL Server).
- Nhóm kiểu số (Numeric):
-
Lệnh định nghĩa dữ liệu (DDL - Data Definition Language):
CREATE TABLE: Khởi tạo cấu trúc bảng mới cùng danh sách các cột, kiểu dữ liệu tương ứng và các ràng buộc đi kèm.ALTER TABLE: Thay đổi cấu trúc bảng hiện hành bao gồm thêm cột mới (ADD), xóa cột (DROP COLUMN), thay đổi định nghĩa kiểu dữ liệu cột (ALTER COLUMN), thêm ràng buộc (ADD CONSTRAINT) hoặc loại bỏ ràng buộc (DROP CONSTRAINT).DROP TABLE: Xóa bỏ hoàn toàn định nghĩa bảng và toàn bộ dữ liệu lưu trữ bên trong bảng ra khỏi cơ sở dữ liệu.CREATE DOMAIN: Tạo miền giá trị hoặc kiểu dữ liệu người dùng tự định nghĩa kế thừa từ các kiểu dữ liệu có sẵn (Ví dụ:CREATE DOMAIN MyString30 AS VARCHAR(30)).CREATE DATABASE: Thiết lập cơ sở dữ liệu mới trên hệ thống lưu trữ.
-
Hệ thống ràng buộc toàn vẹn (Integrity Constraints - RBTV):
- Cơ chế thiết lập các quy tắc toàn vẹn dữ liệu:
NOT NULL,NULL,UNIQUE,DEFAULT,PRIMARY KEY,FOREIGN KEY / REFERENCES,CHECK. - Cú pháp định danh tên tường minh cho ràng buộc:
CONSTRAINT <Ten_RBTV> <Loai_RBTV>. Kỹ thuật này cho phép quản lý vòng đời của ràng buộc độc lập với định nghĩa cột.
- Cơ chế thiết lập các quy tắc toàn vẹn dữ liệu:
-
Truy vấn dữ liệu cơ bản (DML - Basic Query):
- Cấu trúc ba mệnh đề nền tảng:
SELECT <danh sách cột> FROM <danh sách bảng> WHERE <điều kiện lọc>. - Đối chiếu với đại số quan hệ: Cú pháp
SELECT L FROM R WHERE Ctương đương với biểu thức đại số quan hệ $\pi_L(\sigma_C(R))$. - Mở rộng mệnh đề
SELECT: Sử dụng bí danh cột (AS), các phép toán số học trên thuộc tính (ví dụ:LUONG * 1.1), phép ghép chuỗi địa chỉ (SONHA + ',' + DUONG + ...), và loại bỏ trùng lặp bằng từ khóaDISTINCT. - Xây dựng điều kiện
WHERE: Sử dụng toán tử logic (AND,OR,NOT), toán tử xác định khoảng (BETWEEN ... AND ...,NOT BETWEEN), toán tử so khớp mẫu ký tự (LIKE,NOT LIKEvới ký tự đại diện%,_,[charlist],[^charlist]). - Xử lý giá trị
NULL: Biểu thức số học chứaNULLcho kết quảNULL; biểu thức so sánh chứaNULLdẫn đến trạng thái logicUNKNOWN; kiểm tra giá trị rỗng bằngIS NULLvàIS NOT NULL. - Phép kết bảng trên mệnh đề
FROM: Minh họa bản chất của phép tích Descartes ($R \times S$) khi liệt kê nhiều bảng trênFROMvà kỹ thuật sử dụng điều kiện kết nối thuộc tính khóa trên mệnh đềWHEREđể tránh nhập nhằng bằng bí danh bảng (Alias).
- Cấu trúc ba mệnh đề nền tảng:
+-------------------------------------------------------------------------------+
| CƠ SỞ DỮ LIỆU MẪU: QUẢN LÝ ĐỀ TÀI |
+-------------------------------------------------------------------------------+
| |
| +-----------------------+ +-----------------------+ |
| | KHOA | | BOMON | |
| +-----------------------+ +-----------------------+ |
| | PK: MAKHOA |1 *| PK: MABM | |
| | TENKHOA |--------------| TENBM | |
| | TRUONGKHOA (FK) | | TRUONGBM (FK) | |
| +-----------------------+ | FK: MAKHOA | |
| +-----------------------+ |
| |1 |
| | |
| |* |
| +-----------------------+ +-----------------------+ |
| | DETAI | | GIAOVIEN | |
| +-----------------------+ +-----------------------+ |
| | PK: MADT |1 *| PK: MAGV | |
| | TENDT (UNIQUE) |--------------| HOTEN (NOT NULL) | |
| | KINHPHI | | LUONG (DEFAULT) | |
| | FK: GVCNDT | | PHAI (CHECK) | |
| +-----------------------+ | FK: GVQLCM | |
| |1 | FK: MABM | |
| | +-----------------------+ |
| |* |1 |
| +-----------------------+ | |
| | CONGVIEC | | |
| +-----------------------+ | |
| | PK,FK: MADT | | |
| | PK: STT | |* |
| | TENCV | +-----------------------+ |
| +-----------------------+ | THAMGIADT | |
| +-----------------------+ |
| | PK,FK: MAGV | |
| | PK,FK: MADT, STT | |
| | PHUCAP | |
| +-----------------------+ |
+-------------------------------------------------------------------------------+
Kiến thức nền tảng được xây dựng
Nội dung bài giảng thiết lập nền tảng khoa học vững chắc về lý thuyết cơ sở dữ liệu quan hệ:
- Nguyên lý toàn vẹn dữ liệu (Data Integrity): Toàn vẹn thực thể (thông qua khóa chính
PRIMARY KEY), toàn vẹn tham chiếu (thông qua khóa ngoạiFOREIGN KEY), toàn vẹn miền giá trị (thông quaCHECK,DEFAULT,NOT NULL,CREATE DOMAIN) và toàn vẹn định danh người dùng (UNIQUE). - Logic ba giá trị (Three-Valued Logic): Hiểu rõ cơ chế đánh giá biểu thức logic trong cơ sở dữ liệu quan hệ gồm ba trạng thái:
TRUE,FALSEvàUNKNOWN. - Ánh xạ từ mô hình hình thức sang mô hình cài đặt: Nắm vững cơ chế chuyển đổi các phép toán của đại số quan hệ (Chiếu, Chọn, Tích Descartes, Kết nối tự nhiên, Kết nối có điều kiện $\theta$-join) sang cú pháp khai báo của SQL.
Kỹ năng phát triển
Thông qua các nội dung được giảng dạy, người học hình thành các kỹ năng chuyên môn:
- Kỹ năng kỹ thuật: Soạn thảo các kịch bản DDL chuẩn xác để khởi tạo, điều chỉnh và quản lý lược đồ cơ sở dữ liệu vật lý; thiết lập chính xác các khóa và ràng buộc phức hợp trên nhiều cột (như
PRIMARY KEY (MADT, STT)trong bảngCONGVIEC). - Kỹ năng phân tích logic: Phân tích yêu cầu bài toán thực tế để xác định đúng miền giá trị, quy tắc kiểm tra điều kiện (ví dụ: ràng buộc tuổi
TUOI >= 23 AND TUOI <= 60, ràng buộc giới tínhPHAI IN ('Nam', 'Nu')). - Kỹ năng giải quyết bài toán truy vấn: Ánh xạ chính xác các câu hỏi nghiệp vụ bằng ngôn ngữ tự nhiên sang các câu lệnh truy vấn đa bảng có cấu trúc điều kiện phức hợp và loại trừ lỗi nhập nhằng tên thuộc tính.
Phương pháp giảng dạy và học tập
Phương pháp tiếp cận sư phạm
Bài giảng áp dụng phương pháp sư phạm cấu trúc theo mô hình diễn tiến chuẩn mực trong khoa học máy tính:
- Trình bày khái niệm lý thuyết và nền tảng chuẩn hóa: Giới thiệu mục tiêu của lệnh, cơ sở toán học hoặc chuẩn quốc tế tương ứng.
- Khai báo cú pháp tổng quát: Đưa ra cấu trúc chuẩn của câu lệnh cùng các tham số tùy chọn và bắt buộc.
- Phân tích ca minh họa cụ thể: Sử dụng các lược đồ thực tế để mô tả cách thức vận hành của câu lệnh.
- Đối chiếu đại số quan hệ và phân tích mã lỗi: Đối chiếu biểu thức SQL với phép toán đại số quan hệ tương đương, phân tích các trường hợp xung đột toàn vẹn dữ liệu (ví dụ: tạo khóa ngoại khi bảng cha chưa tồn tại, hoặc thêm khóa chính mà cột chưa được gán thuộc tính
NOT NULL).
+-----------------------------------------------------------------------------+
| TIẾN TRÌNH SƯ PHẠM |
+-----------------------------------------------------------------------------+
| Bước 1: Cơ sở Lý thuyết (Chuẩn SQL-92, Đại số quan hệ) |
| Bước 2: Cú pháp Chuẩn hóa (CREATE TABLE, ALTER TABLE, SELECT...) |
| Bước 3: Thực thi Minh họa (Lược đồ GIAOVIEN, BOMON, KHOA, DETAI) |
| Bước 4: Kiểm soát Ràng buộc & Tối ưu hóa (CONSTRAINT, INDEX, NULL logic) |
+-----------------------------------------------------------------------------+
Bài tập và kịch bản thực hành
Giáo trình cung cấp các dạng bài tập thực hành theo cấp độ từ cơ bản đến phức hợp:
- Bài tập định nghĩa lược đồ có ràng buộc: Điển hình là yêu cầu tạo bảng
GIAOVIENvới các quy định khắt khe:MaGVlà khóa chính,HoTenkhông được để trống (NOT NULL),Luongmặc định là 1000 (DEFAULT),Phaithuộc tập giá trị Nam/Nữ (CHECK (PHAI IN ('Nam', 'Nu'))), địa chỉ phân rã thành các trường nhỏ (SoNha,Duong,Quan,ThanhPho), cùng các khóa ngoại tự tham chiếuGVQLCMvà khóa ngoại liên kếtMaBM. - Bài tập thay đổi lược đồ động: Thực hành lệnh
ALTER TABLE BOMONđể bổ sung khóa chínhPK_BOMON, khóa ngoạiFK_TRBOMONtham chiếu đếnGIAOVIEN(MAGV), ràng buộc duy nhấtUNI_TENBMvà ràng buộc giá trị mặc địnhDF_NGAYNHANCHUCsử dụng hàm hệ thốngGETDATE(). - Bài tập truy vấn liên kết đa bảng:
- Truy vấn tìm tên bộ môn và tên trưởng bộ môn thuộc khoa CNTT.
- Truy vấn thông tin đề tài cấp 'Thành phố' kèm họ tên, ngày sinh, địa chỉ của chủ nhiệm đề tài thông qua liên kết ba bảng
DETAI,CHUDE,GIAOVIEN. - Truy vấn tìm giáo viên thuộc bộ môn 'HTTT' tham gia đề tài 'Mobile Database' có phụ cấp công việc trên 10 triệu đồng thông qua liên kết bốn bảng
GIAOVIEN,THAMGIADT,CONGVIEC,DETAI.
Phương pháp đánh giá và hướng dẫn tự học
- Đánh giá kết quả học tập: Được thực hiện thông qua bài thực hành viết mã trực tiếp trên hệ quản trị SQL Server trong môi trường phòng lab, đánh giá khả năng thiết kế lược đồ không lỗi toàn vẹn và mức độ tối ưu, chính xác của các câu lệnh trích xuất dữ liệu.
- Khuyến nghị tự học: Sinh viên cần thực hiện tuần tự việc phân tích lược đồ dữ liệu trên giấy, viết biểu thức đại số quan hệ tương đương trước khi chuyển thể thành câu lệnh SQL; chủ động thử nghiệm các trường hợp vi phạm ràng buộc dữ liệu (nhập trùng khóa chính, nhập sai khóa ngoại, gán giá trị ngoài miền
CHECK) để quan sát cơ chế bắt lỗi của hệ quản trị cơ sở dữ liệu.
Điểm nổi bật và cập nhật
Tính chuẩn hóa kết hợp thực tiễn thương mại
Bài giảng cân bằng giữa tính hàn lâm chuẩn mực và yêu cầu thực tiễn của công nghệ phần mềm:
- Song hành chuẩn ANSI và hệ quản trị thương mại: Bài giảng làm rõ sự khác biệt giữa chuẩn lý thuyết (SQL-92) và việc triển khai trong Microsoft SQL Server (như kiểu dữ liệu
DATETIME, hàmGETDATE(), tiền tốNcho kiểu dữ liệu hỗ trợ UnicodeNVARCHAR). - Phân định rõ ràng vòng đời schema: Hướng dẫn chi tiết kỹ thuật đặt tên ràng buộc (
CONSTRAINT <Ten_RBTV>) giúp sinh viên nắm vững kỹ năng quản trị lược đồ chuyên nghiệp, cho phép sửa đổi hoặc gỡ bỏ các ràng buộc riêng lẻ trên hệ thống thực tế mà không làm gián đoạn hay phá vỡ cấu trúc dữ liệu tổng thể.
+-----------------------------------+
| KIẾN TRÚC RÀNG BUỘC SQL |
+-----------------------------------+
|
+-----------------------+-----------------------+
| |
v v
+-----------------------+ +-----------------------+
| Ràng buộc nội dòng | | Ràng buộc tường minh |
| (Inline Constraint) | | (Named CONSTRAINT) |
+-----------------------+ +-----------------------+
| - Khai báo cùng kiểu | | - Định danh rõ ràng |
| dữ liệu | | (PK_, FK_, CK_...) |
| - Khó quản lý sửa đổi | | - Thêm/xóa linh hoạt |
| - Hệ thống tự đặt tên | | qua ALTER TABLE |
+-----------------------+ +-----------------------+
Tính trực quan và tính hệ thống của các ví dụ
- Lược đồ dữ liệu thực tế: Cơ sở dữ liệu mẫu về quản lý đề tài khoa học thể hiện đầy đủ các mối quan hệ đa dạng trong thực tế: quan hệ 1-N (Khoa - Bộ môn, Bộ môn - Giáo viên), quan hệ đệ quy/tự tham chiếu (Giáo viên - Giáo viên quản lý chuyên môn), quan hệ xác định người lãnh đạo (Bộ môn - Trưởng bộ môn), quan hệ phụ thuộc thực thể yếu (Đề tài - Công việc) và quan hệ N-N có thuộc tính (Giáo viên - Tham gia đề tài).
- Phân tích sâu về cơ chế so sánh chuỗi và giá trị rỗng: Trình bày chi tiết cú pháp đối sánh chuỗi với tập ký tự
[charlist]và phủ định[^charlist], giải thích tường minh cơ chế hoạt động của giá trịNULLtrong các phép toán số học và biểu thức logic, giúp sinh viên tránh được các sai sót căn bản thường gặp trong lập trình cơ sở dữ liệu.
Đối tượng sử dụng giáo trình
Bài giảng được thiết kế chuyên biệt phục vụ các đối tượng trong môi trường đào tạo đại học và nghiên cứu kỹ thuật:
+-----------------------------------------------------------------------------+
| ĐỐI TƯỢNG SỬ DỤNG HỌC LIỆU |
+-----------------------------------------------------------------------------+
| |
| |
+-----------------------------------------------------------------------------+
-
Sinh viên đại học chính quy:
- Dành cho sinh viên năm thứ hai hoặc năm thứ ba thuộc các ngành: Hệ thống Thông tin, Công nghệ Thông tin, Kỹ thuật Phần mềm, Khoa học Máy tính và Khoa học Dữ liệu.
- Điều kiện tiên quyết (Prerequisites): Sinh viên cần hoàn thành học phần Nhập môn Lập trình, Cấu trúc Dữ liệu & Giải thuật, và đã học các chương đầu của môn Cơ sở dữ liệu về: Mô hình thực thể kết hợp (ERD), Mô hình quan hệ (Relational Model), và Đại số quan hệ (Relational Algebra).
-
Giảng viên và cán bộ trợ giảng:
- Sử dụng làm tài liệu giảng dạy chuẩn trên lớp, định hướng cấu trúc nội dung bài giảng lý thuyết và xây dựng hệ thống bài tập thực hành phòng máy tương thích với hệ quản trị Microsoft SQL Server.
-
Kỹ sư phần mềm và người tự học:
- Tài liệu tham khảo hữu ích cho các lập trình viên muốn củng cố kiến thức nền tảng về DDL, chuẩn hóa cơ sở dữ liệu quan hệ, nắm vững cơ chế ràng buộc toàn vẹn và kỹ thuật viết câu lệnh truy vấn chuẩn tắc theo tiêu chuẩn ANSI SQL.
Câu hỏi thường gặp
1. Giáo trình này phù hợp với đối tượng nào?
Giáo trình được thiết kế chuẩn mực cho sinh viên bậc đại học ngành Công nghệ Thông tin và Hệ thống Thông tin đang học môn Cơ sở dữ liệu, đồng thời là tài liệu tham khảo nền tảng cho lập trình viên phát triển ứng dụng cần nắm vững kiến thức SQL chuẩn và thiết kế lược đồ cơ sở dữ liệu.
2. Cần chuẩn bị những kiến thức nền tảng nào trước khi học nội dung này?
Người học cần có kiến thức cơ bản về tư duy lập trình cấu trúc, hiểu biết về mô hình dữ liệu quan hệ (các khái niệm quan hệ, thuộc tính, bộ giá trị, khóa chính, khóa ngoại) và các phép toán trong đại số quan hệ (Chiếu, Chọn, Tích Descartes, Kết nối).
3. Sự khác biệt giữa cách tiếp cận lý thuyết (Chuẩn SQL-92) và thương mại (MS SQL Server) trong bài giảng là gì?
Chuẩn SQL-92 đại diện cho lý thuyết chuẩn hóa của ANSI với các khái niệm quan hệ, thuộc tính, bộ và các kiểu dữ liệu trừu tượng (TIMESTAMP, CREATE DOMAIN). Trong khi đó, MS SQL Server là hệ quản trị thương mại cụ thể hóa các lý thuyết này thành bảng, cột, dòng, đồng thời bổ sung các kiểu dữ liệu và hàm đặc thù như DATETIME, NVARCHAR, GETDATE().
4. Làm sao để nắm vững và áp dụng chính xác hệ thống Ràng buộc Toàn vẹn (RBTV)?
Người học cần phân biệt rõ ràng hai phương pháp khai báo: khai báo trực tiếp cùng dòng định nghĩa thuộc tính và khai báo tường minh qua lệnh CONSTRAINT. Việc sử dụng mệnh đề CONSTRAINT có đặt tên được khuyến nghị để thuận tiện cho việc bảo trì, thêm hoặc xóa ràng buộc thông qua lệnh ALTER TABLE khi yêu cầu nghiệp vụ thay đổi.
5. Có những tài liệu và công cụ nào cần thiết để thực hành bài giảng này?
Sinh viên cần cài đặt hệ quản trị cơ sở dữ liệu Microsoft SQL Server cùng công cụ quản lý SQL Server Management Studio (SSMS), kết hợp với tài liệu hướng dẫn thực hành và hệ thống bài tập lớn của Bộ môn Hệ thống Thông tin – Trường ĐH Khoa học Tự nhiên.
Kết luận
Bài giảng Chương 5: SQL (Ngôn ngữ Định nghĩa và Truy vấn Dữ liệu) của Bộ môn Hệ thống Thông tin – Khoa Công nghệ Thông tin, Trường Đại học Khoa học Tự nhiên cung cấp một hệ thống kiến thức hoàn chỉnh, chuẩn xác và mang tính sư phạm cao về ngôn ngữ SQL. Bằng việc kết hợp chặt chẽ giữa nền tảng lý thuyết đại số quan hệ và cú pháp thực thi trên hệ quản trị cơ sở dữ liệu thương mại, tài liệu giúp người học xây dựng tư duy mạch lạc trong việc mô tả lược đồ, kiểm soát toàn vẹn dữ liệu và trích xuất thông tin.
Lộ trình học tập đề xuất: $$\text{Lý thuyết Đại số quan hệ} \longrightarrow \text{Định nghĩa Dữ liệu & RBTV (DDL)} \longrightarrow \text{Truy vấn Cơ bản (SELECT-FROM-WHERE)} \longrightarrow \text{Truy vấn Nâng cao & Tối ưu hóa}$$
Để hoàn thiện toàn bộ khối kiến thức của chương học, người học được khuyến nghị tiếp tục nghiên cứu các phần tiếp theo về hàm kết hợp (AGGREGATE FUNCTIONS), gom nhóm (GROUP BY, HAVING), truy vấn lồng (NESTED QUERIES), phân hệ cập nhật dữ liệu (INSERT, UPDATE, DELETE), cùng kỹ thuật tạo khung nhìn (VIEW) và chỉ mục (INDEX).