mailanng613

New Member
Download miễn phí Giáo trình Tự học SQL Server



Mục lục
Mục lục . . . . . 1
1 Giới thiệu về SQL Server 2005 . . . 5
1.1 Cài đặt SQL Se rver 2005 Express Edition . . 5
1.1.1 Các yêu cầu cho hệ thống 32bit . . . 5
1.1.2 Các bước cài đặt SQL Server 2005 Express Edition . . 7
1.2 Một số thao tác c ơ bản trên SQL Server 2005 Express Edition. . 16
1.2.1 Tạo một CSDL mới . . . 16
1.2.2 Tạo bảng mới . . . . 17
1.2.3 Xóa bảng, xóa CSDL . . . 19
1.2.4 Mở một query editor để viết câu lệnh SQL . . 19
2 Structured Query Language (SQL) . . . 20
2.1 SQL là ngôn ng ữ của cơ sở dữ liệu quan hệ . . 20
2.2 Vai trò của SQL . . . . 20
2.3 Giới thiệu sơ lược về Transact SQL (T -SQL) . . 21
2.3.1 Ngôn ngữ định nghĩa dữ liệu ( Data Definition Language –DDL) . 22
2.3.2 Ngôn ngữ điều khiển dữ liệu (Data control language –DCL) . 22
2.3.3 Ngôn ngữ thao tác d ữ liệu (Data manipulation language –DML) . 23
2.3.4 Cú pháp của T-SQL . . . 24
2.3.5 Các kiểu dữ liệu . . . 25
2.3.6 Biến (Variables) . . . 26
2.3.7 Hàm (Function) . . . 27
2.3.8 Các toán tử (Operators) . . . 27
2.3.9 Các thành phần điều khiển (Control of flow) . . 28
2.3.10 Chú thích (Comment) . . . 28
2.3.11 Giá trị NULL . . . 28
3 Ngôn ngữ thao tác dữ liệu –DML . . . 29
3.1 Câu lệnh SELECT . . . . 29
3.1.1 Danh sách chọn trong câu lệnh SELECT . . 30
3.1.2 Mệnh đề FROM . . . 34
3.1.3 Mệnh đề WHERE -điều kiện truy vấn dữ liệu . . 34
3.1.4 Phép hợp (UNION) . . . 38
3.1.5 Phép nối . . . . 41
3.1.6 Các loại phép nối . . . 43
3.1.7 Phép nối theo chuẩn SQL -92 . . . 45
3.1.8 Mệnh đề GROUP BY . . . 47
3.1.9 Truy vấn con (Subquery) . . . 50
3.2 Thêm, cập nhật và xóa dữ liệu . . . 51
3.2.1 Thêm dữ liệu . . . . 52
3.2.2 Cập nhật dữ liệu . . . 53
3.2.3 Xóa dữ liệu. . . . 54
4 Ngôn ngữ định nghĩa dữ liệ u –DDL. . . 56
4.1 Tạo bảng . . . . 56
4.2 Các loại ràng buộc . . . . 58
4.2.1 Ràng buộc CHECK . . . 58
4.2.2 Ràng buộc PRIMARY KEY . . . 59
4.2.3 Ràng buộc FOREIGN KEY . . . 60
4.3 Sửa đổi định nghĩa bảng . . . 61
4.4 Xóa bảng . . . . 63
4.5 Khung nhìn -VIEW . . . 63
4.6 Thêm, cập nhật, xóa dữ liệu trong VIEW . . 65
4.7 Thay đổi định nghĩa khung nh ìn . . . 65
4.8 Xóa khung nhìn . . . . 66
5 Thủ tục lưu trữ, hàm và trigger . . . 67
5.1 Thủ tục lưu trữ (Stored procedure) . . . 67
5.1.1 Tạo thủ tục l ưu trữ . . . 68
5.1.2 Lời gọi thủ tục . . . 69
5.1.3 Biến trong thủ tục l ưu trữ . . . 69
5.1.4 Giá trị trả về trong thủ tục l ưu trữ. . . 70
5.1.5 Tham số với giá trị mặc định . . . 71
5.1.6 Sửa đổi thủ tục . . . 72
5.1.7 Xóa thủ tục . . . . 72
5.2 Hàm do người dùng định nghĩa (User Defined Function -UDF) . 72
5.2.1 Hàm vô hướng -Scalar UDF . . . 73
5.2.2 Hàm nội tuyến -Inline UDF . . . 74
5.2.3 Hàm bao gồm nhiều câu lệnh b ên trong –Multi statement UDF . 75
5.2.4 Thay đổi hàm . . . . 76
5.2.5 Xóa hàm . . . . 77
5.3 Trigger . . . . 77
5.3.1 Các đặc điểm của trigger . . . 77
5.3.2 Các trường hợp sử dụng trigger . . . 77
5.3.3 Khả năng sau của trigger . . . 78
5.3.4 Định nghĩa trigger . . . 78
5.3.5 Kích hoạt trigger dựa tr ên sự thay đổi dữ liệu tr ên cột . . 82
5.3.6 Sử dụng trigger v à Giao tác (TRANSACTION) . . 83
5.4 DDL TRIGGER . . . . 84
5.5 Enable/ Disable TRIGGER . . . 85
6 Sao lưu và ph ục hồi dữ liệu (Backup and Restore) . . 87
6.1 Các lý do phải thực hiện Backup . . . 87
6.2 Các loại Backup . . . . 87
6.2.1 Full backup và Differential backup . . 87
6.2.2 Transaction log backup . . . 88
6.3 Các thao tác th ực hiện quá tr ình Backup và Restore trong SQL Server 2005
Express Edition . . . . 89
6.3.1 Sao lưu (Backup) . . . 89
6.3.2 Phục hồi (Restore) . . . 91
7 Các hàm quan tr ọng trong T -SQL . . . 94
7.1 Các hàm làm việc với kiểu dữ liệu số . . . 94
7.1.1 Hàm ISNUMERIC . . . 94
7.1.2 Hàm ROUND . . . 94
7.2 Các hàm làm việc với kiểu dữ liệu chuỗi . . 95
7.2.1 Hàm LEFT . . . . 95
7.2.2 Hàm RIGHT . . . . 95
7.2.3 Hàm SUBSTRING . . . 95
7.2.4 Hàm LEN . . . . 96
7.2.5 Hàm REPLACE . . . 96
7.2.6 Hàm STUFF . . . . 96
7.2.7 Hàm LOWER/UPPER . . . 97
7.2.8 Hàm LTRIM/RTRIM . . . 97
7.3 Các hàm làm việc với kiểu dữ liệu Ng ày tháng/ Th ời gian . . 97
7.3.1 Hàm GETDATE . . . 97
7.3.2 Hàm DAY/ MONTH/ YEAR . . . 97
7.3.3 Hàm DATEPART . . . 98
7.3.4 Hàm DATENAME . . . 99
7.4 Hàm CAST và CONVERTER . . . 99
Tài liệu tham khảo . . . . 101

Bảng Order
Trước tiên vào bảng Customers tìm ra dòng có có mã khách hàng là 3.
Tìm kiếm trong bảng Orders các dòng có giá trị trường CUSTOMERID là 3 và cho các
dòng này vào kết quả truy vấn.
Như vậy để thực hiện yêu cầu truy vấn, chúng ta phải thực hiện phép kết nối giữa hai
bảng Customers và Orders với điều kiện kết nối là CUSTOMERID của bảng CUSTOMERS
bằng với CUSTOMERID của bả ng ORDERS.
Phép nối là cơ sở để thực hiện các yêu cầu truy vấn dữ liệu liên quan đến nhiều bảng. Một
câu lệnh nối thực hiện lấy các dòng dữ liệu trong các bảng tham gia truy vấn, so sánh giá trị của
các dòng này trên một hay nhiều cột được chỉ định trong điều kiện nối v à kết hợp các dòng
thoả mãn điều kiện thành những dòng trong kết quả truy vấn.
Để thực hiện được một phép nối, cần xác định đ ược những yếu tố sau:
42
Những cột nào cần hiển thị trong kết quả t ruy vấn
Những bảng nào có tham gia vào truy vấn.
Điều kiện để thực hiện phép nối giữa các bảng dữ liệu l à gì
Trong các yếu tố kể trên, việc xác định chính xác điều kiện để thực hiện phép nối giữa các
bảng đóng vai trò quan trọng nhất. Trong đa số các trường hợp, điều kiện của phép nối đ ược
xác định nhờ vào mối quan hệ giữa các bảng cần truy xuất dữ liệu. Thông th ường, đó là
điều kiện bằng nhau giữa khoá chính v à khoá ngoài của hai bảng có mối quan hệ với nhau. Nh ư
vậy, để có thể đưa ra một câu lệnh nối thực hiện chính xác yêu cầu truy vấn dữ liệu đòi hỏi phải
hiểu được mối quan hệ cũng như ý nghĩa của chúng giữa các bảng dữ liệu.
Một câu lệnh nối cũng được bắt đầu với từ khóa SELECT. Các cột đ ược chỉ định tên sau
từ khoá SELECT là các cột được hiển thị trong kết quả truy vấn. Việc sử dụng t ên các cột
trong danh sách chọn có thể là:
Tên của một số cột nào đó trong các bảng có tham gia vào truy vấn. Nếu tên cột trong các
bảng trùng tên nhau thì tên cột phải được viết dưới dạng
tên_bảng.tên_cột
Dấu sao (*) được sử dụng trong danh sách chọn khi cần hiển thị tất cả các cột của các
bảng tham gia truy vấn.
Trong trường hợp cần hiển thị tất cả các cột của một bảng n ào đó, ta sử dụng cách viết:
tên_bảng.*
Mệnh đề FROM trong phép nối
Sau mệnh đề FROM của câu lệnh nối là danh sách tên các bảng (hay khung
nhìn) tham gia vào truy vấn. Nếu ta sử dụng dấu * trong danh sách chọn th ì thứ tự của các bảng
liệt kê sau FROM sẽ ảnh hưởng đến thứ tự các cột được hiển thị trong kết quả truy vấn.
Mệnh đề WHERE trong phép nối
Khi hai hay nhiều bảng được nối với nhau, ta phải chỉ định điều kiện để thực hiện phép
nối ngay sau mệnh đề WHERE. Điều kiện nối đ ược biểu diễn dưới dạng biểu thức logic so
sánh giá trị dữ liệu giữa các cột của các bảng tham gia truy vấn.
Các toán tử so sánh dưới đây được sử dụng để xác định điều kiện nối
Phép toán Ý nghĩa
= Bằng
> Lớn hơn
>= Lớn hơn hay bằng
< Nhỏ hơn
43
<= Nhỏ hơn hay bằng
Khác
!> Không lớn hơn
!< Không nhỏ hơn
3.1.6 Các loại phép nối
Phép nối bằng: Một phép nối bằng (equi-join) là một phép nối trong đó giá trị của các cột
được sử dụng để nối được so sánh với nhau dựa trên tiêu chuẩn bằng và tất cả các cột trong các
bảng tham gia nối đều được đưa ra trong kết quả.
Một dạng đặc biệt của phép nối bằng đ ược sử dụng nhiều là phép nối tự nhiên (natural-
join). Trong phép nối tự nhiên, điều kiện nối giữa hai bảng chính l à điều kiện bằng giữa khoá
ngoài và khoá chính của hai bảng; Và trong danh sách chọn của câu lệnh chỉ giữ lại một cột
trong hai cột tham gia vào điều kiện của phép nối.
Ví dụ phép kết nối bằng:
select *
from Customers c, Orders o
where c.customerid = o.customerid
Ví dụ phép kết nối tự nhiên:
select c.CUSTOMERID, c.CUSTOMERNAME,
c.BIRTHDAY, c.GENDER, c.ADDRESS, o_ORDERDATE
from Customers c, Orders o
where c.customerid = o.customerid
hay viết gọn:
select c.*, o_ORDERDATE
from Customers c, Orders o
where c.customerid = o.customerid
Trong phép kết nối bằng, trường CUSTOMERID xuất hiện hai lần. Sự d ư thừa được loại
bỏ bằng cách sử dụng phép kết nối tự nhi ên và việc chỉ định rõ các cột cột cần truy xuất.
44
Trong các câu lệnh nối, ngoài điều kiện của phép nối được chỉ định trong mệnh đề
WHERE còn có thể chỉ định các điều kiện t ìm kiếm dữ liệu khác (điều kiện chọn). Thông
thường, các điều kiện này được kết hợp với điều kiện nối thông qua toán tử AND.
Ví dụ:
select c.*, o_ORDERDATE
from Customers c, Orders o
where c.customerid = o.customerid
and c.customerid = 3
Phép tự nối
Phép tự nối là phép nối mà trong đó điều kiện nối được chỉ định liên quan đến các cột của
cùng một bảng. Trong trường hợp này, sẽ có sự xuất hiện tên của cùng một bảng nhiều lần
trong mệnh đề FROM và do đó các bảng cần được đặt bí danh.
Ví dụ: Giả sử có yêu cầu tìm ra các khách hàng có nhiều hơn một đơn đặt hàng trong
cùng ngày
select c1.CUSTOMERID, c1.CUSTOMERNAME
from customers c1, customers c2, orders o1, orders o2
where c1.customerid = o1.customerid
and c2.customerid = o2.customerid
and c1.customerid = c2.customerid
and o1.orderdate = o2.orderdate
and o1.orderid o2.orderid
Câu truy vấn được giải thích như sau: Lần lượt lấy ra các mã khách hàng, mã hóa đơn và
ngày đặt hàng từ bảng c1, o1 đem so sánh lần l ượt với các mã khách hàng, mã hóa đơn và ngày
đặt hàng từ bảng c2, o2. Nếu việc so sánh hai tập hợp n ày thỏa điều kiện sau đây: mã khách
hàng trùng nhau, ngày đặt hàng trùng nhau và có mã hóa đơn khác nhau thì thông tin khách
hàng này được cho vào kết qua truy vấn.
Phép nối ngoài
Trong các phép nối đã đề cập ở trên, chỉ những dòng có giá trị trong các cột được chỉ
định thoả mãn điều kiện kết nối mới được hiển thị trong kết quả truy vấn, v à được gọi là phép
nối trong (inner join) Theo một nghĩa n ào đó, những phép nối này loại bỏ thông tin chứa trong
những dòng không thoả mãn điều kiện nối. Tuy nhiên, đôi khi ta cũng cần giữ lại những thông
tin này bằng cách cho phép những dòng không thoả mãn điều kiện nối có mặt trong kết quả của
phép nối. Để làm điều này, ta có thể sử dụng phép nối ngoài.
SQL cung cấp các loại phép nối ngoài sau đây:
45
Phép nối ngoài trái (ký hiệu: *=): Phép nối này hiển thị trong kết quả truy vấn tất cả các
dòng dữ liệu của bảng nằm bên trái trong điều kiện nối cho dù những dòng này không thoả mãn
điều kiện của phép nối
Phép nối ngoài phải (ký hiệu: =*): Phép nối n ày hiển thị trong kết quả truy vấn tất cả các
dòng dữ liệu của bảng nằm bên phải trong điều kiện nối cho dù những dòng này không thoả
điều kiện của phép nối.
Tuy nhiên trong SQL Server 2005 Express Edition không h ỗ trợ trực tiếp các phép nối *=
và =*. Mặt khác trong các phiên bản SQL Server sắp tới các phép nối này sẽ hoàn toàn không
được hỗ trợ. Do đó Microsoft khuyến cáo ng ười sử dụng dùng các phép nối LEFT JOIN,
RIGHT JOIN. Các phép nối này sẽ được nói rõ trong phần dưới đây.
3.1.7 Phép nối theo chuẩn SQL-92
Chuẩn SQL2 (SQL-92) đưa ra một cách khác để biểu diễn cho phép nối, trong cách biểu
diễn này, điều ki...


Link Download bản DOC
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:

 

Các chủ đề có liên quan khác

Top