1. Trang chủ
  2. » Công Nghệ Thông Tin

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

10 275 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 10
Dung lượng 908,35 KB

Nội dung

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  Hoàng Anh Tú Nội dung Giới thiệu 2 Biến 2.1 Kiểu liệu 2.2 Khai báo biến 2.3 Gán giá trị 2.4 In giá trị biến hình 2.5 Chuyển đổi kiểu liệu Toán tử 3.1 Toán tử số học 3.2 Toán tử nối chuỗi 3.3 Toán tử so sánh 3.4 Toán tử luận lý Cấu trúc điều khiển 4.1 Cấu trúc rẽ nhánh IF…ELSE 4.1.1 Kết hợp IF với truy vấn 4.2 Cấu trúc lặp WHILE Cursor 5.1 Khái niệm Cursor 5.2 Cú pháp 5.2.1 Khai báo Cursor 5.2.2 Mở Cursor 5.2.3 Lấy liệu từ Cursor 5.2.4 Đóng Cursor 5.3 Ví dụ 5.3.1 Duyệt qua tất sinh viên có liệu 5.3.2 Xuất danh sách sinh viên lớp 1.Giới thiệu Giới thiệu Tài liệu hướng dẫn thực hành lập trình sở liệu với ngôn ngữ T-SQL môi trường hệ quản trị SQL Server Nội dung bao gồm phần sau:  Các thao tác lập trình  Các cấu trúc điều khiển T-SQL: if, while, case,…  Đối tượng truy xuất liệu: cursor Biến 2.1 Kiểu liệu T-SQL sử dụng biến với kiểu liệu có sẵng SQL Server như: int, float, double, varchar, nvarchar, char, nchar, datetime, decimal,… 2.2 Khai báo biến Biến T-SQL sử dụng để lưu trữ lại giá trị tạm thời 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 T-SQL phải có tên bắt đầu @ 2.3 Gán giá trị Cú pháp lệnh gán giá trị cho biến: - Gán giá trị cụ thể cho biến lệnh SET SET @ten_bien = giá_trị - Gán giá trị cho biến từ 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 2.Biến 2.4 In giá trị biến hình Sử dụng lệnh PRINT để in giá trị biến hình DECLARE @hoTen NVARCHAR(50) SET @hoTen = N'Hoàng Anh Tú' PRINT @hoTen Kết in sau đây: Hình Kết in hình lệnh PRINT Lệnh PRINT in thông điệp hình cửa sổ “Messages” mà không thực trả giá trị Nếu muốn trả giá trị ta dùng lệnh SELECT Lúc này, giá trị biến hiển thi tab “Results” Hình Kết in hình lệnh SELECT 2.5 Chuyển đổi kiểu liệu SQL Server tự động chuyển đổi giá trị biến với số kiểu liệu có tương thích với nhau: 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 2.Biến SET @float = 2.6 SET @int = @float PRINT @int Màn hình in giá trị “2” Tuy nhiên, số trường hợp, SQL Server không tự động chuyển đổi kiểu liệu Khi đó, câu lệnh sau báo lỗi hệ thống: Hình Lỗi hệ thống thực phép cộng số chuỗi Để chuyển đổi giá trị biến từ kiểu liệu qua kiểu liệu khác ta sử dụng hàm CAST CONVERT Hình Sử dụng hàm CAST để chuyển đổi kiểu liệu Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 3.Toán tử Toán tử 3.1 Toán tử số học Các toán tử số học sử dụng biến kiểu liệu số như: int, float, double, … STT Toán tử Ý nghĩa + Cộng số Trừ số * Nhân số / Chia số % Chia lấy phần dư Bảng Các toán tử số học 3.2 Toán tử nối chuỗi Để nối chuỗi 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 in 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 dùng để so sánh số, ngày tháng, ký tự, chuỗi,… STT Toán tử Ý nghĩa = So sánh > So sánh lớn < So sánh nhỏ >= So sánh lớn So sánh không lớn Bảng Các toán tử so sánh T-SQL 3.4 Toán tử luận lý Các toán tử sử dụng để kết hợp biểu thức điều kiện lại với như: AND, OR, NOT thường sử dụng 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 4.Cấu trúc điều khiển Câu truy vấn lấy danh sách sinh viên thuộc dân tộc Kinh 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ý IF IF (@float >= AND @float 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 kết hợp lệnh IF với câu truy vấn để kiểm tra điều kiện trả 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 5.Cursor PRINT N'Có liệu sinh viên' END ELSE BEGIN PRINT N'Không có liệu sinh viên' END - Kết hợp IF với dạng truy vấn khác IF (SELECT COUNT(*) FROM SINHVIEN) > BEGIN PRINT N'Có liệu sinh viên' END ELSE BEGIN PRINT N'Không có 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 = WHILE @i < 100 BEGIN PRINT @i SET @i = @i + END Ví dụ in dãy số từ đến 99 Cursor 5.1 Khái niệm Cursor Các lệnh SQL như: SELECT, UPDATE, DELETE,… thao tác lên nhiều dòng liệu thỏa điều kiện WHERE lúc mà thao tác lên dòng liệu cụ thể Cursor kiểu liệu dùng để duyệt qua dòng liệu trả từ câu truy vấn SELECT giúp ta có xử lý khác cho dòng liệu cụ thể Cursor có số đặc điểm: Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 5.Cursor - Cho phép thao tác lên dòng liệu trả từ lệnh SELECT Do phải lặp qua dòng liệu nên cách xử lý chậm 5.2 Cú pháp Cú pháp Cursor tuân theo số bước 5.2.1 Khai báo Cursor DECLARE tên_cursor CURSOR FOR lệnh_select Ngoài ra, khai báo riêng CURSOR sau 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 liệu từ Cursor FETCH NEXT FROM tên_cursor INTO @biến1, @biến2, Sau lấy liệu lệnh FETCH, ta kiểm tra có lấy liệu không biến @@FETCH_STATUS: - Nếu @@FETCH_STATUS = 0: lấy liệu thành công Nếu @@FETCH_STATUS 0: lấy liệu không thành công Có thể lúc ta lấy hết tất dòng liệu trả 5.2.4 Đóng Cursor Tại thời điểm mở cursor có tên Do đó, ta cần phải đóng cursor giải phóng vùng nhớ lưu trữ liệu trả từ lệnh SELECT CLOSE tên_cursor DEALLOCATE tên_cursor 5.3 Ví dụ 5.3.1 Duyệt qua tất sinh viên có 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 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 danh sách sinh viên 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 xuất sau: Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM 10 5.Cursor Hình Kết in sinh viên lớp học Bộ môn HTTT, Khoa CNTT, Đại học Khoa học tự nhiên Tp.HCM

Ngày đăng: 08/01/2016, 17:52

TỪ KHÓA LIÊN QUAN