BiẾN CỤC BỘ
Biến là một đối tượng để chứa dữ liệu
Gọi là biến cục bộ vì phạm vi hoạt động của biến
chỉ nằm trong một thủ tục, một hàm hoặc một lô
có chứa lệnh khai báo biến đó.
Một lô lệnh (batch) là các câu lệnh liên tiếp nhau
và được kết thúc bằng từ khóa GO:
Những câu lệnh nằm trong cùng batch sẽ
được xử lý cùng lúc
Lệnh GO dùng để gửi tín hiệu đến cho SQL
SERVER biết đã kết thúc một batch job và yêu
cầu thực thi.
21 trang |
Chia sẻ: thanhle95 | Lượt xem: 613 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Bài giảng Hệ quản trị cơ sở dữ liệu - Bài: Lập trình trong SQL server - Nguyễn Ngọc Quỳnh Châu, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
LẬP TRÌNH TRONG SQL-SERVER
KIỂU DỮ LiỆU TRONG SQL-SERVER
Kiểu dữ liệu chỉ định kiểu của dữ liệu và dung
lượng có thể lưu trữ của một đối tượng
SQL Server hỗ trợ một số kiểu dữ liệu được
cài đặt sẵn như sau:
Kiểu dữ liệu Kích
thước
Miền giá trị dữ liệu lưu trữ
> Các kiểu dữ liệu dạng số nguyên
Int 4 bytes từ-2,147,483,648đến +2,147,483,647
SmallInt 2 bytes từ -32768 đến +32767
TinyInt 1 byte từ 0 đến 255
Bit 1 byte 0, 1 hoặc Null
> Các kiểu dữ liệu dạng số thập phân
Decimal,
Numeric
17bytes từ -10^38 đến +10^38
> Các kiểu dữ liệu dạng số thực
Float 8 bytes từ -1.79E+308 đến +1.79E+308
Real 4 bytes từ -3.40E+38 đến +3.40E+38
> Các kiểu dữ liệu dạng chuỗi có độ dài cố định
Char N bytes từ 1 đến 8000 ký tự, mỗi ký tự là một
byte
> Các kiểu dữ liệu dạng chuỗi có độ dài biến đổi
VarChar N bytes từ 1 đến 8000 ký tự, mỗi ký tự là 1 byte
> Các kiểu dữ liệu dạng chuỗi dùng font chữ Unicode
NChar 2*N bytes từ 1 đến 4000 ký tự, mỗi ký tự là 2 bytes
NVarChar 2*N bytes từ 1 đến 4000 ký tự, mỗi ký tự là 2 bytes
> Các kiểu dữ liệu dạng tiền tệ
Money 8 bytes từ -922,337,203,685,477.5808 đến
+922,337,203,685,477.5807
SmallMoney 4 bytes từ -214,748.3648 đến + 214,748.3647
> Các kiểu dữ liệu dạng ngày và giờ
DateTime 8 bytes từ01/01/1753đến31/12/9999
SmallDateTime 4 bytes từ01/01/1900đến06/06/2079
> Các kiểu dữ liệu dạng chuỗi nhị phân (Binary String)
Binary N bytes từ 1 đến 8000 bytes
VarBinary N bytes từ 1 đến 8000 bytes
Image N bytes từ 1 đến 2,147,483,647 bytes
HÀM TRONG SQL SERVER
Aggregate functions: sum(), min(),
max(), avg()
Hàm chuyển đổi: convert()
declare @x money
set @x=30000
select 'Luong nhan vien A la: ' +
convert(char(10), @x)
Các hàm ngày tháng
Getdate(): cho biết ngày tháng hiện tại
Dateadd(datepart, number, date): để thêm
ngày/tháng/năm vào date
Datediff(datepart, date1, date2): tính khoảng
cách của date2-date1
Datename(datepart, date): cho biết tên tiếng
Anh của ngày tháng
Datepart(datepart, date):
BiẾN CỤC BỘ
Biến là một đối tượng để chứa dữ liệu
Gọi là biến cục bộ vì phạm vi hoạt động của biến
chỉ nằm trong một thủ tục, một hàm hoặc một lô
có chứa lệnh khai báo biến đó.
Một lô lệnh (batch) là các câu lệnh liên tiếp nhau
và được kết thúc bằng từ khóa GO:
Những câu lệnh nằm trong cùng batch sẽ
được xử lý cùng lúc
Lệnh GO dùng để gửi tín hiệu đến cho SQL
SERVER biết đã kết thúc một batch job và yêu
cầu thực thi.
Tên các biến cục bộ phải bắt đầu bằng @
Cách khai báo:
DECLARE @tên_biến kiểu dữ liệu
Ví dụ:
DECLARE @hoten nchar(20)
DECLARE @diachi nchar(50)
DECLARE @luong float, @ngaysinh datetime
Chú ý: kiểu dữ liệu text, ntext hoặc image
không được chấp nhận khi khai báo biến
Từ khóa SET hay SELECT được dùng để
gán giá trị cho biến
Cú pháp
SET @tên_biến = giá_trị
hoặc
SELECT @tên_biến = giá_trị
Ví dụ:
SET @hoten=N’Nguyễn Thị Thái’
Ví dụ: Tính lương trung bình của
các nhân viên của phòng ‘KT’
DECLARE @luong_tb float
SELECT @luong_tb=avg(luong)
FROM NHANVIEN WHERE
MAP=‘KT’
Để hiển thị giá trị của biến:
PRINT @tên_biến
Ví dụ: tính lương cao nhất, lương thấp nhất
của phòng ‘KT’. Hiển thị kết quả ra màn hình
DECLARE @min_luong float, @max_luong
float
SELECT @min_luong=min(luong),
@max_luong=max(luong) FROM NHANVIEN
PRINT ‘Luong cao nhat la: ‘ + convert
(char(10), @min_luong)
PRINT @max_luong
CÂU LỆNH IFELSE
Cú pháp
IF điều_kiện
BEGIN
tập_lệnh
END
ELSE
BEGIN
tập_lệnh
END
Các toán tử logic: AND, OR, NOT
Các toán tử so sánh: >, =, (!=)
Toán tử so sánh IS / IS NOT dùng để so
sánh với giá trị NULL
declare @luong1 float, @luong2 float
select @luong1= AVG(luong) from Nhanvien where MaDV='0001'
select @luong2= AVG(luong)from Nhanvien where MaDV='0002'
if @luong1>@luong2
begin
print 'Luong trung binh don vi 1 lon hon don vi 2 la: '
print abs(@luong1-@luong2)
end
else
print 'Luong trung binh don vi 2 lon hon don vi 1 la: '+
convert(chAR(20), abs(@luong1-@luong2))
GO
VÒNG LẶP WHILE
Cú pháp:
WHILE điều_kiện
BEGIN
tập_lệnh
END
Tập lệnh sẽ được thực hiện cho đến khi biểu
thức điều kiện có giá trị FALSE
Có thể dùng lệnh BREAK để thoát khỏi vòng
lặp
Ví dụ
DECLARE @count int =10
WHILE @count>=0
BEGIN
PRINT ‘Hello’
SET @count=@count-1
if @count <5
break
END
TỪ KHÓA RETURN
Từ khóa RETURN được sử dụng ở một ví trí
bất kỳ để thoát ra khỏi khối hoặc thủ tục
Những câu lệnh đằng sau RETURN sẽ không
được thực hiện
THỦ TUC NỘi TẠI
Là một “chương trình con” của SQL Server
La tập hợp các câu lệnh T-SQL được biên dịch
trước
SP được dặt tên và được xử lý như một khối lệnh
thống nhất
Ưu điểm của SP:
Tối ưu hóa tốc độ truy vấn trong SQL Server
Tính module hóa, tái sử dụng một cách dễ dàng
Có thể có các tham số vào, tham số ra và có thể trả
về kết quả
Cú pháp
CREATE PROCEDURE | PROC
Danh sách các tham số
AS
BEGIN
tập lệnh
END
Ví dụ: Tạo một SP để lấy ra danh sách nhân viên
của phòng ‘KT’
CREATE PROC List_Empl
@phong char(10)
AS
BEGIN
Set @phong=‘KT’
SELECT * FROM NHANVIEN WHERE
PHONG=@phong
END