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

Bài giảng Cơ sở dữ liệu: Lập trình trong SQL server - ThS. Nguyễn Ngọc Quỳnh Châ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 (403.38 KB, 21 trang )

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
+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

đến


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 IF…ELSE
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



×