![](images/graphics/blank.gif)
Bài giảng Hệ quản trị cơ sở dữ liệu MSSQL 2005: Chương 4 - Hồ Thị Anh Đào
lượt xem 2
download
![](https://tailieu.vn/static/b2013az/templates/version1/default/images/down16x21.png)
Cùng nắm kiến thức trong chương này thông qua việc tìm hiểu các nội dung sau: Khai báo và sử dụng biến, cấu trúc lệnh, con trỏ, Stored procedure, một số hàm cơ bản,....Mời các bạn cùng tham khảo!
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Hệ quản trị cơ sở dữ liệu MSSQL 2005: Chương 4 - Hồ Thị Anh Đào
- KHOA CÔNG NGHỆ THÔNG TIN Chương 4 TSQL PROGRAMING LOGO
- I. KHAI BÁO VÀ SỬ DỤNG BIẾN Có 2 loại biến: Cục bộ và toàn cục 1. Biến cục bộ: Định nghĩa: là biến chỉ sử dụng trong đoạn chương trình khai báo nó như Query Batch, stored procedure/ function , chứa giá trị thuộc một kiểu nhất định. Biến cục bộ được bắt đầu bằng 1 ký hiệu @ Khai báo: Declare , … Ví dụ: Declare @MaSinhVien char(10) Declare @Gioitinh bit, @Ngaysinh SmallDateTime
- Gán giá trị cho biến Cú pháp Set @tên_biến = {giá_trị | biến | biểu_thức | Cấu trúc Select } Ví dụ Set @MaLop = ‘TH2001’ Set @SoSV = (select count (*) from SinhVien) Set @MaLop = ‘TH’+Year(@NgayTuyenSinh) Chú ý: Kết quả lệnh Select chỉ cho một giá trị (không thể nhiều bộ giá trị)
- Gán giá trị của cột tại dòng hiện tại hoặc dòng chỉ định trong Table cho biến. Cú pháp: Select =, =, … [Where ] Nếu kết quả của Select cho nhiều dòng thì sẽ gán giá trị của dòng có STT vật lý đầu tiên cho biến. Hiển thị kết quả của biến: Print Ví dụ: Hiển thị dòng ‘Xin chào’ họ tên của sinh viên đầu tiên trong bảng SINHVIEN Declare @ht nVarchar(30) Select @ht=HotenFrom SINHVIEN Print 'Xin chào'+ @ht
- 2. Biến toàn cục: Định nghĩa: là biến được sử dụng bất kỳ đâu trong hệ thống. Trong SQL biến toàn cục Là các biến hệ thống do SQL Server cung cấp SQL tự cập nhật giá trị cho các biến này, Người sử dụng không thể gán giá trị trực tiếp cho biến này Bản chất là 1 hàm (function) và bắt đầu bằng ký tự @@
- Một số biến toàn cục trong SQL Tên biến Ý nghĩa @@ERROR Mã số lỗi của câu lệnh TSQL cuối cùng bị lỗi @@FETCH_STATUS Trạng thái truy nhập con trỏ: 0 nếu trạng thái truy nhật cuối cùng thành công 1 nếu có lỗi @@IDENTITY Giá trị xác định (identity) cuối cùng được thêm vào @@ROWCOUNT Số lượng dòng của kết quả câu lệnh SQL gần đây nhất. @@SERVERNAME Tên của Server địa phương @@TRANSCOUNT Số lượng những giao dịch đang được mở @@VERSION Thông tin về phiên bản SQL Server đang dùng @@CURSOR_ROWS Số lượng các dòng dữ liệu của con trỏ mới được mở gần đây nhất
- II. CẤU TRÚC LỆNH 1. Cấu trúc IF… Cú pháp: If Lệnh| Khối_lệnh [Else Lệnh| Khối_lệnh] Khối lệnh là một hoặc nhiều lệnh nằm trong cặp từ khóa begin… end Giải thích cấu trúc
- Ví dụ: Viết lệnh để thêm dữ liệu mới (001,Hồ Thị ,Lan, CT11) vào bảng SINHVIEN. Qui định rằng mỗi lớp chỉ được tối đa 50 sinh viên. Declare @SiSo int Select @SiSo = Count(MaSV) From SINHVIEN Where MaLop= ‘CT11’ If @SiSo
- 2. Cấu trúc Case Cú pháp: Có hai dạng –Dạng 1 (simple case): Dạng 2: (searched case): Case Biểu_thức Case When Giá_trị 1 Then kết_quả 1 When then kết_quả 1 [When Giá_trị 2 Then Kết_quả 2 When then kết_quả 2 [...n] [...n] [ Else kết_quả_khác] [ Else kết_quả_khác] End End
- 2. Cấu trúc WHILE Cú pháp While Lệnh| Khối lệnh [Break] [Continue] Có thể thêm Break và Continue trong khối lệnh của while Break: thoát khỏi vòng While hiện hành Continue : trở lại đầu vòng While, bỏ qua các lệnh sau đó Giải thích:
- Ví dụ: Viết đoạn chương trình tách tên của sinh viên có mã ‘0001’ trong bảng SINHVIEN Declare @ht varchar(30),@ten varchar(10), @L int, @i int,@j int,@kt varchar(10) set @ht=(select hoten from SINHVIEN Where MaSV='0001') Set @L=LEN(@ht) Set @i=1 While @i
- III CURSOR (CON TRỎ) 1. Khái niệm: Là một cấu trúc dữ liệu ánh xạ đến một tập các dòng dữ liệu là kết quả của một câu truy vấn (select), cho phép duyệt tuần tự các dòng dữ liệu và đọc giá trị từng dòng trong tập kết quả Sử dụng con trỏ có thể đến vị trí một dòng nhất định trong tập kết quả. Truy cập đến 1 dòng hoặc 1 tập hợp những dòng từ vị trí hiện tại của con trỏ trong tập kết quả. Hỗ trợ sửa chữa dữ liệu ở 1 dòng nào đó. Ví dụ: Chúng ta có một danh sách sinh viên (Select), trong lập trình ta muốn có một con trỏ đến vị trí từng dòng để có những truy cập cần thiết.
- 1. Tạo con trỏ Câu lệnh DECLARE để khai báo con trỏ. Nó chứa đựng câu lệnh Select để đưa ra tập những bản ghi từ bảng. Declare Cursor_name Cursor [ Local | Global ] [ Forward_only| Scroll] [ Static| Dynamic] [ Read_only] For select_statement Những tham số gạch chân là mặc định
- Giải thích Local: cursor cục bộ, chỉ có thể sử dụng trong phạm vi một khối (query batch) hoặc một thủ tục/ hàm Global: cursor toàn cục (tồn tại trong suốt connection hoặc đến khi bị hủy tường minh) Forward_only: cursor chỉ có thể duyệt một chiều từ đầu đến cuối Scroll: có thể duyệt lên xuống cursor tùy ý Static: nội dung của cursor không thay đổi trong suốt thời gian tồn tại, trong trường hợp này cursor chỉ là read only Dynamic: trong thời gian tồn tại, nội dung của cursor có thể thay đổi nếu dữ liệu trong các bảng liên quan có thay đổi. Read only: chỉ có thể đọc từ cursor, không thể sử dụng cursor để update dữ liệu trong các bảng liên quan (ngược lại với “for update…” )
- 2. Duyệt tuần tự mẫu tin trong kết quả Cú pháp lệnh Fetch [ [Next| Prior| First| Last| Absolute n| Relative n] From Tên_cursor [Into Tên_biến [,…n] ] FETCH FIRST: Truy cập đến dòng đầu tiên. FETCH NEXT: Truy cập đến dòng tiếp theo. Mặc định FETCH PRIOR: Truy cập đến dòng trước dòng hiện tại của con trỏ. FETCH LAST: Truy cập đến dòng cuối cùng. FETCH ABSOLUTE n: Nếu n là số nguyên dương, nó truy cập đến dòng thứ n. Nếu n là số nguyên âm, nó truy cập đến dòng thứ n trước dòng cuối cùng của con trỏ. Nếu n=0 nó truy cập tới chính dòng hiện tại. FETCH RELATIVE n: Nếu n là số dương, truy cập đến dòng thứ n sau dòng hiện tại của con trỏ. Nếu n là số âm, truy cập đến dòng thứ n, truy cập đến dòng thứ n trước vị trí hiện tại của con trỏ. Nếu bằng 0, truy nhập đến dòng hiện tại một lần nữa.
- Biến hệ thống @@fetch_status: Cho biết lệnh fetch vừa thực hiện có thành công hay không. Là cơ sở để biết đã duyệt đến cuối cursor hay chưa Nếu @@fetch_status =0 thì thành công con trỏ đang ở vị trí mẫu thỏa mãn điều kiện Nếu @@fetch_status 0 thì KHÔNG thành công con trỏ đang ở vị trí vượt qua mẫu tin cuối cùng của bảng kết quả
- Ví du: Cập nhật lại giá trị MaSV = MaLop + MaSV hiện tại cho tất cả sinh viên Declare cur_Masv cursor For Select MaSV, Malop From SINHVIEN Open cur_Masv declare @Masv varchar(5), @Malop varchar(5) Fetch Next From cur_Masv into @MaSV,@Malop While @@fetch_status = 0 Begin Update SINHVIEN Set MaSV = @Malop+@MaSV Where MaSV = @MaSV Fetch Next From cur_Masv into @MaSV,@Malop End Close cur_Masv Deallocate cur_Masv
- Ví dụ: Cập nhật lại Masv thứ n là aaa Declare cur_DSSV cursor scroll For select MaSV From SINHVIEN Open cur_DSSV Declare @masv varchar(10) Fetch Absolute 5 From cur_DSSV into @Masv If (@@fetch_status = 0) update SINHVIEN set masv ='aaa' where current of cur_DSSV Deallocate cur_DSSV
- Tóm lại các bước sử dụng biến con trỏ trong lập trình B1. Định nghĩa Cursor từ một kết quả Select Declare Cursor_name Cursor For select_statement B2. Mở Cursor: OPEN , con trỏ ở vị trị dòng 0 B3. Truy cập đến các bản ghi FETCH NEXT| Absolute 5 FROM INTO B4. Kểm tra có thành công không: Nếu @fetch_status = 0 thì xử lý lệnh, quay lại B3 Nếu @fetch_status 0 thì sang B5 B5. Đóng Cursor: CLOSE B6. Xoá tham chiếu của Cursor: DEALLOCATE
- Bài tập 1. Thêm cột SBD trong bảng SV: Hãy điền SBD cho các sinh viên theo từng lớp 2. Thêm cột Docdiem trong bảng DIEMTBC, Viết đoạn chương trình cập nhật cho cột Docdiem để đọc điểm TBC ra thành chữ tương ứng. 3. Viết đoạn chương trình phân lớp ‘CT11’ ra thành 2 lớp CT11A, CT11B có số lượng nam nữ như nhau.
![](images/graphics/blank.gif)
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Hệ quản trị cơ sở dữ liệu Oracle: Chương 1 - Ngô Thùy Linh
31 p |
188 |
26
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Tổng quan hệ quản trị CSDL SQL Server - TS. Lại Hiền Phương
50 p |
118 |
14
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 1 - ĐH Công nghiệp Thực phẩm
31 p |
111 |
11
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Giới thiệu - Phạm Thọ Hoàn
14 p |
162 |
9
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 0: Giới thiệu
2 p |
31 |
7
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 1.1: Tổng quan về Hệ quản trị cơ sở dữ liệu
5 p |
23 |
6
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 1 - Nguyễn Thị Uyên Nhi
33 p |
100 |
6
-
Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 2: Mô hình cơ sở dữ liệu quan hệ
8 p |
53 |
5
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 2 - Phạm Nguyên Thảo
39 p |
92 |
5
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 1 - Nguyễn Trường Sơn
29 p |
54 |
5
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 6 - Nguyễn Thị Mỹ Dung
33 p |
61 |
4
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Các tác vụ quản trị hệ thống - TS. Lại Hiền Phương (Phần 1)
32 p |
55 |
4
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Các tác vụ quản trị hệ thống - TS. Lại Hiền Phương (Phần 3)
61 p |
68 |
4
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 2 - Lê Thị Minh Nguyện
11 p |
76 |
4
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 1 - Lê Thị Minh Nguyện
14 p |
78 |
4
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 6 - Phạm Nguyên Thảo
44 p |
56 |
3
-
Bài giảng Hệ quản trị cơ sở dữ liệu MSSQL 2005: Chương 7 - Hồ Thị Anh Đào
24 p |
68 |
2
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 8 - Lê Thị Minh Nguyện
5 p |
76 |
1
![](images/icons/closefanbox.gif)
![](images/icons/closefanbox.gif)
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn
![](https://tailieu.vn/static/b2013az/templates/version1/default/js/fancybox2/source/ajax_loader.gif)