1
CƠ BẢN VỀ LẬP TRÌNH
BẰNG TRANSACT – SQL
10
10
2
1. Khái niệm cơ bản:
1. Khái niệm cơ bản:
a. Qui tắc định danh:
a. Qui tắc định danh:
Tối đa 128 ký tự.
Tối đa 128 ký tự.
Bắt đầu là một ký tự thông thường A->Z
Bắt đầu là một ký tự thông thường A->Z
Bắt đầu là một ký hiệu (@,#) sẽ có một ý nghĩa
Bắt đầu là một ký hiệu (@,#) sẽ có một ý nghĩa
khác.
khác.
Những định danh nào có khoảng trắng ở giữa thì
Những định danh nào có khoảng trắng ở giữa thì
phải kẹp trong dấu [] oặc “ ”
phải kẹp trong dấu [] oặc “ ”
Các định danh không được trùng lắp và không
Các định danh không được trùng lắp và không
trùng với từ khóa của T-SQL.
trùng với từ khóa của T-SQL.
Northwind orederhist
Northwind orederhist
Create Table
Create TableNorthwind.dbo.orederhist
Northwind.dbo.orederhist
Database Owner (dbo) user có đầy đủ các quyền
Database Owner (dbo) user có đầy đủ các quyền
thao tác trong CSDL. Bất kỳ một thành viên
thao tác trong CSDL. Bất kỳ một thành viên
thuộc nhóm sysadmin thì mặc nhiên thuộc dbo.
thuộc nhóm sysadmin thì mặc nhiên thuộc dbo.
4
c. Kiểu dữ liệu (data type):
c. Kiểu dữ liệu (data type):
xem lại bài 5 – Tr.43
xem lại bài 5 – Tr.43
d. Batch:
d. Batch:
là một tập các phát biểu T-SQL nằm liên
là một tập các phát biểu T-SQL nằm liên
tiếp và kết thúc bởi phát biểu GO
tiếp và kết thúc bởi phát biểu GO
Vd:
Vd:
USE
USE
GO
GO
5
Ghi chú:
Ghi chú:
Các phát biểu trong 1 batch được biên dịch
Các phát biểu trong 1 batch được biên dịch
thành một nhóm.
thành một nhóm.
Nếu một trong phát biểu của batch bị lỗi thì
Nếu một trong phát biểu của batch bị lỗi thì
batch cũng xem như lỗi.
batch cũng xem như lỗi.
Các phát biểu
Các phát biểu
Create
Create
bị ràng buộc trong một
bị ràng buộc trong một
batch
batch
đơn, tức trong batch đó chỉ có phát biểu
đơn, tức trong batch đó chỉ có phát biểu
Create. Các phát biểu đó là: Create DataBase,
Create. Các phát biểu đó là: Create DataBase,
Create Table, Create Index,…
Biến cục bộ (Local variable)
Được khai báo trong phần thân của một bó lệnh
Được khai báo trong phần thân của một bó lệnh
hoặc một thủ tục.
hoặc một thủ tục.
Phạm vi hoạt động của biến bắt đầu từ điểm mà
Phạm vi hoạt động của biến bắt đầu từ điểm mà
nó được khai báo cho đến khi kết thúc một lô
nó được khai báo cho đến khi kết thúc một lô
(batch)
(batch)
hoặc
hoặc
stored procedure
stored procedure
hoặc
hoặc
Function
Function
mà
mà
nó được khai báo.
nó được khai báo.
Tên của biến bắt đầu @
Tên của biến bắt đầu @
7
a. Khai báo (Declare):
Syntax:
SET
SET
@var_name =
@var_name =
expression
expression
SELECT
SELECT
{@var_name =
{@var_name =
expression
expression
} [,…n]
} [,…n]
8
Use
Usegiaotrinh_db
giaotrinh_db
GO
GO
Declare
Declare
@NamLV int
@NamLV int
Set
Set
@TenDem
@TenDem
nvarchar
nvarchar
(10)
(10)
,
,
@HoTen
@HoTen
nvarchar
nvarchar
(50)
(50)
Set @TenDem = N
Set @TenDem = N
'
'
Van
Van
'
'
Select
Select
@HoTen = Ho +
@HoTen = Ho +
'
'
9
3. Cấu trúc điều khiển:
3. Cấu trúc điều khiển:
a.
a.
Khối
Khối
BEGIN … END
BEGIN … END
b. PRINT:
b. PRINT:Dùng để in thông tin ra màn hình kết quả
Dùng để in thông tin ra màn hình kết quả
của SQL của 1 Biểu thức, chuỗi, hàm, biến….
của SQL của 1 Biểu thức, chuỗi, hàm, biến….
VD:
VD:
PRINT
PRINT
N ‘Chào bạn’
N ‘Chào bạn’PRINT
PRINT@@VERSION
]
10
USE
USE
GiaoTrinh_db
GiaoTrinh_db
IF
IF(
(
Select
Select
Count
Count
(*)
(*)
From
From
KhachHang
KhachHang
Where
Where
TenCongTy = ‘ABC’
TenCongTy = ‘ABC’
)
)
> 0
> 0
when_expression
THEN
THEN
result_expression
result_expression [ n ]
[ n ] [
[
ELSE
ELSE
else_result_expression ]
else_result_expression ]
END
END
CASE
CASE
WHEN
WHEN
WHEN
PhuCap
PhuCap
IS NULL
IS NULLTHEN
THEN
0
0
ELSE
ELSE
PhuCap
PhuCap
END
END
FROM
FROM
NHANVIEN
NHANVIENSelect
Select
N'Nhóm giá các loại hàng' =
N'Nhóm giá các loại hàng' = When
When
price >= 10
price >= 10
and
and
price < 20
price < 20
Then
Then
N'Giá >= 10 và <=20'
N'Giá >= 10 và <=20'Else
Else
N'Giá > 20'
N'Giá > 20'END
END
,
,Title
Title
(30)
SET
SET
@a=3
@a=3
SET
SET
@b=5
@b=5
SET
SET
@ketqua =
@ketqua =
CASE
CASEWHEN
WHEN
@a<@b
@a<@b
THEN
THEN
N'A nhỏ hơn B'
N'A nhỏ hơn B'WHEN
WHEN
@a<@b THEN N'A lớn hơn B'
{sql_statement | statement_block}
{sql_statement | statement_block}
[ CONTINUE ]
[ CONTINUE ]
[BREAK]:
[BREAK]:
Dùng để kết thúc vòng lặp khi gặp một
Dùng để kết thúc vòng lặp khi gặp một
trường hợp cụ thể nào đó.
trường hợp cụ thể nào đó.
[CONTINUE]:
[CONTINUE]:
Lặp lại đầu vòng lặp.
Lặp lại đầu vòng lặp.
Thông thường 2 từ khóa
Thông thường 2 từ khóa
Break
Break
và
và
Continue
Continue
nằm trong
nằm trong
trong cấu trúc
UPDATE
UPDATE
titles
titlesSET
SET
price = price * 2
price = price * 2SELECT
SELECT
MAX(price) FROM titles
MAX(price) FROM titlesIF
IF
(
(
SELECT
SELECTMAX
MAX
[integer_expression]
Return
Return
kết thúc tiến trình trình xử lý,
kết thúc tiến trình trình xử lý,
Return
Return
thường
thường
được dùng trong thủ tục lưu trữ
được dùng trong thủ tục lưu trữ
(Store Procedure).
(Store Procedure).
f.
f.
Lệnh WAITFOR:
Lệnh WAITFOR:
Là một chỉ thị cho SQL Server tạm
Là một chỉ thị cho SQL Server tạm
dừng một thời gian trước khi xử lý tiếp các phát biểu
dừng một thời gian trước khi xử lý tiếp các phát biểu
sau đó.
sau đó.
Syntax:
Syntax:WAITFOR
WAITFOR
{
Hệ thống được tạm dừng
đến
đến
thời gian
thời gian
‘Time’ chỉ ra. VD:
‘Time’ chỉ ra. VD:
WAITFOR TIME
WAITFOR TIME
’02:10’
’02:10’
17
g. Lệnh RAIREEOR
g. Lệnh RAIREEOR
Phát sinh lỗi của người dùng. Người dùng có thể phát sinh
Phát sinh lỗi của người dùng. Người dùng có thể phát sinh
các lỗi từ bảng
các lỗi từ bảng
sysmessage
sysmessage
hoặc xây dựng lỗi động tùy
hoặc xây dựng lỗi động tùy
thông tin của người dùng.
thông tin của người dùng.
RAISERROR
RAISERROR
({msg_id | msg_str} {, severity, state}
({msg_id | msg_str} {, severity, state}
[,argument [,…n]])
[,argument [,…n]])
Severity:
Severity:
Là mức lỗi của lỗi, là một số
Là mức lỗi của lỗi, là một số
smallint
smallint
. Mức hợp lệ
. Mức hợp lệ
là từ 1 đến 25. Chỉ có người quản trị CSDL mới có thể phát
là từ 1 đến 25. Chỉ có người quản trị CSDL mới có thể phát
sinh thêm một thông báo lỗi mới từ 19 đến 25.
sinh thêm một thông báo lỗi mới từ 19 đến 25.
‘
‘
msg’:
msg’:
Là một chuỗi thông báo lỗi, tối đa 255 ký tự.
Là một chuỗi thông báo lỗi, tối đa 255 ký tự.
‘
‘
Language’:
Language’:
mặc định là ngôn ngữ của phiên kết nối.
mặc định là ngôn ngữ của phiên kết nối.
‘
‘
Lưu ý:
Lưu ý:
Nếu trả về 0 tức là thêm vào thành công, 1 thất bại.
Nếu trả về 0 tức là thêm vào thành công, 1 thất bại.