30
Lập trình với T-SQL

Lập trình với T-SQL

  • Upload
    levi

  • View
    94

  • Download
    4

Embed Size (px)

DESCRIPTION

Lập trình với T-SQL. Lập trình với T_SQL. Khai báo biến: DECLARE @Tên_Biến Kiểu_Dữ_Liệu Ví dụ: DECLARE @Tuoi int DECLARE @MSSV varchar(5) DECLARE @numCount int Tên biến: Bắt đầu bởi @ Kiểu dữ liệu của biến: Lấy kiểu dữ liệu hệ thống, trừ kiểu text, ntext, image. - PowerPoint PPT Presentation

Citation preview

Page 1: Lập trình  với T-SQL

Lập trình với T-SQL

Page 2: Lập trình  với T-SQL

DBMS07 – Slides 2

Lập trình với T_SQL Khai báo biến:

DECLARE @Tên_Biến Kiểu_Dữ_Liệu Ví dụ:

DECLARE @Tuoi intDECLARE @MSSV varchar(5)DECLARE @numCount int

Tên biến: Bắt đầu bởi @ Kiểu dữ liệu của biến: Lấy kiểu dữ

liệu hệ thống, trừ kiểu text, ntext, image

Page 3: Lập trình  với T-SQL

DBMS07 – Slides 3

Gán giá trị cho biến Cách 1:

SET @Tên_Biến = Giá_Trị Ví dụ:

DECLARE @HoTen nvarchar(20)SET @HoTen = N‘Nguyễn Hằng Nga’

Page 4: Lập trình  với T-SQL

DBMS07 – Slides 4

Gán giá trị cho biến Cách 2:

SELECT @Tên_Biến = Giá_Trị Ví dụ:

DECLARE @HoTen nvarchar(20)SELECT @HoTen = N‘Nguyễn Hằng

Nga’

Page 5: Lập trình  với T-SQL

DBMS07 – Slides 5

Gán giá trị cho biến Cách 3:

SELECT @Tên_Biến = Tên_cộtFROM Tên_Bảng

Ví dụ: Tìm lương lớn nhất của tất cả nhân viên:DECLARE @MaxSalary decimal(18,2)SELECT @MaxSalary = MAX(Luong)FROM NhanVien

Page 6: Lập trình  với T-SQL

DBMS07 – Slides 6

SQL Server Object – Local Variables

Các biến được sử dụng trong cấu truy vấn như là các tham số.

Cho lược đồ CSDL và dữ liệu tương ứng như sau:HocSinh DiemThi

MaHS

TenHS NgaySinh DiaChi

MaHS

HocKy NamHoc

Diem

01 Bảo 10/10/1977

123 01 01 2001 10

02 Hải 11/11/1981

456 03 01 2002 8

Page 7: Lập trình  với T-SQL

DBMS07 – Slides 7

SQL Server Object – Local Variables

Ví dụ: Liệt kê danh sách học sinh có ngày sinh vào ngày ‘10/10/1977’

DECLARE @NgaySinh datetimeSET @NgaySinh = ’10/10/1977’SELECT * FROM HocSinhWHERE NgaySinh = @NgaySinh

Page 8: Lập trình  với T-SQL

DBMS07 – Slides 8

SQL Server Object – Local Variables

Ví dụ: Liệt kê danh sách các học sinh có địa chỉ là ‘123’ và điểm thi lớn hơn 7

DECLARE @DiaChi nvarchar(50), @Diem Decimal

SELECT@DiaChi=’123’, @Diem = 7SELECT * FROM HocSinh JOIN DiemThi ON

HocSinh.MaHS = DiemThi.MaHSWHERE DiaChi = @DiaChi AND DiemThi >

@Diem

Page 9: Lập trình  với T-SQL

DBMS07 – Slides 9

Cấu trúc điều khiển Cấu trúc điều kiện:Nếu (biểu thức điều kiện) thì

Lệnh/Khối lệnhIF (biểu thức điều kiện)BEGIN

Lệnh/Khối lệnh Shoặc SQL Statement

ENDLệnh/Khối lệnh Phoặc SQL Statement

Page 10: Lập trình  với T-SQL

DBMS07 – Slides 10

Cấu trúc điều kiện Tìm Max 2 số

DECLARE @a, @b, @Max intSET @Max = @aIF (@a < @b)BEGIN

SET @Max = @bENDPrint @Max

Page 11: Lập trình  với T-SQL

DBMS07 – Slides 11

Cấu trúc điều kiện Nếu (biểu thức điều kiện) thì

Lệnh/Khối lệnh S1 Ngược lại

Lệnh/Khối liệnh S2

IF (biểu thức điều kiện)BEGIN

Lệnh/Khối lệnh S1ENDELSEBEGIN

Lệnh/Khối lệnh SENDLệnh/Khối lệnh P

Page 12: Lập trình  với T-SQL

DBMS07 – Slides 12

Cấu trúc điều kiện Tìm Max 2 số

DECLARE @a, @b, @Max intIF (@a < @b)BEGIN

SELECT @Max = @bENDELSEBEGIN

SELECT @Max = @aENDPrint @Max

Page 13: Lập trình  với T-SQL

DBMS07 – Slides 13

Cấu trúc CASE Cho phép kiểm tra điều kiện và xuất

thông tin theo từng trường hợp Cú pháp 1

CASE <tên cột>/<biểu thức>WHEN <giá trị> THEN <biểu

thức>WHEN <giá trị> THEN <biểu

thức>…[ELSE <biểu thức>]

END

Page 14: Lập trình  với T-SQL

DBMS07 – Slides 14

Cấu trúc CASE Cú pháp 2

CASE WHEN <giá trị> THEN <biểu thức>

WHEN <giá trị> THEN <biểu thức>

…[ELSE <biểu thức>]

END

Page 15: Lập trình  với T-SQL

DBMS07 – Slides 15

Ví dụ CaseVí dụ 1:SELECT TENCLB1, ‘Kết quả’ =CASE

WHEN (SOBANTHANG – SOBANTHUA > 0) THEN ‘Thắng’WHEN (SOBANTHANG – SOBANTHUA = 0) THEN ‘Hòa’WHEN (SOBANTHANG – SOBANTHUA < 0) THEN ‘Thua’

END,TENCLB2FROM vKETQUA

Page 16: Lập trình  với T-SQL

DBMS07 – Slides 16

Ví dụ Case (tt)CHITIETBAN(sohd, masach, slban, dgban)Ví dụ 2:SELECT masach,sum(slban)as tongslban,

(CASE WHEN sum(slban)>10 THENN‘Bán chạy'

ELSEN‘Bán chậm'

END) as thongtinFROM CHITIETBANGROUP BY masach

Page 17: Lập trình  với T-SQL

DBMS07 – Slides 17

Ví dụ Case (tt)SACH (masach, tuasach, sotrang, matheloai,

slton)Ví dụ 3: Tăng số trang của những sách thuộc

thể loại Tin học thêm 10, câp số trang của những sách thuộc thể loại Toán học

UPDATE sach SET sotrang=sotrang+CASE WHEN matheloai=1 THEN

10WHEN matheloai=4 THEN

-10ELSE

0END

Page 18: Lập trình  với T-SQL

DBMS07 – Slides 18

Cấu trúc lặp

Viết chương trình tính tổng s = 1 + 2 + .. + n

Page 19: Lập trình  với T-SQL

DBMS07 – Slides 19

Cấu trúc lặp BREAK: Thoát khỏi vòng lặp WHILE CONTINUE: Thực hiện lần lặp mới

Page 20: Lập trình  với T-SQL

DBMS07 – Slides 20

Lập trình với con trỏ Một con trỏ là một đối tượng cơ sở dữ liệu

được sử dụng bởi ứng dụng để thao tác với các hàng dữ liệu thay vì các tập hợp dữ liệu.

Con trỏ được dùng với Procedure và Trigger Với con trỏ chúng ta có thể:

Cho phép định vị các hàng chỉ định của tập kết quả.

Nhận về một hàng đơn hoặc tập hợp các hàng từ vị trí hiện tại của tập kết quả.

Hỗ trợ sửa đổi dữ liệu của hàng ở vị trí hiện tại trong tập kết quả.

Hỗ trợ nhiều cấp độ quan sát đối với các thay đổi được tạo ra bởi các người dùng khác trên các dữ liêu của tập kết quả.

Page 21: Lập trình  với T-SQL

DBMS07 – Slides 21

Quy trình xử lý con trỏ

Page 22: Lập trình  với T-SQL

DBMS07 – Slides 22

Tạo con trỏ Lệnh DECLARE dùng để tạo một con trỏ. Nó chứa các lệnh SELECT để bao gồm các bản ghi

từ bảng. Cú pháp là:

DECLARE <Cursor_Name> CURSOR[LOCAL | GLOBAL][FORWARD ONLY | SCROLL][STATIC | KEYSET | DYNAMIC |FAST_FORWARD][READ_ONLY | SCROLL_LOCKS | OPTIMISTIC][TYPE_WARNING]FOR <Select Statements>[FOR UPDATE [OF Column_name[,….N]]]

Page 23: Lập trình  với T-SQL

DBMS07 – Slides 23

Các bước sử dụng con trỏ Mở con trỏ:

OPEN <Cursor_name> Nhận về các bản ghi:

FETCH <Cursor_name> Đóng con trỏ:

CLOSE <Cursor_name> Xoá các tham chiếu tới con trỏ:

DEALLOCATE <Cursor_name>

Page 24: Lập trình  với T-SQL

DBMS07 – Slides 24

Truy xuất và duyệt con trỏ FETCH FIRST: Truy xuất hàng đầu tiên. FETCH NEXT: Truy xuất hàng tiếp theo hàng

truy xuất trước đó. FETCH PRIOR: Truy xuất hàng trước hàng

truy xuất trước đó. FETCH LAST: Truy xuất hàng cuối cùng. FETCH ABSOLUTE n: Nếu n là một số

nguyên dương, nó sẽ truy xuất n hàng trong con trỏ. Nếu n là một số nguyên âm, n hàng trước hàng cuối cùng trong con trỏ được truy xuất. Nếu n bằng 0, không hàng nào được truy xuất. Ví dụ, FETCH Absolute 2 sẽ hiển thị bản ghi thứ hai của một bảng.

Page 25: Lập trình  với T-SQL

DBMS07 – Slides 25

Truy xuất và duyệt con trỏ FETCH RELATIVE n: Truy xuất n hàng

từ hàng truy xuất trước đó, nếu n là số dương. Nếu n là số âm, n hàng trước hàng truy xuất trước đó được truy xuất. Nếu n bằng 0, hàng hiện tại được nhận về.

Page 26: Lập trình  với T-SQL

DBMS07 – Slides 26

Các biến toàn cục của lệnh FETCH

@@FETCH _STATUS: Biến này trả về một số nguyên biễu diễn kết quả của lệnh truy xuất cuối cùng của con trỏ.

@@CURSOR_ROWS: Biến này trả về tổng số hàng hiện tại trong con trỏ đang mở.

Page 27: Lập trình  với T-SQL

DBMS07 – Slides 27

Ví dụ tạo con trỏ

Page 28: Lập trình  với T-SQL

DBMS07 – Slides 28

Con trỏ (tt) Một con trỏ là một đối tượng cơ sở

dữ liệu được sử dụng bởi ứng dụng để thao tác với các hàng dữ liệu thay vì các tập hợp dữ liệu. Sử dụng con trỏ, nhiều tác vụ có thể được thực hiện theo từng hàng trên tập kết quả mà có thể cần hoặc ko cần sự có mặt của bảng gốc

Page 29: Lập trình  với T-SQL

DBMS07 – Slides 29

Con trỏ (tt) Con trỏ được tạo bằng lệnh DECLARE. Đầu tiên

con trỏ được khai báo và tạo ra trong bộ nhớ. Sau đó nó mới được mở.

Lệnh OPEN mở con trỏ. Việc nhận về các bản ghi từ một con trỏ được gọi là fetching. Một người dùng chỉ có thể nhận về một bản ghi tại một thời điểm.

Lệnh FETCH được sử dụng để đọc các bản ghi từ con trỏ.

Ngầm định, một con trỏ là forward only. Nó có thể truy xuất tuần tự các bản ghi từ bản ghi đầu tiên đến bản ghi cuối cùng. Nó không thể truy xuất trực tiếp hàng thứ 1 hoặc hàng cuối cùng trong một bảng.

Page 30: Lập trình  với T-SQL

DBMS07 – Slides 30

Con trỏ (tt) Khi một con trỏ tạm thời không cần

thiết, nó có thể được đóng bởi lệnh CLOSE.

Mỗi khi con trỏ không được sử dụng, các tham chiếu đến nó nên được loại bỏ bằng lệnh DEALLOCATE