HCSDL
1
NN
NN
CHƯƠNG
CHƯƠNG
2
2
SQL
(Structured Query Language)
HCSDL 2
NN
NN
Gi
Gi
ớ
ớ
i thi
i thi
ệ
ệ
u chung
u chung
Là ngôn ngữ chuẩn cho các CSDL quan hệ
Chuẩn ANSI SQL được công bố vào năm 1989,
1992 và 1999
Đặc điểm của SQL:
Ngôn ngữ tựa tiếng Anh
Ngôn ngữ phi thủ tục
Gồm 3 nhóm lệnh:
DDL (Data Definition Language)
DML
DML
(
(
D
D
ata
ata
M
M
anipulation
anipulation
L
L
anguage)
anguage)
DML là ngôn ngữ thao tác dữ liệu
Gồm các lệnh:
SELECT
INSERT, UPDATE, DELETE, TRUNCATE
4
HCSDL 5
NN
NN
DCL
DCL
(
(
D
D
u (Data query)
u (Data query)
Cú pháp chung của lệnh SELECT
SELECT
select_list
[ INTO
new_table
]
FROM
table_source
[WHERE
search_condition
]
[GROUP BY
group_by_expression
[ HAVING
search_condition
]]
[ORDER BY
order_expression
[ ASC | DESC ]]
6
HCSDL 7
NN
NN
Câu l
Câu l
ệ
ệ
nh truy v
Chi
ế
ế
n lư
n lư
ợ
ợ
c chung
c chung
để
để
đ
đ
á
á
nh gi
nh gi
á
á
câu truy
câu truy
v
v
ấ
ấ
n đơn gi
n đơn gi
ả
ả
SELECT [ ALL | DISTINCT ][ TOP
n
[ PERCENT ]
[ WITH TIES ] ] < select_list >
<select_list > ::=
{*
|{
table_name
|
view_name
|
table_alias
}.*
| {
column_name
|
expression
}
[[ AS ]
column_alias
]
|
column_alias
=
expression
} [ ,
n
]
9
HCSDL 10
ề
ề
SELECT
SELECT
TOP
n
[PERCENT]: chỉ có n hàng đầu tiên hay
n% của các hàng của bảng kết quả được xuất .
WITH TIES: cho phép 1 số hàng được thêm vào
bảng kết quả gốc nếu các hàng này có cùng giá
trị trong cột ORDER BY với hàng cuối cùng của n
hàng đầu tiên được xác định.
Ví dụ: liệt kê 3 hoá đơn có cước phí cao nhất
SELECT top 3 with ties OrderID, Freight
FROM Orders
Order by Freight DESC
Nếu hàng thứ tư có cùng cước phí (freight) với
hàng thứ ba trong bảng kết quả thì sao???
11
HCSDL 12
NN
NN
M
M
ệ
ệ
nh đ
nh đ
ề
ề
à
à
m
m
Ý ngh
Ý ngh
ĩ
ĩ
a
a
SUM
SUM
T
T
í
í
nh t
nh t
ổ
ổ
ng c
ng c
á
á
c s
c s
ố
ố
MIN
MIN
ả
ả
v
v
ề
ề
gi
gi
á
á
tr
tr
ị
ị
l
l
ớ
ớ
n nh
n nh
ấ
ấ
t
t
AVG
AVG
T
T
í
í
ử
ử
(not null)
(not null)
13
Được dùng để tổng kết các giá trị của 1 cột hay 1
nhóm cột bên trong 1 bảng và cho kết quả là 1 giá trị
đơn
HCSDL 14
NN
NN
V
V
í
í
d
d
ụ
ụ
c
c
á
á
c h
c h
à
à
m g
m g
ộ
Cú pháp: WHERE <search_condition>
Ví dụ:
SELECT CustomerID, CompanyName
FROM Northwind.dbo.Customers
WHERE Region = 'WA'
Dùng like , is null, is not null, between and ,
!=, >, <….
15
HCSDL 16
NN
NN
M
M
ệ
ệ
nh đ
nh đ
ề
ề
ORDER BY
ORDER BY
Xác định thứ tự của bộ kết quả
Cú pháp
[ ORDER BY {
order_by_expression
[ ASC |
DESC ] } [ ,
n
] ]
ASC (ascending) : xếp theo thứ tự tăng
bảng kết quả:
GROUP BY: tổng hợp bảng kết quả theo
nhóm bằng cách dùng các hàm gộp
COMPUTE và COMPUTE BY: mệnh đề
COMPUTE trong lệnh SELECT được dùng để
phát ra các hàng tổng hợp bằng cách dùng
hàm gộp. Mệnh đề COMPUTE BY được dùng
để tổng hợp thêm các hàng kết quả theo cột
17
HCSDL 18
NN
NN
M
M
ệ
ệ
nh đ
nh đ
ề
ề
GROUP BY
GROUP BY
Cú pháp:
[ GROUP BY [ ALL ]
group_by_expression
[
,
n
]
ALL: bảng kết quả sẽ chứa tất cả các nhóm kể cả
19
HCSDL 20
NN
NN
V
V
í
í
d
d
ụ
ụ
2
2
SELECT Type, Advance = SUM (Advance)
FROM Titles
WHERE Type IN ('business', 'mod_cook', 'trad_cook')
GROUP BY ALL Type
Type Advance
business 25125.0000
mod_cook 15000.0000
popular_comp NULL
psychology NULL
trad_cook 19000.0000
UNDECIDED NULL
(6 row(s) affected)
20
HCSDL 21
NN
ng WHERE v
ng WHERE v
à
à
HAVING
HAVING
Mệnh đề HAVING giống như mệnh đề WHERE
nhưng chỉ áp dụng cho cả nhóm trong khi mệnh
đề WHERE áp dụng cho từng hàng.
Một truy vấn có thể chứa cả mệnh đề WHERE và
mệnh đề HAVING.
Mệnh đề WHERE được áp dụng trước cho các
hàng trong bảng được truy vấn. Chỉ những hàng
nào thoả mãn điều kiện của mệnh đề WHERE mới
được nhóm dữ liệu.
Sau đómệnh đề HAVING sẽ được áp dụng cho các
nhóm. Chỉ những nhóm thỏa mãn điều kiện
HAVING mới được xuất ra bảng kết quả.
22
HCSDL 23
NN
NN
V
V
í
í
d
d
ụ
ụ
M
ệ
ệ
nh đ
nh đ
ề
ề
JOIN (k
JOIN (k
ế
ế
t n
t n
ố
ố
i c
i c
á
á
c b
c b
ả
ả
ng)
ng)
Mệnh đề join dùng để khôi phục dữ liệu từ nhiều
hơn 1 bảng
Cú pháp
SELECT column_name [,n ]
FROM table_name table_alias