LẬP TRÌNH TRONG SQL-SERVER 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

Miền giá trị dữ liệu lưu trữ

Kích thước

> Các kiểu dữ liệu dạng số nguyên

4 bytes

từ-2,147,483,648đến +2,147,483,647

Int

2 bytes

từ -32768 đến +32767

SmallInt

1 byte

từ 0 đến 255

TinyInt

1 byte

0, 1 hoặc Null

Bit

> Các kiểu dữ liệu dạng số thập phân

17bytes

từ -10^38 đến +10^38

Decimal, Numeric

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

-922,337,203,685,477.5808

đến

Money

8 bytes

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