intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Hệ quản trị cơ sở dữ liệu MSSQL 2005: Chương 4 - Hồ Thị Anh Đào

Chia sẻ: Phong Phong | Ngày: | Loại File: PPT | Số trang:42

54
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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!

Chủ đề:
Lưu

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

  1. KHOA CÔNG NGHỆ THÔNG TIN Chương 4 T­SQL PROGRAMING LOGO
  2. 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 
  3.  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ị)
  4.  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 
  5. 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ự  @@
  6.  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 T­SQL 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
  7. 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
  8.  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 
  9.  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 
  10. 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:
  11. 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
  12. 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.
  13. 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
  14. 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…” ) 
  15. 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.
  16. 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ả
  17. 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 
  18. 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 
  19. 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 
  20. 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.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2