vanbich61_vanbich61
New Member
Link tải luận văn miễn phí cho ae Kết Nối
MỤC LỤC
LỜI NÓI ĐẦU 4
CHƯƠNG 1: TỔNG QUAN VỀ SQL 6
1.1 SQL là ngôn ngữ cơ sở dữ liệu quan hệ 6
1.2 Vai trò của SQL 7
1.3 Tổng quan về cơ sở dữ liệu quan hệ 8
1.3.1 Mô hình dữ liệu quan hệ 8
1.3.2 Bảng (Table) 8
1.3.3 Khoá của bảng 9
1.3.4 Mối quan hệ và khoá ngoài 10
1.4 Sơ lược về SQL 11
1.4.1 Câu lệnh SQL 11
1.4.2 Qui tắc sử dụng tên trong SQL 13
1.4.3 Kiểu dữ liệu 13
1.4.4 Giá trị NULL 15
1.5 Kết chương 15
CHƯƠNG 2: NGÔN NGỮ THAO TÁC DỮ LIỆU 17
2.1 Truy xuất dữ liệu với câu lệnh SELECT 17
2.1.1 Mệnh đề FROM 18
2.1.2 Danh sách chọn trong câu lệnh SELECT 19
2.1.3 Chỉ định điều kiện truy vấn dữ liệu 24
2.1.4 Tạo mới bảng dữ liệu từ kết quả của câu lệnh SELECT 28
2.1.5 Sắp xếp kết quả truy vấn 28
2.1.6 Phép hợp 30
2.1.7 Phép nối 32
2.1.7.1 Sử dụng phép nối 33
2.1.7.2 Các loại phép nối 35
2.1.7.4 Sử dụng phép nối trong SQL2 39
2.1.8 Thống kê dữ liệu với GROUP BY 42
2.1.9 Thống kê dữ liệu với COMPUTE 45
2.1.10 Truy vấn con (Subquery) 48
2.2 Bổ sung, cập nhật và xoá dữ liệu 51
2.2.1 Bổ sung dữ liệu 52
2.2.2 Cập nhật dữ liệu 53
2.2.3 Xoá dữ liệu 55
Bài tập chương 2 56
CHƯƠNG 3: NGÔN NGỮ ĐỊNH NGHĨA DỮ LIỆU 68
3.1 Tạo bảng dữ liệu 68
3.1.1 Ràng buộc CHECK 71
3.1.2 Ràng buộc PRIMARY KEY 73
3.1.3 Ràng buộc UNIQUE 75
3.1.4 Ràng buộc FOREIGN KEY 75
3.2 Sửa đổi định nghĩa bảng 78
3.3 Xoá bảng 80
3.4 Khung nhìn 81
3.4.1 Tạo khung nhìn 83
3.4.2 Cập nhật, bổ sung và xoá dữ liệu thông qua khung nhìn 85
3.4.3 Sửa đổi khung nhìn 88
3.4.4 Xoá khung nhìn 88
Bài tập chương 3 89
CHƯƠNG 4: BẢO MẬT TRONG SQL 95
4.1 Các khái niệm 95
4.2 Cấp phát quyền 96
4.2.1 Cấp phát quyền cho người dùng trên các đối tượng cơ sở dữ liệu 96
4.2.2 Cấp phát quyền thực thi các câu lệnh 98
4.3 Thu hồi quyền 99
4.3.1 Thu hồi quyền trên đối tượng cơ sở dữ liệu: 99
4.3.2 Thu hồi quyền thực thi các câu lênh: 102
CHƯƠNG 5: THỦ TỤC LƯU TRỮ, HÀM VÀ TRIGGER 103
5.1 Thủ tục lưu trữ (stored procedure) 103
5.1.1 Các khái niệm 103
5.1.2 Tạo thủ tục lưu trữ 104
5.1.3 Lời gọi thủ tục lưu trữ 106
5.1.4 Sử dụng biến trong thủ tục 106
5.1.5 Giá trị trả về của tham số trong thủ tục lưu trữ 107
5.1.6 Tham số với giá trị mặc định 108
5.1.7 Sửa đổi thủ tục 109
5.2 Hàm do người dùng định nghĩa 110
5.2.1 Định nghĩa và sử dụng hàm 110
5.2.2 Hàm với giá trị trả về là “dữ liệu kiểu bảng” 111
5.3 Trigger 115
5.3.1 Định nghĩa trigger 115
5.3.2 Sử dụng mệnh đề IF UPDATE trong trigger 118
5.3.3 ROLLBACK TRANSACTION và trigger 119
5.3.4 Sử dụng trigger trong trường hợp câu lệnh INSERT, UPDATE và DELETE có tác động đến nhiều dòng dữ liệu 121
5.3.4.1 Sử dụng truy vấn con 121
5.3.4.2 Sử dụng biến con trỏ 124
Bài tập chương 5 126
CHƯƠNG 6: GIAO TÁC SQL 131
6.1 Giao tác và các tính chất của giao tác 131
6.2 Mô hình giao tác trong SQL 132
6.3 Giao tác lồng nhau 135
PHỤ LỤC 137
A. Cơ sở dữ liệu mẫu sử dụng trong giáo trình 137
B. Một số hàm thường sử dụng 144
B.1 Các hàm trên dữ liệu kiểu chuỗi 144
B.2 Các hàm trên dữ liệu kiểu ngày giờ 145
B.3 Hàm chuyển đổi kiểu 146
TÀI LIỆU THAM KHẢO 149
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 tui 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 tui 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 tui 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 tui chọn hệ quản trị cơ sở dữ 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 tui 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 tui 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 Thank đế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 tui hoàn thành giáo trình này.
Huế, 2004
Trần Nguyên Phong
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
• Đả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 thực hiện trên cơ sở dữ liệu mà không cần 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.
• 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
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 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 hay 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 hay 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
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).
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.
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.
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
INSERT Bổ sung dữ liệu
UPDATE Cập nhật dữ liệu
DELETE Xoá dữ liệu
TRUNCATE Xoá toàn bộ dữ liệu trong bảng
Hàm SPACE
SPACE(number)
Hàm trả về một chuỗi với number khoảng trắng.
Hàm STR
STR(number [,length [,decimal]])
Chuyển giá trị kiểu số number thành chuỗi
Hàm SUBSTRING
SUBSTRING(string, m, n)
Trích ra từ n ký tự từ chuỗi string bắt đầu từ ký tự thứ m.
Hàm UNICODE
UNICODE(UnicodeString)
Hàm trả về mã UNICODE của ký tự đầu tiên bên trái của chuỗi UnicodeString.
Hàm UPPER
UPPER(string)
Chuyển chuỗi string thành chữ hoa
B.2 Các hàm trên dữ liệu kiểu ngày giờ
Hàm DATEADD
DATEADD(datepart, number, date)
Hàm trả về một giá trị kiểu DateTime bằng cách cộng thêm một khoảng giá trị là number vào ngày date được chỉ định. Trong đó, datepart là tham số chỉ định thành phần sẽ được cộng đối với giá trị date bao gồm:
Datepart Viết tắt
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
hour hh
minute mi, n
second ss, s
millisecond ms
Hàm DATEDIFF
DATEDIFF(datepart, startdate, enddate)
Hàm trả về khoảng thời gian giữa hai giá trị kiểu này được chỉ định tuỳ từng trường hợp vào tham số datepart
Hàm DATEPART
DATEPART(datepart, date)
Hàm trả về một số nguyên được trích ra từ thành phần (được chỉ định bởi tham số partdate) trong giá trị kiểu ngày được chỉ định.
Hàm GETDATE
GETDATE()
Hàm trả về ngày hiện tại
Hàm DAY, MONTH, YEAR
DAY(date), MONTH(date), YEAR(date)
Hàm trả về giá trị ngày (tháng hay năm) của giá trị kiểu ngày được chỉ định.
B.3 Hàm chuyển đổi kiểu
Hàm CAST
CAST (biểu_thức AS kiểu_dữ_liệu)
Chuyển đổi giá trị của biểu thức sang kiểu được chỉ định
Hàm CONVERT
CONVERT(kiểu_dữ_liệu, biểu_thức [,kiểu_chuyển_đổi])
Hàm có chức năng chuyển đổi giá trị của biểu thức sang kiểu dữ liệu được chỉ định. Tham số kiểu_chuyển_đổi là một giá trị số thường được sử dụng khi chuyển đổi giá trị kiểu ngày sang kiểu chuỗi nhằm qui định khuôn dạng dữ liệu được hiển thị và được qui định như sau:
Do Drive thay đổi chính sách, nên một số link cũ yêu cầu duyệt download. các bạn chỉ cần làm theo hướng dẫn.
Password giải nén nếu cần: ket-noi.com | Bấm trực tiếp vào Link để tải:
MỤC LỤC
LỜI NÓI ĐẦU 4
CHƯƠNG 1: TỔNG QUAN VỀ SQL 6
1.1 SQL là ngôn ngữ cơ sở dữ liệu quan hệ 6
1.2 Vai trò của SQL 7
1.3 Tổng quan về cơ sở dữ liệu quan hệ 8
1.3.1 Mô hình dữ liệu quan hệ 8
1.3.2 Bảng (Table) 8
1.3.3 Khoá của bảng 9
1.3.4 Mối quan hệ và khoá ngoài 10
1.4 Sơ lược về SQL 11
1.4.1 Câu lệnh SQL 11
1.4.2 Qui tắc sử dụng tên trong SQL 13
1.4.3 Kiểu dữ liệu 13
1.4.4 Giá trị NULL 15
1.5 Kết chương 15
CHƯƠNG 2: NGÔN NGỮ THAO TÁC DỮ LIỆU 17
2.1 Truy xuất dữ liệu với câu lệnh SELECT 17
2.1.1 Mệnh đề FROM 18
2.1.2 Danh sách chọn trong câu lệnh SELECT 19
2.1.3 Chỉ định điều kiện truy vấn dữ liệu 24
2.1.4 Tạo mới bảng dữ liệu từ kết quả của câu lệnh SELECT 28
2.1.5 Sắp xếp kết quả truy vấn 28
2.1.6 Phép hợp 30
2.1.7 Phép nối 32
2.1.7.1 Sử dụng phép nối 33
2.1.7.2 Các loại phép nối 35
2.1.7.4 Sử dụng phép nối trong SQL2 39
2.1.8 Thống kê dữ liệu với GROUP BY 42
2.1.9 Thống kê dữ liệu với COMPUTE 45
2.1.10 Truy vấn con (Subquery) 48
2.2 Bổ sung, cập nhật và xoá dữ liệu 51
2.2.1 Bổ sung dữ liệu 52
2.2.2 Cập nhật dữ liệu 53
2.2.3 Xoá dữ liệu 55
Bài tập chương 2 56
CHƯƠNG 3: NGÔN NGỮ ĐỊNH NGHĨA DỮ LIỆU 68
3.1 Tạo bảng dữ liệu 68
3.1.1 Ràng buộc CHECK 71
3.1.2 Ràng buộc PRIMARY KEY 73
3.1.3 Ràng buộc UNIQUE 75
3.1.4 Ràng buộc FOREIGN KEY 75
3.2 Sửa đổi định nghĩa bảng 78
3.3 Xoá bảng 80
3.4 Khung nhìn 81
3.4.1 Tạo khung nhìn 83
3.4.2 Cập nhật, bổ sung và xoá dữ liệu thông qua khung nhìn 85
3.4.3 Sửa đổi khung nhìn 88
3.4.4 Xoá khung nhìn 88
Bài tập chương 3 89
CHƯƠNG 4: BẢO MẬT TRONG SQL 95
4.1 Các khái niệm 95
4.2 Cấp phát quyền 96
4.2.1 Cấp phát quyền cho người dùng trên các đối tượng cơ sở dữ liệu 96
4.2.2 Cấp phát quyền thực thi các câu lệnh 98
4.3 Thu hồi quyền 99
4.3.1 Thu hồi quyền trên đối tượng cơ sở dữ liệu: 99
4.3.2 Thu hồi quyền thực thi các câu lênh: 102
CHƯƠNG 5: THỦ TỤC LƯU TRỮ, HÀM VÀ TRIGGER 103
5.1 Thủ tục lưu trữ (stored procedure) 103
5.1.1 Các khái niệm 103
5.1.2 Tạo thủ tục lưu trữ 104
5.1.3 Lời gọi thủ tục lưu trữ 106
5.1.4 Sử dụng biến trong thủ tục 106
5.1.5 Giá trị trả về của tham số trong thủ tục lưu trữ 107
5.1.6 Tham số với giá trị mặc định 108
5.1.7 Sửa đổi thủ tục 109
5.2 Hàm do người dùng định nghĩa 110
5.2.1 Định nghĩa và sử dụng hàm 110
5.2.2 Hàm với giá trị trả về là “dữ liệu kiểu bảng” 111
5.3 Trigger 115
5.3.1 Định nghĩa trigger 115
5.3.2 Sử dụng mệnh đề IF UPDATE trong trigger 118
5.3.3 ROLLBACK TRANSACTION và trigger 119
5.3.4 Sử dụng trigger trong trường hợp câu lệnh INSERT, UPDATE và DELETE có tác động đến nhiều dòng dữ liệu 121
5.3.4.1 Sử dụng truy vấn con 121
5.3.4.2 Sử dụng biến con trỏ 124
Bài tập chương 5 126
CHƯƠNG 6: GIAO TÁC SQL 131
6.1 Giao tác và các tính chất của giao tác 131
6.2 Mô hình giao tác trong SQL 132
6.3 Giao tác lồng nhau 135
PHỤ LỤC 137
A. Cơ sở dữ liệu mẫu sử dụng trong giáo trình 137
B. Một số hàm thường sử dụng 144
B.1 Các hàm trên dữ liệu kiểu chuỗi 144
B.2 Các hàm trên dữ liệu kiểu ngày giờ 145
B.3 Hàm chuyển đổi kiểu 146
TÀI LIỆU THAM KHẢO 149
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 tui 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 tui 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 tui 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 tui chọn hệ quản trị cơ sở dữ 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 tui 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 tui 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 Thank đế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 tui hoàn thành giáo trình này.
Huế, 2004
Trần Nguyên Phong
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
• Đả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 thực hiện trên cơ sở dữ liệu mà không cần 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.
• 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
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 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 hay 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 hay 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
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).
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.
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.
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
INSERT Bổ sung dữ liệu
UPDATE Cập nhật dữ liệu
DELETE Xoá dữ liệu
TRUNCATE Xoá toàn bộ dữ liệu trong bảng
Hàm SPACE
SPACE(number)
Hàm trả về một chuỗi với number khoảng trắng.
Hàm STR
STR(number [,length [,decimal]])
Chuyển giá trị kiểu số number thành chuỗi
Hàm SUBSTRING
SUBSTRING(string, m, n)
Trích ra từ n ký tự từ chuỗi string bắt đầu từ ký tự thứ m.
Hàm UNICODE
UNICODE(UnicodeString)
Hàm trả về mã UNICODE của ký tự đầu tiên bên trái của chuỗi UnicodeString.
Hàm UPPER
UPPER(string)
Chuyển chuỗi string thành chữ hoa
B.2 Các hàm trên dữ liệu kiểu ngày giờ
Hàm DATEADD
DATEADD(datepart, number, date)
Hàm trả về một giá trị kiểu DateTime bằng cách cộng thêm một khoảng giá trị là number vào ngày date được chỉ định. Trong đó, datepart là tham số chỉ định thành phần sẽ được cộng đối với giá trị date bao gồm:
Datepart Viết tắt
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
hour hh
minute mi, n
second ss, s
millisecond ms
Hàm DATEDIFF
DATEDIFF(datepart, startdate, enddate)
Hàm trả về khoảng thời gian giữa hai giá trị kiểu này được chỉ định tuỳ từng trường hợp vào tham số datepart
Hàm DATEPART
DATEPART(datepart, date)
Hàm trả về một số nguyên được trích ra từ thành phần (được chỉ định bởi tham số partdate) trong giá trị kiểu ngày được chỉ định.
Hàm GETDATE
GETDATE()
Hàm trả về ngày hiện tại
Hàm DAY, MONTH, YEAR
DAY(date), MONTH(date), YEAR(date)
Hàm trả về giá trị ngày (tháng hay năm) của giá trị kiểu ngày được chỉ định.
B.3 Hàm chuyển đổi kiểu
Hàm CAST
CAST (biểu_thức AS kiểu_dữ_liệu)
Chuyển đổi giá trị của biểu thức sang kiểu được chỉ định
Hàm CONVERT
CONVERT(kiểu_dữ_liệu, biểu_thức [,kiểu_chuyển_đổi])
Hàm có chức năng chuyển đổi giá trị của biểu thức sang kiểu dữ liệu được chỉ định. Tham số kiểu_chuyển_đổi là một giá trị số thường được sử dụng khi chuyển đổi giá trị kiểu ngày sang kiểu chuỗi nhằm qui định khuôn dạng dữ liệu được hiển thị và được qui định như sau:
Do Drive thay đổi chính sách, nên một số link cũ yêu cầu duyệt download. các bạn chỉ cần làm theo hướng dẫn.
Password giải nén nếu cần: ket-noi.com | Bấm trực tiếp vào Link để tải:
You must be registered for see links
Last edited by a moderator: