Giáo trình SQL - Trần Nguyên Phong

TRƯỜNG ĐẠI HỌC KHOA HỌC HUẾ  
KHOA CÔNG NGHỆ THÔNG TIN  
GIÁO TRÌNH SQL  
(Lưu hành nội bộ)  
Biên soạn: Trần Nguyên Phong  
Huế, 2004  
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
MỤC LỤC  
2
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
3
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
LỜI NÓI ĐẦU  
Ngôn ngữ hỏi có cấu trúc (SQL), có tiền thân là SEQUEL, là một ngôn ngữ  
được IBM phát triển và sử dụng trong hệ cơ sở dữ liệu thử nghiệm có tên là System/R  
vào năm 1974, chính thức được ANSI/ISO công nhận là một chuẩn ngôn ngữ sử dụng  
trong cơ sở dữ liệu quan hệ vào năm 1986. Cho đến hiện nay, SQL đã được sử dụng  
phổ biển trong các hệ quản trị cơ sở dữ liệu thương mại và có vai trò quan trọng trong  
những hệ thống này.  
Được sự động viên của các đồng nghiệp trong Khoa Công nghệ Thông tin  
(Trưòng Đại học Khoa học - Đại học Huế), chúng tôi mạnh dạn viết và giới thiệu Giáo  
trình SQL đến bạn đọc. Trong giáo trình này, chúng tôi không có tham vọng đề cập đến  
mọi khía cạnh của SQL mà chỉ mong muốn rằng đây sẽ là tài liệu tham khảo tương đối  
đầy đủ về các câu lệnh thường được sử dụng trong SQL. Giáo trình được chia thành  
sáu chương với nội dung như sau:  
• Chương 1 giới thiệu tổng quan về SQL và một số khái cơ bản liên quan đến cơ sở  
dữ liệu quan hệ.  
• Chương 2 được dành để bàn luận đến các câu lệnh thao tác dữ liệu bao gồm  
SELECT, INSERT, UPDATE và DELETE, trong đó tập trung nhiều vào câu lệnh  
SELECT.  
• Chương 3 trình bày một số câu lệnh cơ bản được sử dụng trong định nghĩa các đối  
tượng cơ sở dữ liệu.  
• Một số vấn đề liên quan đến bảo mật dữ liệu trong SQL được đề cập đến trong  
chương 4.  
• Nội dung của chương 5 liên quan đến việc sử dụng thủ tục lưu trữ, hàm và trigger  
trong cơ sở dữ liệu.  
• Trong chương cuối cùng, chương 6, chúng tôi giới thiệu đến bạn đọc một số vấn đề  
liên quan đến xử lý giao tác trong SQL  
Ngoài sáu chương trên, phần phụ lục ở cuối giáo trình đề cập đến cơ sở dữ liệu  
mẫu được sử dụng trong hầu hết các ví dụ và một số hàm thường được sử dụng trong  
hệ quản trị SQL Server 2000 để bạn đọc tiện trong việc tra cứu.  
So với chuẩn SQL do ANSI/ISO đề xuất, bản thân các hệ quản trị cơ sở dữ liệu  
quan hệ thương mại lại có thể có một số thay đổi nào đó; Điều này đôi khi dẫn đến sự  
khác biệt, mặc dù không đáng kể, giữa SQL chuẩn và SQL được sử dụng trong các hệ  
quản trị cơ sở dữ liệu cụ thể. Trong giáo trình này, chúng tôi chọn hệ quản trị cơ sở dữ  
5
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
liệu SQL Server 2000 của hãng Microsoft để sử dụng cho các ví dụ minh hoạ cũng như  
lời giải của các bài tập.  
Chúng tôi hi vọng rằng giáo trình này sẽ thực sự có ích đối với bạn đọc. Chúng  
tôi rất mong nhận được sự cổ vũ và những ý kiến đóng góp thẳng thắn của các bạn.  
Cuối cùng, xin gởi lời cảm ơn đến các thầy cô, đồng nghiệp và các bạn sinh viên  
đã động viên và giúp đỡ chúng tôi hoàn thành giáo trình này.  
Huế, 2003  
Trần Nguyên Phong  
6
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
Chương 1:  
TỔNG QUAN VỀ SQL  
Ngôn ngữ hỏi có cấu trúc (SQL) và các hệ quản trị cơ sở dữ liệu quan hệ là một  
trong những nền tảng kỹ thuật quan trọng trong công nghiệp máy tính. Cho đến nay, có  
thể nói rằng SQL đã được xem là ngôn ngữ chuẩn trong cơ sở dữ liệu. Các hệ quản trị  
cơ sở dữ liệu quan hệ thương mại hiện có như Oracle, SQL Server, Informix, DB2,...  
đều chọn SQL làm ngôn ngữ cho sản phẩm của mình  
Vậy thực sự SQL là gì? Tại sao nó lại quan trọng trong các hệ quản trị cơ sở dữ  
liệu? SQL có thể làm được những gì và như thế nào? Nó được sử dụng ra sao trong các  
hệ quản trị cơ sở dữ liệu quan hệ? Nội dung của chương này sẽ cung cấp cho chúng ta  
cái nhìn tổng quan về SQL và một số vấn đề liên quan.  
1.1 SQL là ngôn ngữ cơ sở dữ liệu quan hệ  
SQL, viết tắt của Structured Query Language (ngôn ngữ hỏi có cấu trúc), là  
công cụ sử dụng để tổ chức, quản lý và truy xuất dữ liệu đuợc lưu trữ trong các cơ sở  
dữ liệu. SQL là một hệ thống ngôn ngữ bao gồm tập các câu lệnh sử dụng để tương tác  
với cơ sở dữ liệu quan hệ.  
Tên gọi ngôn ngữ hỏi có cấu trúc phần nào làm chúng ta liên tưởng đến một  
công cụ (ngôn ngữ) dùng để truy xuất dữ liệu trong các cơ sở dữ liệu. Thực sự mà nói,  
khả năng của SQL vượt xa so với một công cụ truy xuất dữ liệu, mặc dù đây là mục  
đích ban đầu khi SQL được xây dựng nên và truy xuất dữ liệu vẫn còn là một trong  
những chức năng quan trọng của nó. SQL được sử dụng để điều khiển tất cả các chức  
năng mà một hệ quản trị cơ sở dữ liệu cung cấp cho người dùng bao gồm:  
• Định nghĩa dữ liệu: SQL cung cấp khả năng định nghĩa các cơ sở dữ liệu,  
các cấu trúc lưu trữ và tổ chức dữ liệu cũng như mối quan hệ giữa các thành  
phần dữ liệu.  
• Truy xuất và thao tác dữ liệu: Với SQL, người dùng có thể dễ dàng thực  
hiện các thao tác truy xuất, bổ sung, cập nhật và loại bỏ dữ liệu trong các cơ  
sở dữ liệu.  
• Điều khiển truy cập: SQL có thể được sử dụng để cấp phát và kiểm soát các  
thao tác của người sử dụng trên dữ liệu, đảm bảo sự an toàn cho cơ sở dữ liệu  
7
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
• Đảm bảo toàn vẹn dữ liệu: SQL định nghĩa các ràng buộc toàn vẹn trong  
cơ sở dữ liệu nhờ đó đảm bảo tính hợp lệ và chính xác của dữ liệu trước các  
thao tác cập nhật cũng như các lỗi của hệ thống.  
Như vậy, có thể nói rằng SQL là một ngôn ngữ hoàn thiện được sử dụng trong  
các hệ thống cơ sở dữ liệu và là một thành phần không thể thiếu trong các hệ quản trị  
cơ sở dữ liệu. Mặc dù SQL không phải là một ngôn ngữ lập trình như C, C++, Java,...  
song các câu lệnh mà SQL cung cấp có thể được nhúng vào trong các ngôn ngữ lập  
trình nhằm xây dựng các ứng dụng tương tác với cơ sở dữ liệu.  
Khác với các ngôn ngữ lập trình quen thuộc như C, C++, Java,... SQL là ngôn  
ngữ có tính khai báo. Với SQL, người dùng chỉ cần mô tả các yêu cầu cần phải thực  
hiện trên cơ sở dữ liệu mà không cần phải chỉ ra cách thức thực hiện các yêu cầu như  
thế nào. Chính vì vậy, SQL là ngôn ngữ dễ tiếp cận và dễ sử dụng.  
1.2 Vai trò của SQL  
Bản thân SQL không phải là một hệ quản trị cơ sở dữ liệu, nó không thể tồn tại  
độc lập. SQL thực sự là một phần của hệ quản trị cơ sở dữ liệu, nó xuất hiện trong các  
hệ quản trị cơ sở dữ liệu với vai trò ngôn ngữ và là công cụ giao tiếp giữa người sử  
dụng và hệ quản trị cơ sở dữ liệu.  
Trong hầu hết các hệ quản trị cơ sở dữ liệu quan hệ, SQL có những vai trò như  
sau:  
• SQL là ngôn ngữ hỏi có tính tương tác: Người sử dụng có thể dễ dàng  
thông qua các trình tiện ích để gởi các yêu cầu dưới dạng các câu lệnh SQL  
đến cơ sở dữ liệu và nhận kết quả trả về từ cơ sở dữ liệu  
• SQL là ngôn ngữ lập trình cơ sở dữ liệu: Các lập trình viên có thể nhúng  
các câu lệnh SQL vào trong các ngôn ngữ lập trình để xây dựng nên các  
chương trình ứng dụng giao tiếp với cơ sở dữ liệu  
• SQL là ngôn ngữ quản trị cơ sở dữ liệu: Thông qua SQL, người quản trị  
cơ sở dữ liệu có thể quản lý được cơ sở dữ liệu, định nghĩa các cấu trúc lưu  
trữ dữ liệu, điều khiển truy cập cơ sở dữ liệu,...  
• SQL là ngôn ngữ cho các hệ thống khách/chủ (client/server): Trong các  
hệ thống cơ sở dữ liệu khách/chủ, SQL được sử dụng như là công cụ để giao  
tiếp giữa các trình ứng dụng phía máy khách với máy chủ cơ sở dữ liệu.  
• SQL là ngôn ngữ truy cập dữ liệu trên Internet: Cho đến nay, hầu hết các  
máy chủ Web cũng như các máy chủ trên Internet sử dụng SQL với vai trò là  
ngôn ngữ để tương tác với dữ liệu trong các cơ sở dữ liệu.  
• SQL là ngôn ngữ cơ sở dữ liệu phân tán: Đối với các hệ quản trị cơ sở dữ  
liệu phân tán, mỗi một hệ thống sử dụng SQL để giao tiếp với các hệ thống  
khác trên mạng, gởi và nhận các yêu cầu truy xuất dữ liệu với nhau.  
8
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
• SQL là ngôn ngữ sử dụng cho các cổng giao tiếp cơ sở dữ liệu: Trong  
một hệ thống mạng máy tính với nhiều hệ quản trị cơ sở dữ liệu khác nhau,  
SQL thường được sử dụng như là một chuẩn ngôn ngữ để giao tiếp giữa các  
hệ quản trị cơ sở dữ liệu.  
1.3 Tổng quan về cơ sở dữ liệu quan hệ  
1.3.1 Mô hình dữ liệu quan hệ  
Mô hình dữ liệu quan hệ được Codd đề xuất năm 1970 và đến nay trở thành mô  
hình được sử dụng phổ biến trong các hệ quản trị cơ sở dữ liệu thương mại. Nói một  
cách đơn giản, một cơ sở dữ liệu quan hệ là một cơ sở dữ liệu trong đó tất cả dữ liệu  
được tổ chức trong các bảng có mối quan hệ với nhau. Mỗi một bảng bao gồm các  
dòng và các cột: mỗi một dòng được gọi là một bản ghi (bộ) và mỗi một cột là một  
trường (thuộc tính).  
Hình 1.1 minh hoạ cho ta thấy được 3 bảng trong một cơ sở dữ liệu  
Hình 1.1: Các bảng trong một cơ sở dữ liệu  
1.3.2 Bảng (Table)  
Như đã nói ở trên, trong cơ sở dữ liệu quan hệ, bảng là đối tượng được sử dụng  
để tổ chức và lưu trữ dữ liệu. Một cơ sở dữ liệu bao gồm nhiều bảng và mỗi bảng được  
xác định duy nhất bởi tên bảng. Một bảng bao gồm một tập các dòng và các cột: mỗi  
9
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
một dòng trong bảng biểu diễn cho một thực thể (trong hình 1.1, mỗi một dòng trong  
bảng SINHVIEN tương ứng với một sinh viên); và mỗi một cột biểu diễn cho một tính  
chất của thực thể (chẳng hạn cột NGAYSINH trong bảng SINHVIEN biểu diễn cho  
ngày sinh của các sinh viên được lưu trữ trong bảng).  
Như vậy, liên quan đến mỗi một bảng bao gồm các yếu tố sau:  
• Tên của bảng: được sử dụng để xác định duy nhất mỗi bảng trong cơ sở dữ  
liệu.  
• Cấu trúc của bảng: Tập các cột trong bảng. Mỗi một cột trong bảng được  
xác định bởi một tên cột và phải có một kiểu dữ liệu nào đó (chẳng hạn cột  
NGAYSINH trong bảng SINHVIEN ở hình 1.1 có kiểu là DATETIME).  
Kiểu dữ liệu của mỗi cột qui định giá trị dữ liệu có thể được chấp nhận trên  
cột đó.  
• Dữ liệu của bảng: Tập các dòng (bản ghi) hiện có trong bảng.  
1.3.3 Khoá của bảng  
Trong một cơ sở dữ liệu được thiết kế tốt, mỗi một bảng phải có một hoặc một  
tập các cột mà giá trị dữ liệu của nó xác định duy nhất một dòng trong một tập các  
dòng của bảng. Tập một hoặc nhiều cột có tính chất này được gọi là khoá của bảng.  
Việc chọn khoá của bảng có vai trò quan trọng trong việc thiết kế và cài đặt các  
cơ sở dữ liệu quan hệ. Các dòng dữ liệu trong một bảng phải có giá trị khác nhau trên  
khoá. Bảng MONHOC trong hình dưới đây có khoá là cột MAMONHOC  
Hình 1.2: Bảng MONHOC với khoá chính là MAMONHOC  
Một bảng có thể có nhiều tập các cột khác nhau có tính chất của khoá (tức là giá  
trị của nó xác định duy nhất một dòng dữ liệu trong bảng). Trong trường hợp này, khoá  
được chọn cho bảng được gọi là khoá chính (primary key) và những khoá còn lại được  
gọi là khoá phụ hay là khoá dự tuyển (candidate key/unique key).  
10  
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
1.3.4 Mối quan hệ và khoá ngoài  
Các bảng trong một cơ sở dữ liệu không tồn tại độc lập mà có mối quan hệ mật  
thiết với nhau về mặt dữ liệu. Mối quan hệ này được thể hiện thông qua ràng buộc giá  
trị dữ liệu xuất hiện ở bảng này phải có xuất hiện trước trong một bảng khác. Mối  
quan hệ giữa các bảng trong cơ sở dữ liệu nhằm đàm bảo được tính đúng đắn và hợp lệ  
của dữ liệu trong cơ sở dữ liệu.  
Trong hình 1.3, hai bảng LOP và KHOA có mối quan hệ với nhau. Mối quan hệ  
này đòi hỏi giá trị cột MAKHOA của một dòng (tức là một lớp) trong bảng LOP phải  
được xác định từ cột MAKHOA của bảng KHOA.  
B¶ng LOP  
Hình 1.3: Mối quan hệ giữa hai bảng LOP và KHOA trong cơ sở dữ liệu  
Mối quan hệ giữa các bảng trong một cơ sở dữ liệu thể hiện đúng mối quan hệ  
giữa các thực thể trong thế giới thực. Trong hình 1.3, mối quan hệ giữa hai bảng LOP  
và KHOA không cho phép một lớp nào đó tồn tại mà lại thuộc vào một khoa không có  
thật.  
Khái niệm khoá ngoài (Foreign Key) trong cơ sở dữ liệu quan hệ được sử dụng  
để biểu diễn mối quan hệ giữa các bảng dữ liệu. Một hay một tập các cột trong một  
bảng mà giá trị của nó được xác định từ khóa chính của một bảng khác được gọi là  
khoá ngoài. Trong hình 1.3, cột MAKHOA của bảng LOP được gọi là khoá ngoài của  
bảng này, khoá ngoài này tham chiếu đến khoá chính của bảng KHOA là cột  
MAKHOA.  
11  
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
1.4 Sơ lược về SQL  
1.4.1 Câu lệnh SQL  
SQL chuẩn bao gồm khoảng 40 câu lệnh. Bảng 1.1 liệt kê danh sách các câu  
lệnh thường được sử dụng nhất trong số các câu lệnh của SQL. Trong các hệ quản trị  
cơ sở dữ liệu khác nhau, mặc dù các câu lệnh đều có cùng dạng và cùng mục đích sử  
dụng song mỗi một hệ quản trị cơ sở dữ liệu có thể có một số thay đổi nào đó. Điều  
này đôi khi dẫn đến cú pháp chi tiết của các câu lệnh có thể sẽ khác nhau trong các hệ  
quản trị cơ cơ sở dữ liệu khác nhau.  
Câu lệnh  
Chức năng  
Thao tác dữ liệu  
SELECT  
Truy xuất dữ liệu  
Bổ sung dữ liệu  
INSERT  
UPDATE  
Cập nhật dữ liệu  
DELETE  
Xoá dữ liệu  
TRUNCATE  
Xoá toàn bộ dữ liệu trong bảng  
Định nghĩa dữ liệu  
CREATE TABLE  
DROP TABLE  
ALTER TABLE  
CREATE VIEW  
ALTER VIEW  
DROP VIEW  
CREATE INDEX  
DROP INDEX  
CREATE SCHEMA  
DROP SCHEMA  
Tạo bảng  
Xoa bảng  
Sửa đổi bảng  
Tạo khung nhìn  
Sửa đổi khung nhìn  
Xoá khung nhìn  
Tạo chỉ mục  
Xoá chỉ mục  
Tạo lược đồ cơ sở dữ liệu  
Xoá lược đồ cơ sở dữ liệu  
CREATE PROCEDURE Tạo thủ tục lưu trữ  
ALTER PROCEDURE  
DROP PROCEDURE  
Sửa đổi thủ tục lưư trữ  
Xoá thủ tục lưu trữ  
12  
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
CREATE FUNCTION  
ALTER FUNCTION  
DROP FUNCTION  
CREATE TRIGGER  
ALTER TRIGGER  
DROP TRIGGER  
Điều khiển truy cập  
GRANT  
Tạo hàm (do người sử dụng định nghĩa)  
Sửa đổi hàm  
Xoá hàm  
Tạo trigger  
Sửa đổi trigger  
Xoá trigger  
Cấp phát quyền cho người sử dụng  
Thu hồi quyền từ người sử dụng  
REVOKE  
Quản lý giao tác  
COMMIT  
Uỷ thác (kết thúc thành công) giao tác  
ROLLBACK  
Quay lui giao tác  
SAVE TRANSACTION Đánh dấu một điểm trong giao tác  
Lập trình  
DECLARE  
Khai báo biến hoặc định nghĩa con trỏ  
OPEN  
Mở một con trỏ để truy xuất kết quả truy vấn  
Đọc một dòng trong kết quả truy vấn (sử dụng con trỏ)  
Đóng một con trỏ  
FETCH  
CLOSE  
EXECUTE  
Thực thi một câu lệnh SQL  
Bảng 1.1: Một số câu lệnh thông dụng trong SQL  
Các câu lệnh của SQL đều được bắt đầu bởi các từ lệnh, là một từ khoá cho biết  
chức năng của câu lệnh (chẳng hạn SELECT, DELETE, COMMIT). Sau từ lệnh là các  
mệnh đề của câu lệnh. Mỗi một mệnh đề trong câu lệnh cũng được bắt đầu bởi một từ  
khoá (chẳng hạn FROM, WHERE,...).  
Ví dụ 1.1: Câu lệnh:  
SELECT masv,hodem,ten  
FROM sinhvien  
WHERE malop=’C24102’  
13  
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
dùng để truy xuất dữ liệu trong bảng SINHVIEN được bắt đầu bởi từ lệnh SELECT,  
trong câu lệnh bao gồm hai mệnh đề: mệnh đề FROM chỉ định tên của bảng cần truy  
xuất dữ liệu và mệnh đề WHERE chỉ định điều kiện truy vấn dữ liệu.  
1.4.2 Qui tắc sử dụng tên trong SQL  
Các đối tượng trong cơ sở dữ liệu dựa trên SQL được xác định thông qua tên  
của đối tượng. Tên của các đối tượng là duy nhất trong mỗi cơ sở dữ liệu. Tên được sử  
dụng nhiều nhất trong các truy vấn SQL và được xem là nền tảng trong cơ sở dữ liệu  
quan hệ là tên bảng và tên cột.  
Trong các cơ sở dữ liệu lớn với nhiều người sử dụng, khi ta chỉ định tên của một  
bảng nào đó trong câu lệnh SQL, hệ quản trị cơ sở dữ liệu hiểu đó là tên của bảng do ta  
sở hữu (tức là bảng do ta tạo ra). Thông thường, trong các hệ quản trị cơ sở dữ liệu này  
cho phép những người dùng khác nhau tạo ra những bảng trùng tên với nhau mà không  
gây ra xung đột về tên. Nếu trong một câu lệnh SQL ta cần chỉ đến một bảng do một  
người dùng khác sở hữu (hiển nhiên là phải được phép) thì tên của bảng phải được viết  
sau tên của người sở hữu và phân cách với tên người sở hữu bởi dấu chấm:  
tên_người_sở_hữu.tên_bảng  
Một số đối tượng cơ sở dữ liệu khác (như khung nhìn, thủ tục, hàm), việc sử dụng tên  
cũng tương tự như đối với bảng.  
Ta có thể sử dụng tên cột một cách bình thường trong các câu lệnh SQL bằng  
cảch chỉ cần chỉ định tên của cột trong bảng. Tuy nhiên, nếu trong câu lệnh có liên  
quan đến hai cột trở lên có cùng tên trong các bảng khác nhau thì bắt buộc phải chỉ  
định thêm tên bảng trước tên cột; tên bảng và tên cột được phân cách nhau bởi dấu  
chấm.  
Ví dụ: Ví dụ dưới đây minh hoạ cho ta thấy việc sử dụng tên bảng và tên cột trong câu  
lệnh SQL  
SELECT masv,hodem,ten,sinhvien.malop,tenlop  
FROM dbo.sinhvien,dbo.lop  
WHERE sinhvien.malop = lop.malop  
1.4.3 Kiểu dữ liệu  
Chuẩn ANSI/ISO SQL cung cấp các kiểu dữ liệu khác nhau để sử dụng trong  
các cơ sở dữ liệu dựa trên SQL và trong ngôn ngữ SQL. Dựa trên cơ sở các kiểu dữ  
liệu do chuẩn ANSI/ISO SQL cung cấp, các hệ quản trị cơ sở dữ liệu thương mại hiện  
nay có thể sử dụng các dạng dữ liệu khác nhau trong sản phẩm của mình. Bảng 1.2  
dưới đây liệt kê một số kiểu dữ liệu thông dụng được sử dụng trong SQL.  
Tên kiểu  
Mô tả  
CHAR (n)  
Kiểu chuỗi với độ dài cố định  
14  
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
NCHAR (n)  
VARCHAR (n)  
NVARCHAR (n)  
INTEGER  
INT  
Kiếu chuỗi với độ dài cố định hỗ trợ UNICODE  
Kiểu chuỗi với độ dài chính xác  
Kiểu chuỗi với độ dài chính xác hỗ trợ UNICODE  
Số nguyên có giá trị từ -231 đến 231 - 1  
Như kiểu Integer  
TINYTINT  
SMALLINT  
BIGINT  
Số nguyên có giá trị từ 0 đến 255.  
Số nguyên có giá trị từ -215 đến 215 – 1  
Số nguyên có giá trị từ -263 đến 263-1  
Kiểu số với độ chính xác cố định.  
Tương tự kiểu Numeric  
NUMERIC (p,s)  
DECIMAL (p,s)  
FLOAT  
Số thực có giá trị từ -1.79E+308 đến 1.79E+308  
Số thực có giá trị từ -3.40E + 38 đến 3.40E + 38  
Kiểu tiền tệ  
REAL  
MONEY  
BIT  
Kiểu bit (có giá trị 0 hoặc 1)  
DATETIME  
Kiểu ngày giờ (chính xác đến phần trăm của giây)  
SMALLDATETIME Kiểu ngày giờ (chính xác đến phút)  
TIMESTAMP  
BINARY  
Dữ liệu nhị phân với độ dài cố định (tối đa 8000 bytes)  
VARBINARY  
IMAGE  
Dữ liệu nhị phân với độ dài chính xác (tối đa 8000 bytes)  
Dữ liệu nhị phân với độ dài chính xác (tối đa 2,147,483,647  
bytes)  
TEXT  
Dữ liệu kiếu chuỗi với độ dài lớn (tối đa 2,147,483,647 ký  
tự)  
NTEXT  
Dữ liệu kiếu chuỗi với độ dài lớn và hỗ trợ UNICODE (tối  
đa 1,073,741,823 ký tự)  
Bảng 1.2: Một số kiểu dữ liệu thông dụng trong SQL  
Ví dụ 1.2: Câu lệnh dưới đây định nghĩa bảng với kiểu dữ liệu được qui định cho các  
cột trong bảng  
CREATE TABLE NHANVIEN  
15  
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
(
MANV  
NVARCHAR(10) NOT NULL,  
NVARCHAR(30) NOT NULL,  
HOTEN  
GIOITINH BIT,  
NGAYSINH SMALLDATETIME,  
NOISINH NCHAR(50),  
HSLUONG DECIMAL(4,2),  
MADV  
INT  
)
1.4.4 Giá trị NULL  
Một cơ sở dữ liệu là sự phản ánh của một hệ thống trong thế giới thực, do đó  
các giá trị dữ liệu tồn tại trong cơ sở dữ liệu có thể không xác định được. Một giá trị  
không xác định được xuất hiện trong cơ sở dữ liệu có thể do một số nguyên nhân sau:  
• Giá trị đó có tồn tại nhưng không biết.  
• Không xác định được giá trị đó có tồn tại hay không.  
• Tại một thời điểm nào đó giá trị chưa có nhưng rồi có thể sẽ có.  
• Giá trị bị lỗi do tính toán (tràn số, chia cho không,...)  
Những giá trị không xác định được biểu diễn trong cơ sở dữ liệu quan hệ bởi  
các giá trị NULL. Đây là giá trị đặc biệt và không nên nhầm lẫn với chuỗi rỗng (đối  
với dữ liệu kiểu chuỗi) hay giá trị không (đối với giá trị kiểu số). Giá trị NULL đóng  
một vai trò quan trọng trong các cơ sở dữ liệu và hầu hết các hệ quản trị cơ sở dữ liệu  
quan hệ hiện nay đều hỗ trợ việc sử dụng giá trị này.  
1.5 Kết chương  
Như vậy, SQL (viết tắt của Structured Query Language) là hệ thống ngôn ngữ  
được sử dụng cho các hệ quản trị cơ sở dữ liệu quan hệ. Thông qua SQL có thể thực  
hiện được các thao tác trên cơ sở dữ liệu như định nghĩa dữ liệu, thao tác dữ liệu, điều  
khiển truy cập, quản lý toàn vẹn dữ liệu... SQL là một thành phần quan trọng và không  
thể thiếu trong hệ quản trị cơ sở dữ liệu quan hệ.  
SQL ra đời nhằm sử dụng cho các cơ sở dữ liệu theo mô hình quan hệ. Trong  
một cơ sở dữ liệu quan hệ, dữ liệu được tổ chức và lưu trữ trong các bảng. Mỗi một  
bảng là một tập hợp bao gồm các dòng và các cột; mỗi một dòng là một bản ghi và  
mỗi một cột tương ứng với một trường, tập các tên cột cùng với kiểu dữ liệu và các  
tính chất khác tạo nên cấu trúc của bảng, tập các dòng trong bảng chính là dữ liệu của  
bảng.  
16  
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
Các bảng trong một cơ sở dữ liệu có mối quan hệ với nhau. Các mối quan hệ  
được biểu diễn thông qua khoá chính và khoá ngoài của các bảng. Khoá chính của  
bảng là tập một hoặc nhiều cột có giá trị duy nhất trong bảng và do đó giá trị của nó  
xác định duy nhất một dòng dữ liệu trong bảng. Một khoá ngoài là một tập một hoặc  
nhiều cột có giá trị được xác định từ khoá chính của các bảng khác.  
_______________________________________ꢀ  
17  
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
Chương 2  
NGÔN NGỮ THAO TÁC DỮ LIỆU  
Đối với đa số người sử dụng, SQL được xem như là công cụ hữu hiệu để thực  
hiện các yêu cầu truy vấn và thao tác trên dữ liệu. Trong chương này, ta sẽ bàn luận  
đến nhóm các câu lệnh trong SQL được sử dụng cho mục đích này. Nhóm các câu lệnh  
này được gọi chung là ngôn ngữ thao tác dữ liệu (DML: Data Manipulation Language)  
bao gồm các câu lệnh sau:  
• SELECT: Sử dụng để truy xuất dữ liệu từ môt hoặc nhiều bảng.  
• INSERT: Bổ sung dữ liệu.  
• UPDATE: Cập nhật dữ liệu  
• DELETE: Xoá dữ liệu  
Trong số các câu lệnh này, có thể nói SELECT là câu lệnh tương đối phức tạp  
và được sử dụng nhiều trong cơ sở dữ liệu. Với câu lệnh này, ta không chỉ thực hiện  
các yêu cầu truy xuất dữ liệu đơn thuần mà còn có thể thực hiện được các yêu cầu  
thống kê dữ liệu phức tạp. Cũng chính vì vậy, phần đầu của chương này sẽ tập trung  
tương đối nhiều đến câu lệnh SELECT. Các câu lệnh INSERT, UPDATE và DELETE  
được bàn luận đến ở cuối chương  
2.1 Truy xuất dữ liệu với câu lệnh SELECT  
Câu lệnh SELECT được sử dụng để truy xuất dữ liệu từ các dòng và các cột của  
một hay nhiều bảng, khung nhìn. Câu lệnh này có thể dùng để thực hiện phép chọn (tức  
là truy xuất một tập con các dòng trong một hay nhiều bảng), phép chiếu (tức là truy  
xuất một tập con các cột trong một hay nhiều bảng) và phép nối (tức là liên kết các  
dòng trong hai hay nhiều bảng để truy xuất dữ liệu). Ngoài ra, câu lệnh này còn cung  
cấp khả năng thực hiện các thao tác truy vấn và thống kê dữ liệu phức tạp khác.  
Cú pháp chung của câu lệnh SELECT có dạng:  
SELECT [ALL | DISTINCT][TOP n] danh_sách_chọn  
[INTO tên_bảng_mới]  
FROM danh_sách_bảng/khung_nhìn  
[WHERE  
điều_kiện]  
[GROUP BY danh_sách_cột]  
[HAVING điều_kiện]  
18  
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
[ORDER BY cột_sắp_xếp]  
[COMPUTE danh_sách_hàm_gộp [BY danh_sách_cột]]  
Điều cần lưu ý đầu tiên đối với câu lệnh này là các thành phần trong câu lệnh  
SELECT nếu được sử dụng phải tuân theo đúng thứ tự như trong cú pháp. Nếu không,  
câu lệnh sẽ được xem là không hợp lệ.  
Câu lệnh SELECT được sử dụng để tác động lên các bảng dữ liệu và kết quả  
của câu lệnh cũng được hiển thị dưới dạng bảng, tức là một tập hợp các dòng và các  
cột (ngoại trừ trường hợp sử dụng câu lệnh SELECT với mệnh đề COMPUTE).  
Ví dụ 2.1: Kết quả của câu lệnh sau đây cho biết mã lớp, tên lớp và hệ đào tạo của các  
lớp hiện có  
SELECT malop,tenlop,hedaotao  
FROM lop  
2.1.1 Mệnh đề FROM  
Mệnh đề FROM trong câu lệnh SELECT được sử dung nhằm chỉ định các bảng  
và khung nhìn cần truy xuất dữ liệu. Sau FROM là danh sách tên của các bảng và  
khung nhìn tham gia vào truy vấn, tên của các bảng và khung nhìn được phân cách  
nhau bởi dấu phẩy.  
Ví dụ 2.2: Câu lệnh dưới đây hiển thị danh sách các khoa trong trường  
SELECT * FROM khoa  
kết quả câu lệnh như sau:  
19  
 
Khoa CNTT - Trường ĐHKH Huế  
Giáo trình SQL  
Ta có thể sử dụng các bí danh cho các bảng hay khung nhìn trong câu lệnh  
SELECT. Bí danh được gán trong mệnh đề FROM bằng cách chỉ định bí danh ngay  
sau tên bảng.  
Ví dụ 2.3: câu lệnh sau gán bí danh là a cho bảng khoa  
SELECT * FROM khoa a  
2.1.2 Danh sách chọn trong câu lệnh SELECT  
Danh sách chọn trong câu lệnh SELECT được sử dụng để chỉ định các trường,  
các biểu thức cần hiển thị trong các cột của kết quả truy vấn. Các trường, các biểu thức  
được chỉ định ngay sau từ khoá SELECT và phân cách nhau bởi dấu phẩy. Sử dụng  
danh sách chọn trong câu lệnh SELECT bao gồm các trường hợp sau:  
a. Chọn tất cả các cột trong bảng  
Khi cần hiển thị tất cả các trường trong các bảng, sử dụng ký tự * trong danh  
sách chọn thay vì phải liệt kê danh sách tất cả các cột. Trong trường hợp này, các cột  
được hiển thị trong kết quả truy vấn sẽ tuân theo thứ tự mà chúng đã được tạo ra khi  
bảng được định nghĩa.  
Ví dụ 2.4: Câu lệnh  
SELECT * FROM lop  
cho kết quả bao như sau:  
20  
 
Tải về để xem bản đầy đủ
pdf 146 trang baolam 24521 Free
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình SQL - Trần Nguyên Phong", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfgiao_trinh_sql_tran_nguyen_phong.pdf