SQL (Structured Query Language) 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) 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) 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 4 Giới thiệu (tt) SQL gồm SQL dùng thuật ngữ Định nghĩa dữ liệu (DDL) Bảng ~ quan hệ Thao tác dữ liệu (DML) Cột ~ thuộc tính Ngôn ngữ thao tác dữ liệu nhúng Dòng ~ bộ Định nghĩa khung nhìn Ràng buộc toàn vẹn Phân quyền và bảo mật Điều khiển giao tác 5 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) Định nghĩa dữ liệu DDL 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 … 7 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) 8 Kiểu dữ liệu (tt) Chuỗi ký tự (character string) CHARACTER, CHARACTER(n) CHARACTER VARYING(x) 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ờ 9 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>] ) 10 Ví dụ - Tạo bảng CREATE TABLE NHANVIEN ( MANV CHAR(9), HONV VARCHAR(10), TENLOT VARCHAR(20), TENNV VARCHAR(10), NGSINH DATETIME, DCHI VARCHAR(50), PHAI CHAR(3), LUONG INT, MA_NQL CHAR(9), PHG INT ) 11 Lệnh tạo bảng (tt) <RBTV> NOT NULL NULL UNIQUE DEFAULT PRIMARY KEY FOREIGN KEY / REFERENCES CHECK Đặt tên cho RBTV CONSTRAINT <Ten_RBTV> <RBTV> 12 Ví dụ - RBTV CREATE TABLE NHANVIEN ( HONV VARCHAR(10) NOT NULL, TENLOT VARCHAR(20) NOT NULL, TENNV VARCHAR(10) NOT NULL, MANV CHAR(9) PRIMARY KEY, NGSINH DATETIME, DCHI VARCHAR(50), PHAI CHAR(3) CHECK (PHAI IN (‘Nam’, ‘Nu’)), LUONG INT DEFAULT (10000), MA_NQL CHAR(9), PHG INT ) 13 Ví dụ - RBTV CREATE TABLE PHONGBAN ( TENPB VARCHAR(20) UNIQUE, MAPHG INT NOT NULL, TRPHG CHAR(9), NG_NHANCHUC DATETIME DEFAULT (GETDATE()) ) CREATE TABLE PHANCONG ( MA_NVIEN CHAR(9) FOREIGN KEY (MA_NVIEN) REFERENCES NHANVIEN(MANV), SODA INT REFERENCES DEAN(MADA), THOIGIAN DECIMAL(3,1) ) 14 Ví dụ - Đặt tên cho RBTV CREATE TABLE NHANVIEN ( HONV VARCHAR(10) CONSTRAINT NV_HONV_NN NOT NULL, TENLOT VARCHAR(20) NOT NULL, TENNV VARCHAR(10) NOT NULL, MANV CHAR(9) CONSTRAINT NV_MANV_PK PRIMARY KEY, NGSINH DATETIME, DCHI VARCHAR(50), PHAI CHAR(3) CONSTRAINT NV_PHAI_CHK CHECK (PHAI IN (‘Nam’, ‘Nu’)), LUONG INT CONSTRAINT NV_LUONG_DF DEFAULT (10000), MA_NQL CHAR(9), PHG INT ) 15 Ví dụ - Đặt tên cho RBTV CREATE TABLE PHANCONG ( MA_NVIEN CHAR(9), SODA INT, THOIGIAN DECIMAL(3,1), CONSTRAINT PC_MANVIEN_SODA_PK PRIMARY KEY (MA_NVIEN, SODA), CONSTRAINT PC_MANVIEN_FK FOREIGN KEY (MA_NVIEN) REFERENCES NHANVIEN(MANV), CONSTRAINT PC_SODA_FK FOREIGN KEY (SODA) REFERENCES DEAN(MADA) ) 16 Lệnh sửa cấu trúc bảng Được dùng để Thay đổi cấu trúc bảng Thay đổi RBTV Thêm cột ALTER TABLE <Tên_bảng> ADD COLUMN <Tên_cột> <Kiểu_dữ_liệu> [<RBTV>] Xóa cột ALTER TABLE <Tên_bảng> DROP COLUMN <Tên_cột> Mở rộng cột ALTER TABLE <Tên_bảng> ALTER COLUMN <Tên_cột> <Kiểu_dữ_liệu_mới> 17 Lệnh sửa bảng (tt) Thêm RBTV ALTER TABLE <Tên_bảng> ADD CONSTRAINT <Ten_RBTV> <RBTV>, CONSTRAINT <Ten_RBTV> <RBTV>, … Xóa RBTV ALTER TABLE <Tên_bảng> DROP <Tên_RBTV> 18 Ví dụ - Thay đổi cấu trúc bảng ALTER TABLE NHANVIEN ADD NGHENGHIEP CHAR(20) ALTER TABLE NHANVIEN DROP COLUMN NGHENGHIEP ALTER TABLE NHANVIEN ALTER COLUMN NGHENGHIEP CHAR(50) 19 Ví dụ - Thay đổi RBTV CREATE TABLE PHONGBAN ( TENPB VARCHAR(20), MAPHG INT NOT NULL, TRPHG CHAR(9), NG_NHANCHUC DATETIME ) ALTER TABLE PHONGBAN ADD CONSTRAINT PB_MAPHG_PK PRIMARY KEY (MAPHG), CONSTRAINT PB_TRPHG FOREIGN KEY (TRPHG) REFERENCES NHANVIEN(MANV), CONSTRAINT PB_NGNHANCHUC_DF DEFAULT (GETDATE()) FOR (NG_NHANCHUC), CONSTRAINT PB_TENPB_UNI UNIQUE (TENPB) 20 Lệnh xóa bảng Được dùng để xóa cấu trúc bảng Tất cả dữ liệu của bảng cũng bị xóa Cú pháp DROP TABLE <Tên_bảng> Ví dụ DROP TABLE NHANVIEN DROP TABLE PHONGBAN DROP TABLE PHANCONG 21 Lệnh xóa bảng (tt) NHANVIEN HONV TENLOT TENNV MANV NGSINH DCHI PHAI LUONG MA_NQL PHG PHONGBAN TENPHG MAPHG TRPHG NG_NHANCHUC 22 Lệnh tạo miền giá trị Tạo ra một kiểu dữ liệu mới kế thừa những kiểu dữ liệu có sẵn. Cú pháp CREATE DOMAIN <Tên_kdl_mới> AS <Kiểu_dữ_liệu> Ví dụ CREATE DOMAIN Kieu_Ten AS VARCHAR(30) 23 Nội dung Giới thiệu Định nghĩa dữ liệu Truy vấn dữ liệu mệnh đề SELECT mệnh đề WHERE mệnh đề FROM mệnh đề ORDER BY truy vấn con mệnh đề GROUP BY một số dạng truy vấn khác Cập nhật dữ liệu Khung nhìn (view) Chỉ mục (index) Truy vấn dữ liệu Là ngôn ngữ rút trích dữ liệu thỏa một số điều kiện nào đó Dựa trên Phép toán ĐSQH Một số bổ sung Cho phép 1 bảng có nhiều dòng trùng nhau Bảng là bag quan hệ là set 25 Truy vấn cơ bản Gồm 3 mệnh đề SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> <danh sách các cột> • Tên các cột cần được hiển thị trong kết quả truy vấn <danh sách các bảng> • Tên các bảng liên quan đến câu truy vấn <điều kiện> • Biểu thức boolean xác định dòng nào sẽ được rút trích • Nối các biểu thức: AND, OR, và NOT • Phép toán: , , , , , , LIKE và BETWEEN 26 Truy vấn cơ bản (tt) SQL và ĐSQH SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> SELECT L FROM R WHERE C L (C (R)) 27 Ví dụ Tìm đọc 1 tập hợp các dòng dữ liệu Lấy tất cả các cột của quan hệ kết quả SELECT * FROM NHANVIEN WHERE PHG=5 MANV HONV TENLOT TENNV NGSINH DCHI PHAI LUONG MA_NQL PHG 333445555 Nguyen Thanh Tung 12/08/1955 638 NVC Q5 Nam 40000 888665555 5 987987987 Nguyen Manh Hung 09/15/1962 Ba Ria VT Nam 38000 333445555 5 28 Mệnh đề SELECT SELECT MANV, HONV, TENLOT, TENNV FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ MANV HONV TENLOT TENNV 333445555 Nguyen Thanh Tung 987987987 Nguyen Manh Hung 29 Mệnh đề SELECT (tt) Tên bí danh SELECT MANV, HONV AS HO, TENLOT AS ‘TEN LOT’, TENNV AS TEN FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ MANV HO TEN LOT TEN 333445555 Nguyen Thanh Tung 987987987 Nguyen Manh Hung 30 Mệnh đề SELECT (tt) Mở rộng SELECT MANV, HONV + ‘ ’ + TENLOT + ‘ ’ + TENNV AS ‘HO TEN’ FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ MANV HO TEN 333445555 Nguyen Thanh Tung 987987987 Nguyen Manh Hung 31 Mệnh đề SELECT (tt) Mở rộng SELECT MANV, LUONG*1.1 AS ‘LUONG10%’ FROM NHANVIEN WHERE PHG=5 AND PHAI=‘Nam’ MANV LUONG10% 333445555 33000 987987987 27500 32 Mệnh đề SELECT (tt) Loại bỏ các dòng trùng nhau LUONG SELECT LUONG 30000 FROM NHANVIEN 25000 WHERE PHG=5 AND PHAI=‘Nam’ 25000 38000 SELECT DISTINCT LUONG LUONG FROM NHANVIEN 30000 WHERE PHG=5 AND PHAI=‘Nam’ 25000 38000 33 Mệnh đề WHERE Biểu thức luận lý SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG TRUE TRUE 34 Mệnh đề WHERE (tt) Độ ưu tiên SELECT MANV, TENNV FROM NHANVIEN, PHONGBAN WHERE (TENPHG=‘Nghien cuu’ OR TENPHG=‘Quan ly’) AND PHG=MAPHG 35 Mệnh đề WHERE (tt) BETWEEN SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG>20000 AND LUONG<30000 SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG BETWEEN 20000 AND 30000 36 Mệnh đề WHERE (tt) NOT BETWEEN SELECT MANV, TENNV FROM NHANVIEN WHERE LUONG NOT BETWEEN 20000 AND 30000 37 Mệnh đề WHERE (tt) LIKE SELECT MANV, TENNV FROM NHANVIEN WHERE DCHI LIKE ‘Nguyen _ _ _ _’ Ký tự bất kỳ SELECT MANV, TENNV FROM NHANVIEN WHERE DCHI LIKE ‘Nguyen %’ Chuỗi bất kỳ 38 Mệnh đề WHERE (tt) NOT LIKE SELECT MANV, TENNV FROM NHANVIEN WHERE HONV LIKE ‘Nguyen’ SELECT MANV, TENNV FROM NHANVIEN WHERE HONV NOT NOT LIKE ‘Nguyen’ 39 Mệnh đề WHERE (tt) ESCAPE SELECT MANV, TENNV FROM NHANVIEN WHERE DCHI LIKE ‘% Nguyens_%’ ESCAPE ‘s’ ‘Nguyen_’ 40 Mệnh đề WHERE (tt) Ngày giờ SELECT MANV, TENNV FROM NHANVIEN WHERE NGSINH BETWEEN ‘1955-12-08’ AND ‘1966-07-19’ ‘1955-12-08’ YYYY-MM-DD ’17:30:00’ HH:MI:SS ’12/08/1955’ MM/DD/YYYY ’05:30 PM’ ‘December 8, 1955’ ‘1955-12-08 17:30:00’ 41 Mệnh đề WHERE (tt) NULL Sử dụng trong trường hợp Không biết (value unknown) Không thể áp dụng (value inapplicable) Không tồn tại (value withheld) Những biểu thức tính toán có liên quan đến giá trị NULL sẽ cho ra kết quả là NULL x có giá trị là NULL x + 3 cho ra kết quả là NULL x + 3 là một biểu thức không hợp lệ trong SQL Những biểu thức so sánh có liên quan đến giá trị NULL sẽ cho ra kết quả là UNKNOWN x = 3 cho ra kết quả là UNKNOWN x = 3 là một so sánh không hợp lệ trong SQL 42 Mệnh đề WHERE (tt) NULL SELECT MANV, TENNV FROM NHANVIEN WHERE MA_NQL IS NULL SELECT MANV, TENNV FROM NHANVIEN WHERE MA_NQL IS NOT NULL 43 Mệnh đề FROM Không sử dụng mệnh đề WHERE SELECT MANV, MAPHG FROM NHANVIEN, PHONGBAN WHERE TRUE MANV MAPHG 333445555 1 333445555 4 333445555 5 987987987 1 987987987 4 987987987 5 … … 44 Mệnh đề FROM (tt) Tên bí danh SELECT TENPHG, DIADIEM FROM PHONGBAN PHONGBAN,AS DDIEM_PHG PB, DDIEM_PHG AS DD WHERE PB.MAPHG MAPHG=MAPHG SELECT TENNV, NV.NGSINH, NGSINH, TENTN, TENTN, NGSINH TN.
Tổng quan về giáo trình
Giáo trình "Hướng Dẫn SQL Cơ Bản và Nâng Cao" là tài liệu học tập chuyên khảo về Ngôn ngữ Truy vấn có Cấu trúc (Structured Query Language - SQL), phục vụ trực tiếp cho học phần Cơ sở dữ liệu và Hệ quản trị cơ sở dữ liệu quan hệ trong chương trình đào tạo đại học các ngành Công nghệ thông tin, Hệ thống thông tin, Khoa học máy tính và Kỹ thuật phần mềm. Về mặt vị trí chương trình, giáo trình đóng vai trò cầu nối bản lề giữa lý thuyết mô hình dữ liệu quan hệ (đặc biệt là Đại số quan hệ - ĐSQH) với việc triển khai thực tế trên các hệ quản trị cơ sở dữ liệu (RDBMS).
Mục tiêu học tập của giáo trình nhằm trang bị cho người học:
- Hiểu rõ nguồn gốc lịch sử, tiến trình chuẩn hóa của SQL từ ngôn ngữ SEQUEL do IBM phát triển trong thập niên 1970 đến các chuẩn ANSI (SQL-86, SQL-92, SQL-99).
- Làm chủ cú pháp Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language - DDL) để thiết lập lược đồ quan hệ, kiểu dữ liệu, các ràng buộc toàn vẹn (RBTV), cũng như cơ chế chỉnh sửa và xóa cấu trúc bảng.
- Nắm vững Ngôn ngữ Thao tác Dữ liệu (Data Manipulation Language - DML) và Ngôn ngữ Truy vấn Dữ liệu (Data Query Language - DQL) qua các mệnh đề
SELECT,FROM,WHERE,ORDER BY,GROUP BY, kết hợp với các phép toán tập hợp (UNION,INTERSECT,EXCEPT) và truy vấn con lồng nhau (Subquery). - Làm quen với các đối tượng nâng cao như khung nhìn (
View) và chỉ mục (Index).
Cấu trúc tài liệu được thiết kế theo tiến trình logic từ tổng quan lý thuyết, định nghĩa cấu trúc dữ liệu, đến các kỹ thuật truy vấn từ cơ bản đến chuyên sâu. Điểm đặc sắc của giáo trình là việc xây dựng hệ thống ví dụ thực hành thống nhất dựa trên lược đồ cơ sở dữ liệu quản lý nhân sự - đề án (gồm các quan hệ NHANVIEN, PHONGBAN, PHANCONG, DEAN, THANNHAN), giúp người học theo dõi trực quan mối quan hệ giữa các bảng và tác động ngữ nghĩa của từng câu lệnh.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Căn cứ theo đề cương và cấu trúc tài liệu, nội dung giáo trình được chia thành các chủ đề học thuật trọng tâm:
-
Giới thiệu tổng quan về SQL:
- Hoàn cảnh ra đời: Ngôn ngữ cấp cao phát triển bởi IBM vào những năm 1970 với tên gọi ban đầu là SEQUEL, sau đó được Viện Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) chuẩn hóa thành các phiên bản SQL-86, SQL-92 và SQL-99.
- Bản chất ngôn ngữ: Cho phép người sử dụng chỉ cần mô tả nội dung dữ liệu cần truy vấn thay vì phải chỉ định cách thức truy vấn tuần tự như trong Đại số quan hệ (ĐSQH).
- Hệ thống thuật ngữ tương đương: Bảng tương ứng với quan hệ (Relation), cột tương ứng với thuộc tính (Attribute), dòng tương ứng với bộ (Tuple).
- Phân loại các thành phần chức năng: Ngôn ngữ định nghĩa dữ liệu (DDL), ngôn ngữ thao tác dữ liệu (DML), ngôn ngữ thao tác dữ liệu nhúng, định nghĩa khung nhìn, ràng buộc toàn vẹn, phân quyền/bảo mật và điều khiển giao tác.
-
Ngôn ngữ định nghĩa dữ liệu (DDL - Data Definition Language):
- Chức năng: Mô tả lược đồ quan hệ, miền giá trị thuộc tính, ràng buộc toàn vẹn và chỉ mục.
- Hệ thống kiểu dữ liệu chuẩn:
- Kiểu số (Numeric):
INTEGER,SMALLINT,NUMERIC(p, s),DECIMAL(p, s),REAL,DOUBLE PRECISION,FLOAT(p). - Kiểu chuỗi ký tự:
CHARACTER(n)(hoặcCHAR(n)),CHARACTER VARYING(x)(hoặcVARCHAR(x)). - Kiểu chuỗi bit:
BIT(x),BIT VARYING(x). - Kiểu ngày giờ (Datetime):
DATE(ngày, tháng, năm),TIME(giờ, phút, giây),TIMESTAMP(ngày và giờ).
- Kiểu số (Numeric):
- Cú pháp tạo bảng (
CREATE TABLE) và khai báo miền giá trị mới (CREATE DOMAIN). - Ràng buộc toàn vẹn (RBTV): Khai báo mức cột và mức bảng với
NOT NULL,NULL,UNIQUE,DEFAULT,PRIMARY KEY,FOREIGN KEY(REFERENCES),CHECK, cùng cơ chế đặt tên tường minh thông qua từ khóaCONSTRAINT. - Hiệu chỉnh và xóa cấu trúc bảng: Lệnh
ALTER TABLEvới các hành độngADD COLUMN,DROP COLUMN,ALTER COLUMN,ADD CONSTRAINT,DROP CONSTRAINT; LệnhDROP TABLEđể xóa bảng và toàn bộ dữ liệu.
-
Cú pháp truy vấn dữ liệu cơ bản (DQL - Data Query Language):
- Cấu trúc cơ bản gồm ba mệnh đề:
SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>. - Đố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 toán học $\Pi_L(\sigma_C(R))$. - Phân biệt mô hình dữ liệu: Trong SQL, bảng là đa tập hợp (Bag - cho phép các dòng trùng nhau), trong khi quan hệ trong ĐSQH là tập hợp (Set - không chứa phần tử trùng lặp).
- Mở rộng mệnh đề
SELECT: Đặt bí danh (AS), biểu thức số học (LUONG * 1.1), phép ghép chuỗi ký tự (HONV + ' ' + TENLOT + ' ' + TENNV), và loại bỏ trùng lặp bằng từ khóaDISTINCT.
- Cấu trúc cơ bản gồm ba mệnh đề:
-
Xây dựng biểu thức logic và lọc dữ liệu trong mệnh đề
WHERE:- Kết hợp điều kiện: Các toán tử logic
AND,OR,NOTvà thứ tự ưu tiên khi dùng dấu ngoặc đơn( ). - Toán tử khoảng giá trị: Cú pháp
BETWEEN <giá_trị_1> AND <giá_trị_2>và dạng phủ địnhNOT BETWEEN. - So sánh mẫu chuỗi (Pattern Matching): Toán tử
LIKEvàNOT LIKEvới ký tự gạch dưới_(đại diện cho một ký tự bất kỳ), dấu phần trăm%(đại diện cho một chuỗi ký tự bất kỳ), cùng mệnh đềESCAPEđể xử lý ký tự đặc biệt. - Xử lý giá trị rỗng (
NULL): Ngữ nghĩa củaNULL(không biết, không thể áp dụng, không tồn tại); tính toán vớiNULLcho ra kết quảNULL; so sánh vớiNULLtrả về giá trị logicUNKNOWN; kiểm tra giá trị qua cú phápIS NULLvàIS NOT NULL. - Điều kiện liên quan đến ngày giờ: Xử lý định dạng chuỗi ngày tháng (
YYYY-MM-DD,MM/DD/YYYY,HH:MI:SS).
- Kết hợp điều kiện: Các toán tử logic
-
Mệnh đề
FROM,ORDER BYvà Phép toán tập hợp:- Mệnh đề
FROM: Thực hiện tích Descartes khi không có điều kiệnWHERE; kỹ thuật đặt bí danh bảng để tham chiếu và kết nối các bảng liên quan (ví dụ: liên kếtNHANVIENvàTHANNHANquaMANV = MA_NVIEN). - Mệnh đề
ORDER BY: Sắp xếp kết quả hiển thị theo chiều tăng dần (ASC- mặc định) hoặc giảm dần (DESC), hỗ trợ sắp xếp theo nhiều cột. - Phép toán tập hợp: Cài đặt các phép toán Hội (
UNION), Giao (INTERSECT), Trừ (EXCEPT). Theo mặc định, các toán tử này loại bỏ dòng trùng; để giữ lại các bộ trùng lặp, sử dụng các biến thể mở rộngUNION ALL,INTERSECT ALL,EXCEPT ALL.
- Mệnh đề
-
Truy vấn con (Subquery), Khung nhìn (View) và Chỉ mục (Index):
- Truy vấn con: Lệnh
SELECTlồng bên trong câu lệnhSELECT,UPDATE, hoặcDELETE, được bao bọc trong cặp dấu ngoặc đơn( )và xuất hiện phổ biến trong các mệnh đềWHERE,HAVING,FROM. - Khung nhìn và Chỉ mục: Định nghĩa bảng ảo phục vụ bảo mật/đơn giản hóa truy vấn và cấu trúc dữ liệu bổ trợ nhằm tăng tốc độ tìm kiếm.
- Truy vấn con: Lệnh
Kiến thức nền tảng được xây dựng
- Lý thuyết tập hợp và Đại số quan hệ: Xây dựng mối liên kết toán học giữa các phép toán chiếu ($\Pi$), chọn ($\sigma$), tích Descartes ($\times$), và phép kết nối với các mệnh đề SQL tương ứng.
- Tính toàn vẹn dữ liệu (Data Integrity): Nguyên lý kiểm soát tính hợp lệ của dữ liệu thông qua ràng buộc miền (Domain Constraints), toàn vẹn thực thể (Entity Integrity - Khóa chính) và toàn vẹn tham chiếu (Referential Integrity - Khóa ngoại).
- Nguyên lý Logic 3 giá trị (Three-Valued Logic): Hiểu rõ cơ chế hoạt động của hệ logic đa trị (True, False, Unknown) khi hệ thống xử lý các thuộc tính mang giá trị
NULL.
Kỹ năng phát triển
- Kỹ năng kỹ thuật (Technical skills): Thành thạo việc viết mã DDL để khởi tạo, điều chỉnh lược đồ quan hệ; sử dụng thành thạo các câu lệnh truy vấn phức tạp kết hợp nối bảng, phép toán tập hợp và truy vấn con.
- Kỹ năng phân tích (Analytical skills): Phân tích mô hình dữ liệu thực tế để xác định chính xác các quan hệ cha - con, thiết lập đúng khóa ngoại tham chiếu, và định nghĩa các biểu thức điều kiện logic chính xác cho bài toán nghiệp vụ.
- Kỹ năng tối ưu hóa và chuẩn hóa (Practical competencies): Khả năng định danh ràng buộc hệ thống (
CONSTRAINT) để dễ dàng quản trị, kiểm soát hiện tượng dư thừa dữ liệu bằngDISTINCT, và tổ chức dữ liệu hiển thị theo cấu trúc sắp xếp hợp lý.
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 hành trực tiếp (deductive and practice-oriented approach):
- Tiếp cận sư phạm: Mỗi nội dung kiến thức đều đi từ cấu trúc cú pháp tổng quát (Syntax Specification), giải thích chi tiết các tham số/tùy chọn (Parameters), sau đó minh họa ngay bằng các đoạn mã lệnh SQL cụ thể kèm theo bảng dữ liệu kết quả trước và sau khi thực thi.
- Hệ thống ví dụ mẫu đồng nhất: Tài liệu sử dụng cơ sở dữ liệu mẫu xuyên suốt về quản lý nhân sự - phòng ban:
- Bảng
NHANVIEN(chứa các thuộc tính:MANV,HONV,TENLOT,TENNV,NGSINH,DCHI,PHAI,LUONG,MA_NQL,PHG). - Bảng
PHONGBAN(chứa các thuộc tính:TENPB,MAPHG,TRPHG,NG_NHANCHUC). - Bảng
PHANCONG(chứa các thuộc tính:MA_NVIEN,SODA,THOIGIAN). - Bảng
DEANvàTHANNHAN.
- Bảng
- Bài tập và thực hành: Người học được yêu cầu thực thi tuần tự từ việc định nghĩa bảng kèm ràng buộc phức tạp (như ràng buộc
CHECK (PHAI IN ('Nam', 'Nu')), giá trị mặc địnhDEFAULT (10000)hoặcDEFAULT (GETDATE())), thực hiện chỉnh sửa cấu trúc bảng quaALTER TABLE, đến các bài tập truy vấn lọc theo điều kiện ngày tháng, ký tự đại diện (LIKE '% Nguyens_%' ESCAPE 's'), và kết nối nhiều bảng. - Phương pháp đánh giá: Đánh giá năng lực người học thông qua tính chính xác của cú pháp SQL, khả năng xử lý các tình huống vi phạm ràng buộc toàn vẹn, và độ tối ưu của kết quả truy vấn.
- Hướng dẫn tự học: Người học cần cài đặt một hệ quản trị cơ sở dữ liệu quan hệ, nhập lược đồ dữ liệu mẫu được cung cấp trong tài liệu, và thực thi từng câu lệnh mẫu để đối chiếu kết quả trả về với phần giải thích lý thuyết.
Điểm nổi bật và cập nhật
- Bám sát các tiêu chuẩn công nghiệp ANSI: Nội dung tài liệu hệ thống hóa quá trình phát triển của chuẩn SQL qua các mốc SQL-86, SQL-92 và SQL-99, đảm bảo mã lệnh có tính tương thích cao trên nhiều hệ quản trị cơ sở dữ liệu quan hệ khác nhau.
- Làm rõ sự khác biệt giữa mô hình lý thuyết và triển khai thực tế: Tài liệu phân tích rõ ràng sự khác nhau giữa khái niệm tập hợp (Set) trong Đại số quan hệ và khái niệm đa tập hợp (Bag) trong SQL, qua đó giải thích cơ chế loại bỏ hoặc giữ lại các dòng trùng lặp bằng
DISTINCT,UNIONvàUNION ALL. - Phân tích chuyên sâu các trường hợp biên (Corner-cases): Giáo trình dành dung lượng thích đáng để giải thích cơ chế hoạt động của giá trị
NULL, chỉ ra các điểm cần lưu ý khi tính toán số học (x + 3trả vềNULL) và so sánh logic (x = 3trả vềUNKNOWN), cũng như kỹ thuật sử dụng ký tự thoát (ESCAPE) trong tìm kiếm chuỗi. - Tính ứng dụng kỹ thuật cao: Các ví dụ DDL đều sử dụng cách đặt tên ràng buộc chuẩn mực (
CONSTRAINT NV_MANV_PK PRIMARY KEY,CONSTRAINT PC_MANVIEN_FK FOREIGN KEY), phản ánh đúng thực tiễn thiết kế cơ sở dữ liệu trong môi trường doanh nghiệp.
Đối tượng sử dụng giáo trình
- Sinh viên đại học: Sinh viên năm thứ 2 hoặc năm thứ 3 thuộc các khối ngành Công nghệ thông tin, Khoa học máy tính, Kỹ thuật phần mềm, Hệ thống thông tin, An toàn thông tin và Khoa học dữ liệu đang học môn Cơ sở dữ liệu hoặc Hệ quản trị cơ sở dữ liệu.
- Điều kiện tiên quyết (Prerequisites): Người học cần hoàn thành học phần Tin học cơ sở, có hiểu biết về logic toán, cấu trúc dữ liệu và các khái niệm cơ bản về mô hình dữ liệu quan hệ (khái niệm bảng, thuộc tính, khóa chính, khóa ngoại).
- Giảng viên: Tài liệu cung cấp cấu trúc bài giảng rõ ràng, hệ thống cú pháp chuẩn mực và ngân hàng ví dụ mẫu chuẩn hóa, thuận tiện cho việc biên soạn slide giảng dạy, bài tập lớn và đề thi học phần.
- Lập trình viên và người tự học: Phù hợp cho lập trình viên phát triển phần mềm, kỹ sư dữ liệu cần tra cứu nhanh chuẩn cú pháp ANSI SQL, củng cố nền tảng DDL/DQL và nắm bắt các quy tắc ràng buộc toàn vẹ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 biên soạn phục vụ sinh viên đại học các ngành kỹ thuật phần mềm, công nghệ thông tin và người làm việc trong lĩnh vực dữ liệu cần nắm vững ngôn ngữ SQL từ mức độ cú pháp cơ bản đến kỹ thuật truy vấn nâng cao.
2. Cần kiến thức nền nào để học?
Người học cần có kiến thức cơ bản về tin học đại cương, toán logic và các khái niệm sơ khởi về mô hình quan hệ (bảng, cột, dòng, mối liên kết dữ liệu).
3. Điểm khác biệt với giáo trình khác?
Giáo trình đối chiếu trực tiếp giữa các mệnh đề SQL và các phép toán Đại số quan hệ ($\Pi$, $\sigma$), giải thích bản chất đa tập hợp (Bag) của bảng dữ liệu, đồng thời phân tích chi tiết cơ chế logic 3 giá trị của NULL và kỹ thuật đặt tên ràng buộc toàn vẹn bằng CONSTRAINT.
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ị cơ sở dữ liệu (như SQL Server, MySQL hoặc PostgreSQL), trực tiếp gõ và thực thi các khối lệnh tạo bảng NHANVIEN, PHONGBAN, PHANCONG từ giáo trình, sau đó tự điều chỉnh các biểu thức trong mệnh đề WHERE để quan sát sự thay đổi của tập kết quả.
5. Có tài liệu bổ trợ nào kèm theo?
Tài liệu cung cấp lược đồ cơ sở dữ liệu mẫu về quản lý công ty (gồm 5 bảng có liên kết khóa ngoại) cùng tập hợp các câu truy vấn mẫu từ mức độ chiếu/chọn đơn giản đến các phép toán tập hợp và truy vấn con.
Kết luận
Giáo trình "Hướng Dẫn SQL Cơ Bản và Nâng Cao" là tài liệu học thuật hoàn chỉnh, cung cấp toàn diện kiến thức về ngôn ngữ SQL theo các chuẩn ANSI SQL-86/92/99. Tài liệu bao quát từ định nghĩa cấu trúc dữ liệu (DDL), thiết lập ràng buộc toàn vẹn, hiệu chỉnh lược đồ, đến các kỹ thuật truy vấn (DQL), xử lý logic 3 giá trị, phép toán tập hợp và truy vấn con. Lộ trình học tập đề xuất cho người học là nắm vững cú pháp DDL và các kiểu dữ liệu, thực hành thiết kế bảng với ràng buộc CONSTRAINT, thành thạo các mệnh đề SELECT - FROM - WHERE, và phát triển lên các kỹ thuật truy vấn lồng ghép phức tạp cùng quản trị khung nhìn và chỉ mục.