Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 7: Các biến, toán tử, và các cấu trúc điều khiển
lượt xem 4
download
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 7: Các biến, toán tử, và các cấu trúc điều khiển. Nội dung chính trong bài giảng này gồm có: Biến cục bộ, biến hệ thống, các toán tử, biểu thức case, các cấu trúc điều khiển, sử dụng biến kiểu dữ liệu cursor. 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 (Database Management Systems) - Bài 7: Các biến, toán tử, và các cấu trúc điều khiển
- Bài 7: Các biến, toán tử, và các cấu Biến cục bộ trúc điều khiển Lưu trữ các giá trị tạm thời trong quá trình tính toán Phải được khai báo trước khi sử dụng Nội dung: Khai báo biến cục bộ Biến cục bộ Cú pháp: Biến hệ thống Declare @ Tên_biến Kiểu_dữ_liệu Các toán tử Ví dụ 1: Declare @TongSlDat int, @MaxSlDat int, Biểu thức Case @HotenNhaCC char(50), @Ngayxh datetime Các cấu trúc điều khiển Sử dụng biến kiểu dữ liệu Cursor 2/8/2018 Microsoft SQL Server 2005 1 2/8/2018 Microsoft SQL Server 2005 2 Biến cục bộ Biến cục bộ Lưu ý: Gán giá trị cụ thể cho biến bằng phát biểu Set - Tên biến là duy nhất trong phạm vi hoạt động của Cú pháp: nó Set @ Tên_biến = Giá_trị - Kiểu dữ liệu: là các kiểu dữ liệu sẵn có, ngoại trừ Ví dụ 2: các kiểu text, ntext, image Set @Ngayxh = '09-27-2008' - Giá trị mặc định khởi tạo của tất cả các biến sau khi Set @HotenNhaCC='Nguyễn Văn Nam' khai báo là Null 2/8/2018 Microsoft SQL Server 2005 3 2/8/2018 Microsoft SQL Server 2005 4 1
- Biến cục bộ Biến cục bộ Xem giá trị hiện hành của biến: Gán các biểu thức tính toán hoặc các giá trị được lấy Cú pháp: ra các cột trong các bảng dữ liệu: Print @Tên_biến/Biểu_thức_chuỗi Cú pháp: Ví dụ 4: Print 'Tong so luong dat la:' Select @Tên_biến = Tên_cột/Biểu_thức(tên_cột) Print @TongSlDat From Tên_bảng * Lưu ý: Ví dụ 3: - Độ dài tối đa của chuỗi: 8000 ký tự - Kết hợp 2 hàm chuyển đổi dữ liệu của biến sang kiểu chuỗi Select @TongSlDat = sum(SlDat) From CTDONDH (hàm Cast và hàm Convert) để trình bày kết quả Lưu ý: Câu lệnh trên cũng có thể sửa thành: Ví dụ 5: Set @TongSlDat = Print 'Tong so luong dat la: ' + cast(@TongSlDat as char(10)) Print 'Tong so luong dat la: ' + convert(char(10),@TongSlDat) (select sum(SlDat) From CTDONDH) 2/8/2018 Microsoft SQL Server 2005 5 2/8/2018 Microsoft SQL Server 2005 6 Biến cục bộ Biến cục bộ Phạm vi hoạt động của biến: chỉ hoạt động trong một Ví dụ 7: Tương tự ví dụ trước, song đặt lệnh in kết quả thủ tục nội tại hoặc một lô mà nó được khai báo trong một lô khác không chứa lệnh khai báo biến lỗi - Thủ tục nội tại - Lô (batch): tập các lệnh được kết thúc bởi từ khóa Go Ví dụ 6: Declare @Ngayxhgn datetime Select @Ngayxhgn = max(Ngayxuat) from PXUAT Print 'Ngay xuat hang gan nhat la: '+ Cast(@Ngayxhgn as char(20)) Go Hệ thống thông báo lỗi Kết quả chưa khai báo biến 2/8/2018 Microsoft SQL Server 2005 7 2/8/2018 Microsoft SQL Server 2005 8 2
- Biến cục bộ Biến cục bộ Biến kiểu bảng dữ liệu: Phạm vi hoạt động của biến (tiếp): Lưu ý * Cú pháp khai báo biến kiểu bảng: - Khi một lô có chứa một câu lệnh bị lỗi: Declare @Tên_biến_kiểu_bảng table + Nếu lỗi đó là lỗi cú pháp tất cả các câu lệnh trong lô đó (Tên_cột Kiểu_dữ_liệu [Not Null], không được thực hiện … + Nếu đó là lỗi về ràng buộc toàn vẹn dữ liệu chỉ riêng ) lệnh có lỗi không được thực hiện, các lệnh khác được Ví dụ 8: thực hiện bình thường Declare @CTPNHAP_Thang table - Các câu lệnh Create như: Create default, create rule, (SoPn char(4)not null, create trigger, create view, create procedure không được MaVTu char(4)not null, phép kết hợp với các lệnh khác trong cùng một lô SlNhap int, DgNhap money) 2/8/2018 Microsoft SQL Server 2005 9 2/8/2018 Microsoft SQL Server 2005 10 Biến cục bộ Biến hệ thống Biến kiểu bảng dữ liệu (tiếp): * Chèn bản ghi cụ thể vào biến kiểu bảng: sử dụng cú pháp Là một hàm được Microsoft SQL Server xây dựng sẵn, Insert Into Values người dùng có thể tra cứu các giá trị hiện thời của nó nhưng Ví dụ 9: không thể can thiệp trực tiếp để gán lại giá trị Insert Into @CTPNHAP_Thang values ('N001','VD02',10,2000000) Tên biến luôn bắt đầu bằng @@ * Chèn dữ liệu lấy từ một bảng cùng kiểu vào biến bảng: sử Ví dụ 12: Xem thông tin phiên bản hệ quản trị dụng cú pháp Insert Into kết hợp với câu lệnh Select Print @@version Ví dụ 10: Insert into @CTPNHAP_Thang Select * from CTPNHAP where SoPn = 'N001' * Lựa chọn hiển thị dữ liệu có trong biến bảng: sử dụng cú pháp Select Ví dụ 11: Select *from @CTPNHAP_Thang 2/8/2018 Microsoft SQL Server 2005 11 2/8/2018 Microsoft SQL Server 2005 12 3
- Biến hệ thống Biến hệ thống Các biến hệ thống thường dùng: Các biến hệ thống thường dùng (tiếp): Tên biến Kiểu dữ liệu Giá trị Tên biến Kiểu dữ liệu Giá trị Tổng số các kết nối vào Microsoft Tên ngôn ngữ mà hệ thống Connections Số nguyên SQL Server từ khi nó được khởi Language Chuỗi Microsoft SQL Server đang sử động dụng. Mặc định là US_English Mã lỗi của lệnh thực hiện gần nhất Tổng số mẫu tin được tác động Error Số nguyên Rowcount Số nguyên trong câu lệnh truy vấn gần nhất (=0 nếu thực hiện thành công) Trạng thái của việc đọc dữ liệu trong Tên của máy tính cục bộ được cài ServerName Chuỗi đặt Microsoft SQL Server Fetch_Status Số nguyên bảng theo cơ chế từng mẫu tin (cursor) (=0 nếu đọc thành công) ServiceName Chuỗi Tên dịch vụ Số dòng hiện thời khi đọc dữ liệu Thông tin về phiên bản và máy chủ Cursor_rows Số nguyên theo cơ chế từng mẫu tin Version Chuỗi cài hệ quản trị 2/8/2018 Microsoft SQL Server 2005 13 2/8/2018 Microsoft SQL Server 2005 14 Các toán tử Các toán tử Toán tử số học: Áp dụng cho các kiểu dữ liệu số: int, smallint, tinyint, Toán tử nối chuỗi decimal, numeric, float, real, money, smallmoney - Ghép nối các chuỗi lại thành 1 chuỗi Các toán tử: - Ký hiệu: + Ví dụ 13: Ký hiệu Ý nghĩa Select 'Hi' +' every body!' + Thực hiện phép cộng 2 số Select 'Ngày đặt hàng là: ' + convert(char(10),Ngaydh) - Thực hiện phép trừ 2 số From DONDH * Thực hiện phép nhân 2 số Where SoDh='D003' / Thực hiện phép chia 2 số % Thực hiện phép chia lấy phần dư 2/8/2018 Microsoft SQL Server 2005 15 2/8/2018 Microsoft SQL Server 2005 16 4
- Các toán tử Các toán tử Toán tử so sánh: Toán tử logic: 3 toán tử - Not - Áp dụng cho các kiểu dữ liệu số, chuỗi, ngày - And - Các toán tử: =, , !=(khác), !>(không - Or lớn hơn), !=20)) 2/8/2018 Microsoft SQL Server 2005 17 2/8/2018 Microsoft SQL Server 2005 18 Biểu thức Case Biểu thức Case Cú pháp Case dạng đơn giản: Giải ví dụ 16: Case Biểu_thức Select Loai=case left(MaVTu,2) When Giá_trị_1 then Biểu_thức_kết_quả_1 when 'DD' then 'Đầu DVD' [When Giá_trị_2 then Biểu_thức_kết_quả_2 when 'VD' then 'Đầu VCD' ... ] when 'TV' then 'Tivi' [Else Biểu_thức_kết_quả_N+1] End when 'TL' then 'Tủ lạnh' Ví dụ 16: when 'BI' then 'Bia lon' Hiển thị danh sách các vật tư có trong bảng vật tư when 'L0' then 'Loa thùng' theo từng loại hàng else 'Chưa phân loại' End, MaVTu,TenVTu,DvTinh From VATTU order by(left(MaVTu,2)) Compute count(MaVTu) by (Left(MaVTu,2)) 2/8/2018 Microsoft SQL Server 2005 19 2/8/2018 Microsoft SQL Server 2005 20 5
- Biểu thức Case (tiếp) Biểu thức Case (tiếp) Cú pháp Case dạng tìm kiếm Giải ví dụ 17: Case Select TenVTu,DvTinh,PhanTram, When BT_logic_1 then Biểu_thức_kết_quả_1 [When BT_logic_2 then Biểu_thức_kết_quả_2 Ghichu=case ... ] when Phantram40 then 'Rất lời' Ví dụ 17: Hiển thị danh sách các vật tư có trong bảng vật tư, End thông tin bổ sung thêm chuỗi Ghi chú tùy thuộc vào phần trăm giá bán: From VATTU order by PhanTram PhanTram
- Cấu trúc điều khiển Cấu trúc điều khiển Kiểm tra sự tồn tại của các dòng dữ liệu trong bảng: Ví dụ 20: Kiểm tra xem có vật tư nào đã được xuất với số Sử dụng If kết hợp với từ khóa exists: lượng >4 không, đưa ra các thông báo tương ứng trong If Exists(Câu_lệnh Select) từng trường hợp. Câu_lệnh1/Khối_lệnh1 If exists(Select * From CTPXUAT where SlXuat>4) Else Câu_lệnh2/Khối_lệnh2 Begin Print 'Danh sách các vật tư đã xuất với số lượng > 4' Select CTPX.MaVTu,TenVTu,SlXuat From CTPXUAT CTPX inner join VATTU VT on CTPX.MaVTu=VT.MaVTu where SlXuat>4 End Else Print 'Chưa bán hàng nào với số lượng >4' 2/8/2018 Microsoft SQL Server 2005 25 2/8/2018 Microsoft SQL Server 2005 26 Cấu trúc điều khiển Cấu trúc điều khiển Cấu trúc lặp While * Kết hợp Break (kết thúc câu lệnh lặp) và Continue (quay về đầu Cú pháp: câu lệnh lặp) trong cấu trúc lặp While While Biểu_thức_logic Sơ đồ hoạt động: Begin While Biểu_thức_logic Các_lệnh Begin End Nhóm_lệnh_lặp1 Ví dụ 21: Câu lệnh in ra 10 số nguyên dương từ 1 đến 10 [If Biểu_thức_lặp_tiếp Declare @a int set @a=1 Continue] Print'Các số nguyên từ 1 đến 10:' While @a
- Cấu trúc điều khiển Thoát khỏi lô với Return Ví dụ 22: Ví dụ 23: Declare @a int Declare @a int Set @a=0 Set @a=0 While @a
- Cấu trúc Waitfor Từ khóa Goto Waitfor chặn thực thi lệnh đến một thời điểm xác định Cho phép điều khiển chuyển đến vị trí của nhãn: Ví dụ 26 Waitfor Time Thời_điểm Declare @a int Set @a=0 Ví dụ 25: Khai báo Lap: Chặn việc thực thi lệnh cho đến thời điểm 10h10: nhãn If @a
- Kiểu dữ liệu Cursor Kiểu dữ liệu Cursor Trong đó: Ví dụ 27: - Tên_Cursor: Tên biến kiểu Cursor - Local/Global: Chỉ định phạm vi hoạt động của biến Declare cur_Vattu Cursor Cursor(cục bộ/toàn cục) Dynamic - Forward_Only/Scroll: Chỉ định hướng đọc dữ liệu (chỉ For Select * from VATTU theo chiều tiến/cả tiến-lui) - Static/Dynamic/Keyset: Dạng dữ liệu mà con trỏ tham chiếu Ví dụ 28: - Read_Only/Scroll_Lock: Chỉ định thao tác với dữ liệu Declare cur_Nhacc Cursor - Câu_lệnh_Select: Xác định dữ liệu mà con trỏ tham chiếu Forward_Only (không chứa Into, compute [by]) Static Danh_sách_cột_cập_nhật: Các cột được phép thay đổi giá For Select * from NHACC trị trong Cursor (lưu ý mặc định cập nhật) 2/8/2018 Microsoft SQL Server 2005 37 2/8/2018 Microsoft SQL Server 2005 38 Kiểu dữ liệu Cursor Kiểu dữ liệu Cursor Mở cursor: Đọc và xử lý dữ liệu trong Cursor: Cú pháp: Open Tên_cursor Đọc dữ liệu: Ví dụ 29: Open Cur_Vattu Fetch [Next/Prior/First/Last/Absolute n/Relative n] From Tên_cursor Open Cur_Nhacc [Into Danh_sách_biến] Trong đó: Next/Prior/First/Last: đọc dòng dữ liệu tiếp theo/trước đó/đầu tiên/cuối cùng Absolute n: đọc dòng thứ n trong cursor Relative n: đọc dòng dữ liệu cách dòng hiện hành là n Danh_sách_biến: Dùng để lưu dữ liệu đọc được 2/8/2018 Microsoft SQL Server 2005 39 2/8/2018 Microsoft SQL Server 2005 40 10
- Kiểu dữ liệu Cursor Kiểu dữ liệu Cursor Lưu ý: Đóng Cursor: - Để kiểm tra việc đọc dữ liệu thành công/thất bại, Cú pháp: cần sử dụng biến hệ thống @@Fetch_status Close Tên_cursor - Để xác định dòng dữ liệu hiện thời mà biến kiểu Deallocate Tên_cursor cursor đang tham chiếu, sử dụng cú pháp: Trong đó: Current of tên_Cursor - Close: chỉ giải phóng các dòng dữ liệu tham chiếu Ví dụ 30: đọc dữ liệu từ cur_Vattu bên trong biến cursor Fetch next from cur_Vattu --Đọc dữ liệu - Deallocate: xóa biến cursor khỏi bộ nhớ While @@Fetch_status = 0 Ví dụ 31: Fetch next from cur_Vattu --Đọc các dòng kế tiếp Close cur_Vattu Close cur_Nhacc 2/8/2018 Microsoft SQL Server 2005 41 2/8/2018 Microsoft SQL Server 2005 42 Kiểu dữ liệu Cursor Kiểu dữ liệu Cursor Giải ví dụ 32: Ví dụ 32: Tạo cursor tham chiếu tới các bản ghi lưu Declare cur_Vattu cursor --Khai báo biến cursor dữ liệu vật tư thuộc loại Ti vi trong bảng VATTU, sau đó đọc từng dòng dữ liệu trong bảng tham chiếu For Select * From Vattu where MaVTu like 'TV%' order by MaVTu Open cur_Vattu --Mở cursor Fetch next from cur_Vattu --Đọc dữ liệu While @@Fetch_status=0 Fetch next from cur_Vattu --Đọc các dòng kế tiếp Close cur_Vattu --Đóng cursor Deallocate cur_Vattu 2/8/2018 Microsoft SQL Server 2005 43 2/8/2018 Microsoft SQL Server 2005 44 11
- Kiểu dữ liệu Cursor Kiểu dữ liệu Cursor Ví dụ 33: Viết đoạn chương trình cho phép thực Bài tập: Viết đoạn chương trình cho phép thực hiện hiện các thao tác sau: các thao tác sau: - Thêm cột TGNhap vào bảng PNHAP - Tạo bảng VATTU_Temp gồm 2 cột MaVTu, - Sử dụng biến kiểu cursor đọc từng dòng dữ liệu TenVTu với dữ liệu lấy từ bảng VATTU trong bảng PNHAP, khi đọc đến dòng nào, cập nhật - Xóa từng dòng dữ liệu trong bảng VATTU_Temp giá trị cho cột TGNhap ở dòng đó (với mỗi phiếu vừa tạo, khi xóa đến dòng nào thì hiển thị thông báo nhập, TGNhap được tính bằng tổng Số lượng nhập Tên vật tư và Mã vật tư ở dòng đang xóa ra màn * đơn giá nhập của các chi tiết phiếu nhập tương hình ứng) Giải ví dụ 33? 2/8/2018 Microsoft SQL Server 2005 45 2/8/2018 Microsoft SQL Server 2005 46 12
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Giới thiệu - Phạm Thọ Hoàn
14 p | 157 | 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 | 27 | 7
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 4: Các phát biểu T-SQL dạng lựa chọn dữ liệu
10 p | 19 | 7
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 3: Thiết kế truy vấn với T-SQL (Transact-SQL)
9 p | 13 | 6
-
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 | 19 | 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 | 47 | 5
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 9: Trigger
5 p | 14 | 5
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Giới thiệu môn học - TS. Lại Hiền Phương
8 p | 82 | 5
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 5: Các phát biểu T-SQL dạng Insert, Delete, Update
2 p | 19 | 5
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 2: Bảng ảo – Khung nhìn (Virtual table - View)
3 p | 15 | 5
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 6: Các hàm thường dùng
4 p | 19 | 5
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 8: Thủ tục nội tại
11 p | 14 | 5
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 1.2: Thiết kế Cơ sở dữ liệu với Management Studio
10 p | 8 | 4
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 2 - Lê Thị Minh Nguyện
11 p | 69 | 4
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 1 - Lê Thị Minh Nguyện
14 p | 72 | 4
-
Bài giảng Hệ quản trị cơ sở dữ liệu (Database Management Systems) - Bài 10: Hàm do người dùng định nghĩa (UDF – User Defined Function)
3 p | 10 | 4
-
Bài giảng Hệ quản trị cơ sở dữ liệu: Chương 8 - Lê Thị Minh Nguyện
5 p | 72 | 1
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