Tải bản đầy đủ (.pdf) (10 trang)

Lập trình cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (908.35 KB, 10 trang )

1

Tài liệu hướng dẫn: Lập trình CSDL

Tài liệu hướng dẫn: Lập trình CSDL
Người thực hiện
 Hoàng Anh Tú

Nội dung
1

Giới thiệu ................................................................................................................ 2

2

Biến ......................................................................................................................... 2

3

4

2.1

Kiểu dữ liệu ...................................................................................................... 2

2.2

Khai báo biến ................................................................................................... 2

2.3


Gán giá trị ........................................................................................................ 2

2.4

In giá trị của biến ra màn hình........................................................................... 3

2.5

Chuyển đổi kiểu dữ liệu .................................................................................... 3

Toán tử.................................................................................................................... 5
3.1

Toán tử số học.................................................................................................. 5

3.2

Toán tử nối chuỗi ............................................................................................. 5

3.3

Toán tử so sánh ................................................................................................ 5

3.4

Toán tử luận lý ................................................................................................. 5

Cấu trúc điều khiển ................................................................................................. 6
4.1
Cấu trúc rẽ nhánh IF…ELSE ................................................................................ 6

4.1.1 Kết hợp IF với truy vấn............................................................................................. 6
4.2

5

Cấu trúc lặp WHILE ........................................................................................... 7

Cursor ...................................................................................................................... 7
5.1

Khái niệm Cursor .............................................................................................. 7

5.2
Cú pháp ............................................................................................................ 8
5.2.1 Khai báo Cursor ........................................................................................................ 8
5.2.2 Mở Cursor ................................................................................................................. 8
5.2.3 Lấy dữ liệu từ Cursor................................................................................................ 8
5.2.4 Đóng Cursor .............................................................................................................. 8
5.3
Ví dụ ................................................................................................................ 8
5.3.1 Duyệt qua tất cả sinh viên có trong dữ liệu ........................................................... 8
5.3.2 Xuất ra danh sách sinh viên của từng lớp .............................................................. 9


2

1.Giới thiệu

1 Giới thiệu
Tài liệu này hướng dẫn thực hành lập trình cơ sở dữ liệu với ngôn ngữ T-SQL trong

môi trường hệ quản trị SQL Server. Nội dung chính bao gồm những phần sau:
 Các thao tác lập trình cơ bản.
 Các cấu trúc điều khiển trong T-SQL: if, while, case,…
 Đối tượng truy xuất dữ liệu: cursor.

2 Biến
2.1 Kiểu dữ liệu
T-SQL sử dụng các biến với các kiểu dữ liệu có sẵng trong SQL Server như: int, float,
double, varchar, nvarchar, char, nchar, datetime, decimal,…
2.2 Khai báo biến
Biến trong T-SQL được sử dụng để lưu trữ lại 1 giá trị tạm thời trong quá trình xử lý.
Cú pháp khai báo biến:
DECLARE @ten_bien kieu_du_lieu

Ví dụ:
DECLARE @hoTen NVARCHAR(50)

Biến trong T-SQL phải có tên bắt đầu bằng @.
2.3 Gán giá trị
Cú pháp lệnh gán giá trị cho 1 biến:
-

Gán giá trị cụ thể cho 1 biến bằng lệnh SET

SET @ten_bien = giá_trị

-

Gán giá trị cho biến từ 1 câu truy vấn


SELECT @ten_bien = tên_cột FROM tên_bảng

Ví dụ:
DECLARE @hoTen NVARCHAR(50)
SET @hoTen = N'Hoàng Anh Tú'
DECLARE @soLuong INT
SELECT @soLuong = COUNT(*) FROM SINHVIEN
PRINT @soLuong

Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM


3

2.Biến
2.4 In giá trị của biến ra màn hình
Sử dụng lệnh PRINT để in giá trị của biến ra màn hình.
DECLARE @hoTen NVARCHAR(50)
SET @hoTen = N'Hoàng Anh Tú'
PRINT @hoTen

Kết quả in ra màn hình như sau đây:

Hình 1. Kết quả in ra màn hình bằng lệnh PRINT
Lệnh PRINT chỉ in ra thông điệp trong màn hình cửa sổ “Messages” mà không thực
sự trả về giá trị. Nếu muốn trả về giá trị ta dùng lệnh SELECT. Lúc này, giá trị biến sẽ
hiển thi trong tab “Results”.

Hình 2. Kết quả in ra màn hình bằng lệnh SELECT
2.5 Chuyển đổi kiểu dữ liệu

SQL Server sẽ tự động chuyển đổi giá trị của biến với 1 số kiểu dữ liệu có tương thích
với nhau: như từ int sang float hay float sang int.
DECLARE @int INT
DECLARE @float FLOAT

Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM


4

2.Biến

SET @float = 2.6
SET @int = @float
PRINT @int

Màn hình sẽ in ra giá trị “2”.
Tuy nhiên, trong 1 số trường hợp, SQL Server sẽ không tự động chuyển đổi kiểu dữ
liệu. Khi đó, câu lệnh sau sẽ báo lỗi hệ thống:

Hình 3. Lỗi hệ thống khi thực hiện phép cộng số và chuỗi
Để chuyển đổi giá trị của 1 biến từ 1 kiểu dữ liệu này qua kiểu dữ liệu khác ta có thể
sử dụng hàm CAST hoặc CONVERT.

Hình 4. Sử dụng hàm CAST để chuyển đổi kiểu dữ liệu

Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM


5


3.Toán tử

3 Toán tử
3.1 Toán tử số học
Các toán tử số học được sử dụng trên các biến kiểu dữ liệu là các con số như: int,
float, double, …
STT Toán tử
Ý nghĩa
1
+
Cộng 2 số
2
Trừ 2 số
3
*
Nhân 2 số
4
/
Chia 2 số
5
%
Chia lấy phần dư
Bảng 1. Các toán tử số học
3.2 Toán tử nối chuỗi
Để nối 2 chuỗi trong T-SQL ta sử dụng toán tử +.
Ví dụ:
DECLARE @hoTen NVARCHAR(50)
SET @hoTen = N'Hoàng Anh Tú'
PRINT N'Xin chào ' + @hoTen


Màn hình sẽ in ra chuỗi “Xin chào Hoàng Anh Tú”.
3.3 Toán tử so sánh
Các toán tử so sánh có thể được dùng để so sánh các số, ngày tháng, ký tự, chuỗi,…
STT Toán tử
Ý nghĩa
1
=
So sánh bằng
2
>
So sánh lớn hơn
3
<
So sánh nhỏ hơn
4
>=
So sánh lớn hơn hoặc bằng
5
<=
So sánh nhỏ hơn hoặc bằng
6
<>
So sánh khác
7
!=
So sánh khác
8
!<
So sánh không nhỏ hơn

9
!>
So sánh không lớn hơn
Bảng 2. Các toán tử so sánh trong T-SQL
3.4 Toán tử luận lý
Các toán tử sử dụng để kết hợp các biểu thức điều kiện lại với nhau như: AND, OR,
NOT thường sử dụng trong các câu lệnh truy vấn SQL.
Ví dụ:

Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM


6

4.Cấu trúc điều khiển
Câu truy vấn lấy về danh sách sinh viên thuộc dân tộc Kinh và sinh sau năm 1984.
SELECT *
FROM SINHVIEN S
WHERE S.DANTOC = N'Kinh'
AND S.NAMSINH > 1984

Sử dụng toán tử luận lý trong IF
IF (@float >= 1 AND @float <= 2) BEGIN
PRINT N'Số thực nằm từ 1 đến 2'
END

4 Cấu trúc điều khiển
4.1 Cấu trúc rẽ nhánh IF…ELSE
Cú pháp:
IF biểu_thức_điều_kiện BEGIN

các_lệnh_xử_lý_khi_thỏa_điều_kiện
END
ELSE BEGIN
các_lệnh_xử_lý_khi_không_thỏa_điều_kiện
END

Ví dụ:
DECLARE @soLuong INT
SELECT @soLuong = COUNT(*) FROM SINHVIEN
IF @soLuong > 0 BEGIN
PRINT @soLuong
END
ELSE BEGIN
PRINT N'Không có sinh viên'
END

4.1.1 Kết hợp IF với truy vấn
Ta có thể kết hợp lệnh IF với các câu truy vấn để kiểm tra điều kiện trả về trên câu
truy vấn.
-

Kết hợp IF với EXISTS

IF EXISTS(SELECT * FROM SINHVIEN) BEGIN

Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM


7


5.Cursor
PRINT N'Có dữ liệu sinh viên'
END
ELSE BEGIN
PRINT N'Không có dữ liệu sinh viên'
END

-

Kết hợp IF với các dạng truy vấn khác

IF (SELECT COUNT(*) FROM SINHVIEN) > 0 BEGIN
PRINT N'Có dữ liệu sinh viên'
END
ELSE BEGIN
PRINT N'Không có dữ liệu sinh viên'
END

4.2 Cấu trúc lặp WHILE
Cú pháp:
WHILE biểu_thức_điều_kiện BEGIN
các_lệnh_xử_lý_khi_thỏa_điều_kiện
END

Ví dụ:
DECLARE @i INT
SET @i = 1
WHILE @i < 100 BEGIN
PRINT @i
SET @i = @i + 1

END

Ví dụ trên sẽ in ra dãy các con số từ 1 đến 99.

5 Cursor
5.1 Khái niệm Cursor
Các lệnh trong SQL như: SELECT, UPDATE, DELETE,… đều thao tác lên nhiều
dòng dữ liệu thỏa điều kiện WHERE cùng lúc mà không thể thao tác lên từng dòng dữ
liệu cụ thể. Cursor là kiểu dữ liệu cơ bản dùng để duyệt qua từng dòng dữ liệu trả về
từ câu truy vấn SELECT đó giúp ta có thể có những xử lý khác nhau cho từng dòng
dữ liệu cụ thể.
Cursor có 1 số đặc điểm:

Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM


8

5.Cursor
-

Cho phép thao tác lên từng dòng dữ liệu trả về từ lệnh SELECT.
Do phải lặp qua từng dòng dữ liệu nên đây là cách xử lý chậm nhất.

5.2 Cú pháp
Cú pháp của Cursor luôn tuân theo 1 số bước.
5.2.1 Khai báo Cursor
DECLARE tên_cursor CURSOR
FOR lệnh_select


Ngoài ra, có thể khai báo riêng CURSOR rồi sau đó mới gán lệnh SELECT vào
CURSOR sau
DECLARE @tên_cursor CURSOR
SET @tên_cursor = CURSOR FOR lệnh_select

5.2.2 Mở Cursor
OPEN tên_cursor

5.2.3 Lấy dữ liệu từ Cursor
FETCH NEXT FROM tên_cursor INTO @biến1, @biến2,...

Sau khi lấy dữ liệu ra bằng lệnh FETCH, ta có thể kiểm tra có lấy được dữ liệu ra
không bằng biến @@FETCH_STATUS:
-

Nếu @@FETCH_STATUS = 0: lấy dữ liệu thành công.
Nếu @@FETCH_STATUS <> 0: lấy dữ liệu không thành công. Có thể lúc này
ta đã đi lấy hết tất cả các dòng dữ liệu trả về.

5.2.4 Đóng Cursor
Tại mỗi thời điểm không thể mở 2 cursor có cùng 1 tên. Do đó, ta cần phải đóng
cursor ngay và giải phóng vùng nhớ lưu trữ dữ liệu trả về từ lệnh SELECT.
CLOSE tên_cursor
DEALLOCATE tên_cursor

5.3 Ví dụ
5.3.1 Duyệt qua tất cả sinh viên có trong dữ liệu
DECLARE @cursor CURSOR
SET @cursor = CURSOR FOR SELECT ma, hoTen FROM SINHVIEN
OPEN @cursor

DECLARE @mssv VARCHAR(10), @hoTen NVARCHAR(50)
FETCH NEXT FROM @cursor INTO @mssv, @hoTen

Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM


9

5.Cursor

WHILE(@@FETCH_STATUS = 0) BEGIN
PRINT N'Sinh viên ' + @mssv + N' họ tên: '
FETCH NEXT FROM @cursor INTO @mssv, @hoTen
END
CLOSE @cursor
DEALLOCATE @cursor

5.3.2 Xuất ra danh sách sinh viên của từng lớp
DECLARE cursor_lop CURSOR FOR SELECT ma FROM LOP
DECLARE @cursor_sv CURSOR
OPEN cursor_lop
DECLARE @mssv VARCHAR(10), @hoTen NVARCHAR(50), @maLop
varchar(10)
FETCH NEXT FROM cursor_lop INTO @maLop
WHILE(@@FETCH_STATUS = 0) BEGIN
PRINT N'Lớp: ' + @maLop + N' gồm sinh viên:'
SET @cursor_sv = CURSOR
FOR SELECT ma, hoten
FROM SINHVIEN
WHERE maLop = @maLop

OPEN @cursor_sv
FETCH NEXT FROM @cursor_sv INTO @mssv, @hoTen
WHILE(@@FETCH_STATUS = 0) BEGIN
PRINT N'---Sinh viên '+@hoTen+N' có mã số: ' + @mssv
FETCH NEXT FROM @cursor_sv INTO @mssv, @hoTen
END
CLOSE @cursor_sv
DEALLOCATE @cursor_sv
FETCH NEXT FROM cursor_lop INTO @maLop
END
CLOSE cursor_lop
DEALLOCATE cursor_lop

Màn hình sẽ xuất ra như sau:

Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM


10

5.Cursor

Hình 5. Kết quả in sinh viên của từng lớp học

Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM



×