>]>]
ế
ế
Tìm ki m thông tin
Tìm ki m thông tin
column,group_function(column)
tables
condition]
group_by_expression]
hoặc:
SELECT
FROM
[WHERE
[GROUP BY
[HAVING group_condition]
[ORDER BY
column];
ề
ề
ệ
ệ
ế
ế
Tìm ki m không đi u ki n
Tìm ki m không đi u ki n
[alias],...}
table(s)
SELECT
FROM
*|{[DISTINCT]
column|expression
ế
ế ề
ề t thông tin v các phòng ban?
t thông tin v các phòng ban?
Ví d 6ụVí d 6ụ : : Cho bi
Cho bi
Maphong,Tenphong, DiaChi, Tel
SELECT Maphong,Tenphong, DiaChi, Tel
SELECT
Phong
FROMFROM Phong
ho c:ặho c:ặ
*
SELECT *
SELECT
Phong
FROMFROM Phong
ộ ả
ộ ả ủ
ủ ộ c a m t b ng
ậ
thay th ế t p tên c t
c a m t b ng
t p tên c t
ộ
ậ
* * : : thay th ế
ề
ề
ế
ế
ệ
ệ
Tìm ki m không đi u ki n
Tìm ki m không đi u ki n
ế
ế
ưở
ưở
ươ
ươ
ủ
ủ
ọ
ọ
ng c a các nhân viên
ng c a các nhân viên
ng, và
ng, và
ươ
ươ
ươ
ươ
ng)?
ng)?
Ví d 7ụVí d 7ụ : : Cho bi
Cho bi
ồ
ồ
ằ
ng (b ng l
ằ
ng (b ng l
t danh sách th
t danh sách th
bao g m các thông tin mã nhân viên, h tên, l
bao g m các thông tin mã nhân viên, h tên, l
ng + 40% l
th
ng + 40% l
th
ưở
ưở
Câu l nhệ : :
Câu l nhệ
Manv, Hoten, Luong, 1.4*Luong as as Thuong
SELECT Manv, Hoten, Luong, 1.4*Luong
Thuong
SELECT
Nhanvien
FROM Nhanvien
FROM
SSau au Select
ườ
ườ
ặ
ứ
ứ
ứ
ứ
ể
ể
bt có giá tr ị NULLNULL
ứ
ứ Bi u th c và tên
ể
ể
ộ bi u th c.
ể ứ
Bi u th c và tên
bi u th c.
có th ch a m t
Select có th ch a m t
ứ
ứ
ể
ể
ộ
ể ứ
ả
ể ượ ặ
]
AsAs]
c đ t tên gi : [
ng đó có th đ
tr
ả
ể ượ ặ
c đ t tên gi : [
ng đó có th đ
tr
ặho c <‘Tên’>
ho c <‘Tên’>
Bi u th c ch a giá tr
ị NULLNULL bt có giá tr ị
Bi u th c ch a giá tr
ị
ề
ề
ế
ế
ệ
ệ
Tìm ki m không đi u ki n
Tìm ki m không đi u ki n
Ví d 8ụVí d 8ụ : : Cho bi
Cho bi
ữ
ữ
nhân viên trong c quan
nhân viên trong c quan ạ
t ế mãmã các ngo i ng mà các
các ngo i ng mà các
t ế
ạ
đãđã h c? ọ h c? ọ
ơ
ơ
Câu l nh:ệ
Câu l nh:ệ
Mann
Select Mann
Select
TDNN
FromFrom TDNN
ho cặho cặ
ệ ủ
ệ ủ ả
ả ạ
ạ ả
ả
Select Distinct
Mann
Distinct Mann
Select
TDNN
FromFrom TDNN
Distinct
ư
đ a ra b n ghi đ i di n c a nhóm b n
Distinct:: đ a ra b n ghi đ i di n c a nhóm b n
ư
ố
ghi ghi gi ng nhau
ốgi ng nhau
ề
ề
ế
ế
ệ
ệ
Tìm ki m không đi u ki n
Tìm ki m không đi u ki n
ầ
ầ ề
Ví d 9ụVí d 9ụ : : Đ a ra thông tin v 2 nhân viên đ u
Đ a ra thông tin v 2 nhân viên đ u
ề
ư
ư
ả
ả tiên trong b ng nhân viên?
tiên trong b ng nhân viên?
Câu l nh:ệ
Câu l nh:ệ
top 2*
Select top 2*
Select
NHANVIEN
FromFrom NHANVIEN
ư
ư ầ
ầ ả
ả ả
ả đ a ra b n ghi n b n ghi đ u tiên
top n:: đ a ra b n ghi n b n ghi đ u tiên
top n
ế
ế
ề
ề
ệ
ệ
Tìm ki m có đi u ki n
Tìm ki m có đi u ki n
column|expression [alias],...}
SELECT
FROM
[WHERE
*|{[DISTINCT]
table(s)
condition(s)]
Condition(s): : >>, , <<, , >=>=, , <=<=, , !=!=
ỏ ơ
ỏ ơ
(không nh h n)
!
Condition(s): andand, , oror, , notnot, ,
Các phép so sánh trong
Các phép so sánh trong Condition(s)
ơ
ớ
ho c ặho c ặ <><>, , !>!> (không l n h n),
(không l n h n),
ơ
ớ
Các phép logic trong
Các phép logic trong Condition(s):
is null
between……andand, , likelike, , inin, , is null
between
ệ
ệ
ề
ề
ấ
ấ
Truy v n có đi u ki n
Truy v n có đi u ki n
t danh sách các nhân viên làm
t danh sách các nhân viên làm Cho bi
: : Cho bi
Ví d 10ụVí d 10ụ
ệ ở
vi c
ệ ở
vi c
Câu l nh:ệ
Câu l nh:ệ
Select **
Select
Nhanvien
FromFrom Nhanvien
Maphong = ‘HCA’
WhereWhere Maphong = ‘HCA’
ố
ố ế
ế
phòng có mã s là HCA?
phòng có mã s là HCA?
ề
ề
ệ
ệ
ấ
ấ
Truy v n có đi u ki n
Truy v n có đi u ki n
ế
ế
ồ
ồ ừ
ừ t mã nhân viên, h tên, ngày
t mã nhân viên, h tên, ngày
ằ
ng n m
ằ
ng n m
2000000 đ ng đ n 3000000
2000000 đ ng đ n 3000000
(cid:0) 2000000)
2000000)
(cid:0) ọ
Ví d 11ụVí d 11ụ
Cho bi
: : Cho bi
ọ
ươ
ủ
ươ
ng c a các nhân viên có l
sinh, l
ươ
ủ
ươ
ng c a các nhân viên có l
sinh, l
ế
ả
trong kho ng t
ế
ả
trong kho ng t
đ ngồđ ngồ ??
Câu l nh:ệ
Câu l nh:ệ
Manv, Hoten, Ngaysinh, Luong
Select Manv, Hoten, Ngaysinh, Luong
Select
Nhanvien
FromFrom Nhanvien
(Luong (cid:0)
WhereWhere (Luong
and (Luong (cid:0)
and (Luong 3000000)
3000000)
ề
ề
ệ
ệ
ấ
ấ
Truy v n có đi u ki n
Truy v n có đi u ki n
ho c:ặho c:ặ
Select
Manv, Hoten, Ngaysinh, Luong
Select Manv, Hoten, Ngaysinh, Luong
Nhanvien
FromFrom Nhanvien
WhereWhere Luong Between 2000000 Luong Between 2000000 and 3000000
and 3000000
ệ
ệ
ề
ề
ấ
ấ
Truy v n có đi u ki n
Truy v n có đi u ki n
ế
ế
Ví d 12ụVí d 12ụ
Cho bi
: : Cho bi
ủ
ươ
ng c a các nhân viên có l
sinh, l
ươ
ủ
ng c a các nhân viên có l
sinh, l
ừ
ằ
t
trong kho ng
n m
ừ
ằ
t
trong kho ng
n m
2000000 đ ngồ ??
2000000 đ ngồ
Select
Manv, Hoten, Ngaysinh, Luong
Select Manv, Hoten, Ngaysinh, Luong
Nhanvien
FromFrom Nhanvien
Luong not between
WhereWhere Luong
ả
ả ọ
t mã nhân viên, h tên, ngày
ọ
t mã nhân viên, h tên, ngày
ươ
không
ng
ươ
không
ng
ế
ồ
1000000 đ ng đ n
ế
ồ
1000000 đ ng đ n
not between 1000000 1000000 and 2000000
and 2000000
ề
ề
ệ
ệ
ấ
ấ
Truy v n có đi u ki n
Truy v n có đi u ki n
ư
ư ư
ư Đ a ra danh sách các nhân viên ch a
: : Đ a ra danh sách các nhân viên ch a
ạ
ạ
Ví d 13ụVí d 13ụ
ố ệ
có s đi n tho i?
ố ệ
có s đi n tho i?
*
Select *
Nhanvien
FromFrom Nhanvien
SDT is is NullNull
WhereWhere SDT
Select
ề
ề
ệ
ệ
ấ
ấ
Truy v n có đi u ki n
Truy v n có đi u ki n
Ví d 14ụVí d 14ụ
t các nhân viên làm vi c
t các nhân viên làm vi c ệ ở
ệ ở Cho bi
: : Cho bi
ặ
ặ ế
ế
phòng có mã phòng là hca ho c KDA?
phòng có mã phòng là hca ho c KDA?
Câu l nh:ệ
Câu l nh:ệ
Select
Select
FromFrom
WhereWhere **
Nhanvien
Nhanvien
Maphong = ‘P1’ or Maphong = ‘P2’
Maphong = ‘P1’ or Maphong = ‘P2’
ho c:ặho c:ặ
Select
Select
FromFrom
WhereWhere **
Nhanvien
Nhanvien
(‘P1’, ‘P2’)
Maphong inin (‘P1’, ‘P2’)
Maphong
ề
ề
ệ
ệ
ấ
ấ
Truy v n có đi u ki n
Truy v n có đi u ki n
Ví d 15ụVí d 15ụ
ắ ầ
ắ ầ
ế
ế t danh sách các nhân viên có
t danh sách các nhân viên có
Cho bi
: : Cho bi
ằ
ằ tên b t đ u b ng ‘N’?
tên b t đ u b ng ‘N’?
Câu l nh:ệ
Câu l nh:ệ
Select
**
Select
FromFrom
Nhanvien
Nhanvien
HoTen like ‘N%’
WhereWhere HoTen like ‘N%’
ộ
ế %% (m t xâu
ộ (m t xâu
ế
trong
trong like
ự ấ
kí t
ự ấ
kí t
ộ
__ (m t kí t
(m t kí t
ộ b t kì),
b t kì),
ườ
ườ ỉ
ỉ ng ki u
ng ki u xâu kí tự
ể xâu kí tự
ể ệ
dùng các kí hi u thay th :
like dùng các kí hi u thay th :
ệ
ự ấ
b t kì)
ự ấ
b t kì)
LikeLike ch thao tác trên các tr
ch thao tác trên các tr
ắ ế ữ ệ
ắ ế ữ ệ
ấ
ấ
Truy v n có s p x p d li u
Truy v n có s p x p d li u
[ORDER BY column | expr | alias [ASC|DESC], . . .]
ề
ệ
Thêm m nh đ :
Thêm m nh đ :
ệ
ề
ng?
ng?
Ví d 16ụVí d 16ụ
ư
Hãy đ a ra danh sách nhân viên theo
: : Hãy đ a ra danh sách nhân viên theo
ư
ề
ầ ủ ươ
theo chi u tăng d n c a l
ề
ầ ủ ươ
theo chi u tăng d n c a l
Manv, Hoten, Ngaysinh, Luong
Select Manv, Hoten, Ngaysinh, Luong
Select
FromFrom NHANVIEN
NHANVIEN
Luong Asc
Order By Luong Asc
Order By
ắ ế ữ ệ
ắ ế ữ ệ
ấ
ấ
Truy v n có s p x p d li u
Truy v n có s p x p d li u
ư
ư
ầ
ầ ế
ế
ươ
ươ ụ
Hãy đ a ra danh sách nhân viên theo
Hãy đ a ra danh sách nhân viên theo
ụVí d 17:
Ví d 17:
ủ ươ
ề
ng, n u 2 nhân
ủ ươ
ề
ng, n u 2 nhân
ế
ắ
ng thì s p x p theo ngày sinh
ế
ắ
ng thì s p x p theo ngày sinh
theo chi u tăng d n c a l
theo chi u tăng d n c a l
viên có cùng l
viên có cùng l
ầ
ả
gi m d n?
ầ
ả
gi m d n?
Manv, Hoten, Ngaysinh, Luong
Select Manv, Hoten, Ngaysinh, Luong
Select
NHANVIEN
FromFrom NHANVIEN
Luong Asc, Ngaysinh Desc
Order By Luong Asc, Ngaysinh Desc
Order By
trái ph iảph iả
ứ ự ắ ế ừ trái
s p x p t
ứ ự ắ ế ừ
s p x p t th t
th t
ộ ố
ộ ố ụ
ụ M t s hàm thông d ng
M t s hàm thông d ng
ự
ự
ị
ị ủ
ủ ự
ự
ứ
ứ ả
ả th n trong b ng mã
th n trong b ng mã
ữ
ữ
ữ ườ
ữ ườ ể
ể
ể
ể ử
Các hàm x lý xâu kí t
Các hàm x lý xâu kí t
ử
ả ề
ASCII(s)
: tr v giá tr mã ASCII c a kí t
ASCII(s): tr v giá tr mã ASCII c a kí t
ả ề
ủ
ấ
bên nh t trái c a xâu
ủ
ấ
bên nh t trái c a xâu
ự
ả
Char(n)
: tr ra kí t
Char(n): tr ra kí t
ự
ả
ASCII
ASCII
ổ
Upper(s)
Upper(s): chuy n đ i xâu sang ch hoa
: chuy n đ i xâu sang ch hoa
ổ
ổ
Lower(s)
: chuy n đ i xâu sang ch th
Lower(s): chuy n đ i xâu sang ch th
ổ ng
ng
ộ ố
ộ ố ụ
ụ M t s hàm thông d ng
M t s hàm thông d ng
(ti p)
(ti p)
ủ
ủ
ự ắ
ự ắ tr ng bên trái
tr ng bên trái
RTRIM(s)
ạ ỏ
ạ ỏ ự ắ
ự ắ ả
tr ng bên ph i
ả
tr ng bên ph i
Left(s, n)
ự
ự (xâu con) phía bên
(xâu con) phía bên
Right(s, n)
ự
ự ự ế
ử
Các hàm x lý xâu kí t
Các hàm x lý xâu kí t
ự ế
ử
++: phép toán ghép các xâu
: phép toán ghép các xâu
ả ề ộ
Len(s)
: tr v đ dài c a xâu
Len(s): tr v đ dài c a xâu
ả ề ộ
ỏ
ạ
LTRIM(s)
LTRIM(s): lo i b các kí t
: lo i b các kí t
ỏ
ạ
xâuxâu
: lo i b các kí t
RTRIM(s): lo i b các kí t
xâuxâu
ả ề
: tr v n kí t
Left(s, n): tr v n kí t
ả ề
ấ
trái nh t xâu s
ấ
trái nh t xâu s
ả ề
: tr v n kí t
Right(s, n): tr v n kí t
ả ề (xâu con) phía bên
(xâu con) phía bên
ả ấ ph i nh t xâu s ả ấ ph i nh t xâu s
ộ ố
ộ ố ụ
ụ M t s hàm thông d ng
M t s hàm thông d ng
ự
ự
ắ ầ ừ
ắ ầ ừ
ứ
ứ
ế
ế
ấ
ấ
ứ
ứ ự ắ ầ
b t đ u
ự ắ ầ
b t đ u
ế
v trí th m trong xâu s và thay th vào đó
ế
v trí th m trong xâu s và thay th vào đó
ượ ủ
ượ ủ ả
ả ự ế
ử
Các hàm x lý xâu kí t
(ti p)
Các hàm x lý xâu kí t
ự ế
ử
(ti p)
ả ề
SubString(s, m ,n)
: tr v xâu con dài n kí t
SubString(s, m ,n): tr v xâu con dài n kí t
ả ề
ủ
ví trí th m
c a xâu s b t đ u t
ủ
c a xâu s b t đ u t
ví trí th m
Replace(s, s1, s2)
Replace(s, s1, s2): thay th các xâu con s1
: thay th các xâu con s1
ằ
ệ
xu t hi n trong xâu s b ng xâu s2
ằ
ệ
xu t hi n trong xâu s b ng xâu s2
Stuff (s, m, n, s1)
: xóa xâu con n kí t
Stuff (s, m, n, s1): xóa xâu con n kí t
ừ ị
t
ừ ị
t
xâu s1
xâu s1
ả ề
Reverse(s)
Reverse(s): tr v xâu đ o ng
: tr v xâu đ o ng
ả ề c c a xâu s
c c a xâu s
á tr ị
á tr ị
Các hàm ngày tháng
Các hàm ngày tháng
ả ề
ủ ệ ố
Getdate()
: tr v ngày tháng năm c a h th ng
Getdate(): tr v ngày tháng năm c a h th ng
ả ề
ủ ệ ố
ề
ả
ố
DatePart(tham s datepart,date)
: tr v gi
DatePart(tham s datepart,date)
ề
ả
ố
: tr v gi
á tr ị date
aủaủ gi giá tr ị
ành ph n cầph n cầ
date
nguyên là th thành
nguyên là
ố ủ
Các tham s c a datepart:
Các tham s c a datepart:
ố ủ
::
: :
::
::
::
WeekWeek
qq,qqq,q
yy, yyyy
yy, yyyy
mm, mmm, m
dy,ydy,y
dd,ddd,d
wk, ww
wk, ww
dwdw
hhhh
mi,nmi,n
ss,sss,s
msms
::
: :
::
::
::
Quarter
Quarter
YearYear
MonthMonth
Dayofyear
Dayofyear
DayDay
::
Weekday
Weekday
HourHour
MinuteMinute
Second
Second
Milisecond
Milisecond
ộ ố
ộ ố ụ
ụ M t s hàm thông d ng
M t s hàm thông d ng
ộ ố
ộ ố ụ
ụ M t s hàm thông d ng
M t s hàm thông d ng
ả
tr
ả
tr :
date1,date2):
date1,date2)
ộ ố
ộ ố
Dateadd(datepart,n,date):
ả ề
ả ề
ủ
ủ
ị ố
ị ố
ủ
ủ
ả ề
ả ề
ủ
ủ
ả
ả ữ
ữ
Các hàm ngày tháng (ti p)ế
Các hàm ngày tháng (ti p)ế
ề
DateDiff(datepart,
v
DateDiff(datepart,
ề
v
kho ng ngày, tháng, năm, . . . gi a 2 ngày
kho ng ngày, tháng, năm, . . . gi a 2 ngày
date1 và date2
date1 và date2
Dateadd(datepart,n,date): ththêm m t s n datepart
êm m t s n datepart
vào date
vào date
ị ố
Day(d):
v giá tr s nguyên c a ngày
Day(d): trtr v giá tr s nguyên c a ngày
ị ố
ả ề
Month(d):
Month(d): trtr v giá tr s nguyên c a tháng
v giá tr s nguyên c a tháng
ả ề
ị ố
Year(d):
v giá tr s nguyên c a năm
Year(d): trtr v giá tr s nguyên c a năm
ị ố
ộ ố
ộ ố ụ
ụ M t s hàm thông d ng
M t s hàm thông d ng
Các hàm toán h c (ti p)
Các hàm toán h c (ti p)
Square(n)
Square(n)
Sqrt(n)
Sqrt(n)
Round(f,n)
Round(f,n)
Power(f,n)
Power(f,n)
Pi()Pi()
Sign(f)
Sign(f)
ọ
ọ ế
ế
ộ ố
ộ ố ụ
ụ M t s hàm thông d ng
M t s hàm thông d ng
ể
ể
ổ
Các hàm chuy n đ i
Các hàm chuy n đ i
ổ
Convert(datatype[(size) ], exp [,style])
Convert(datatype[(size) ], exp [,style])
Các hàm nh
ộ ố
ộ ố ụ
ụ M t s hàm thông d ng
M t s hàm thông d ng
ề
ề
ể
ể ứ Hàm đ m s
ứ
ố
ế
Hàm đ m s
ế
ố
ữ ệ ::
Các hàm nhóm d li u
óm d li u
ữ ệ
Count ([All | Distinct] Bi u th c):
Count ([All | Distinct] Bi u th c):
ộ ỏ
ệ
ượ
ng các b th a mãn đi u ki n
l
ộ ỏ
ệ
ượ
ng các b th a mãn đi u ki n
l
ứ ):): Hàm tính
ể
ứ
Max (Bi u th c), Min (Bi u th c
Max (Bi u th c), Min (Bi u th c
ứ
ứ
ể
Hàm tính
ị ượ
ấ ủ ậ
ỏ
ấ
ị ớ
c tính
giá tr l n nh t, nh nh t c a t p giá tr đ
ị ượ
ấ ủ ậ
ỏ
ấ
ị ớ
c tính
giá tr l n nh t, nh nh t c a t p giá tr đ
ứ
ể
theo bi u th c
ứ
ể
theo bi u th c
ể
ể
ộ ố
ộ ố
ụ
ụ
M t s hàm thông d ng
M t s hàm thông d ng
ể
ể
ứ
ứ
[All | Distinct] Bi u th c ki u s ):
ể ố Hàm Hàm
ứ
ể
Sum ([All | Distinct]
Bi u th c ki u s ):
ể ố
ứ
ể
Sum (
ị ượ
ủ ậ
ổ
c tính theo bi u
tính t ng c a t p giá tr đ
ị ượ
ổ
ủ ậ
tính t ng c a t p giá tr đ
c tính theo bi u
th c ứth c ứ
[All | Distinct] Bi u th c ki u s ):
ố Hàm Hàm
ể
Avg (Avg ([All | Distinct]
Bi u th c ki u s ):
ố
ể
ộ
ủ ậ
ị
tính giá tr trung bình c a t p giá tr thu c tính
ộ
ủ ậ
ị
tính giá tr trung bình c a t p giá tr thu c tính
ể ố
ki u s :
ể ố
ki u s :
ể
ể
ị
ị
ộ ố
ộ ố
ụ
ụ
M t s hàm thông d ng
M t s hàm thông d ng
ủ
ủ ế ươ
t l
ế ươ
t l ng trung bình c a phòng
ng trung bình c a phòng Ví d 18ụVí d 18ụ Cho bi
: : Cho bi
có mã KDA?
có mã KDA?
Avg(Luong) as TBluong
Select Avg(Luong) as TBluong
Select
NHANVIEN
FromFrom NHANVIEN
Maphong= ’KDA’
WhereWhere Maphong= ’KDA’
ộ ố
ộ ố
ụ
ụ
M t s hàm thông d ng
M t s hàm thông d ng
ế ổ
ế ổ ố
ố t t ng s nhân viên và trung
t t ng s nhân viên và trung
Ví d 19ụVí d 19ụ
ươ
bình l
ươ
bình l Cho bi
: : Cho bi
ủ ơ
ng c a c quan?
ủ ơ
ng c a c quan?
Select count(*) as TongNv, Avg(Luong) as TBluong
count(*) as TongNv, Avg(Luong) as TBluong
Select
NHANVIEN
FromFrom NHANVIEN
ữ ệ
ữ ệ
ấ
ấ
Truy v n nhóm d li u
Truy v n nhóm d li u
NHANVIEN
2250000
2280000
Tính trung
bình lương
cho mỗi
phòng trong
bảng
NHANVIEN.
2500000
ữ ệ
ữ ệ
ấ
ấ
Truy v n nhóm d li u
Truy v n nhóm d li u
column, group_function(column)
tables
condition]
SELECT
FROM
[WHERE
[GROUP BY group_by_expression
[HAVING group_condition]]
[ORDER BY column];
ữ ệ
ữ ệ
ấ
ấ
Truy v n nhóm d li u
Truy v n nhóm d li u
ế
ế ươ
ươ ỗ
ủ
ng c a m i
ỗ
ủ
ng c a m i Cho bi
Cho bi t trung bình l
t trung bình l
Ví d 20:ụVí d 20:ụ
phòng?
phòng?
Maphong, avg(Luong) as TBLuong
Select Maphong, avg(Luong) as TBLuong
Select
NHANVIEN
FromFrom NHANVIEN
Maphong
GroupGroup ByBy Maphong
ữ ệ
ữ ệ
ấ
ấ
Truy v n nhóm d li u
Truy v n nhóm d li u
ế
ế t các phòng có trung bình
t các phòng có trung bình
Ví d 21:ụVí d 21:ụ
Cho bi
Cho bi
ơ
ớ
ươ
ng l n h n 2250000?
l
ơ
ớ
ươ
ng l n h n 2250000?
l
Maphong, avg(Luong) as TBLuong
Select
Maphong, avg(Luong) as TBLuong
Select
NHANVIEN
FromFrom
NHANVIEN
Maphong
GroupGroup ByBy Maphong
avg(Luong) >=2250000
Having
avg(Luong) >=2250000
Having
ữ ệ
ữ ệ
ấ
ấ
Truy v n nhóm d li u
Truy v n nhóm d li u
ặ
ặ
ộ
ộ
ấ ả
ấ ả
ằ
ằ
ứ
ứ
ữ ệ
ữ ệ
ề
ề
ả
ả
ệ
ứ
ứ
ệ
ệ
ấ
ấ
ặ
ặ
ế
ế
ả
ả
ấ
ấ
ể
ể
ệ
ệ
t ph i xu t hi n sau SELECT
t ph i xu t hi n sau SELECT
ả ặ
ả ặ
ặ
ặ
ChChú ýú ý::
TT t c các c t ho c bi u th c sau SELECT n u
ế
ể
ế
ể
t c các c t ho c bi u th c sau SELECT n u
ấ
ấ
không n m trong hàm mhóm d li u đ u ph i xu t
không n m trong hàm mhóm d li u đ u ph i xu t
ệhi n sau GROUP BY
hi n sau GROUP BY
ộ
Các c t ho c bi u th c xu t hi n sau GROUP BY
ộ
Các c t ho c bi u th c xu t hi n sau GROUP BY
ấ
ấ
không nh t thi
không nh t thi
ữ ệ
ệ
ề
Các đi u ki n nhóm d li u ph i đ t sau HAVING
ữ ệ
ệ
ề
Các đi u ki n nhóm d li u ph i đ t sau HAVING
(không đ t sau WHERE)
(không đ t sau WHERE)
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
ấ
ấ
ự
ự
ạ
ạ
ế
ế
ế
ế
ế
ế
ế
Các lo i truy v n liên k t:
Các lo i truy v n liên k t:
ế
Liên k t trong (inner join)
Liên k t trong (inner join)
Liên k t ngoài (outer join)
Liên k t ngoài (outer join)
Liên k t chéo (cross join)
Liên k t chéo (cross join)
ế
T liên k t (self_join)
T liên k t (self_join)
ế
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
ấ
ấ
[alias],...}
FROM table1, table2
WHERE table1.col1 table2.col2
condition(s)]
[and
[ORDER BY column asc|desc, . . .];
Ho c:ặ
ế
Truy v n liên k t trong (inner join):
Truy v n liên k t trong (inner join):
ế
SELECT *|{[DISTINCT] column|expression
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
SELECT *|{[DISTINCT] column|expression
[alias],...}
table1.col1 table2.col2
condition(s)]
ả
ả
ộ
ộ
FROM table1
INNER JOIN table2
ON
[WHERE
[ORDER BY column asc|desc, . . .];
Tr ra các b n ghi c a hai b ng mà giá tr
ị
ủ
ả
ả
r ra các b n ghi c a hai b ng mà giá tr
ả
ả
ị
ủ
ấ
ế ượ ớ
c v i ít nh t m t giá
ế ượ ớ
ấ
c v i ít nh t m t giá
ủ
c a col1 liên k t đ
ủ
c a col1 liên k t đ
ị ở
ị ởtr
tr
col2
col2
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
ớ
ớ ỗ
ỗ ế
ế : V i m i nhân viên, cho bi
: V i m i nhân viên, cho bi
Ví d 22ụVí d 22ụ
t mã nhân
t mã nhân
ọ
ọ
viên, h tên, mã phòng và tên phòng h làm
ọ
ọ
viên, h tên, mã phòng và tên phòng h làm
vi c?ệvi c?ệ
manv, hoten, nhanvien.maphong,
Select manv, hoten, nhanvien.maphong,
Select
tenphong
tenphong
Phong, nhanvien
FromFrom Phong, nhanvien
phong.maphong=nhanvien.maphong
WhereWhere phong.maphong=nhanvien.maphong
Ho c:ặHo c:ặ
nv.maphong=p.maphong nv.maphong=p.maphong manv, hoten, nv.maphong, tenphong
Select manv, hoten, nv.maphong, tenphong
Select
nhanvien nv
FromFrom nhanvien nv
phong p
Inner join phong p
Inner join
OnOn
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
…
…
…
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
ỗ
ỗ
ớ
ớ
ế
ế
t các
t các
ọ
ọ
ữ
ữ
ạ
ạ
ộ
ộ
Ví d 23ụVí d 23ụ
: V i m i nhân viên (mã nhân viên, h tên) cho bi
: V i m i nhân viên (mã nhân viên, h tên) cho bi
ọ
ữ
ạ
ngo i ng mà nhân viên đó h c (tên ngo i ng , trình đ )?
ọ
ữ
ạ
ngo i ng mà nhân viên đó h c (tên ngo i ng , trình đ )?
manv, hoten, tennn,tdo
Select manv, hoten, tennn,tdo
Select
nhanvien nv, tdnn td, dmnn dm
FromFrom nhanvien nv, tdnn td, dmnn dm
nv.manv =td.manv and dm.mann = td.mann
WhereWhere nv.manv =td.manv and dm.mann = td.mann
Ho c:ặHo c:ặ
Select manv, hoten, tennn,tdo
manv, hoten, tennn,tdo
Select
nhanvien nv
FromFrom
nhanvien nv
tdnn td
Inner join tdnn td
Inner join
OnOn
nv.manv =td.manv
nv.manv =td.manv
dmnn dm
Inner join dmnn dm
Inner join
dm.mann = td.mann
dm.mann = td.mann
OnOn
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
table1.col1 table2.col2
Truy v n liên k t ngoài:
Truy v n liên k t ngoài:
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table1
LEFT| RIGHT| FULL OUTER JOIN table2
ON
condition(s)]
[WHERE
[ORDER BY column(s)];
ấ
ấ ế
ế
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
ấ ả
ấ ả
t c các nhân
t c các nhân
ề
ề
ư ở
ư ở
ủ
ủ
phòng
phòng
nv.maphong = p.maphong
ư
ụ
Ví d 24:
Đ a ra danh sách t
ụVí d 24:
ư
Đ a ra danh sách t
ớ
viên cùng v i thông tin v phòng ban c a
ớ
viên cùng v i thông tin v phòng ban c a
ọ ể ả
h (k c các nhân viên ch a
ọ ể ả
h (k c các nhân viên ch a
nào)?
nào)?
SELECT *
FROM Nhanvien nv
LEFT OUTER JOIN phong p
ON
và
nhanvien và
ế ớ
ế ớ
Tr ra t
ả
ấ ả
ả
ủ nhanvien
t c các b n ghi c a
r ra t
ấ ả
ả
ả
ủ
t c các b n ghi c a
ả
ỉ
phong liên k t v i ít
liên k t v i ít
ch các b n ghi trong
ỉ
ả
phong
ch các b n ghi trong
ả
ộ ả
ấ
nhanvien..
nh t m t b n ghi bên b ng
ả
ộ ả
ấ
nhanvien
nh t m t b n ghi bên b ng
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
ư
ư
ấ ả
ấ ả
t c các
t c các
ớ
ớ
Đ a ra danh sách t
Đ a ra danh sách t
ề
ề
ể ả
ể ả
ư
ư
Ví d 25:
ụ
ụVí d 25:
phòng cùng v i thông tin v các nhân viên
phòng cùng v i thông tin v các nhân viên
ủ
c a các phòng (k c các phòng ch a có
ủ
c a các phòng (k c các phòng ch a có
nhân viên nào)?
nhân viên nào)?
SELECT *
FROM nhanvien nv
RIGHT OUTER JOIN phong p
ON
nv.maphong = p.maphong
ủ phong
ủ ỉ
và ch các
phong và ch các
ỉ
Tr ra t
ả
ả
ấ ả
r ra t
t c các b n ghi c a
ả
ả
ấ ả
t c các b n ghi c a
ớ
ả
nhanvien..
b n ghi so kh p trong
ớ
ả
nhanvien
b n ghi so kh p trong
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
nv.maphong = p.maphong
ụ
Ví d 26:
ụVí d 26:
SELECT *
FROM nhanvien nv
FULL OUTER JOIN phong p
ON
K t h p c a
ế ợ ủ right và left outer join
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
ấ
ấ
ủ ả c a hai b ng ế
Truy v n liên k t chéo (cross join):
Truy v n liên k t chéo (cross join):
ế
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table1
CROSS JOIN table2
condition(s)]
[WHERE
[ORDER BY column(s)];
Tr ra ả
tích đ cácề
ấ
ấ
ế
ế
Truy v n có liên k t
Truy v n có liên k t
ộ ả
ộ ả liên k t (self_join):
liên k t (self_join):
ế ớ
ế ớ ế
ế
ạ
ạ ấ
là truy v n liên
ấ
là truy v n liên
i liên k t v i chính nó
i liên k t v i chính nó
ấ ự
Truy v n t
Truy v n t
ấ ự
ế
k t mà m t b ng l
ế
k t mà m t b ng l
ụ ụVí d 27: Dua ra nhan vien co luong lon hon luong
Ví d 27: Dua ra nhan vien co luong lon hon luong
mot nhan vien nao do cung phong
mot nhan vien nao do cung phong
Select
from
inner join
on
and
Ộ Ữ Ệ
Ộ Ữ Ệ
ÀNG BU C D LI U (CONSTRAINS)
RRÀNG BU C D LI U (CONSTRAINS)
ổ ữ ệ ủ ả
ổ ữ ệ ủ ả
ậ
ậ
ậ
ậ
CCác thao tác làm bi n đ i d li u c a b ng: c p nh t,
ác thao tác làm bi n đ i d li u c a b ng: c p nh t,
ả
ả
ế
ế
ả
ả
thêm b n ghi, xóa b n ghi.
thêm b n ghi, xóa b n ghi.
ủ
ủ
ữ ệ
ữ ệ
ổ
ổ
ả
ả
ả
ả
ự ộ
ự ộ
đ ng đ
đ ng đ
ữ ệ
ữ ệ
ế
ế
ệ
ệ
ậ
ậ
ỗ
ỗ
ệ
ệ
ể
ể
ộ
ộ
DD li u c a m t s b ng khi có nh ng thay đ i ph i
ộ ố ả
ả
ữ
li u c a m t s b ng khi có nh ng thay đ i ph i
ộ ố ả
ả
ữ
ộ ố quy lu tậ
ữ
quy lu tậ nào đó nh m đ m b o d
ằ
tuân theo m t s
nào đó nh m đ m b o d
ộ ố
ằ
ữ
tuân theo m t s
ồ ạ
ấ
li u đang t n t
i trong CSDL luôn nh t quán. Các quy
ồ ạ
ấ
li u đang t n t
i trong CSDL luôn nh t quán. Các quy
ượ ọ
ộ ữ ệ ..
c g i là các
lu t đó đ
ràng bu c d li u
ượ ọ
ộ ữ ệ
c g i là các
lu t đó đ
ràng bu c d li u
ổ ữ
ộ
ả
M i khi có m t thao tác nào đó x y ra làm thay đ i d
M i khi có m t thao tác nào đó x y ra làm thay đ i d
ộ
ổ ữ
ả
ượ
ẽ ượ t
ộ
ấ ả
c
t
c
t c các ràng bu c s đ
li u thì t
ộ
ượ
ẽ ượ
ấ ả
c
t c các ràng bu c s đ
li u thì t
c
ỏ
ớ
ạ . N u d li u m i không th a mãn các ràng
. N u d li u m i không th a mãn các ràng
i
ki m tra l
ỏ
ớ
ạ
i
ki m tra l
ẽ ả ề ộ thông báo l
thông báo l
bu c thì SQL server s tr v m t
ẽ ả ề ộ
bu c thì SQL server s tr v m t
iỗ ..
iỗ
Ộ Ữ Ệ
Ộ Ữ Ệ
ÀNG BU C D LI U (CONSTRAINS)
RRÀNG BU C D LI U (CONSTRAINS)
ị
ị
ộ
ộ
ề
ề
ộ
ộ
ị
ị
ể
ể
ỉ
ỉ
ẹ
ẹ
ế
ế
ệ
ệ
ủ ả
ủ ả
ả
ả
ệ ữ
ệ ữ
ủ
ủ
ả
ả
ố
ố
CCác lo i ràng bu c
ộ
ạ
ác lo i ràng bu c
ạ
ộ
RRàng bu c khai báo:
ộ
àng bu c khai báo:
ộ
ẽ
ị
ề
ộ
ràng bu c c t (mi n giá tr ): xác đ nh mi n giá tr mà thu c tính s
ràng bu c c t (mi n giá tr ): xác đ nh mi n giá tr mà thu c tính s
ị
ề
ộ
ẽ
ậ ượ
nh n đ
c.
ậ ượ
nh n đ
c.
ự
ẹ ủ
ộ ề
ràng bu c v tính toàn v n c a th c th : ch rõ khóa c a b ng
ràng bu c v tính toàn v n c a th c th : ch rõ khóa c a b ng
ự
ẹ ủ
ộ ề
ố
ế
ộ
ràng bu c toàn v n tham chi u: liên quan đ n vi c qu n lý các m i
ràng bu c toàn v n tham chi u: liên quan đ n vi c qu n lý các m i
ố
ế
ộ
ả
ệ ữ
quan h gi a các b n ghi c a hai b ng (m i quan h gi a khóa chính
ả
ệ ữ
quan h gi a các b n ghi c a hai b ng (m i quan h gi a khóa chính
và khóa ph ).ụ
và khóa ph ).ụ
ộ
ộ
ủ
ủ
ứ ạ
ứ ạ
ộ
ủ
ộ
ủ
ự
ự
ạ
ạ
ổ
ổ
ả
ả
ệ
ệ
ả
ả
ậ
ậ
ộ ả s ự s ự
Ràng bu c ph c t p: s thay đ i DL c a m t b ng
Ràng bu c ph c t p: s thay đ i DL c a m t b ng
ộ ả
ự
ả
ổ
thay đ i DL c a m t lo t các b ng khác mà ph i th c hi n
ổ
ự
ả
thay đ i DL c a m t lo t các b ng khác mà ph i th c hi n
ộ
theo m t gi
ộ
theo m t gi
i thu t (trigger, store procedure).
i thu t (trigger, store procedure).
Ộ Ữ Ệ
Ộ Ữ Ệ
ÀNG BU C D LI U (CONSTRAINS)
RRÀNG BU C D LI U (CONSTRAINS)
ề
ề
ệ
ệ
ứ
ứ
ị
ị
M cặM cặ đ nh khi khai báo c t là Null.
đ nh khi khai báo c t là Null.
ị
ị
ộ
ộ
ớ ả
ớ ả
ượ
ượ
ng h p thêm m i b n ghi.
ng h p thêm m i b n ghi.
ậ
ậ
ị
ị
ị ặ ị
ị ặ ị
ộ
ộ
DDefault : đ t giá tr m c đ nh cho thu c tính
ị ặ ị
ặ
efault : đ t giá tr m c đ nh cho thu c tính
ị ặ ị
ặ
ợ
ườ
Đ c dùng trong tr
Đ c dùng trong tr
ợ
ườ
ộ
ế
Không liên quan đ n hành đ ng nh p hay xóa.
Không liên quan đ n hành đ ng nh p hay xóa.
ộ
ế
ế
ị ặ ị
ế
ị ư
N u giá tr đ a vào khác Null thì giá tr m c đ nh b thay th ,
N u giá tr đ a vào khác Null thì giá tr m c đ nh b thay th ,
ế
ế
ị ặ ị
ị ư
ổ
ượ ạ
i thì giá tr m c đ nh không thay đ i.
c l
ng
ổ
ượ ạ
i thì giá tr m c đ nh không thay đ i.
c l
ng
a. Ra. Ràng bu c mi n giá tr
ị
ộ
àng bu c mi n giá tr
ị
ộ
Not null
Not null
NN u trong khai báo thu c tính có m nh đ Not Null thì b t
ắ
ề
ộ
ế
u trong khai báo thu c tính có m nh đ Not Null thì b t
ắ
ề
ộ
ế
ị
ả
ộ
ạ
ả
ỗ
ộ
i thu c tính đó ph i có ch a giá tr
bu c m i b n ghi t
ỗ
ộ
ạ
ả
ộ
ị
ả
i thu c tính đó ph i có ch a giá tr
bu c m i b n ghi t
ượ ể ố
c đ tr ng).
(không đ
ượ ể ố
c đ tr ng).
(không đ
Ộ Ữ Ệ
Ộ Ữ Ệ
ÀNG BU C D LI U (CONSTRAINS)
RRÀNG BU C D LI U (CONSTRAINS)
ộ ữ ệ
ộ ữ ệ
ị
ị
ấ
ấ
ặ
ặ
ả
ả
ị
ị
ự
ự
ả
ả
ể
ể
t đ t khóa chính cho b ng
t đ t khóa chính cho b ng
ậ ượ ủ
ậ ượ ủ
ớ ạ ậ
ớ ạ ậ
ộ
ộ
ộ
ộ
ị
ị
Các c t d li u tham gia vào quá trình tính toán nên cho giá
Các c t d li u tham gia vào quá trình tính toán nên cho giá
ị ặ ị
tr m c đ nh.
ị ặ ị
tr m c đ nh.
ị
ậ
ộ
Các thu c tính không ch p nh n giá tr Null nên đ t giá tr
Các thu c tính không ch p nh n giá tr Null nên đ t giá tr
ậ
ộ
ị
ặ ị
m c đ nh.
ặ ị
m c đ nh.
Unique:
Unique:
ấ
ộ
Các giá tr trong c t ph i duy nh t.
Các giá tr trong c t ph i duy nh t.
ấ
ộ
ị
Cho phép xác đ nh khóa d tuy n cho b ng.
Cho phép xác đ nh khóa d tuy n cho b ng.
ị
ả
ế ặ
Primary key: thi
Primary key: thi
ế ặ
ả
Check ():
Check ():
gi
gi
i h n t p giá tr nh n đ
i h n t p giá tr nh n đ
c c a m t thu c tính.
c c a m t thu c tính.
Ộ Ữ Ệ
Ộ Ữ Ệ
ÀNG BU C D LI U (CONSTRAINS)
RRÀNG BU C D LI U (CONSTRAINS)
char(5),
char(5),
varchar(35) constrains NN_HT_GV NOT NULL,
varchar(35) constrains NN_HT_GV NOT NULL,
varchar(3) DEFAULT ‘Nam’,
varchar(3) DEFAULT ‘Nam’,
char(2) REFERENCES KHOA(ma_khoa),
char(2) REFERENCES KHOA(ma_khoa),
bigint check(luong>=1000000),
bigint check(luong>=1000000),
varchar(15) NOT NULL
varchar(15) NOT NULL
ế
ế
ạ
ạ
Ví d : ụVí d : ụ
CREATE TABLE giang_vien(
CREATE TABLE giang_vien(
MagvMagv
Ho_ten
Ho_ten
datetime,
Ngay_sinh datetime,
Ngay_sinh
Gioi_tinh
Gioi_tinh
Ma_khoa
Ma_khoa
Luong
Luong
Trinh_do
Trinh_do
ạ ọ
CHECK(trinh_do IN (‘Đ i h c’, ‘Th c sĩ’, “Ti n sĩ”))
ạ ọ
CHECK(trinh_do IN (‘Đ i h c’, ‘Th c sĩ’, “Ti n sĩ”))
Constrains PK_GV primary key(Magv, hoten)
Constrains PK_GV primary key(Magv, hoten)
))
Ộ Ữ Ệ
Ộ Ữ Ệ
ÀNG BU C D LI U (CONSTRAINS)
RRÀNG BU C D LI U (CONSTRAINS)
ồ ạ
ồ ạ
ộ
ộ
i:
i:
ộ
ộ
ONSTRAINT <đ nh nghĩa ràng bu c>
ị
<đ nh nghĩa ràng bu c>
ị
ả
Thêm ràng bu c vào b ng đã t n t
Thêm ràng bu c vào b ng đã t n t
ả
ALTER TABLE ả
ALTER TABLE ả
ADD CONSTRAINT
ADD C
Ví d :ụVí d :ụ
giang_vien
ALTER TABLE giang_vien
ALTER TABLE
ADDADD
PRIMARY KEY(Magv)
CONSTRAINT PK PRIMARY KEY(Magv)
CONSTRAINT PK
Ộ Ữ Ệ
Ộ Ữ Ệ
ÀNG BU C D LI U (CONSTRAINS)
RRÀNG BU C D LI U (CONSTRAINS)
ả
ả
ạ ỏ
ạ ỏ
CONSTRAINT < danh sách tên ràng bu c>ộ
CONSTRAINT < danh sách tên ràng bu c>ộ
ộ
Lo i b ràng bu c trong b ng:
Lo i b ràng bu c trong b ng:
ộ
ALTER TABLE ả
ALTER TABLE ả
DROPDROP
Ví d :ụVí d :ụ
giang_vien
ALTER TABLE giang_vien
ALTER TABLE
DROPDROP
CONSTRAINT PK
CONSTRAINT PK
Ộ Ữ Ệ
Ộ Ữ Ệ
ÀNG BU C D LI U (CONSTRAINS)
RRÀNG BU C D LI U (CONSTRAINS)
ế ậ
ế ậ
ế
ế
ể
ể
ẹ
ẹ
t l p
t l p
ượ
ượ
ự
ự
ế
ế
ể
ể
c tham chi u> [()]
c tham chi u> [()]
ả
ả
ặ ượ ậ
ặ ượ ậ
ở ả
ở ả
ậ
ậ
b ng đ
b ng đ
c xóa
c xóa
c tham
c tham
ộ
ộ
ệ ữ
m i quan h gi a hai b ng
ệ ữ
m i quan h gi a hai b ng
[CONSTRAINT ]ộ
[CONSTRAINT ]ộ
[FOREIGN KEY ]ộ
[FOREIGN KEY ]ộ
ả
REFERENCES
ả
ả
óa chính b o toàn.
NO ACTION: khóa chính b o toàn.
NO ACTION: kh
b. Rb. Ràng bu c toàn v n tham chi u: dùng đ thi
àng bu c toàn v n tham chi u: dùng đ thi
ả
ố
ố
ả
Ộ Ữ Ệ
Ộ Ữ Ệ
ÀNG BU C D LI U (CONSTRAINS)
RRÀNG BU C D LI U (CONSTRAINS)
ế
ế
VVí d :ụí d :ụ
CREATE TABLE giang_vien(
CREATE TABLE giang_vien(
char(5) PRIMARY KEY,
MagvMagv
char(5) PRIMARY KEY,
varchar(35) NOT NULL,
Ho_ten
varchar(35) NOT NULL,
Ho_ten
datetime,
Ngay_sinh
datetime,
Ngay_sinh
vachar(3) DEFAULT ‘Nam’,
Gioi_tinh
vachar(3) DEFAULT ‘Nam’,
Gioi_tinh
char(2) REFERENCES KHOA(ma_khoa),
Ma_khoa
char(2) REFERENCES KHOA(ma_khoa),
Ma_khoa
bigint,
Luong
bigint,
Luong
varchar(15) NOT NULL
Trinh_do
varchar(15) NOT NULL
Trinh_do
ạ
ạ ọ
CHECK(trinh_do IN (“Đ i h c”, “Th c sĩ”, “Ti n sĩ”))
ạ
ạ ọ
CHECK(trinh_do IN (“Đ i h c”, “Th c sĩ”, “Ti n sĩ”))
))
ƯỜ
ƯỜ Ủ Ụ
Ủ Ụ
VII. TH T C TH
T C TH
VII. TH NG TRÚ
NG TRÚ
(STORE PROCEDURE)
(STORE PROCEDURE)
ế
ế
Khai b
áo bi n trong SQL server
Khai báo bi n trong SQL server
CCú pháp
ú pháp
ế
ế
ế
ế
ể
ể
ể
DECLARE @ [, @ [, @
DL>, . . .]
DL>, . . .]
Ví d :ụVí d :ụ
DECLARE @x1 char(4)
DECLARE @x1 char(4)
DECLARE @x2 int, @a float
DECLARE @x2 int, @a float
DECLARE @Tong_gia_tri numeric;
DECLARE @Tong_gia_tri numeric;
ế
ế
ứ
ứ
ế
ế
ể
ể
ị
Gán giá tr cho bi n:
ị
Gán giá tr cho bi n:
SET =
SET =
Ví d :ụVí d :ụ
SET @x1 =‘CNTT’;
SET @x1 =‘CNTT’;
SET @a = 200;
SET @a = 200;
SET @Tong_gia_tri = (SELECT sum(soluong*dongia)/1000000
SET @Tong_gia_tri = (SELECT sum(soluong*dongia)/1000000
from CPP);
from CPP);
ƯỜ
ƯỜ
Ủ Ụ
Ủ Ụ
VII. TH T C TH
T C TH
VII. TH
NG TRÚ
NG TRÚ
(STORE PROCEDURE)
(STORE PROCEDURE)
ổ
ổ
ế
ế
Print(‘T ng giá tr các chuy n hàng:’ + str(@Tong_gia_tri));
Print(‘T ng giá tr các chuy n hàng:’ + str(@Tong_gia_tri));
ị ế
In giá tr bi n:
In giá tr bi n:
ị ế
ị
ị
ế
ế
ộ
ộ
ỉ
ỉ
Chú ý: các bi n khai báo trong cùng m t bó ch có tác
Chú ý: các bi n khai báo trong cùng m t bó ch có tác
ụ
ụd ng trong bó đó.
d ng trong bó đó.
ƯỜ
ƯỜ Ủ Ụ
Ủ Ụ
VII. TH T C TH
T C TH
VII. TH NG TRÚ
NG TRÚ
ệ
ệ
ự
ự
ượ
ượ
ượ
ượ
c
c
c xây d ng t
c xây d ng t
các câu l nh TSQL và đ
các câu l nh TSQL và đ
ộ
ộ
ệ
ệ
ự
ự
ỉ ầ
ỉ ầ
ự
ự
ệ
ệ
ạ ầ
ạ ầ
ị
ị
ầ
c ch y l n đ u tiên nó s đ
ầ
c ch y l n đ u tiên nó s đ
ộ
ộ
ẽ ượ
ẽ ượ
ấ
ấ
ộ
ộ
ủ ụ ẽ
ủ ụ ẽ
ủ
ủ
ả ị
ả ị
ạ ữ
ạ ữ
ạ ạ
ạ ạ
SP SP đ
ừ
đ
ừ
ư
ưl u trú trên SQL server.
l u trú trên SQL server.
ộ
ố
Mu n th c hi n m t SP, NSD ch c n th c hi n m t
Mu n th c hi n m t SP, NSD ch c n th c hi n m t
ộ
ố
ờ ọ
i g i hàm.
l
ờ ọ
l
i g i hàm.
ượ
Khi SP đ
c biên d ch
Khi SP đ
ượ
c biên d ch
ướ
c và sinh ra m t mô hình truy v n. Mô hình
qua 5 b
ướ
c và sinh ra m t mô hình truy v n. Mô hình
qua 5 b
ẽ ượ
c đ t trong m t CSDL c a SQL server,
này s đ
ẽ ượ
c đ t trong m t CSDL c a SQL server,
này s đ
ầ
l n sau ch y l
ầ
l n sau ch y l
ặ
ặ
i th t c s không ph i d ch l
i th t c s không ph i d ch l
i n a.
i n a.
(STORE PROCEDURE)
(STORE PROCEDURE)
ƯỜ
ƯỜ Ủ Ụ
Ủ Ụ
VII. TH T C TH
T C TH
VII. TH NG TRÚ
NG TRÚ
ị
ị
ủ ụ
ủ ụ
c biên d ch th t c:
c biên d ch th t c:
ầ
ầ
c phân tích ra thành nhi u ph n
c phân tích ra thành nhi u ph n
i c a các đ i t
i c a các đ i t
ề
ề
ố ượ
ng (view, table, …) mà
ố ượ
ng (view, table, …) mà
ự ồ ạ ủ
ự ồ ạ ủ
ế ớ
i.
ế ớ
i.
ữ
ữ
ư
ư
ệ
ệ
ả
ả
ữ
ữ
ủ ụ
ủ ụ
ủ ụ
ủ ụ
ư
ư
ấ
ấ
ả
ả
ạ ầ
ạ ầ
ầ
ầ
ộ ế
ộ ế
ủ ụ
ủ ụ
ị
ị
NNăm b
ướ
ăm b
ướ
ủ ụ ượ
Th t c đ
Th t c đ
ủ ụ ượ
ể
Ki m tra s t n t
Ki m tra s t n t
ể
ủ ụ
th t c tham chi u t
ủ ụ
th t c tham chi u t
ư
ủ ụ
L u tr tên th t c vào b ng sysobject, l u tr các mã l nh
L u tr tên th t c vào b ng sysobject, l u tr các mã l nh
ư
ủ ụ
ả
ủ
c a th t c vào b ng syscomments.
ả
ủ
c a th t c vào b ng syscomments.
ủ
Sinh ra mô hình truy v n c a th t c và l u vào b ng
Sinh ra mô hình truy v n c a th t c và l u vào b ng
ủ
sysprocedure
sysprocedure
ượ
ấ ẽ ượ
ọ
Khi SP đ
Khi SP đ
c ch y l n đ u tiên, cây truy v n s đ
c đ c
ượ
ấ ẽ ượ
ọ
c đ c
c ch y l n đ u tiên, cây truy v n s đ
ạ ti
t ế
ượ ố ư
ạ
t ế ti
c t
và đ
i u thành m t k ho ch th t c và ch y
ượ ố ư
ạ
ạ
c t
và đ
i u thành m t k ho ch th t c và ch y
ỗ
ấ
ờ
ệ
ki m th i gian tái phân tích, biên d ch cây truy v n m i khi
ỗ
ấ
ờ
ệ
ki m th i gian tái phân tích, biên d ch cây truy v n m i khi
ủ ụ
ạ
ch y th t c.
ủ ụ
ạ
ch y th t c.
(STORE PROCEDURE)
(STORE PROCEDURE)
ƯỜ
ƯỜ Ủ Ụ
Ủ Ụ
VII. TH T C TH
T C TH
VII. TH NG TRÚ
NG TRÚ
ế
ế
ượ
ượ
ự
ệ
ự
ệ
ầ
ữ
ầ
ữ
ẽ ượ
ẽ ượ
i thì nó s đ
i thì nó s đ
ế
ế
Trong m
Trong m t phiên làm vi c, n u SP đ
ệ
ộ
c th c hi n,
t phiên làm vi c, n u SP đ
ộ
ệ
c th c hi n,
ớ ệ
ữ
ẽ ượ ư
c l u tr vào vùng nh đ m. Nh ng l n
nó s đ
ớ ệ
ữ
ẽ ượ ư
c l u tr vào vùng nh đ m. Nh ng l n
nó s đ
ệ ạ
ự
ọ
ượ
ế
c
c g i th c hi n l
sau n u SP đ
ệ ạ
ọ
ượ
ự
ế
c g i th c hi n l
sau n u SP đ
c
ớ ệ nâng cao hi u ệ
nâng cao hi u ệ
ừ
ự
ọ
vùng nh đ m
đ c tr c ti p ra t
ọ
ớ ệ
ự
ừ
đ c tr c ti p ra t
vùng nh đ m
ấ
ạ
ấ
su t ch y truy v n.
ấ
ạ
ấ
su t ch y truy v n.
(STORE PROCEDURE)
(STORE PROCEDURE)
ƯỜ
ƯỜ Ủ Ụ
Ủ Ụ
VII. TH T C TH
T C TH
VII. TH NG TRÚ
NG TRÚ
ạ
ạ
ể
ể
] [OUTPUT], . . .]
] [OUTPUT], . . .]
CCú pháp l nh t o SP:
ệ
ú pháp l nh t o SP:
ệ
CREATE PROC[EDURE]
CREATE PROC[EDURE]
ố
[@
ố
[@
á tr >ị
[= ị
[=
[WITH RECCOMPILE|ENCRYPTION|RECOMPILE, ENCRYPTION]
[WITH RECCOMPILE|ENCRYPTION|RECOMPILE, ENCRYPTION]
ASAS
ề
ề
ệ
ệ
ể
ể
ệ
ệ
GiGi
ị
ị
ị
ị
ủ ụ ượ
ủ ụ ượ
ố
ố
trong th t c đ
trong th t c đ
c
c
ủ ụ
ủ ụ
ả
ải thích:
i thích:
ầ
ị
=: gán giá tr ban đ u cho tham s
ầ
ị
=: gán giá tr ban đ u cho tham s
ố ở
ổ ủ
á tr thay đ i c a tham s
OUTPUT: giá tr thay đ i c a tham s
ố ở
ổ ủ
OUTPUT: gi
ư
đ a ra bên ngoài th t c.
ư
đ a ra bên ngoài th t c.
VVí dụí dụ
(STORE PROCEDURE)
(STORE PROCEDURE)
ƯỜ
ƯỜ Ủ Ụ
Ủ Ụ
VII. TH T C TH
T C TH
VII. TH NG TRÚ
NG TRÚ
ủ ụ
ủ ụ
TTh c hi n th t c:
ệ
ự
h c hi n th t c:
ự
ệ
EXEC
EXEC
ủ ụ
ổ
Thay đ i th t c
Thay đ i th t c
ủ ụ
ổ
CEDURE]] . . .
ALTER PRO[[CEDURE
. . .
ALTER PRO
óa th t củ ụ
XXóa th t củ ụ
DROP PRO[CEDURE]
DROP PRO[CEDURE]
ó th t củ ụ
BBó th t củ ụ
(STORE PROCEDURE)
(STORE PROCEDURE)
ƯỜ
ƯỜ Ủ Ụ
Ủ Ụ
VII. TH T C TH
T C TH
VII. TH NG TRÚ
NG TRÚ
ọ
ọ
ử ụ
ử ụ
trong câu l nh ệ
RECOMPILE trong câu l nh ệ
RECOMPILE
ị
ị
ỗ
ỗ
ệ
ự
đ u m i khi th c hi n
ệ
ự
đ u m i khi th c hi n
ậ
ượ ậ
ớ ủ
c c p nh t
ậ
ượ ậ
ớ ủ
c c p nh t
trong câu l nh
RECOMPILE trong câu l nh
EXEC
EXEC
ư
ư
ầ
ầ
ệ
ệ
ự
i trong l n th c thi đó và l u
ự
i trong l n th c thi đó và l u
ớ ệ
ớ ệ
ủ ụ ủ ả
ủ ụ ủ ả
S d ng tùy ch n
S d ng tùy ch n
CREATE PRO: :
CREATE PRO
ạ ừ ầ
ủ ụ ẽ ượ
Th t c s đ
i t
c biên d ch l
Th t c s đ
ạ ừ ầ
ủ ụ ẽ ượ
i t
c biên d ch l
ạ
ị
Khi biên d ch l
Khi biên d ch l
i các thông tin m i c a SP đ
ạ
ị
i các thông tin m i c a SP đ
ố ư ạ
i.
i u l
và t
ố ư ạ
i.
i u l
và t
ử ụ
ọ RECOMPILE
S d ng tùy ch n
S d ng tùy ch n
ử ụ
ọ
ạ
ị
ủ ụ ẽ ượ
Th t c s đ
Th t c s đ
c biên d ch l
ủ ụ ẽ ượ
ạ
ị
c biên d ch l
ạ ế
ớ ủ
ự
ạ
l
i k ho ch th c thi m i c a nó vào vùng nh đ m.
ự
ạ ế
ạ
ớ ủ
l
i k ho ch th c thi m i c a nó vào vùng nh đ m.
ạ ấ ả
ị
Biên d ch l
t c các th t c c a b ng:
i t
Biên d ch l
ạ ấ ả
ị
t c các th t c c a b ng:
i t
sp_recompile ả
EXEC sp_recompile ả
EXEC
(STORE PROCEDURE)
(STORE PROCEDURE)
Ủ
Ủ
ÀM C A NSD
VIII. HÀM C A NSD
VIII. H
(USER DEFINED FUNCTIONSUDFs)
(USER DEFINED FUNCTIONSUDFs)
ư
ư
ố
ố
ở
ở
ư
UDFs gi ng nh SP nh ng khác
UDFs gi ng nh SP nh ng khác
ư
ể
các đi m sau:
ể
các đi m sau:
UDF
SP
ố
ể ư
ị ủ
ộ
Có th đ a giá tr c a tham
ằ
ố
s ra ngoài b ng thu c
tính OUTPUT
ộ
ề
ị
ị
Ch tr v ki u DL giá tr
ộ ả
ị
Giá tr các tham s không
ề
ượ
c truy n ra ngoài.
đ
ị ằ
ả
Tr ra m t giá tr b ng
ệ
m nh đ RETURN
ể ả ề ộ
Có th tr v m t giá tr vô
ữ
ặ
ng ho c m t b ng d
ỉ ả ề ể
ể
ki u nguyên
ướ
h
li u.ệ
Ủ
Ủ
ÀM C A NSD
VIII. HÀM C A NSD
VIII. H
(USER DEFINED FUNCTIONSUDFs)
(USER DEFINED FUNCTIONSUDFs)
ị
ị
ng> [= ] [, . . .]])
ng> [= ] [, . . .]])
ướ
ướ
ng>|
ng>|
Cú pháp câu l nh:ệ
Cú pháp câu l nh:ệ
CREATE FUNCTION
CREATE FUNCTION
ể
ố
([@
BEGIN
BEGIN
ướ
ướ
ệ
[]
ệ
[]
ị
RETURN
ệ
ng>| ()
ệ
ng>| ()