You are on page 1of 10

1

Ti liu hng dn: Lp trnh CSDL

Ti liu hng dn: Lp trnh CSDL


Ngi thc hin
Hong Anh T

Ni dung
1

Gii thiu ................................................................................................................ 2

Bin ......................................................................................................................... 2

2.1

Kiu d liu ...................................................................................................... 2

2.2

Khai bo bin ................................................................................................... 2

2.3

Gn gi tr ........................................................................................................ 2

2.4

In gi tr ca bin ra mn hnh........................................................................... 3

2.5

Chuyn i kiu d liu .................................................................................... 3

Ton t.................................................................................................................... 5
3.1

Ton t s hc.................................................................................................. 5

3.2

Ton t ni chui ............................................................................................. 5

3.3

Ton t so snh ................................................................................................ 5

3.4

Ton t lun l ................................................................................................. 5

Cu trc iu khin ................................................................................................. 6


4.1
Cu trc r nhnh IFELSE ................................................................................ 6
4.1.1 Kt hp IF vi truy vn............................................................................................. 6
4.2

Cu trc lp WHILE ........................................................................................... 7

Cursor ...................................................................................................................... 7
5.1

Khi nim Cursor .............................................................................................. 7

5.2
C php ............................................................................................................ 8
5.2.1 Khai bo Cursor ........................................................................................................ 8
5.2.2 M Cursor ................................................................................................................. 8
5.2.3 Ly d liu t Cursor................................................................................................ 8
5.2.4 ng Cursor .............................................................................................................. 8
5.3
V d ................................................................................................................ 8
5.3.1 Duyt qua tt c sinh vin c trong d liu ........................................................... 8
5.3.2 Xut ra danh sch sinh vin ca tng lp .............................................................. 9

1.Gii thiu

1 Gii thiu
Ti liu ny hng dn thc hnh lp trnh c s d liu vi ngn ng T-SQL trong
mi trng h qun tr SQL Server. Ni dung chnh bao gm nhng phn sau:
Cc thao tc lp trnh c bn.
Cc cu trc iu khin trong T-SQL: if, while, case,
i tng truy xut d liu: cursor.

2 Bin
2.1 Kiu d liu
T-SQL s dng cc bin vi cc kiu d liu c sng trong SQL Server nh: int, float,
double, varchar, nvarchar, char, nchar, datetime, decimal,
2.2 Khai bo bin
Bin trong T-SQL c s dng lu tr li 1 gi tr tm thi trong qu trnh x l.
C php khai bo bin:
DECLARE @ten_bien kieu_du_lieu

V d:
DECLARE @hoTen NVARCHAR(50)

Bin trong T-SQL phi c tn bt u bng @.


2.3 Gn gi tr
C php lnh gn gi tr cho 1 bin:
-

Gn gi tr c th cho 1 bin bng lnh SET

SET @ten_bien = gi_tr

Gn gi tr cho bin t 1 cu truy vn

SELECT @ten_bien = tn_ct FROM tn_bng

V d:
DECLARE @hoTen NVARCHAR(50)
SET @hoTen = N'Hong Anh T'
DECLARE @soLuong INT
SELECT @soLuong = COUNT(*) FROM SINHVIEN
PRINT @soLuong

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

2.Bin
2.4 In gi tr ca bin ra mn hnh
S dng lnh PRINT in gi tr ca bin ra mn hnh.
DECLARE @hoTen NVARCHAR(50)
SET @hoTen = N'Hong Anh T'
PRINT @hoTen

Kt qu in ra mn hnh nh sau y:

Hnh 1. Kt qu in ra mn hnh bng lnh PRINT


Lnh PRINT ch in ra thng ip trong mn hnh ca s Messages m khng thc
s tr v gi tr. Nu mun tr v gi tr ta dng lnh SELECT. Lc ny, gi tr bin s
hin thi trong tab Results.

Hnh 2. Kt qu in ra mn hnh bng lnh SELECT


2.5 Chuyn i kiu d liu
SQL Server s t ng chuyn i gi tr ca bin vi 1 s kiu d liu c tng thch
vi nhau: nh t int sang float hay float sang int.
DECLARE @int INT
DECLARE @float FLOAT

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

2.Bin

SET @float = 2.6


SET @int = @float
PRINT @int

Mn hnh s in ra gi tr 2.
Tuy nhin, trong 1 s trng hp, SQL Server s khng t ng chuyn i kiu d
liu. Khi , cu lnh sau s bo li h thng:

Hnh 3. Li h thng khi thc hin php cng s v chui


chuyn i gi tr ca 1 bin t 1 kiu d liu ny qua kiu d liu khc ta c th
s dng hm CAST hoc CONVERT.

Hnh 4. S dng hm CAST chuyn i kiu d liu

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

3.Ton t

3 Ton t
3.1 Ton t s hc
Cc ton t s hc c s dng trn cc bin kiu d liu l cc con s nh: int,
float, double,
STT Ton t
ngha
1
+
Cng 2 s
2
Tr 2 s
3
*
Nhn 2 s
4
/
Chia 2 s
5
%
Chia ly phn d
Bng 1. Cc ton t s hc
3.2 Ton t ni chui
ni 2 chui trong T-SQL ta s dng ton t +.
V d:
DECLARE @hoTen NVARCHAR(50)
SET @hoTen = N'Hong Anh T'
PRINT N'Xin cho ' + @hoTen

Mn hnh s in ra chui Xin cho Hong Anh T.


3.3 Ton t so snh
Cc ton t so snh c th c dng so snh cc s, ngy thng, k t, chui,
STT Ton t
ngha
1
=
So snh bng
2
>
So snh ln hn
3
<
So snh nh hn
4
>=
So snh ln hn hoc bng
5
<=
So snh nh hn hoc bng
6
<>
So snh khc
7
!=
So snh khc
8
!<
So snh khng nh hn
9
!>
So snh khng ln hn
Bng 2. Cc ton t so snh trong T-SQL
3.4 Ton t lun l
Cc ton t s dng kt hp cc biu thc iu kin li vi nhau nh: AND, OR,
NOT thng s dng trong cc cu lnh truy vn SQL.
V d:

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

4.Cu trc iu khin


Cu truy vn ly v danh sch sinh vin thuc dn tc Kinh v sinh sau nm 1984.
SELECT *
FROM SINHVIEN S
WHERE S.DANTOC = N'Kinh'
AND S.NAMSINH > 1984

S dng ton t lun l trong IF


IF (@float >= 1 AND @float <= 2) BEGIN
PRINT N'S thc nm t 1 n 2'
END

4 Cu trc iu khin
4.1 Cu trc r nhnh IFELSE
C php:
IF biu_thc_iu_kin BEGIN
cc_lnh_x_l_khi_tha_iu_kin
END
ELSE BEGIN
cc_lnh_x_l_khi_khng_tha_iu_kin
END

V d:
DECLARE @soLuong INT
SELECT @soLuong = COUNT(*) FROM SINHVIEN
IF @soLuong > 0 BEGIN
PRINT @soLuong
END
ELSE BEGIN
PRINT N'Khng c sinh vin'
END

4.1.1 Kt hp IF vi truy vn
Ta c th kt hp lnh IF vi cc cu truy vn kim tra iu kin tr v trn cu
truy vn.
-

Kt hp IF vi EXISTS

IF EXISTS(SELECT * FROM SINHVIEN) BEGIN

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

5.Cursor
PRINT N'C d liu sinh vin'
END
ELSE BEGIN
PRINT N'Khng c d liu sinh vin'
END

Kt hp IF vi cc dng truy vn khc

IF (SELECT COUNT(*) FROM SINHVIEN) > 0 BEGIN


PRINT N'C d liu sinh vin'
END
ELSE BEGIN
PRINT N'Khng c d liu sinh vin'
END

4.2 Cu trc lp WHILE


C php:
WHILE biu_thc_iu_kin BEGIN
cc_lnh_x_l_khi_tha_iu_kin
END

V d:
DECLARE @i INT
SET @i = 1
WHILE @i < 100 BEGIN
PRINT @i
SET @i = @i + 1
END

V d trn s in ra dy cc con s t 1 n 99.

5 Cursor
5.1 Khi nim Cursor
Cc lnh trong SQL nh: SELECT, UPDATE, DELETE, u thao tc ln nhiu
dng d liu tha iu kin WHERE cng lc m khng th thao tc ln tng dng d
liu c th. Cursor l kiu d liu c bn dng duyt qua tng dng d liu tr v
t cu truy vn SELECT gip ta c th c nhng x l khc nhau cho tng dng
d liu c th.
Cursor c 1 s c im:

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

5.Cursor
-

Cho php thao tc ln tng dng d liu tr v t lnh SELECT.


Do phi lp qua tng dng d liu nn y l cch x l chm nht.

5.2 C php
C php ca Cursor lun tun theo 1 s bc.
5.2.1 Khai bo Cursor
DECLARE tn_cursor CURSOR
FOR lnh_select

Ngoi ra, c th khai bo ring CURSOR ri sau mi gn lnh SELECT vo


CURSOR sau
DECLARE @tn_cursor CURSOR
SET @tn_cursor = CURSOR FOR lnh_select

5.2.2 M Cursor
OPEN tn_cursor

5.2.3 Ly d liu t Cursor


FETCH NEXT FROM tn_cursor INTO @bin1, @bin2,...

Sau khi ly d liu ra bng lnh FETCH, ta c th kim tra c ly c d liu ra


khng bng bin @@FETCH_STATUS:
-

Nu @@FETCH_STATUS = 0: ly d liu thnh cng.


Nu @@FETCH_STATUS <> 0: ly d liu khng thnh cng. C th lc ny
ta i ly ht tt c cc dng d liu tr v.

5.2.4 ng Cursor
Ti mi thi im khng th m 2 cursor c cng 1 tn. Do , ta cn phi ng
cursor ngay v gii phng vng nh lu tr d liu tr v t lnh SELECT.
CLOSE tn_cursor
DEALLOCATE tn_cursor

5.3 V d
5.3.1 Duyt qua tt c sinh vin c trong d liu
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

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

5.Cursor

WHILE(@@FETCH_STATUS = 0) BEGIN
PRINT N'Sinh vin ' + @mssv + N' h tn: '
FETCH NEXT FROM @cursor INTO @mssv, @hoTen
END
CLOSE @cursor
DEALLOCATE @cursor

5.3.2 Xut ra danh sch sinh vin ca tng lp


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'Lp: ' + @maLop + N' gm sinh vin:'
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 vin '+@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

Mn hnh s xut ra nh sau:

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

10

5.Cursor

Hnh 5. Kt qu in sinh vin ca tng lp hc

B mn HTTT, Khoa CNTT, i hc Khoa hc t nhin Tp.HCM

You might also like