SlideShare a Scribd company logo
11
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
SQL Server
22
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Lập trình v i CSDL
5
33
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Biến cục bộ
44
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Khai báo biến cục bộ
• Dùng để l u tr các giá tr t m th i trong quá trình
tính toán
 Biến phải có kiểu dữ liệu
 Biến muốn sử dụng trong một batch phải khai báo trước
DECLARE @Tên_biến Kiểu_dữ_liệu [, ...]
Ví dụ :
DECLARE @Tongsldat INT, @Hotenncc CHAR(50)
DECLARE @Ngayxh DATETIME
55
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Gán giá tr cho biến
SET @Biến = Giá_trị
SET @a = 5
Select @Biến = Tên_Cột From Tên_Bảng
Select @ConLai = TonCuoiKy From TonKho Where
MaVTu = ‘VT010’ And NamThang = ‘200402’
Sử dụng lệnh SET hoặc SELECT
66
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Xem giá tr hiện hành của biến
• Lệnh PRINT
Print @Biến
Print @A
• Khi có kết hợp với chuỗi, phải đổi kiểu dữ liệu sang kiểu
chuỗi bằng hàm CAST hay CONVERT
Print ‘Giá trị của @A ‘ + cast(@A as char(4))
77
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ph m vi ho t động của biến
• Một biến chỉ có ph m vi ho t động cục bộ
 Trong một Batch
 Trong một Stored Procedure hay Trigger
DECLARE @Ngaydhgn DATETIME
SELECT @Ngaydhgn=MAX(NGAYDH)
FROM DONDH
GO
PRINT 'Ngày đặt hàng gần nhất: ' +
CONVERT(CHAR(12),@Ngaydhgn)
GO
88
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Biến hệ thống
99
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ý nghĩa sử dụng
• Cung cấp các thông tin hệ thống nh
 Phiên bản SQL Server
 Số dòng dữ liệu vừa được xử lý bởi câu lệnh
 Mã lỗi
 Số lượng kết nối
 Tình trạng cursor
 …
• Không cần khai báo
 Biến do SQL Server định sẵn
 Tên bắt đầu bởi @@
1010
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Một vài biến hệ thống th ng dùng
• @@RowCount
 Tổng số mẩu tin được tác động của câu lệnh truy vấn gần nhất.
• @@Error
 Số mã lỗi của câu lệnh thực hiện gần nhất
 Khi một câu lệnh thực hiện thành công thì giá trị là 0.
• @@Fetch_Status
 Trạng thái của việc đọc dữ liệu trong bảng theo cơ chế từng mẩu
tin (cursor).
 Khi đọc dữ liệu của mẩu tin thành công thì giá trị là 0.
1111
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các toán tử
1212
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Toán tử số h c
Ký hiệu Ý nghĩa
+ Thực hiện phép cộng hai số
- Thực hiện phép trừ hai số.
* Thực hiện phép nhân hai số.
/ Thực hiện phép chia hai số.
% Thực hiện phép chia lấy phần dư.
1313
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Toán tử nối chuỗi
• Sử dụng dấu + làm toán tử nối chuỗi
SELECT 'Hello' + ' ' + 'The World!'
SELECT 'Ngày đặt hàng D007 là: '
+ CAST(NGAYDH AS CHAR(11))
FROM DONDH
WHERE SODH='D007'
1414
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Toán tử so sánh
Ký hiệu Ý nghĩa
= Thực hiện phép so sánh bằng.
> Thực hiện phép so sánh lớn hơn.
< Thực hiện phép so sánh nhỏ hơn.
>= Thực hiện phép so sánh lớn hơn hoặc bằng.
<= Thực hiện phép so sánh nhỏ hơn hoặc bằng.
<> Thực hiện phép so sánh khác.
!= Thực hiện phép so sánh khác.
!> Thực hiện phép so sánh không lớn hơn.
!< Thực hiện phép so sánh không nhỏ hơn.
1515
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Toán tử luận lý
• Sử dụng các toán tử thông th ng AND,
OR, NOT vẫn dùng trong các câu SQL
SELECT * FROM VATTU
WHERE (DVTINH='Bộ' AND PHANTRAM>10)
OR (DVTINH='Cái' AND
PHANTRAM>20)
1616
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cấu trúc điều khiển
1717
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cấu trúc rẽ nhánh IF...ELSE
IF Biểu_thức_luận_lý
Câu_lệnh1 | Khối_lệnh1
[ ELSE
Câu_lệnh2 | Khối_lệnh2 ]
1818
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ví Dụ :
IF (SELECT COUNT(*) FROM CTPXUAT WHERE SLXUAT>4) > 0
BEGIN
PRINT 'Danh sách các hàng hóa bán với số lượng > 4'
SELECT CTPX.MAVTU, TENVTU, SLXUAT
FROM CTPXUAT CTPX INNER JOIN VATTU VT
ON VT.MAVTU=CTPX.MAVTU
WHERE SLXUAT>4
END
ELSE
PRINT 'Chưa bán hàng hóa nào với số lượng >4'
1919
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cú pháp If Exists
IF EXISTS (SELECT * FROM CTPXUAT WHERE SLXUAT>4)
BEGIN
PRINT 'Danh sách các hàng hóa bán với số lượng > 4'
SELECT CTPX.MAVTU, TENVTU, SLXUAT
FROM CTPXUAT CTPX INNER JOIN VATTU VT ON VT.MAVTU=CTPX.MAVTU
WHERE SLXUAT>4
END
ELSE
PRINT 'Chưa bán hàng hóa nào với số lượng >4'
IF EXISTS (Câu_lệnh_SELECT)
Câu_lệnh1 | Khối_lệnh1
[ ELSE
Câu_lệnh2 | Khối_lệnh2 ]
2020
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cấu trúc lặp WHILE
DECLARE @Songuyen INT
SET @Songuyen=100
WHILE (@Songuyen<110)
BEGIN
PRINT 'Số nguyên : ' + CONVERT(CHAR(3), @Songuyen)
SET @Songuyen = @Songuyen + 1
END
WHILE Biểu_thức_luận_lý
BEGIN
Các_lệnh_lặp
END
2121
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Sử dụng biến kiểu d liệu
cursor
2222
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Khái niệm về cursor
• Các lệnh của SQL Server làm việc trên một
nhóm nhiều mẩu tin
• Cursor là cấu trúc giúp làm việc v i từng mẩu
tin t i một th i điểm
 Khai báo cursor như một câu lệnh SELECT
 Có thể di chuyển giữa các mẩu tin trong cursor để làm
việc
 Có thể dùng cursor để cập nhật dữ liệu (Update, Delete)
2323
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các b c sử dụng kiểu d liệu cursor
• Định nghĩa biến kiểu cursor bằng lệnh DECLARE
 Có hai loại cursor: Local, Global
 Cách di chuyển mẩu tin trong cursor: Forward only, scroll
 Cách quản lý dữ liệu của cursor: static, dynamic, keyset
• Sử dụng lệnh OPEN để mở ra cursor đã định nghĩa trước đó
• Đọc và xử lý trên từng dòng dữ liệu bên trong cursor
 Sử dụng biến @@Fetch_status
 Các lệnh Fetch và cấu trúc while
• Đóng cursor lại bằng lệnh CLOSE và DEALLOCATE
 Sau khi close, có thể mở lại
 Deallocate: hủy cursor khỏi bộ nhớ
2424
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cú pháp Declare
DECLARE Tên_cursor CURSOR
[LOCAL | GLOBAL]
[FORWARD_ONLY | SCROLL]
[STATIC | DYNAMIC | KEYSET]
[READ_ONLY | SCROLL_LOCK]
FOR Câu_lệnh_SELECT
[FOR UPDATE [OF Danh_sách_cột_cập_nhật]]
DECLARE cur_Vattu CURSOR
DYNAMIC
FOR
SELECT * FROM VATTU
2525
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cú pháp Open
OPEN Tên_cursor
DECLARE cur_Vattu CURSOR
DYNAMIC
FOR
SELECT * FROM VATTU
OPEN cur_Vattu
2626
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Cú pháp FETCH
FETCH [NEXT | PRIOR | FIRST | LAST
| ABSOLUTE n | RELATIVE n]
FROM Tên_cursor
[INTO Danh_sách_biến]
 Absolute n: Đọc dòng thứ n trong cursor
 Relative n: Đọc dòng thứ n kể từ vị trí hiện hành
2727
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ví dụ hoàn chỉnh
--1. Khai báo biến cursor
DECLARE cur_Vattu CURSOR KEYSET
FOR SELECT * FROM VATTU
WHERE MAVTU LIKE 'TV%'
ORDER BY MAVTU
--2. Mở cursor
OPEN cur_Vattu
--3. Đọc dữ liệu
FETCH NEXT FROM cur_Vattu
WHILE @@FETCH_STATUS = 0
BEGIN
-- Xử lý dòng mới vừa đọc được
-- Thực hiện đọc tiếp các dòng kế
FETCH NEXT FROM cur_Vattu
END
--4. Đóng cursor
CLOSE cur_Vattu
DEALLOCATE cur_Vattu
2828
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm th ng dùng
2929
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm chuyển đổi kiểu d liệu
Một hàm của SQL Server có thể sử dụng ở bất cứ đâu thay
cho một giá trị cụ thể
• Đổi một số thành chuỗi
 STR (Số_thực, Số_ký_tự [, Số_lẻ])
• Đổi kiểu dữ liệu
 CAST (Biểu_thức AS Kiểu_dữ_liệu)
• Đổi kiểu dữ liệu và định dạng
 CONVERT (Kiểu_dữ_liệu, Biểu_thức [, Định_dạng])
3030
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Một số đ nh d ng chuỗi ngày thông
dụng
yy yyyy Chuỗi kết quả
- 0 hoặc 100 mon dd yyyy hh:miAM (or PM)
1 101 mm/dd/yyyy
2 102 yy.mm.dd
3 103 dd/mm/yy
5 105 dd-mm-yy
6 106 dd mon yy
8 108 hh:mm:ss
9 109 mon dd yyyy hh:mi:ss:mmmAM (or PM)
10 110 mm-dd-yy
11 111 yy/mm/dd
12 112 yymmdd
…
Print convert(nvarchar(50), getdate(), 5) 23-05-09
Print convert(nvarchar(50), getdate(), 105) 23-05-2009
3131
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm ngày gi
• Cộng ngày
 DATEADD (Đơn_vị, Con_số, Ngày_chỉ_định)
• So sánh hai biến ngày
 DATEDIFF (Đơn_vị, Ngày1, Ngày2)
• Lấy tên ngày, tháng, năm
 DATENAME (Đơn_vị, Ngày)
• Thời điểm hiện hành
 GETDATE()
• Lấy một thành phần ngày, giờ trong biến ngày
 DATEPART (Đơn_vị, Ngày)
• Lấy ngày, tháng, năm của biến ngày
 DAY (Ngày)
 MONTH (Ngày)
 YEAR (Ngày)
3232
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Đơn_v (Thành phần của ngày) Ch viết tắt
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms
3333
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm toán h c
• Lấy trị tuyệt đối
 ABS (Biểu_thức_số)
• Hằng số Pi
 PI()
• Luỹ thừa
 POWER (Biểu_thức_số, Số_mũ)
• Lấy số ngẫu nhiên
 RAND ([Số_nguồn])
• Làm tròn số
 ROUND (Biểu_thức_số, Vtrí_làm_tròn)
• Dấu của kết quả biểu thức : SIGN (Biểu_thức_số)
• Lấy căn bậc 2 : SQRT (Biểu_thức_số)
3434
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Các hàm xử lý chuỗi
• Hàm viết hoa, th ng
 UPPER (Chuỗi), LOWER (Chuỗi)
• Hàm cắt chuỗi
 LEFT (Chuỗi nguồn, Số_ktự), RIGHT (Chuỗi nguồn, Số_ktự)
 SUBSTRING (Chuỗi nguồn,Vị_trí,Số_ktự)
• Hàm cắt khoảng trắng, t o chuỗi khoảng trắng
 LTRIM (Chuỗi), RTRIM (Chuỗi), SPACE (N)
• Hàm t o chuỗi lặp
 REPLICATE (Chuỗi_lặp, N)
• Chiều dài chuỗi
 LEN (Chuỗi)
• Đảo chuỗi
 REVERSE (Chuỗi)
• Tìm và thay thế chuỗi
 REPLACE (Chuỗi nguồn, Chuỗi_tìm, Chuỗi_thay_thế)
• Đổi từ số thành ký t và ng ợc l i
 CHAR (Số) , ASCII(Ký_tự)
3535
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Xử lý lỗi
3636
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Khối lệnh TRY…CATCH
• Ý nghĩa : Thực hiện các lệnh trong khối TRY, nếu gặp lỗi sẽ chuyển
qua xử lý bằng các lệnh trong khối CATCH
• Cú pháp : BEGIN TRY
{ các câu lệnh }
END TRY
BEGIN CATCH
{ các câu lệnh}
END CATCH
• Các điểm cần lưu ý :
• TRY và CATCH phải cùng lô xử lý
• Sau khối TRY phải là khối CATCH
• Có thể lồng nhiều cấp
3737
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Khối lệnh TRY…CATCH
Ví dụ :
BEGIN TRY
SELECT * FROM BangKhongTonTai;
END TRY
BEGIN CATCH
SELECT
ERROR_NUMBER() as ErrorNumber,
ERROR_MESSAGE() as ErrorMessage;
END CATCH
3838
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Một số hàm ERROR th ng dùng
ERROR_NUMBER() : Trả về mã số của lỗi
ERROR_MESSAGE() Trả về chuỗi lỗi
ERROR_SEVERITY() returns the error severity.
ERROR_STATE() returns the error state number.
ERROR_LINE() : Trả về dòng gây ra lỗi
ERROR_PROCEDURE() Trả về tên thủ tục/ trigger gây ra lỗi
3939
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Thủ tục RAISERROR
• Ý nghĩa : Trả thông báo lỗi về cho ứng dụng
• Cú pháp :
• Raiserror(tbao_loi, muc_do, trang_thai [, cac_tham_so] )
Trong đó:
tbao_loi : - mã thông báo lỗi do người dùng định nghĩa trước bằng
sp_addmessage và được lưu trong sys.messages. Giá trị phải lớn hơn
50000.
- chuỗi thông báo lỗi bất kỳ.
muc_do : Số có giá trị từ 025 thể hiện mức độ nghiêm trọng của lỗi.
trang_thai : Số từ 1-127 để xác định vị trí lỗi khi sử dụng cùng một tbao_loi
tại nhiều điểm khác nhau
cac_tham_so : Hỗ trợ cho các tbao_loi cần tham số
4040
TR NG Đ I H C KHOA H C T NHIÊN TP.HCM
TRUNG TÂM TIN H C
Ví dụ sử dụng RAISERROR
…
IF @nPhanTram NOT BETWEEN 0 AND 100
BEGIN
SET @sErrMsg = N‘Tỉ lệ phầm trăm phải nằm trong đoạn [0,100]’
RAISERROR(@sErrMsg, 16, 1)
RETURN
END
…
Msg 50000, Level 16, State 1, Line 6
Tỉ lệ phầm trăm phải nằm trong đoạn [0,100]

More Related Content

PPT
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
PDF
Phụ thuộc hàm và các dạng chuẩn - dhcntt
PDF
Đề thi hệ thống thông tin quản lý
PDF
Bài 2 : Các đối tượng trong CSDL - SQL server
PDF
Giáo trình phân tích thiết kế hệ thống thông tin
PDF
Kiến trúc máy tính và hợp ngữ bài 08
PDF
Hệ điều hành (chương 1)
PDF
Hệ điều hành (chương 5)
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Phụ thuộc hàm và các dạng chuẩn - dhcntt
Đề thi hệ thống thông tin quản lý
Bài 2 : Các đối tượng trong CSDL - SQL server
Giáo trình phân tích thiết kế hệ thống thông tin
Kiến trúc máy tính và hợp ngữ bài 08
Hệ điều hành (chương 1)
Hệ điều hành (chương 5)

What's hot (20)

PDF
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
DOC
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
PPT
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
PDF
Kỹ năng làm việc nhóm
DOCX
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
PDF
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
PPT
Hệ Thống DNS
PPTX
Trigger, Cursor, Function in SQL Server
PDF
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
PPTX
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
PDF
Thiết kế mạng LAN cho công ty 2 tầng
PPTX
Bài Giảng IC3 GS4: Phần Mềm
PDF
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
PPTX
Vận dụng quy luật và các nguyên tắc quản trị
PPTX
Hệ thống quản lý bán hàng online
DOCX
Báo cáo bài tập lớn phân tích thiết kế hệ thống
PDF
Bai tap-tinh-huong-quan-tri-hoc-co-loi-giai-vieclamvui
DOCX
Mẫu báo cáo bài tập lớn
PPT
kỹ năng làm việc theo nhóm
PPTX
Thuật Toán BEA (Bond Energy Algorithm)
Đề tài: Xây dựng phần mềm quản lý nhà hàng ăn uống
Đề tài: Quản lý hệ thống bán vé máy bay của Vietnam Airline, 9đ
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG DÙNG UML
Kỹ năng làm việc nhóm
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Hệ Thống DNS
Trigger, Cursor, Function in SQL Server
Bài 1: Tổng quan về cơ sở dữ liệu - Giáo trình FPT
Slide bài tập lớn ngôn ngữ lập trình - phần mềm quản lý thư viện
Thiết kế mạng LAN cho công ty 2 tầng
Bài Giảng IC3 GS4: Phần Mềm
Bài 6: Thiết kế cơ sở dữ liệu - Giáo trình FPT
Vận dụng quy luật và các nguyên tắc quản trị
Hệ thống quản lý bán hàng online
Báo cáo bài tập lớn phân tích thiết kế hệ thống
Bai tap-tinh-huong-quan-tri-hoc-co-loi-giai-vieclamvui
Mẫu báo cáo bài tập lớn
kỹ năng làm việc theo nhóm
Thuật Toán BEA (Bond Energy Algorithm)
Ad

Similar to Bài 5 : Lập trình với CSDL trong SQL (20)

PPTX
ORACLE_ch2_SQL.pptx
PDF
Chuong1 c
PDF
C4.SQL-LapTrinhT_SQL.pdfddadadsadadsdadd
PDF
Lec3. Ham.pdf
DOC
Chuong 2
PPT
PDF
PPT
KTMT-Chuong 5 - Hợp ngữ.pptaaaaaaaaaaaaa
PDF
Chuong 4 - SQL - University of Information Technology.pdf
PPT
Phan2 chuong8 chuoikitu
PPT
Các ví dụ về cách viết và sử dụng chương trình con
PPT
slide_Chuong 3_ (1).ppt
PPT
Thiet Ke Co So Du Lieu2
PDF
slide 8051
PPTX
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
PPT
Nmlt C06 Ham
DOC
Tóm tắt các hàm chuẩn của c
PPTX
THDC-Bai05-UngDungXuLyBangTinh_Phan3.pptx
PDF
Giới thiệu ngôn ngữ lập trình C++
PDF
Nmlt c11 con_trocoban_in
ORACLE_ch2_SQL.pptx
Chuong1 c
C4.SQL-LapTrinhT_SQL.pdfddadadsadadsdadd
Lec3. Ham.pdf
Chuong 2
KTMT-Chuong 5 - Hợp ngữ.pptaaaaaaaaaaaaa
Chuong 4 - SQL - University of Information Technology.pdf
Phan2 chuong8 chuoikitu
Các ví dụ về cách viết và sử dụng chương trình con
slide_Chuong 3_ (1).ppt
Thiet Ke Co So Du Lieu2
slide 8051
HQCSDL_ThuTucaaaaaaaaaaaaaaaaaaaâdâdáwww
Nmlt C06 Ham
Tóm tắt các hàm chuẩn của c
THDC-Bai05-UngDungXuLyBangTinh_Phan3.pptx
Giới thiệu ngôn ngữ lập trình C++
Nmlt c11 con_trocoban_in
Ad

More from MasterCode.vn (20)

PDF
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
PDF
Why apps-succeed-wpr-mastercode.vn
PDF
Dzone performancemonitoring2016-mastercode.vn
PDF
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
PDF
Nghiên cứu về khách hàng mastercode.vn
PDF
Lập trình sáng tạo creative computing textbook mastercode.vn
PDF
Pd fbuoi7 8--tongquanseo-mastercode.vn
PDF
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
PDF
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
PDF
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
PDF
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
PDF
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
PDF
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
PDF
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
PDF
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
PDF
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
PDF
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
PDF
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
PDF
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
PDF
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn
Pd ftai lieu-tieng-anh-cho-nguoi-moi-bat-dau-mastercode.vn
Why apps-succeed-wpr-mastercode.vn
Dzone performancemonitoring2016-mastercode.vn
Google công bố thông tin lịch xu hướng ngành 2017 mastercode.vn
Nghiên cứu về khách hàng mastercode.vn
Lập trình sáng tạo creative computing textbook mastercode.vn
Pd fbuoi7 8--tongquanseo-mastercode.vn
Pd fbuoi5 6-ảnh hưởng của social media tới kết quả seo-mastercode.vn
Pdf buoi3 4-link-building-tran-ngoc-chinh-mastercode.vn
Pd fbuoi3 4-kỹ thuật xây dựng back link-mastercode.vn
Pd fbuoi2 onpage – tối ưu hóa trang web-mastercode.vn
Pd fbuoi1 giới thiệu seo tools cơ bản-seo manager + seo guy-mastercode.vn
Pdf buoi1 2-on-page-tran-ngoc-chinh-mastercode.vn
Pdfbài 7 máy tính xác tay và máy in bảo trì sự cố máy tính-mastercode.vn
Pdfbài 6 bảo trì máy tính bảo trì sự cố máy tính-mastercode.vn
Pdfbài 5 bảo trì và tối ưu windows bảo trì sự cố máy tính-mastercode.vn
Pdfbài 4 ổ cứng hard drive bảo trì sự cố máy tính-mastercode.vn
Pdfbài 3 cpu và ram bảo trì sự cố máy tính-mastercode.vn
Pdfbài 1 giới thiệu chung về phần cứng bảo trì sự cố máy tính-mastercode.vn
Pdfbài 2 bo mạch chủ (main) bảo trì sự cố máy tính-mastercode.vn

Bài 5 : Lập trình với CSDL trong SQL

  • 1. 11 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C SQL Server
  • 2. 22 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Lập trình v i CSDL 5
  • 3. 33 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Biến cục bộ
  • 4. 44 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Khai báo biến cục bộ • Dùng để l u tr các giá tr t m th i trong quá trình tính toán  Biến phải có kiểu dữ liệu  Biến muốn sử dụng trong một batch phải khai báo trước DECLARE @Tên_biến Kiểu_dữ_liệu [, ...] Ví dụ : DECLARE @Tongsldat INT, @Hotenncc CHAR(50) DECLARE @Ngayxh DATETIME
  • 5. 55 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Gán giá tr cho biến SET @Biến = Giá_trị SET @a = 5 Select @Biến = Tên_Cột From Tên_Bảng Select @ConLai = TonCuoiKy From TonKho Where MaVTu = ‘VT010’ And NamThang = ‘200402’ Sử dụng lệnh SET hoặc SELECT
  • 6. 66 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Xem giá tr hiện hành của biến • Lệnh PRINT Print @Biến Print @A • Khi có kết hợp với chuỗi, phải đổi kiểu dữ liệu sang kiểu chuỗi bằng hàm CAST hay CONVERT Print ‘Giá trị của @A ‘ + cast(@A as char(4))
  • 7. 77 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ph m vi ho t động của biến • Một biến chỉ có ph m vi ho t động cục bộ  Trong một Batch  Trong một Stored Procedure hay Trigger DECLARE @Ngaydhgn DATETIME SELECT @Ngaydhgn=MAX(NGAYDH) FROM DONDH GO PRINT 'Ngày đặt hàng gần nhất: ' + CONVERT(CHAR(12),@Ngaydhgn) GO
  • 8. 88 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Biến hệ thống
  • 9. 99 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ý nghĩa sử dụng • Cung cấp các thông tin hệ thống nh  Phiên bản SQL Server  Số dòng dữ liệu vừa được xử lý bởi câu lệnh  Mã lỗi  Số lượng kết nối  Tình trạng cursor  … • Không cần khai báo  Biến do SQL Server định sẵn  Tên bắt đầu bởi @@
  • 10. 1010 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Một vài biến hệ thống th ng dùng • @@RowCount  Tổng số mẩu tin được tác động của câu lệnh truy vấn gần nhất. • @@Error  Số mã lỗi của câu lệnh thực hiện gần nhất  Khi một câu lệnh thực hiện thành công thì giá trị là 0. • @@Fetch_Status  Trạng thái của việc đọc dữ liệu trong bảng theo cơ chế từng mẩu tin (cursor).  Khi đọc dữ liệu của mẩu tin thành công thì giá trị là 0.
  • 11. 1111 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các toán tử
  • 12. 1212 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Toán tử số h c Ký hiệu Ý nghĩa + Thực hiện phép cộng hai số - Thực hiện phép trừ hai số. * Thực hiện phép nhân hai số. / Thực hiện phép chia hai số. % Thực hiện phép chia lấy phần dư.
  • 13. 1313 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Toán tử nối chuỗi • Sử dụng dấu + làm toán tử nối chuỗi SELECT 'Hello' + ' ' + 'The World!' SELECT 'Ngày đặt hàng D007 là: ' + CAST(NGAYDH AS CHAR(11)) FROM DONDH WHERE SODH='D007'
  • 14. 1414 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Toán tử so sánh Ký hiệu Ý nghĩa = Thực hiện phép so sánh bằng. > Thực hiện phép so sánh lớn hơn. < Thực hiện phép so sánh nhỏ hơn. >= Thực hiện phép so sánh lớn hơn hoặc bằng. <= Thực hiện phép so sánh nhỏ hơn hoặc bằng. <> Thực hiện phép so sánh khác. != Thực hiện phép so sánh khác. !> Thực hiện phép so sánh không lớn hơn. !< Thực hiện phép so sánh không nhỏ hơn.
  • 15. 1515 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Toán tử luận lý • Sử dụng các toán tử thông th ng AND, OR, NOT vẫn dùng trong các câu SQL SELECT * FROM VATTU WHERE (DVTINH='Bộ' AND PHANTRAM>10) OR (DVTINH='Cái' AND PHANTRAM>20)
  • 16. 1616 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cấu trúc điều khiển
  • 17. 1717 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cấu trúc rẽ nhánh IF...ELSE IF Biểu_thức_luận_lý Câu_lệnh1 | Khối_lệnh1 [ ELSE Câu_lệnh2 | Khối_lệnh2 ]
  • 18. 1818 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ví Dụ : IF (SELECT COUNT(*) FROM CTPXUAT WHERE SLXUAT>4) > 0 BEGIN PRINT 'Danh sách các hàng hóa bán với số lượng > 4' SELECT CTPX.MAVTU, TENVTU, SLXUAT FROM CTPXUAT CTPX INNER JOIN VATTU VT ON VT.MAVTU=CTPX.MAVTU WHERE SLXUAT>4 END ELSE PRINT 'Chưa bán hàng hóa nào với số lượng >4'
  • 19. 1919 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cú pháp If Exists IF EXISTS (SELECT * FROM CTPXUAT WHERE SLXUAT>4) BEGIN PRINT 'Danh sách các hàng hóa bán với số lượng > 4' SELECT CTPX.MAVTU, TENVTU, SLXUAT FROM CTPXUAT CTPX INNER JOIN VATTU VT ON VT.MAVTU=CTPX.MAVTU WHERE SLXUAT>4 END ELSE PRINT 'Chưa bán hàng hóa nào với số lượng >4' IF EXISTS (Câu_lệnh_SELECT) Câu_lệnh1 | Khối_lệnh1 [ ELSE Câu_lệnh2 | Khối_lệnh2 ]
  • 20. 2020 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cấu trúc lặp WHILE DECLARE @Songuyen INT SET @Songuyen=100 WHILE (@Songuyen<110) BEGIN PRINT 'Số nguyên : ' + CONVERT(CHAR(3), @Songuyen) SET @Songuyen = @Songuyen + 1 END WHILE Biểu_thức_luận_lý BEGIN Các_lệnh_lặp END
  • 21. 2121 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Sử dụng biến kiểu d liệu cursor
  • 22. 2222 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Khái niệm về cursor • Các lệnh của SQL Server làm việc trên một nhóm nhiều mẩu tin • Cursor là cấu trúc giúp làm việc v i từng mẩu tin t i một th i điểm  Khai báo cursor như một câu lệnh SELECT  Có thể di chuyển giữa các mẩu tin trong cursor để làm việc  Có thể dùng cursor để cập nhật dữ liệu (Update, Delete)
  • 23. 2323 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các b c sử dụng kiểu d liệu cursor • Định nghĩa biến kiểu cursor bằng lệnh DECLARE  Có hai loại cursor: Local, Global  Cách di chuyển mẩu tin trong cursor: Forward only, scroll  Cách quản lý dữ liệu của cursor: static, dynamic, keyset • Sử dụng lệnh OPEN để mở ra cursor đã định nghĩa trước đó • Đọc và xử lý trên từng dòng dữ liệu bên trong cursor  Sử dụng biến @@Fetch_status  Các lệnh Fetch và cấu trúc while • Đóng cursor lại bằng lệnh CLOSE và DEALLOCATE  Sau khi close, có thể mở lại  Deallocate: hủy cursor khỏi bộ nhớ
  • 24. 2424 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cú pháp Declare DECLARE Tên_cursor CURSOR [LOCAL | GLOBAL] [FORWARD_ONLY | SCROLL] [STATIC | DYNAMIC | KEYSET] [READ_ONLY | SCROLL_LOCK] FOR Câu_lệnh_SELECT [FOR UPDATE [OF Danh_sách_cột_cập_nhật]] DECLARE cur_Vattu CURSOR DYNAMIC FOR SELECT * FROM VATTU
  • 25. 2525 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cú pháp Open OPEN Tên_cursor DECLARE cur_Vattu CURSOR DYNAMIC FOR SELECT * FROM VATTU OPEN cur_Vattu
  • 26. 2626 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Cú pháp FETCH FETCH [NEXT | PRIOR | FIRST | LAST | ABSOLUTE n | RELATIVE n] FROM Tên_cursor [INTO Danh_sách_biến]  Absolute n: Đọc dòng thứ n trong cursor  Relative n: Đọc dòng thứ n kể từ vị trí hiện hành
  • 27. 2727 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ví dụ hoàn chỉnh --1. Khai báo biến cursor DECLARE cur_Vattu CURSOR KEYSET FOR SELECT * FROM VATTU WHERE MAVTU LIKE 'TV%' ORDER BY MAVTU --2. Mở cursor OPEN cur_Vattu --3. Đọc dữ liệu FETCH NEXT FROM cur_Vattu WHILE @@FETCH_STATUS = 0 BEGIN -- Xử lý dòng mới vừa đọc được -- Thực hiện đọc tiếp các dòng kế FETCH NEXT FROM cur_Vattu END --4. Đóng cursor CLOSE cur_Vattu DEALLOCATE cur_Vattu
  • 28. 2828 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm th ng dùng
  • 29. 2929 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm chuyển đổi kiểu d liệu Một hàm của SQL Server có thể sử dụng ở bất cứ đâu thay cho một giá trị cụ thể • Đổi một số thành chuỗi  STR (Số_thực, Số_ký_tự [, Số_lẻ]) • Đổi kiểu dữ liệu  CAST (Biểu_thức AS Kiểu_dữ_liệu) • Đổi kiểu dữ liệu và định dạng  CONVERT (Kiểu_dữ_liệu, Biểu_thức [, Định_dạng])
  • 30. 3030 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Một số đ nh d ng chuỗi ngày thông dụng yy yyyy Chuỗi kết quả - 0 hoặc 100 mon dd yyyy hh:miAM (or PM) 1 101 mm/dd/yyyy 2 102 yy.mm.dd 3 103 dd/mm/yy 5 105 dd-mm-yy 6 106 dd mon yy 8 108 hh:mm:ss 9 109 mon dd yyyy hh:mi:ss:mmmAM (or PM) 10 110 mm-dd-yy 11 111 yy/mm/dd 12 112 yymmdd … Print convert(nvarchar(50), getdate(), 5) 23-05-09 Print convert(nvarchar(50), getdate(), 105) 23-05-2009
  • 31. 3131 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm ngày gi • Cộng ngày  DATEADD (Đơn_vị, Con_số, Ngày_chỉ_định) • So sánh hai biến ngày  DATEDIFF (Đơn_vị, Ngày1, Ngày2) • Lấy tên ngày, tháng, năm  DATENAME (Đơn_vị, Ngày) • Thời điểm hiện hành  GETDATE() • Lấy một thành phần ngày, giờ trong biến ngày  DATEPART (Đơn_vị, Ngày) • Lấy ngày, tháng, năm của biến ngày  DAY (Ngày)  MONTH (Ngày)  YEAR (Ngày)
  • 32. 3232 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Đơn_v (Thành phần của ngày) Ch viết tắt year yy, yyyy quarter qq, q month mm, m dayofyear dy, y day dd, d week wk, ww weekday dw hour hh minute mi, n second ss, s millisecond ms
  • 33. 3333 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm toán h c • Lấy trị tuyệt đối  ABS (Biểu_thức_số) • Hằng số Pi  PI() • Luỹ thừa  POWER (Biểu_thức_số, Số_mũ) • Lấy số ngẫu nhiên  RAND ([Số_nguồn]) • Làm tròn số  ROUND (Biểu_thức_số, Vtrí_làm_tròn) • Dấu của kết quả biểu thức : SIGN (Biểu_thức_số) • Lấy căn bậc 2 : SQRT (Biểu_thức_số)
  • 34. 3434 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Các hàm xử lý chuỗi • Hàm viết hoa, th ng  UPPER (Chuỗi), LOWER (Chuỗi) • Hàm cắt chuỗi  LEFT (Chuỗi nguồn, Số_ktự), RIGHT (Chuỗi nguồn, Số_ktự)  SUBSTRING (Chuỗi nguồn,Vị_trí,Số_ktự) • Hàm cắt khoảng trắng, t o chuỗi khoảng trắng  LTRIM (Chuỗi), RTRIM (Chuỗi), SPACE (N) • Hàm t o chuỗi lặp  REPLICATE (Chuỗi_lặp, N) • Chiều dài chuỗi  LEN (Chuỗi) • Đảo chuỗi  REVERSE (Chuỗi) • Tìm và thay thế chuỗi  REPLACE (Chuỗi nguồn, Chuỗi_tìm, Chuỗi_thay_thế) • Đổi từ số thành ký t và ng ợc l i  CHAR (Số) , ASCII(Ký_tự)
  • 35. 3535 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Xử lý lỗi
  • 36. 3636 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Khối lệnh TRY…CATCH • Ý nghĩa : Thực hiện các lệnh trong khối TRY, nếu gặp lỗi sẽ chuyển qua xử lý bằng các lệnh trong khối CATCH • Cú pháp : BEGIN TRY { các câu lệnh } END TRY BEGIN CATCH { các câu lệnh} END CATCH • Các điểm cần lưu ý : • TRY và CATCH phải cùng lô xử lý • Sau khối TRY phải là khối CATCH • Có thể lồng nhiều cấp
  • 37. 3737 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Khối lệnh TRY…CATCH Ví dụ : BEGIN TRY SELECT * FROM BangKhongTonTai; END TRY BEGIN CATCH SELECT ERROR_NUMBER() as ErrorNumber, ERROR_MESSAGE() as ErrorMessage; END CATCH
  • 38. 3838 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Một số hàm ERROR th ng dùng ERROR_NUMBER() : Trả về mã số của lỗi ERROR_MESSAGE() Trả về chuỗi lỗi ERROR_SEVERITY() returns the error severity. ERROR_STATE() returns the error state number. ERROR_LINE() : Trả về dòng gây ra lỗi ERROR_PROCEDURE() Trả về tên thủ tục/ trigger gây ra lỗi
  • 39. 3939 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Thủ tục RAISERROR • Ý nghĩa : Trả thông báo lỗi về cho ứng dụng • Cú pháp : • Raiserror(tbao_loi, muc_do, trang_thai [, cac_tham_so] ) Trong đó: tbao_loi : - mã thông báo lỗi do người dùng định nghĩa trước bằng sp_addmessage và được lưu trong sys.messages. Giá trị phải lớn hơn 50000. - chuỗi thông báo lỗi bất kỳ. muc_do : Số có giá trị từ 025 thể hiện mức độ nghiêm trọng của lỗi. trang_thai : Số từ 1-127 để xác định vị trí lỗi khi sử dụng cùng một tbao_loi tại nhiều điểm khác nhau cac_tham_so : Hỗ trợ cho các tbao_loi cần tham số
  • 40. 4040 TR NG Đ I H C KHOA H C T NHIÊN TP.HCM TRUNG TÂM TIN H C Ví dụ sử dụng RAISERROR … IF @nPhanTram NOT BETWEEN 0 AND 100 BEGIN SET @sErrMsg = N‘Tỉ lệ phầm trăm phải nằm trong đoạn [0,100]’ RAISERROR(@sErrMsg, 16, 1) RETURN END … Msg 50000, Level 16, State 1, Line 6 Tỉ lệ phầm trăm phải nằm trong đoạn [0,100]