Giáo trình SQL Server 2005

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

2

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

3

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

4

7.4 Hàm CAST và CONVERTER . . . 99

Tài liệu tham khảo . . . . 101

pdf101 trang | Chuyên mục: SQL Server | Chia sẻ: dkS00TYs | Lượt xem: 2333 | Lượt tải: 1download
Tóm tắt nội dung Giáo trình SQL Server 2005, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
kup gần nhất. Trong những hệ thống CSDL lớn, quá tr ình differential backup sẽ sử dụng tài
nguyên ít hơn rất nhiều so với quá trình full backup và có thể không ảnh hưởng đến hiệu suất
của hệ thống.
Quá trình differential ch ỉ sao lưu những sự thay đổi của dữ liệu từ lần full backup gần
nhất, do đó khi có sự cố với CSDL nếu không có bản sao l ưu của quá trình full backup thì bản
sao lưu của quá trình differential backup sẽ trở nên vô nghĩa.
Ví dụ:
Công ty XYZ thực hiện full backup vào cuối ngày thứ 6 hàng tuần và thực hiện
differential backup vào tối các ngày từ thứ 2 tới thứ 5. Nếu CSDL có sự cố vào sáng thứ 4,
quản trị viên CSDL sẽ phục hồi dữ liệu bằng bản sao l ưu của quá trình full backup của ngày
thứ 6 tuần trước và sau đó phục hồi các thay đổi của dữ liệu bằng cách áp dụng bản sao l ưu của
quá trình differential backup vào ngày th ứ 3.
88
6.2.2 Transaction log backup
Quá trình full backup và differential backup chiếm nhiều tài nguyên hệ thống và ảnh
hưởng đến hiệu suất làm việc hệ thống nên thường được thực hiện vào sau giờ làm việc. Tuy
nhiên điều này có thể dẫn đến các mất mát dữ liệu trong một ng ày làm việc nếu CSDL có sự cố
trước khi quá trình sao lưu diễn ra. Transaction log backup là một giải pháp nhằm giảm thiểu
tối đa lượng dữ liệu có thể mất khi có sự cố CSDL.
Trong quá trình hoạt động, SQL Server sử dụng transaction log để theo d õi tất cả các thay
đổi trên CSDL. Log bảo đảm CSDL có thể phục hồi sau những sự cố đột xuất và cũng đảm bảo
người dùng có thể quay ngược các kết quả trong các giao tác CSDL. Các giao tác chưa hoàn
thành được lưu trong log trước khi được lưu vĩnh viễn trong CSDL.
Transaction log backup sao lưu transactio n log của CSDL vào thiết bị lưu trữ. Mỗi khi
transaction log được sao lưu, SQL Server bỏ đi các transaction đã thực hiện thành công
(committed tracsaction) và ghi các transaction vào phương ti ện sao lưu. Transaction log backup
sử dụng tài nguyên hệ thống ít hơn rất nhiều so với full backup và differential backup , do đó có
thể sử dụng transaction log backup bất kỳ thời gian nào mà không sợ ảnh hưởng đến hiệu suất
hệ thống.
Trở lại với ví dụ về công ty XYZ. Công ty n ày thực hiện full backup vào tối thứ 6 và
differential backup vào tối từ thứ 2 tới thứ 5. Công ty thực hiện thêm quá trình transaction log
backup mỗi giờ một lần. Giả sử sự cố CSDL xảy ra vào 9h:05 sáng thứ 4. Quá trình khôi phục
lại CSDL nhu sau: Dùng full backup và differential backup c ủa tối thứ 6 và tối thứ 3 để phục
hồi lại trạng thái CSDL vào tối thứ 3. Tuy nhiên quá trình này vẫn còn để mất dữ liệu trong 2
giờ (7 – 9h) sáng thứ 4. Tiếp theo sử dụng 2 bản sao lưu transaction backup lúc 8h và 9h sáng
để khôi phục CSDL về trạng thái lúc 9h sáng thứ 4.
89
6.3 Các thao tác thực hiện quá trình Backup và Restore trong
SQL Server 2005 Express Edition
6.3.1 Sao lưu (Backup)
Click OK
90
91
Click OK. Quá trình sao lưu hoàn tất
6.3.2 Phục hồi (Restore)
92
Click OK hai lần
93
Click OK. Quá trình phục hồi hoàn tất
94
7 Các hàm quan trọng trong T-SQL
Ngôn ngữ T-SQL có nhiều hàm có thể tham gia vào câu lệnh T-SQL. Những hàm này
thực hiện các nhiệm vụ quan trọng khác nhau. Trong ch ương này sẽ trình bày một số các hàm
thông dụng để làm việc với các kiểu dữ liệu số, ch uỗi, ngày/thời gian và giá trị NULL trong
SQL Server 2005.
7.1 Các hàm làm việc với kiểu dữ liệu số
Các hàm quan trọng làm việc với kiểu dữ liệu số là hàm ISNUMERIC và ham ROUND
7.1.1 Hàm ISNUMERIC
Hàm isNumeric kiểm tra một giá trị có phải thuộc kiểu dữ liệu số hay không.
Ví dụ: Câu lệnh dưới đây trả về tên khách hàng, và một cột có tên NUMERIC. Cột này sẽ
mang giá trị 0 nếu địa chỉ khách hàng không phải là số và ngược lại
select CUSTOMERNAME, isnumeric(ADDRESS) as ISNUMERIC
from customers
7.1.2 Hàm ROUND
Hàm ROUND trả về một giá trị số, đã được làm tròn theo một độ đài chỉ định
Cấu trúc hàm ROUND như sau:
ROUND ( số_làm_tròn , độ_dài_làm_tròn )
Khi sử dụng hàm ROUND cần lưu ý:
số_làm_tròn phải có kiểu dữ liệu số (numeric data type) nh ư int, float, decimal… trừ kiểu
dữ liệu dạng nhị phân. Cho dù số_làm_tròn thuộc kiểu dữ liệu gì, kết quả hàm ROUND luôn
trả về kiều số nguyên.
Nếu độ_dài_làm_tròn là số âm và lớn hơn số chữ số phía trước dấu thập phân th ì hàm
ROUND trả về 0.
Ví dụ 1:
95
select ROUND(123.9994, 3), ROUND(123.99 95, 3)
Ví dụ 2:
select ROUND(123.4545, 2),ROUND(123.45, -2)
Ví dụ 3:
SELECT ROUND(150.75, 0), ROUND(150.75, 0, 1)
7.2 Các hàm làm việc với kiểu dữ liệu chuỗi
Các hàm quan trọng bao gồm LEFT, RIGHT, LEN, REPLACE, STUFF, SUBSTRING,
LOWER, UPPER, LTRIM, and RTRIM.
7.2.1 Hàm LEFT
Hàm LEFT trả về một chuỗi ký tự có chiều d ài được chỉ định tính từ bên trái của chuỗi.
Ví dụ:
select left('Nha Trang', 5)
7.2.2 Hàm RIGHT
Hàm RIGHT tương tự hàm LEFT nhưng tính từ bên phải của chuỗi
Ví dụ:
select right('Nha Trang', 5)
7.2.3 Hàm SUBSTRING
Hàm STRING trích xuất một chuỗi con từ một chuỗi cho tr ước.
Cấu trúc hàm SUBSTRING như sau:
SUBSTRING (chuỗi_ban_đầu, vị_trí_bắt_đầu, chiều_d ài_chuỗi_con)
Ví dụ 1:
select substring ('Nha Trang', 2, 5)
96
Ví dụ 2:
Select substring(‘Nha Trang’, -2, 5)
7.2.4 Hàm LEN
Hàm LEN trả về chiều dài một chuỗi
Ví dụ:
Select len(‘Nha Trang’)
7.2.5 Hàm REPLACE
Hàm REPLACE thay thế một chuỗi bởi một chuỗi khác
Ví dụ 1: Câu lệnh dưới đây thay thế chữ “Nha” trong chuỗi Nha Trang bằng chữ “nha”
Select replace(‘Nha Trang’, ‘Nha ’, ‘nha)
Ví dụ 2:
select replace(ADDRESS, 'Minh', 'Ninh')
from customers
7.2.6 Hàm STUFF
Hàm STUFF thay thế một số lượng xác định các ký tự trong một chuỗi bằng một chuỗi
khác bắt đầu từ một vị trí được chỉ định.
Ví dụ:
97
select stuff('Nha Trang', 2, 3, '*** ')
7.2.7 Hàm LOWER/UPPER
Hàm LOWER chuyển các ký tự hoa trong chuỗi th ành các kí tự thường. Hàm UPPER
chuyển các chuỗi ký tự thường trong chuỗi thành các ký tự hoa.
Ví dụ:
select lower('Nha Trang'), upper('Nha Trang')
7.2.8 Hàm LTRIM/RTRIM
Hàm LTRIM cắt các khoảng trắng bên trái của chuỗi, hàm RTRIM cắt khoảng trắng bên
phải chuỗi.
Ví dụ:
declare @llen int
declare @rlen int
declare @len int
select @llen = len(ltrim(' Nha Trang')),
@rlen = len(rtrim('Nha Trang ')),
@len = len('Nha Trang')
select @llen, @rlen, @len
7.3 Các hàm làm việc với kiểu dữ liệu Ngày tháng/ Thời gian
7.3.1 Hàm GETDATE
Hàm GETDATE trả về ngày giờ lúc thực hiện câu truy vấn.
Ví dụ:
select getdate()
7.3.2 Hàm DAY/ MONTH/ YEAR
Hàm DAY trả về ngày của một một giá trị thuộc kiểu datetime.
Hàm MONTH trả về tháng của một giá trị thuộc kiểu datetime
98
Hàm YEAR trả về năm của một giá trị thuộc kiểu datetime.
Ví dụ:
select day(orderdate) as DAYOFORDER,
month(orderdate) as MONTHOFORDER,
year(orderdate) as YEAROFORDER
from orders o inner join customers c on c.cus tomerid = o.customerid
where c.customerid = 3
7.3.3 Hàm DATEPART
Trong quá trình làm việc với các CSDL, đôi lúc ta muốn biết xem một ng ày nào đó thuộc
quý mấy trong năm, hay thuộc tuần thứ mấy trong tháng . Hàm DATEPART giúp giải quyết các
yêu cầu trên một cách dễ dàng.
Cấu trúc hàm DATEPART như sau:
DATEPART (yêu_cầu_trích_xuất, giá_trị_trích_xuất )
giá_trị_trích_xuất là một giá trị thuộc kiểu datetime.
yêu_cầu_trích_xuất: ngày, tháng, năm, quý,….
Khi có một yêu cầu trích xuất nào đó, chúng ta sẽ có các chữ viết tắt tương ứng với các
yêu cầu đó. Bảng dưới đây mô tả các yêu chữ viết tắt và các yêu cầu trích xuất tương ứng.
Ý nghĩa Chữ viết tắt
Năm yy, yyyy
Quý qq,q
Tháng mm,m
Số ngày đã qua trong năm dy,y
Ngày dd,d
Tuần wk,ww
Số ngày đã qua trong tuần dw
Giờ hh
Phút mi,n
Giây ss,s
Ví dụ:
select datepart(yyyy, orderdate)as YEAROFORDERDATE,
datepart(qq, orderdate)as QUARTEROFORDERDATE,
99
datepart(m, orderdate) as MONTHOFORDERDATE,
datepart(wk, orderdate) as WEEKOFORDERDATE,
datepart(d, orderdate) as DATEOFORDERDATE,
datepart(dy, Orderdate), datepart(dw, orderdate)
from orders
7.3.4 Hàm DATENAME
Tương tự hàm DATEPART nhưng hàm DATENAME tr ả về một chuỗi ký tự
Ví dụ:
select datename(yyyy, orderdate)as YEAROFORDERDATE,
datename(qq, orderdate)as QUARTEROFORDER DATE,
datename(m, orderdate) as MONTHOFORDERDATE,
datename(wk, orderdate) as WEEKOFORDERDATE,
datename(d, orderdate) as DATEOFORDERDATE,
datename(dy, Orderdate), datename(dw, orderdate)
from orders
7.4 Hàm CAST và CONVERTER
Chuyển đổi một giá trị thuộc kiểu dữ liệu này sang một kiểu dữ liệu khác. Hàm CAST và
CONVERTER cung cấp cùng một chức năng. Một điểm thuận lợi khi dùng CONVERTER là
khi chuyển đổi, hàm này cũng cho phép người dùng sẽ định dạng lại giá tri kết quả theo ý
muốn.
Cấu trúc hàm CAST và CONVERTER như sau:
CAST (biểu_thức/giá_ trị AS kiểu_dữ liệu [độ_dài_kiểu_dữ_liệu ])
CONVERT ( kiểu_dữ liệu [độ_dài_kiểu_dữ_liệu ] , biểu_thức/giá_ trị [ ,kiểu_định_dạng] )
Năm 2 chữ số Năm 4 chữ số Output
0 hoặc 100 mon dd yyyy hh:mi AM (PM)
1 101 mm/dd/yy
2 102 yy.mm.dd
100
3 103 dd/mm/yy
4 104 dd.mm.yy
5 105 dd-mm-yy
6 106 dd mon yy
7 107 Mon dd, yy
8 108 hh:mm:ss
9 hoặc 109 mon dd yyyy hh:mi:ss:mmmAM (PM )
10 110 mm-dd-yy
11 111 yy/mm/dd
12 112 yymmdd
13 hoặc 113 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 hh:mi:ss:mmm(24h)
Ví1 dụ:
select CUSTOMERNAME,
convert (varchar, BIRTHDAY, 103) as BIRTHDAY, ADDRESS
from Customers
where Customername = 'Le Thi Hoa'
and year(getdate()) - year(BIRTHDAY) > 20
Hàm CONVERT và hàm CAST có th ể sử dụng kết hợp với nhau để cho kết qua như
mong muốn.
Ví dụ:
select c.CUSTOMERID, c.CUSTOMERNAME,
convert(varchar(20),cast(SUM(i.UNITPRICE*od.QUANTITY) as money),1) as
SUMTOTAL
from customers c inner join orders o on o.customerid = c.customerid
inner join orderdetail od on o.or derid = od.orderid
inner join items i on i.itemid = od.itemid
group by c.customerid, c.customername
101
Tài liệu tham khảo
1. Giáo trình hệ quản trị cơ sở dữ liệu SQL Server, Khoa CNTT, Đại học Huế .
2. SQL Server 2005, T-SQL Recipes: Problem, Solution, Approach – Appress Publisher.
3. Sams Teach yourself Microsoft SQL Server 2005 Express in 24 hours.

File đính kèm:

  • pdfGiáo trình SQL Server 2005.pdf
Tài liệu liên quan