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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

1.Giới thiệu 2 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.. 2 Biến 2.1 Kiểu dữ liệu T-SQL sử dụn

Trang 1

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

1

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

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

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

4 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 Cấu trúc lặp WHILE 7

5 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

Trang 2

1.Giới thiệu

2

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

Trang 3

2.Biến

3

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

Trang 4

2.Biến

4

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

Trang 5

3.Toán tử

5

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

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ụ:

Trang 6

4.Cấu trúc điều khiển

6

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

Trang 7

5.Cursor

7

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:

Trang 8

5.Cursor

8

- 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

Trang 9

5.Cursor

9

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:

Trang 10

5.Cursor

10

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

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

HÌNH ẢNH LIÊN QUAN

Hình 2. Kết quả in ra màn hình bằng lệnh SELECT - Lập trình cơ sở dữ liệu
Hình 2. Kết quả in ra màn hình bằng lệnh SELECT (Trang 3)
Hình 1. Kết quả in ra màn hình bằng lệnh PRINT - Lập trình cơ sở dữ liệu
Hình 1. Kết quả in ra màn hình bằng lệnh PRINT (Trang 3)
Hình 4. Sử dụng hàm CAST để chuyển đổi kiểu dữ liệu - Lập trình cơ sở dữ liệu
Hình 4. Sử dụng hàm CAST để chuyển đổi kiểu dữ liệu (Trang 4)
Hình 3. Lỗi hệ thống khi thực hiện phép cộng số và chuỗi - Lập trình cơ sở dữ liệu
Hình 3. Lỗi hệ thống khi thực hiện phép cộng số và chuỗi (Trang 4)
Bảng 2. Các toán tử so sánh trong T-SQL - Lập trình cơ sở dữ liệu
Bảng 2. Các toán tử so sánh trong T-SQL (Trang 5)
Bảng 1. Các toán tử số học - Lập trình cơ sở dữ liệu
Bảng 1. Các toán tử số học (Trang 5)
Hình 5. Kết quả in sinh viên của từng lớp học - Lập trình cơ sở dữ liệu
Hình 5. Kết quả in sinh viên của từng lớp học (Trang 10)

TỪ KHÓA LIÊN QUAN