SlideShare a Scribd company logo
CHƯƠNG VI:Chương 3
DML
-THAO TÁC DỮ LIỆU-
I. Tạo lập dữ liệu cho bảng
 Chèn dữ liệu
 Xem dữ liệu
 Cập nhật dữ liệu
 Xóa các dòng thỏa mãn điều kiện
 Xóa các dòng nhưng giữ nguyên cấu trúc bảng
2
1. Chèn dữ liệu
 Cú pháp:
INSERT INTO <tên bảng>(ds cột) VALUES (giá trị cần chèn
của hàng 1), (giá trị cần chèn của hàng 2), …
INSERT INTO <tên bảng> VALUES (Giá trị cần chèn của
một hàng)
INSERT <tên bảng> VALUES (Giá trị cần chèn của một
hàng)
 Chú ý:
- Nếu dữ liệu kiểu text và kiểu Date, khi chèn phải có ‘ ‘, nếu là kiểu
Nvachar thì phải có tiếp đầu ngữ N’ ’.
- Dữ liệu kiểu Date yêu cầu nhập tháng/ngày/năm hoặc
năm/tháng/ngày
- Dữ liệu dạng tự tăng thì không cần nhập.
- Với dữ liệu mặc định, nếu không thay đổi giá trị mặc định khi chèn dữ
liệu cần liệt kê danh sách các cột mà không có cột có ràng buộc mặc
3
Vd: Chèn thông tin vào bảng SINHVIEN
4Ngôn ngữ truy vấn
 insert into sinhvien (TenSV,GT,Ngaysinh, Que, Lop)
values (N'Trần Bảo Trọng‘ , 'Nam‘ , '1995/12/14', N'Hà Giang‘ ,
'L02‘), (N'Lê Thùy Dung', N'Nữ‘, '05/12/1997', N'Hà Nội','L03')
 insert into Sinhvien values (N'Lê Trường An‘ , N'Nam‘ ,
'11/20/1995‘ , N'Ninh Bình', 'L04').
 insert sinhvien values ( N'Đoàn Duy Thức ‘ , N'Nam‘ ,
'4/12/1994', N'Hà Nội', 'L01')
2. Xem d li u trên b ngữ ệ ả
SELECT * FROM <tên b ng>ả
3. C p nh t d li u:ậ ậ ữ ệ
UPDATE <Tên b ng> SET <tên c t>= <giá trả ộ ị
m i>[ WHERE < i u ki n>]ớ Đ ề ệ
4. Xóa các dòng th a mãn i u ki n:ỏ đ ề ệ
DELETE FROM table_name
WHERE <tên c t>=<giá tr >;ộ ị
5. Xóa t t c các dòng nh ng v n gi nguyên c u trúc b ng:ấ ả ư ẫ ữ ấ ả
DELETE FROM table_name;
5
6Ngôn ngữ truy vấn
7
Được sử dụng để truy xuất dữ liệu từ các dòng, các cột của một hay nhiều bảng
Thực hiện phép toán: Chọn - Chiếu- Kết nối - Tính toán cơ bản
Ngôn ngữ truy vấn
II. Mệnh đề Select..from..where
8
*Câu lệnh SELECT đầy đủ
SELECT [DISTINCT |Top n |* ] <biểu thức/ cột [AS <tên mới>],..>
[INTO <tên bảng mới>]
FROM <tên bảng> as [<bí danh>],...
[WHERE <điều kiện chọn>]
[GROUP BY < ds tên cột gom nhóm>]
[HAVING <điều kiện lọc nhóm>]
[ORDER BY <tên cột>[ASC|DESC],…];
Ngôn ngữ truy vấn
9
 Truy vấn có ba loại:
- Truy vấn trên một bảng
- Truy vấn trên nhiều bảng
- Truy vấn lồng
Ngôn ngữ truy vấn
10
1. Truy vấn trên một bảng
 a. Truy v n n gi n:ấ đơ ả
 <danh sách các c t>ộ
- Tên các thu c tính (c t) s c hi n th trong k t qu truy v n.ộ ộ ẽđượ ể ị ế ả ấ
 <danh sách các b ng>ả
- Tên các b ng liên quan l y k t quả để ấ ế ả
 <bi u th c i u ki n>ể ứ đ ề ệ
- là i u ki n a vào ch n l c d li u, th ng g m:đ ề ệ đư để ọ ọ ữ ệ ườ ồ
 Các phép toán so sánh: < , > , ≤ , ≥ , ≠ , =
 Các phép toán logic: AND, OR, và NOT
 Các t khóa: BETWEEN … AND, IN, EXISTS, LIKE…ừ
SELECT <danh sách các cột>
FROM <danh sách các bảng>
[WHERE <biểu thức điều kiện>]
Ngôn ngữ truy vấn
11
SELECT <danh sách các
cột>
FROM <danh sách các bảng>
WHERE <điều kiện>
σ
π
×
SELECT L
FROM R
WHERE C
πL (σC (R))
 SQL và ĐSQH
Ngôn ngữ truy vấn
12
Ví dụ
 Ví dụ 1: Cho danh sách sinh viên gồm Mã SV, Họ tên, Ngày sinh của
tất cả các sinh viên
Select MaSV, TenSV, Ngaysinh
from Sinhvien
 Ví dụ 2: Cho danh sách sinh viên nữ thuộc lớp L02
Select *
From Sinhvien
Where (GT=N'Nữ') and (Lop='L02‘)
 Ví dụ 3: Thêm định danh cho bảng và cho cột (sử dụng từ khóa as)
select sv.MaSV, TenSV as 'Tên Sinh Viên'
from Sinhvien as sv
/* sau khi định danh cho bảng thì từ đó sử dụng tên định danh*/
Ngôn ngữ truy vấn
 Ví dụ 4: Xử lý dữ liệu kiểu chuỗi dùng Like hoặc not like để
tìm chuỗi gần đúng
%: Thay thế 1 chuỗi
-: thay thế 1 ký tự
 VD 4.1: Cho danh sách các sinh viên có tên là ‘Nga’
select *
from sinhvien
where TenSV like N'% Nga'
 VD 4.2: Cho danh sách những sinh viên họ Trần
select *
from sinhvien
where TenSV like N'Trần %'
13Ngôn ngữ truy vấn
 Ví dụ 5: Sử dụng BETWEEN <GT1> AND <GT2> để lấy
những bản ghi thỏa mãn nằm giữa GT1 và GT2.
Cho danh sách gồm mã sinh viên, ma môn học của sinh viên có
điểm từ 5 đến 7
select MaSv, MaMH
from ketqua
where diem between 5 and 7
 Note: Not Between .. and … có ý nghĩa ngược lại.
14Ngôn ngữ truy vấn
 Ví dụ 6: Sử dụng NULL/NOT NULL cho các trường hợp sau:
- Không biết - không xác định (value unknown)
- Không thể áp dụng (value inapplicable)
- Không tồn tại (value withheld)
 VD: Cho danh sách gồm Mã Sinh viên và mã môn học của
sinh viên không có điểm thi
select MaSV, MaMH
from ketqua
where Diem is Null
15Ngôn ngữ truy vấn
 Ví dụ 7: Sử dụng in: Cho danh sách các sinh viên có quê ở
Hà Nội hoặc Phú Thọ
Select *
From Sinhvien
where que in (N'Hà nội', N'Phú Thọ')
 Ví dụ 8: Sử dụng các toán tử
- Distinct : loại bỏ các dòng dữ liệu trùng
- Top n : lấy n dòng đầu tiên
 VD 8.1: Liệt kê danh sách các tỉnh có sinh viên theo học tại
trường
select distinct Que
from Sinhvien
16Ngôn ngữ truy vấn
 VD 8.2: Cho thông tin của hai sinh viên đầu tiên trong danh
sách sinh viên
select top (2) MaSV, TenSV,Que
from Sinhvien
17Ngôn ngữ truy vấn
Bài tập 1
 Bảng KHACHHANG( MK, TenK, DChi, SoDT )
 Bảng BAOCHI( MB, TenBao, Gia)
 Bảng DATBAO( MK, MB, NgayDat, SoLuong)
Viết câu lệnh SQL các truy vấn thực hiện các yêu cầu sau:
1. Cho biết tên và thành tiền đặt mua báo của khách hàng
tương ứng với từng ngày đặt
2. Cho biết họ tên – địa chỉ của khách hàng đặt mua báo có tên
Nhân Dân trong năm 2014
3. Thông tin về các loại báo khách hàng đã đặt mua trong năm
2000.
4. Cho thông tin của báo chí có giá đắt nhất
19
b. Hàm kết hợp
 Được sử dụng để tính giá trị thống kê trên toàn bảng hoặc trên
mỗi nhóm dữ liệu
 Các hàm cơ bản:
- Sum( [All | Distinct] biểu-thức), Avg( [All | Distinct] biểu-thức)
- Count( [All | Distinct] biểu-thức) : đếm số dòng khác Null
trong cột, biểu thức.
- Count(*) : đếm số dòng được chọn trong bảng, kể cả Null
- Max( biểu-thức ), Min( biểu-thức )
 Các hàm thực hiện tính toán trên toàn bộ dữ liệu, bỏ bớt giá trị
trùng nhau thêm từ distinct
Ngôn ngữ truy vấn 20
21
Ví dụ 9:
 Tìm tổng lương, lương cao nhất, lương thấp nhất và lương
trung bình của các nhân viên
 NHANVIEN(MaNV, TenNV, GT, NS, DChi, Luong, MaPB)
SELECT sum(Luong) AS [Tổng lương] ,
max(Luong) AS [Lương cao nhất] ,
min(Luong) AS [Lương thấp nhất] ,
avg(Luong) AS [Lương trung bình]
FROM NhanVien
LUONG
3.000.000
2.500.000
2.500.000
4.000.000
Tổng lương Lương cao nhất Lương thấp nhất Lương trung bình
12.000.00
0
3.000.0002.500.0004.000.000
Ngôn ngữ truy vấn
22
Ví dụ 10:
SELECT sum(distinct Luong) AS [Tổng lương]
FROM NhanVien
LUONG
3.000.000
2.500.000
2.500.000
4.000.000
Ngôn ngữ truy vấn
23
 Ví dụ 11: Cho biết số lượng nhân viên của phòng 5
 NHANVIEN(MaNV, TenNV, GT, NS, DChi, Luong, MaPB)
SELECT count(MNV) AS [Số nhân viên]
FROM NhanVien
WHERE MaPB = 5
Ngôn ngữ truy vấn
24
c. Mệnh đề GROUP BY
 Để thực hiện gom nhóm các bộ theo một tiêu chí xác định
để thực hiện tính toán
 Cú pháp
 Sau khi gom nhóm
- Mỗi nhóm các bộ sẽ có cùng giá trị tại các thuộc tính gom nhóm
 CSDL gồm:
- NHANVIEN(MaNV, TenNV, GT, NS, DChi, Luong, MaPB)
- PHONG(MaP, TenP, DIADIEM)
- DU_An(MaDA, TenDA, DiaDiem, MAPB)
SELECT <DS cột gom nhóm>, <Hàm tính toán>
FROM <danh sách các bảng>
[WHERE <biểu thức điều kiện>]
GROUP BY <DS cột gom nhóm>
HAVING <điều kiện tính toán nhóm>
Ngôn ngữ truy vấn
25
Ví dụ 12:
 Với mỗi phòng, cho biết số dự án mà phòng đó điều phối
MaPB So du an
5
4
1
3
2
1
SELECT MaPB, count (Ma_DuAn) AS [So du an]
FROM DUAN
GROUP BY MaPB
Kết quả:
Cột gom nhóm [Group By (MaPB)]Cột tính toán [count (Ma_DuAn)]
X
Y
Z
1
2
3
Da Nang
Chu Lai
Hue
5
5
5
Tin học hóa
Phúc lợi
10
20
Quang Nam
Quang Tri
4
4
Tái tổ chức 15 Da Nang 1
DUAN Ten_DuAn Ma_DuAn DiaDiem
MaPB
Ngôn ngữ truy vấn
26
Ví dụ 13:
 Cho biết số lượng nhân viên của từng phòng ban
Số NV
5
4
3
3
PHG
1 1
TENNV NGSINH DCHI PHAI LUONG MaPB
TungNguyen 12/08/1955 638 NVC
Q5
Nam 40000 5
HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5
33344555
5
98798798
7
MANV MA_NQL
88866555
5
33344555
5
Thanh
Manh
TamTran 07/31/1972 543 MTL
Q1
Nu 25000 5
HangBui 07/19/1968 33 NTH Q1 Nu 38000 4
45345345
3
99988777
7
33344555
5
98765432
1
Thanh
Ngoc
NhuLe 07620/1951 219 TD Q3 Nu 43000 498765432
1
88866555
5
Quynh
QuangTran 04/08/1969 980 LHP
Q5
Nam 25000 4
VinhPham 11/10/1945 450 TV HN Nam 55000 1
98798798
7
88866555
5
98765432
1
NULL
Hong
Van
SELECT PHG, count (MaNV) AS [Số NV]
FROM NHANVIEN
GROUP BY MaPB
Ngôn ngữ truy vấn
27
Ví dụ 14:
 Cho biết những phòng ban tham gia từ 2 đề án trở lên
SELECT MaPB, count (Ma_DuAn) AS [So du an]
FROM DUAN
GROUP BY MaPB
HAVING Count (Ma_DuAn) >= 2
X
Y
Z
1
2
3
Da Nang
Chu Lai
Hue
5
5
5
Tin học hóa
Phúc lợi
10
20
Quang Nam
Quang Tri
4
4
Tái tổ chức 15 Da Nang 1
DUAN Ten_DuAn Ma_DuAn DiaDiem MaPB
MaPB So du an
Kết quả:
5
4
3
2
bị loại ra
Ngôn ngữ truy vấn
Nhận xét
 Thứ tự thực hiện câu truy vấn có mệnh đề GROUP
BY và HAVING
- (1) Chọn ra những dòng thỏa điều kiện trong
mệnh đề WHERE
- (2) Những dòng này sẽ được gom thành nhiều
nhóm tương ứng với mệnh đề GROUP BY
- (3) Áp dụng các hàm kết hợp cho mỗi nhóm
- (4) Bỏ qua những nhóm không thỏa điều kiện
trong mệnh đề HAVING
- (5) Rút trích các giá trị của các cột và hàm kết hợp
trong mệnh đề SELECT
29Ngôn ngữ truy vấn
30
4. Mệnh đề ORDER BY
 Hiển thị kết quả câu truy vấn theo một thứ tự nào đó trên
các cột
 Cú pháp
- ASC (ASCending): tăng (mặc định)
- DESC (DESCending): giảm
SELECT <danh sách các thuộc tính>
FROM <danh sáchcác bảng>
WHERE <biểu thức điều kiện>
ORDER BY <thuộc tính sắp xếp> [ASC | DESC]
Ngôn ngữ truy vấn
31
Ví dụ 12:
 Với mỗi phòng ban, cho biết mã phòng và mã nhân viên
trong phòng đó. Sắp xếp theo thứ tự giảm dần của mã phòng
và tăng dần của mã nhân viên.
02
03
05
04
06
Nguyen
Tung
Le Loi -DN Nam 5
Le Thi Buoi Tran Phu -DN Nu 5
01
TENNV DCHI GT MaPBMANV
Le Nam Yen Bay -DN Nam 4
Tran Thi B Le Duan -DN Nu 4
Thai Thi Hoa Hoa Khanh -DNNu 1
Tran A Dien Ban -QN Nam 5
SELECT MaPB, MaNV
FROM NHANVIEN
ORDER BY MaPB DESC,
MaNV
Ngôn ngữ truy vấn
2. Truy vấn dữ liệu trên nhiều bảng
 Có hai cách kết nối bảng:
- Sử dụng mệnh đề where
- Sử dụng Join/inner Join/Left Join/Right Join/Full Join
 Trong đó: Join, inner Join và where là tương đương
nhau
 Cú pháp:
SELECT <ds cột>
FROM <Tên bảng>
WHERE <điều kiện nối hai bảng>
 Ví dụ:
SELECT TENNV, TENPB
FROM NHANVIEN, PHONGBAN
WHERE NHANVIEN.MAPB = PHONGBAN.MAPB 32Ngôn ngữ truy vấn
Nối bảng với INNER|LEFT|RIGHT|FULL JOIN
 Cú pháp:
SELECT <danh sách cột>
FROM table1 INNER|LEFT|RIGHT|FULL JOIN table2
ON <điều kiện nối>
33Ngôn ngữ truy vấn
Nối bảng với INNER|LEFT|RIGHT|FULL JOIN
 INNER JOIN/JOIN: trả về các dòng của hai bảng thỏa
mãn điều kiện nối
 LEFT JOIN: trả về các dòng của bảng thứ nhất dù ở
bảng 2 không thỏa mãn điều kiện nối. Nếu dữ liệu có ở
bảng 1 không có ở bảng 2 vẫn hiển thị
 RIGHT JOIN: trả về các dòng của bảng2 dù ở bảng 1
không thỏa mãn điều kiện nối. Nếu dữ liệu có ở bảng 2
không có ở bảng 1 vẫn hiển thị.
 FULL JOIN: trả về các dòng của hai bảng, nếu không có
dữ liệu thỏa mãn điều kiện thì gán bằng NULL.
34Ngôn ngữ truy vấn
Ví dụ:
 Cho bảng dữ liệu: Khachhang và Hoadon
35
MaKH TenKH
01 Trần Nhật Lệ
02 Lê Thị Nhàn
03 Hoàng Lê Minh
04 Bùi Ngọc Quang
MaKH MaSP TenSP
01 A100 Quạt máy
01 A102 Tủ lạnh
03 A120 Máy giặt
05 A230 Ti vi
Ngôn ngữ truy vấn
INNER JOIN
SELECT TenKH, TenSP
FROM Khachhang INNER JOIN hoadon
ON Khachhang.MaKH = Hoadon.MaKH
36
TenKH TenSP
Trần Nhật Lệ Quạt máy
Trần Nhật Lệ Tủ lạnh
Hoàng Lê Minh Máy giặt
Ngôn ngữ truy vấn
SELECT TenKH, TenSP
FROM Khachhang LEFT JOIN hoadon
ON Khachhang.MaKH = Hoadon.MaKH
37
TenKH TenSP
Trần Nhật Lệ Quạt máy
Trần Nhật Lệ Tủ lạnh
Lê Thị Nhàn NULL
Hoàng Lê Minh Máy giặt
Bùi Ngọc Quang NULL
Ngôn ngữ truy vấn
SELECT TenKH, TenSP
FROM Khachhang RIGHT JOIN hoadon
ON Khachhang.MaKH = Hoadon.MaKH
38
TenKH TenSP
Trần Nhật Lệ Quạt máy
Trần Nhật Lệ Tủ lạnh
Hoàng Lê Minh Máy giặt
NULL Tivi
Ngôn ngữ truy vấn
SELECT TenKH, TenSP
FROM Khachhang FULL JOIN hoadon
ON Khachhang.MaKH = Hoadon.MaKH
39
TenKH TenSP
Trần Nhật Lệ Quạt máy
Trần Nhật Lệ Tủ lạnh
Lê Thị Nhàn NULL
Hoàng Lê Minh Máy giặt
Bùi Ngọc Quang NULL
NULL Tivi
Ngôn ngữ truy vấn
Thứ tự xử lý của lệnh SELECT
40Ngôn ngữ truy vấn
3. Truy vấn lồng
 Là thực hiện lồng ghép nhiều câu lệnh SELECT với
nhau
 Câu truy vấn con thường trả về một tập các giá trị
 Các câu truy vấn con trong cùng một mệnh đề WHERE
được kết hợp bằng phép nối logic với Mệnh đề WHERE
của câu truy vấn cha:
- <biểu thức> <so sánh tập hợp> <truy vấn con>
- So sánh tập hợp thường đi cùng với một số toán tử
 IN, NOT IN
 ALL
 ANY hoặc SOME
- Kiểm tra sự tồn tại
 EXISTS
 NOT EXISTS
41Ngôn ngữ truy vấn
 Cú pháp truy vấn lồng:
42
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <biểu thức> <so sánh tập hợp> (
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>)
Câu truy
vấn cha
(Outer
query)
Câu truy
vấn con
(Subquery)
Ngôn ngữ truy vấn
 Có 2 loại truy vấn lồng
- Lồng phân cấp
 Mệnh đề WHERE của truy vấn con không tham chiếu đến
thuộc tính của các quan hệ trong mệnh đề FROM ở truy
vấn cha
 Khi thực hiện, câu truy vấn con sẽ được thực hiện trước
- Lồng tương quan
 Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một
thuộc tính của các quan hệ trong mệnh đề FROM ở truy
vấn cha
 Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều
lần, mỗi lần tương ứng với một bộ của truy vấn cha
43Ngôn ngữ truy vấn
44
Ví dụ 1: cho danh sách mã sinh viên, tên sv có điểm thi >8
 Cách 1: sử dụng truy vấn thông thường
select a.masv, tensv
from sinhvien as a, ketqua as b
where (a.masv=b.masv) and (diem>8)
 Cách 2: sử dụng truy vấn lồng phân cấp
select Masv, tensv
from sinhvien
where Masv in ( select Masv
from ketqua
where (diem>8))
Ngôn ngữ truy vấn
45
 Cách 3:
select Masv, tensv
from sinhvien as a
where exists (select *
from ketqua as b
where (a.MaSV=b.MaSV) and (diem>8))
Ngôn ngữ truy vấn
 Giả sử có các bảng CSDL như sau:
- Nhanvien(MaNV, HT, NS, GT, Luong, MaP)
- Phong(MaP, TenP, MNQL, NgayQL)
- DuAn(MaDa,TenDA, DiaDiem,MaP)
- NV_DA(MaNV, MaDA, Sogio)
46Ngôn ngữ truy vấn
 Ví dụ 2: Tìm những nhân viên thực hiện ít nhất một dự án
nào đó
SELECT * FROM NHANVIEN
WHERE EXISTS (SELECT * FROM NV_DA
WHERE NHANVIEN.manv= NV_DA.manv);
47Ngôn ngữ truy vấn
 Ví dụ 3: Tìm tên nhân viên có lương cao hơn tất cả các
nhân viên khác?
SELECT Hoten FROM NHANVIEN
WHERE luong >= ALL (SELECT luong
FROM
NHANVIEN);
Mệnh đề trên tương đương với
SELECT Hoten FROM NHANVIEN
WHERE luong = (SELECT MAX (luong)
FROM NHANVIEN);
48Ngôn ngữ truy vấn
 Ví dụ 4: Tìm tên những dự án mà nhân viên có mã số 7 đã
thực hiện?
SELECT tenda FROM DUAN
WHERE mada= ANY(SELECT mada FROM NV_DA
WHERE manv = 7);
Select tenda from Duan, NV_DA
Where Duan.MaDA=NV_DA.MaDA and MaNV=7
49Ngôn ngữ truy vấn
4. Phép toán tập hợp
 Gồm:
- UNION Hợp
- INTERSECT Giao
- EXCEPT Trừ
 Chú ý: Các trường trong select phải giống nhau mới
thực hiện được
50Ngôn ngữ truy vấn
Ví dụ
 + Ví dụ 1: Cho danh sách mã sinh viên của những
sinh viên không có bất kỳ một điểm thi của một môn
học nào.
select MasV
from Sinhvien
Except
select Masv
from ketqua
where diem not null
51Ngôn ngữ truy vấn
Ví dụ 2: Cho danh sách tên của các sinh viên có đủ
điểm hai môn với mã môn học là 1 và 3
select distinct tensv
from Sinhvien as a, Ketqua as b
where a.MaSV = b.MaSV and MaMH=1
Intersect
select distinct tensv
from Sinhvien as a, Ketqua as b
where a.MaSV = b.MaSV and MaMH=3
52Ngôn ngữ truy vấn
III. Hàm trong SQL
 SQL có các loại hàm sau:
- Các hàm tập hợp
- Hàm chuyển đổi kiểu dữ liệu
- Hàm ngày tháng
- Hàm toán học
- …
53Ngôn ngữ truy vấn
*Hàm tính gộp
SUM( col_name )
AVG( col_name )
COUNT ( col_name ) | COUNT( * )
MAX( col_name )
MIN( col_name )
Ngôn ngữ truy vấn 54
*Hàm toán học
ABS( num_expr )
POWER( num_expr, y )
ROUND( num_expr, length )
SQRT( float_expr)
Ngôn ngữ truy vấn 55
 Được dùng để thao tác giá trị ngày tháng
 Gồm:
- GETDATE( )
- DAY( date ), MONTH( date ), YEAR( date )
- DATEDIFF( datepart, date1, date2 )
- DATEADD( datepart, number, date )
- DATENAME( datepart, date )
- DATEPART( datepart, date )
*Hàm ngày tháng
58Ngôn ngữ truy vấn
59Ngôn ngữ truy vấn
Đơn vị thời gian Ký hiệu Values
Hour hh 0-23
Minute Mi, n 0-59
Second Ss, s 0-59
Day of Year Dy, y 1-366
Day Dd, d 1-31
Week Wk, www 1-53
Month Mm, m 1-12
Quarter Qq, q 1-4
Year Yy, yyyy 1753-9999
*Hàm xử lý chuỗi
 Dùng để tách, thay thế và tương tác với chuỗi ký tự
 Gồm:
- LEFT( string, number), RIGHT( string, number )
- LOWER( string ), UPPER( string )
- LTRIM( string ), RTRIM( string )
- LEN( string )
Ngôn ngữ truy vấn 60
 Cho một cơ sở dữ liệu gồm các bảng và các trường tương ứng như sau:
 SACH ( Masach, Tensach, Tentacgia, Nhaxuatban, Soluong)
 DOCGIA( Sothe, Tendocgia, Khoa, Khoahoc, Thoihanthe)
 PHIEUMUON( Masach, Sothe, ngaymuon, ngaytra, datra, ghichu)
- Thiết lập các ràng buộc dữ liệu trên các bảng: PK, FK, CHECK, DEFAULT,..
- Nhập 1 bản ghi vào mỗi bảng
- Thực hiện xóa, cập nhật dữ liệu trên một bảng bất kì với điều kiện phù hợp.
- Hiển thị tên, khoa của các độc giả và sắp xếp theo khoa?
- Tìm những độc giả mượn sách Toán cao cấp vào ngày 20/5/2003?
- Hiển thị tên, số thẻ, tên sách của tất cả độc giả mượn sách trong tháng 5/2003
- Danh sách các sách không ai mượn
- Cho biết độc giả tên A mượn sách bao nhiêu lần
Ngôn ngữ truy vấn 61
Bài tập áp dụng
 NHANVIEN(MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)
 HANG(MaHang, TenHang, NhaSX, TGianBaoHanh)
 KHACHHANG(MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)
 HOADONXUAT(MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)
 CT_HOADON(MaHD, MaHang, SoLuongMua, DonGia)
 Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau:
- Cho danh sách họ tên của nhân viên sinh vào tháng 3 hoặc tháng 10
- Cho danh sách họ tên và địa chỉ của các khách hàng có sử dụng gmail
- Cho biết tuổi cao nhất hiện nay của các nhân viên
- Cho danh sách khách hàng có địa chỉ không thuộc quận Đống Đa hoặc quận
Hoàng Mai
- Cho danh sách các tên hàng không bán được mặt hàng nào
- Tính tổng số tiền của từng hóa đơn xuất
- Liệt kê danh sách các khách hàng đã mua trên 10 triệu
- Cho danh sách các mặt hàng đã được mua trong năm 2014 và tổng tiền trên 10
triệu
Ngôn ngữ truy vấn 62
Bài tập áp dụng (tiếp)
 NHANVIEN(MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)
 HANG(MaHang, TenHang, NhaSX, TGianBaoHanh)
 KHACHHANG(MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)
 HOADONXUAT(MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)
 CT_HOADON(MaHD, MaHang, SoLuongMua, DonGia)
 Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau:
- Tính tổng số tiền đã bán được của từng hóa đơn
- Tính tổng số lượng và tổng số tiền đã bán được của từng
mặt hàng
- Tính tổng số lượng và tổng số tiền đã bán được của từng
mặt hàng trong năm 2013
- Tính tổng số tiền đã mua hàng của từng khách hàng, thống
kê dựa vào tên khách hàng
- Cho biết tên mặt hàng đã bán với số lượng nhiều nhất
Ngôn ngữ truy vấn 63
Ví dụ
 NHANVIEN ( MANV, HOTen, NS, GT, HSL, DC, MAPB, NgayVL)
 PHONGBAN ( MAPB, TENDV , MaTP, NgayBD, SoNV)
 DIADIEM_PB ( MaPB, DiaDiem)
 DUAN ( MADA, TENDA, DIADIEM, NgBD, MAPB)
 THANNHAN ( HOTEN, NS, GT, QuanHe, MANV)
 PHANCONG ( MADA, MANV, SoGio, NgLamDA)
 Xây dựng câu lệnh truy vấn thực hiện yêu cầu sau:
1. Cho biết tổng lương của từng phòng ban
2. Cho tên phòng ban có tổng lương trên 10 triệu
3. Cho tên phòng ban có tổng số nhân viên dưới 5
4. Cho biết tên nhân viên và tổng số giờ đã tham gia dự án của nhân viên đó
5. Cho biết tổng số nhân viên đã tham gia làm cho từng dự án theo tên dự án
6. Cho biết số dự án đã thực hiện của từng phòng ban
7. Cho biết tên dự án và tổng số giờ làm của các nhân viên cho dự án đó
8. Cho biết tên của nhân viên có số giờ làm cho dự án là nhiều nhất
9. Cho biết tên của phòng ban có tổng lương thấp nhất
Ngôn ngữ truy vấn 64
Bài tập về nhà
Thiết kế CSDL của Bài tập lớn
Sử dụng câu lệnh Create để tạo các bảng
tương ứng
In (vẽ) sơ đồ liên kết giữa các bảng nộp đầu
giờ cho GV kiểm tra
- Ghi rõ tên đề bài
- Tên sinh viên và tên lớp tương ứng
Chuẩn bị bộ dữ liệu có nghĩa để chèn vào
các bảng
Ngôn ngữ truy vấn 65
Bài tập áp dụng
 NHANVIEN( MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)
 HANG( MaHang, TenHang, NhaSX, TGianBaoHanh, DonGia)
 KHACHHANG( MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)
 HOADONXUAT( MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)
 CT_HOADON( MaHD, MaHang, SoLuongMua, GiamGia)
 Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau:
- Cho danh sách các nhân viên nữ đã bán được hàng vào tháng 3
- Cho danh sách khách hàng sử dụng thuê bao Viettel đã thanh toán tiền
trực tiếp khi mua hàng
- Cho danh sách tên các mặt hàng chưa bán được hàng nào
- Cho danh sách nhân viên có lương cao nhất
- Cho danh sách khách hàng ở Đống Đa đã đến mua hàng
- Thống kê tổng số tiền của từng hóa đơn đã bán trong tháng 3
- In ra danh sách các hóa đơn trong tháng 3 đã tổng trị giá > 10 triệu
- Cho biết tổng số loại hàng đã được bán của từng hóa dơn
Ngôn ngữ truy vấn 66
Bài tập thực hành (tiếp)
 NHANVIEN( MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)
 HANG( MaHang, TenHang, NhaSX, TGianBaoHanh, DonGia)
 KHACHHANG( MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)
 HOADONXUAT( MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)
 CT_HOADON( MaHD, MaHang, SoLuongMua, GiamGia)
 Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau (tiếp)
- Cho biết tổng số hóa đơn đã được lập của mỗi nhân viên
- Cho biết tổng số tiền đã bán hàng của mỗi nhân viên trong tháng 3
- Cho biết tổng số tiền đã mua hàng của từng khách hàng theo tên
khách hàng
- Cho biết tổng số lượng đã bán của từng mặt hàng, theo tên trong
tháng 3
- Cho biết đã lập bao nhiêu hóa đơn trong năm 2012
Ngôn ngữ truy vấn 67

More Related Content

What's hot

Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệ
Hưởng Nguyễn
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
nataliej4
 
đồ áN xây dựng ứng dụng website tin tức
đồ áN xây dựng ứng dụng website tin tứcđồ áN xây dựng ứng dụng website tin tức
đồ áN xây dựng ứng dụng website tin tức
nataliej4
 
Báo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngBáo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngVượng Đặng
 
Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02
Nhóc Nhóc
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Huyen Pham
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql. .
 
Đề tài: Xây dựng Website quản lý điểm trường Phổ thông, 9đ
Đề tài: Xây dựng Website quản lý điểm trường Phổ thông, 9đĐề tài: Xây dựng Website quản lý điểm trường Phổ thông, 9đ
Đề tài: Xây dựng Website quản lý điểm trường Phổ thông, 9đ
Dịch vụ viết bài trọn gói ZALO: 0909232620
 
chuong 3. quan he
chuong 3. quan hechuong 3. quan he
chuong 3. quan he
kikihoho
 
Bài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverBài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL server
MasterCode.vn
 
Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#
MasterCode.vn
 
Cau hinh nat tren router cisco
Cau hinh nat tren router ciscoCau hinh nat tren router cisco
Cau hinh nat tren router cisco
tuanla79vn
 
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đĐề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Dịch vụ viết bài trọn gói ZALO 0917193864
 
Bai07 bo nho
Bai07   bo nhoBai07   bo nho
Bai07 bo nhoVũ Sang
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
An Nguyen
 
Hệ điều hành (chương 3)
Hệ điều hành (chương 3)Hệ điều hành (chương 3)
Hệ điều hành (chương 3)realpotter
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
leemindinh
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
MasterCode.vn
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Tú Cao
 

What's hot (20)

Chuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệChuẩn hóa lược đồ quan hệ
Chuẩn hóa lược đồ quan hệ
 
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
Đề Tài Thiết Kế Phần Mềm Quản Lý Sinh Viên
 
đồ áN xây dựng ứng dụng website tin tức
đồ áN xây dựng ứng dụng website tin tứcđồ áN xây dựng ứng dụng website tin tức
đồ áN xây dựng ứng dụng website tin tức
 
Báo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụngBáo cáo kĩ thuật phần mềm và ứng dụng
Báo cáo kĩ thuật phần mềm và ứng dụng
 
Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02Kiến trúc máy tính và hợp ngữ bài 02
Kiến trúc máy tính và hợp ngữ bài 02
 
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thôngBáo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
Báo cáo bài tập lớn môn Cơ sở dữ liệu - Học viện công nghệ bưu chính viễn thông
 
Bai tap va loi giai sql
Bai tap va loi giai sqlBai tap va loi giai sql
Bai tap va loi giai sql
 
Đề tài: Xây dựng Website quản lý điểm trường Phổ thông, 9đ
Đề tài: Xây dựng Website quản lý điểm trường Phổ thông, 9đĐề tài: Xây dựng Website quản lý điểm trường Phổ thông, 9đ
Đề tài: Xây dựng Website quản lý điểm trường Phổ thông, 9đ
 
chuong 3. quan he
chuong 3. quan hechuong 3. quan he
chuong 3. quan he
 
Bài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL serverBài 2 : Các đối tượng trong CSDL - SQL server
Bài 2 : Các đối tượng trong CSDL - SQL server
 
Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#Bài 2 - Công nghệ ADO.NET với C#
Bài 2 - Công nghệ ADO.NET với C#
 
Cau hinh nat tren router cisco
Cau hinh nat tren router ciscoCau hinh nat tren router cisco
Cau hinh nat tren router cisco
 
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đĐề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
Đề tài: Xây dựng phần mềm quản lý quán cà phê, HOT, 9đ
 
Bai07 bo nho
Bai07   bo nhoBai07   bo nho
Bai07 bo nho
 
Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#Quy tắc thiết kế giao diện và viết code C#
Quy tắc thiết kế giao diện và viết code C#
 
Hệ điều hành (chương 3)
Hệ điều hành (chương 3)Hệ điều hành (chương 3)
Hệ điều hành (chương 3)
 
Thiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sựThiết kế csdl quản lý nhân sự
Thiết kế csdl quản lý nhân sự
 
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
Bài 4: NGÔN NGỮ TRUY VẤN CÓ CẤU TRÚC (SQL)
 
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
Slide báo cáo đồ án tốt nghiệp "Website cửa hàng điện thoại trực tuyến"
 
BTL Lập trình C#
BTL Lập trình C#BTL Lập trình C#
BTL Lập trình C#
 

Similar to Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3

b34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfb34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdf
QuyVo27
 
csdl - buoi7-8-9
csdl - buoi7-8-9csdl - buoi7-8-9
csdl - buoi7-8-9
kikihoho
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.ppt
PhamThiThuThuy1
 
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptxCơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
NguynNgcTn10
 
Note4_ThucHanh.pdf
Note4_ThucHanh.pdfNote4_ThucHanh.pdf
Note4_ThucHanh.pdf
imquang
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2
Vo Oanh
 
csdl bai-thuchanh_02
csdl bai-thuchanh_02csdl bai-thuchanh_02
csdl bai-thuchanh_02
kikihoho
 
Co so du lieu t sql
Co so du lieu t sqlCo so du lieu t sql
Co so du lieu t sqlANHMATTROI
 
ORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptxORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptx
QuangTrnMinh18
 
Com201 slide 4
Com201   slide 4Com201   slide 4
Com201 slide 4
tuanduongcntt
 
Bai 5 - 7: Bai giang chuong 5 - 7 Excel can ban
Bai 5 - 7: Bai giang chuong 5 - 7 Excel can banBai 5 - 7: Bai giang chuong 5 - 7 Excel can ban
Bai 5 - 7: Bai giang chuong 5 - 7 Excel can ban
NamDoMinh2
 
02. baigiangquery
02. baigiangquery02. baigiangquery
02. baigiangqueryHoang Minh
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql. .
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
Liễu Hồng
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
Vu Phong
 

Similar to Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3 (20)

b34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdfb34-dml-sql-190213084703.pdf
b34-dml-sql-190213084703.pdf
 
sqlKey
sqlKeysqlKey
sqlKey
 
csdl - buoi7-8-9
csdl - buoi7-8-9csdl - buoi7-8-9
csdl - buoi7-8-9
 
Access: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.pptAccess: Chuong III Thiet ke truy van Query.ppt
Access: Chuong III Thiet ke truy van Query.ppt
 
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptxCơ sở dữ liệu SQL qua các vi du cu the.pptx
Cơ sở dữ liệu SQL qua các vi du cu the.pptx
 
Note4_ThucHanh.pdf
Note4_ThucHanh.pdfNote4_ThucHanh.pdf
Note4_ThucHanh.pdf
 
Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2Thiet Ke Co So Du Lieu2
Thiet Ke Co So Du Lieu2
 
csdl bai-thuchanh_02
csdl bai-thuchanh_02csdl bai-thuchanh_02
csdl bai-thuchanh_02
 
Excel 2007
Excel 2007Excel 2007
Excel 2007
 
Co so du lieu t sql
Co so du lieu t sqlCo so du lieu t sql
Co so du lieu t sql
 
Baigiang8
Baigiang8Baigiang8
Baigiang8
 
ORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptxORACLE_ch2_SQL.pptx
ORACLE_ch2_SQL.pptx
 
Phan3
Phan3Phan3
Phan3
 
Com201 slide 4
Com201   slide 4Com201   slide 4
Com201 slide 4
 
Bai 5 - 7: Bai giang chuong 5 - 7 Excel can ban
Bai 5 - 7: Bai giang chuong 5 - 7 Excel can banBai 5 - 7: Bai giang chuong 5 - 7 Excel can ban
Bai 5 - 7: Bai giang chuong 5 - 7 Excel can ban
 
02. baigiangquery
02. baigiangquery02. baigiangquery
02. baigiangquery
 
02. baigiangquery
02. baigiangquery02. baigiangquery
02. baigiangquery
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
 
Cau lenh truy_van_sql
Cau lenh truy_van_sqlCau lenh truy_van_sql
Cau lenh truy_van_sql
 

Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 3

  • 2. I. Tạo lập dữ liệu cho bảng  Chèn dữ liệu  Xem dữ liệu  Cập nhật dữ liệu  Xóa các dòng thỏa mãn điều kiện  Xóa các dòng nhưng giữ nguyên cấu trúc bảng 2
  • 3. 1. Chèn dữ liệu  Cú pháp: INSERT INTO <tên bảng>(ds cột) VALUES (giá trị cần chèn của hàng 1), (giá trị cần chèn của hàng 2), … INSERT INTO <tên bảng> VALUES (Giá trị cần chèn của một hàng) INSERT <tên bảng> VALUES (Giá trị cần chèn của một hàng)  Chú ý: - Nếu dữ liệu kiểu text và kiểu Date, khi chèn phải có ‘ ‘, nếu là kiểu Nvachar thì phải có tiếp đầu ngữ N’ ’. - Dữ liệu kiểu Date yêu cầu nhập tháng/ngày/năm hoặc năm/tháng/ngày - Dữ liệu dạng tự tăng thì không cần nhập. - Với dữ liệu mặc định, nếu không thay đổi giá trị mặc định khi chèn dữ liệu cần liệt kê danh sách các cột mà không có cột có ràng buộc mặc 3
  • 4. Vd: Chèn thông tin vào bảng SINHVIEN 4Ngôn ngữ truy vấn  insert into sinhvien (TenSV,GT,Ngaysinh, Que, Lop) values (N'Trần Bảo Trọng‘ , 'Nam‘ , '1995/12/14', N'Hà Giang‘ , 'L02‘), (N'Lê Thùy Dung', N'Nữ‘, '05/12/1997', N'Hà Nội','L03')  insert into Sinhvien values (N'Lê Trường An‘ , N'Nam‘ , '11/20/1995‘ , N'Ninh Bình', 'L04').  insert sinhvien values ( N'Đoàn Duy Thức ‘ , N'Nam‘ , '4/12/1994', N'Hà Nội', 'L01')
  • 5. 2. Xem d li u trên b ngữ ệ ả SELECT * FROM <tên b ng>ả 3. C p nh t d li u:ậ ậ ữ ệ UPDATE <Tên b ng> SET <tên c t>= <giá trả ộ ị m i>[ WHERE < i u ki n>]ớ Đ ề ệ 4. Xóa các dòng th a mãn i u ki n:ỏ đ ề ệ DELETE FROM table_name WHERE <tên c t>=<giá tr >;ộ ị 5. Xóa t t c các dòng nh ng v n gi nguyên c u trúc b ng:ấ ả ư ẫ ữ ấ ả DELETE FROM table_name; 5
  • 7. 7 Được sử dụng để truy xuất dữ liệu từ các dòng, các cột của một hay nhiều bảng Thực hiện phép toán: Chọn - Chiếu- Kết nối - Tính toán cơ bản Ngôn ngữ truy vấn II. Mệnh đề Select..from..where
  • 8. 8 *Câu lệnh SELECT đầy đủ SELECT [DISTINCT |Top n |* ] <biểu thức/ cột [AS <tên mới>],..> [INTO <tên bảng mới>] FROM <tên bảng> as [<bí danh>],... [WHERE <điều kiện chọn>] [GROUP BY < ds tên cột gom nhóm>] [HAVING <điều kiện lọc nhóm>] [ORDER BY <tên cột>[ASC|DESC],…]; Ngôn ngữ truy vấn
  • 9. 9  Truy vấn có ba loại: - Truy vấn trên một bảng - Truy vấn trên nhiều bảng - Truy vấn lồng Ngôn ngữ truy vấn
  • 10. 10 1. Truy vấn trên một bảng  a. Truy v n n gi n:ấ đơ ả  <danh sách các c t>ộ - Tên các thu c tính (c t) s c hi n th trong k t qu truy v n.ộ ộ ẽđượ ể ị ế ả ấ  <danh sách các b ng>ả - Tên các b ng liên quan l y k t quả để ấ ế ả  <bi u th c i u ki n>ể ứ đ ề ệ - là i u ki n a vào ch n l c d li u, th ng g m:đ ề ệ đư để ọ ọ ữ ệ ườ ồ  Các phép toán so sánh: < , > , ≤ , ≥ , ≠ , =  Các phép toán logic: AND, OR, và NOT  Các t khóa: BETWEEN … AND, IN, EXISTS, LIKE…ừ SELECT <danh sách các cột> FROM <danh sách các bảng> [WHERE <biểu thức điều kiện>] Ngôn ngữ truy vấn
  • 11. 11 SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện> σ π × SELECT L FROM R WHERE C πL (σC (R))  SQL và ĐSQH Ngôn ngữ truy vấn
  • 12. 12 Ví dụ  Ví dụ 1: Cho danh sách sinh viên gồm Mã SV, Họ tên, Ngày sinh của tất cả các sinh viên Select MaSV, TenSV, Ngaysinh from Sinhvien  Ví dụ 2: Cho danh sách sinh viên nữ thuộc lớp L02 Select * From Sinhvien Where (GT=N'Nữ') and (Lop='L02‘)  Ví dụ 3: Thêm định danh cho bảng và cho cột (sử dụng từ khóa as) select sv.MaSV, TenSV as 'Tên Sinh Viên' from Sinhvien as sv /* sau khi định danh cho bảng thì từ đó sử dụng tên định danh*/ Ngôn ngữ truy vấn
  • 13.  Ví dụ 4: Xử lý dữ liệu kiểu chuỗi dùng Like hoặc not like để tìm chuỗi gần đúng %: Thay thế 1 chuỗi -: thay thế 1 ký tự  VD 4.1: Cho danh sách các sinh viên có tên là ‘Nga’ select * from sinhvien where TenSV like N'% Nga'  VD 4.2: Cho danh sách những sinh viên họ Trần select * from sinhvien where TenSV like N'Trần %' 13Ngôn ngữ truy vấn
  • 14.  Ví dụ 5: Sử dụng BETWEEN <GT1> AND <GT2> để lấy những bản ghi thỏa mãn nằm giữa GT1 và GT2. Cho danh sách gồm mã sinh viên, ma môn học của sinh viên có điểm từ 5 đến 7 select MaSv, MaMH from ketqua where diem between 5 and 7  Note: Not Between .. and … có ý nghĩa ngược lại. 14Ngôn ngữ truy vấn
  • 15.  Ví dụ 6: Sử dụng NULL/NOT NULL cho các trường hợp sau: - Không biết - không xác định (value unknown) - Không thể áp dụng (value inapplicable) - Không tồn tại (value withheld)  VD: Cho danh sách gồm Mã Sinh viên và mã môn học của sinh viên không có điểm thi select MaSV, MaMH from ketqua where Diem is Null 15Ngôn ngữ truy vấn
  • 16.  Ví dụ 7: Sử dụng in: Cho danh sách các sinh viên có quê ở Hà Nội hoặc Phú Thọ Select * From Sinhvien where que in (N'Hà nội', N'Phú Thọ')  Ví dụ 8: Sử dụng các toán tử - Distinct : loại bỏ các dòng dữ liệu trùng - Top n : lấy n dòng đầu tiên  VD 8.1: Liệt kê danh sách các tỉnh có sinh viên theo học tại trường select distinct Que from Sinhvien 16Ngôn ngữ truy vấn
  • 17.  VD 8.2: Cho thông tin của hai sinh viên đầu tiên trong danh sách sinh viên select top (2) MaSV, TenSV,Que from Sinhvien 17Ngôn ngữ truy vấn
  • 18. Bài tập 1  Bảng KHACHHANG( MK, TenK, DChi, SoDT )  Bảng BAOCHI( MB, TenBao, Gia)  Bảng DATBAO( MK, MB, NgayDat, SoLuong) Viết câu lệnh SQL các truy vấn thực hiện các yêu cầu sau: 1. Cho biết tên và thành tiền đặt mua báo của khách hàng tương ứng với từng ngày đặt 2. Cho biết họ tên – địa chỉ của khách hàng đặt mua báo có tên Nhân Dân trong năm 2014 3. Thông tin về các loại báo khách hàng đã đặt mua trong năm 2000. 4. Cho thông tin của báo chí có giá đắt nhất 19
  • 19. b. Hàm kết hợp  Được sử dụng để tính giá trị thống kê trên toàn bảng hoặc trên mỗi nhóm dữ liệu  Các hàm cơ bản: - Sum( [All | Distinct] biểu-thức), Avg( [All | Distinct] biểu-thức) - Count( [All | Distinct] biểu-thức) : đếm số dòng khác Null trong cột, biểu thức. - Count(*) : đếm số dòng được chọn trong bảng, kể cả Null - Max( biểu-thức ), Min( biểu-thức )  Các hàm thực hiện tính toán trên toàn bộ dữ liệu, bỏ bớt giá trị trùng nhau thêm từ distinct Ngôn ngữ truy vấn 20
  • 20. 21 Ví dụ 9:  Tìm tổng lương, lương cao nhất, lương thấp nhất và lương trung bình của các nhân viên  NHANVIEN(MaNV, TenNV, GT, NS, DChi, Luong, MaPB) SELECT sum(Luong) AS [Tổng lương] , max(Luong) AS [Lương cao nhất] , min(Luong) AS [Lương thấp nhất] , avg(Luong) AS [Lương trung bình] FROM NhanVien LUONG 3.000.000 2.500.000 2.500.000 4.000.000 Tổng lương Lương cao nhất Lương thấp nhất Lương trung bình 12.000.00 0 3.000.0002.500.0004.000.000 Ngôn ngữ truy vấn
  • 21. 22 Ví dụ 10: SELECT sum(distinct Luong) AS [Tổng lương] FROM NhanVien LUONG 3.000.000 2.500.000 2.500.000 4.000.000 Ngôn ngữ truy vấn
  • 22. 23  Ví dụ 11: Cho biết số lượng nhân viên của phòng 5  NHANVIEN(MaNV, TenNV, GT, NS, DChi, Luong, MaPB) SELECT count(MNV) AS [Số nhân viên] FROM NhanVien WHERE MaPB = 5 Ngôn ngữ truy vấn
  • 23. 24 c. Mệnh đề GROUP BY  Để thực hiện gom nhóm các bộ theo một tiêu chí xác định để thực hiện tính toán  Cú pháp  Sau khi gom nhóm - Mỗi nhóm các bộ sẽ có cùng giá trị tại các thuộc tính gom nhóm  CSDL gồm: - NHANVIEN(MaNV, TenNV, GT, NS, DChi, Luong, MaPB) - PHONG(MaP, TenP, DIADIEM) - DU_An(MaDA, TenDA, DiaDiem, MAPB) SELECT <DS cột gom nhóm>, <Hàm tính toán> FROM <danh sách các bảng> [WHERE <biểu thức điều kiện>] GROUP BY <DS cột gom nhóm> HAVING <điều kiện tính toán nhóm> Ngôn ngữ truy vấn
  • 24. 25 Ví dụ 12:  Với mỗi phòng, cho biết số dự án mà phòng đó điều phối MaPB So du an 5 4 1 3 2 1 SELECT MaPB, count (Ma_DuAn) AS [So du an] FROM DUAN GROUP BY MaPB Kết quả: Cột gom nhóm [Group By (MaPB)]Cột tính toán [count (Ma_DuAn)] X Y Z 1 2 3 Da Nang Chu Lai Hue 5 5 5 Tin học hóa Phúc lợi 10 20 Quang Nam Quang Tri 4 4 Tái tổ chức 15 Da Nang 1 DUAN Ten_DuAn Ma_DuAn DiaDiem MaPB Ngôn ngữ truy vấn
  • 25. 26 Ví dụ 13:  Cho biết số lượng nhân viên của từng phòng ban Số NV 5 4 3 3 PHG 1 1 TENNV NGSINH DCHI PHAI LUONG MaPB TungNguyen 12/08/1955 638 NVC Q5 Nam 40000 5 HungNguyen 09/15/1962 Ba Ria VT Nam 38000 5 33344555 5 98798798 7 MANV MA_NQL 88866555 5 33344555 5 Thanh Manh TamTran 07/31/1972 543 MTL Q1 Nu 25000 5 HangBui 07/19/1968 33 NTH Q1 Nu 38000 4 45345345 3 99988777 7 33344555 5 98765432 1 Thanh Ngoc NhuLe 07620/1951 219 TD Q3 Nu 43000 498765432 1 88866555 5 Quynh QuangTran 04/08/1969 980 LHP Q5 Nam 25000 4 VinhPham 11/10/1945 450 TV HN Nam 55000 1 98798798 7 88866555 5 98765432 1 NULL Hong Van SELECT PHG, count (MaNV) AS [Số NV] FROM NHANVIEN GROUP BY MaPB Ngôn ngữ truy vấn
  • 26. 27 Ví dụ 14:  Cho biết những phòng ban tham gia từ 2 đề án trở lên SELECT MaPB, count (Ma_DuAn) AS [So du an] FROM DUAN GROUP BY MaPB HAVING Count (Ma_DuAn) >= 2 X Y Z 1 2 3 Da Nang Chu Lai Hue 5 5 5 Tin học hóa Phúc lợi 10 20 Quang Nam Quang Tri 4 4 Tái tổ chức 15 Da Nang 1 DUAN Ten_DuAn Ma_DuAn DiaDiem MaPB MaPB So du an Kết quả: 5 4 3 2 bị loại ra Ngôn ngữ truy vấn
  • 27. Nhận xét  Thứ tự thực hiện câu truy vấn có mệnh đề GROUP BY và HAVING - (1) Chọn ra những dòng thỏa điều kiện trong mệnh đề WHERE - (2) Những dòng này sẽ được gom thành nhiều nhóm tương ứng với mệnh đề GROUP BY - (3) Áp dụng các hàm kết hợp cho mỗi nhóm - (4) Bỏ qua những nhóm không thỏa điều kiện trong mệnh đề HAVING - (5) Rút trích các giá trị của các cột và hàm kết hợp trong mệnh đề SELECT 29Ngôn ngữ truy vấn
  • 28. 30 4. Mệnh đề ORDER BY  Hiển thị kết quả câu truy vấn theo một thứ tự nào đó trên các cột  Cú pháp - ASC (ASCending): tăng (mặc định) - DESC (DESCending): giảm SELECT <danh sách các thuộc tính> FROM <danh sáchcác bảng> WHERE <biểu thức điều kiện> ORDER BY <thuộc tính sắp xếp> [ASC | DESC] Ngôn ngữ truy vấn
  • 29. 31 Ví dụ 12:  Với mỗi phòng ban, cho biết mã phòng và mã nhân viên trong phòng đó. Sắp xếp theo thứ tự giảm dần của mã phòng và tăng dần của mã nhân viên. 02 03 05 04 06 Nguyen Tung Le Loi -DN Nam 5 Le Thi Buoi Tran Phu -DN Nu 5 01 TENNV DCHI GT MaPBMANV Le Nam Yen Bay -DN Nam 4 Tran Thi B Le Duan -DN Nu 4 Thai Thi Hoa Hoa Khanh -DNNu 1 Tran A Dien Ban -QN Nam 5 SELECT MaPB, MaNV FROM NHANVIEN ORDER BY MaPB DESC, MaNV Ngôn ngữ truy vấn
  • 30. 2. Truy vấn dữ liệu trên nhiều bảng  Có hai cách kết nối bảng: - Sử dụng mệnh đề where - Sử dụng Join/inner Join/Left Join/Right Join/Full Join  Trong đó: Join, inner Join và where là tương đương nhau  Cú pháp: SELECT <ds cột> FROM <Tên bảng> WHERE <điều kiện nối hai bảng>  Ví dụ: SELECT TENNV, TENPB FROM NHANVIEN, PHONGBAN WHERE NHANVIEN.MAPB = PHONGBAN.MAPB 32Ngôn ngữ truy vấn
  • 31. Nối bảng với INNER|LEFT|RIGHT|FULL JOIN  Cú pháp: SELECT <danh sách cột> FROM table1 INNER|LEFT|RIGHT|FULL JOIN table2 ON <điều kiện nối> 33Ngôn ngữ truy vấn
  • 32. Nối bảng với INNER|LEFT|RIGHT|FULL JOIN  INNER JOIN/JOIN: trả về các dòng của hai bảng thỏa mãn điều kiện nối  LEFT JOIN: trả về các dòng của bảng thứ nhất dù ở bảng 2 không thỏa mãn điều kiện nối. Nếu dữ liệu có ở bảng 1 không có ở bảng 2 vẫn hiển thị  RIGHT JOIN: trả về các dòng của bảng2 dù ở bảng 1 không thỏa mãn điều kiện nối. Nếu dữ liệu có ở bảng 2 không có ở bảng 1 vẫn hiển thị.  FULL JOIN: trả về các dòng của hai bảng, nếu không có dữ liệu thỏa mãn điều kiện thì gán bằng NULL. 34Ngôn ngữ truy vấn
  • 33. Ví dụ:  Cho bảng dữ liệu: Khachhang và Hoadon 35 MaKH TenKH 01 Trần Nhật Lệ 02 Lê Thị Nhàn 03 Hoàng Lê Minh 04 Bùi Ngọc Quang MaKH MaSP TenSP 01 A100 Quạt máy 01 A102 Tủ lạnh 03 A120 Máy giặt 05 A230 Ti vi Ngôn ngữ truy vấn
  • 34. INNER JOIN SELECT TenKH, TenSP FROM Khachhang INNER JOIN hoadon ON Khachhang.MaKH = Hoadon.MaKH 36 TenKH TenSP Trần Nhật Lệ Quạt máy Trần Nhật Lệ Tủ lạnh Hoàng Lê Minh Máy giặt Ngôn ngữ truy vấn
  • 35. SELECT TenKH, TenSP FROM Khachhang LEFT JOIN hoadon ON Khachhang.MaKH = Hoadon.MaKH 37 TenKH TenSP Trần Nhật Lệ Quạt máy Trần Nhật Lệ Tủ lạnh Lê Thị Nhàn NULL Hoàng Lê Minh Máy giặt Bùi Ngọc Quang NULL Ngôn ngữ truy vấn
  • 36. SELECT TenKH, TenSP FROM Khachhang RIGHT JOIN hoadon ON Khachhang.MaKH = Hoadon.MaKH 38 TenKH TenSP Trần Nhật Lệ Quạt máy Trần Nhật Lệ Tủ lạnh Hoàng Lê Minh Máy giặt NULL Tivi Ngôn ngữ truy vấn
  • 37. SELECT TenKH, TenSP FROM Khachhang FULL JOIN hoadon ON Khachhang.MaKH = Hoadon.MaKH 39 TenKH TenSP Trần Nhật Lệ Quạt máy Trần Nhật Lệ Tủ lạnh Lê Thị Nhàn NULL Hoàng Lê Minh Máy giặt Bùi Ngọc Quang NULL NULL Tivi Ngôn ngữ truy vấn
  • 38. Thứ tự xử lý của lệnh SELECT 40Ngôn ngữ truy vấn
  • 39. 3. Truy vấn lồng  Là thực hiện lồng ghép nhiều câu lệnh SELECT với nhau  Câu truy vấn con thường trả về một tập các giá trị  Các câu truy vấn con trong cùng một mệnh đề WHERE được kết hợp bằng phép nối logic với Mệnh đề WHERE của câu truy vấn cha: - <biểu thức> <so sánh tập hợp> <truy vấn con> - So sánh tập hợp thường đi cùng với một số toán tử  IN, NOT IN  ALL  ANY hoặc SOME - Kiểm tra sự tồn tại  EXISTS  NOT EXISTS 41Ngôn ngữ truy vấn
  • 40.  Cú pháp truy vấn lồng: 42 SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <biểu thức> <so sánh tập hợp> ( SELECT <danh sách các cột> FROM <danh sách các bảng> WHERE <điều kiện>) Câu truy vấn cha (Outer query) Câu truy vấn con (Subquery) Ngôn ngữ truy vấn
  • 41.  Có 2 loại truy vấn lồng - Lồng phân cấp  Mệnh đề WHERE của truy vấn con không tham chiếu đến thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha  Khi thực hiện, câu truy vấn con sẽ được thực hiện trước - Lồng tương quan  Mệnh đề WHERE của truy vấn con tham chiếu ít nhất một thuộc tính của các quan hệ trong mệnh đề FROM ở truy vấn cha  Khi thực hiện, câu truy vấn con sẽ được thực hiện nhiều lần, mỗi lần tương ứng với một bộ của truy vấn cha 43Ngôn ngữ truy vấn
  • 42. 44 Ví dụ 1: cho danh sách mã sinh viên, tên sv có điểm thi >8  Cách 1: sử dụng truy vấn thông thường select a.masv, tensv from sinhvien as a, ketqua as b where (a.masv=b.masv) and (diem>8)  Cách 2: sử dụng truy vấn lồng phân cấp select Masv, tensv from sinhvien where Masv in ( select Masv from ketqua where (diem>8)) Ngôn ngữ truy vấn
  • 43. 45  Cách 3: select Masv, tensv from sinhvien as a where exists (select * from ketqua as b where (a.MaSV=b.MaSV) and (diem>8)) Ngôn ngữ truy vấn
  • 44.  Giả sử có các bảng CSDL như sau: - Nhanvien(MaNV, HT, NS, GT, Luong, MaP) - Phong(MaP, TenP, MNQL, NgayQL) - DuAn(MaDa,TenDA, DiaDiem,MaP) - NV_DA(MaNV, MaDA, Sogio) 46Ngôn ngữ truy vấn
  • 45.  Ví dụ 2: Tìm những nhân viên thực hiện ít nhất một dự án nào đó SELECT * FROM NHANVIEN WHERE EXISTS (SELECT * FROM NV_DA WHERE NHANVIEN.manv= NV_DA.manv); 47Ngôn ngữ truy vấn
  • 46.  Ví dụ 3: Tìm tên nhân viên có lương cao hơn tất cả các nhân viên khác? SELECT Hoten FROM NHANVIEN WHERE luong >= ALL (SELECT luong FROM NHANVIEN); Mệnh đề trên tương đương với SELECT Hoten FROM NHANVIEN WHERE luong = (SELECT MAX (luong) FROM NHANVIEN); 48Ngôn ngữ truy vấn
  • 47.  Ví dụ 4: Tìm tên những dự án mà nhân viên có mã số 7 đã thực hiện? SELECT tenda FROM DUAN WHERE mada= ANY(SELECT mada FROM NV_DA WHERE manv = 7); Select tenda from Duan, NV_DA Where Duan.MaDA=NV_DA.MaDA and MaNV=7 49Ngôn ngữ truy vấn
  • 48. 4. Phép toán tập hợp  Gồm: - UNION Hợp - INTERSECT Giao - EXCEPT Trừ  Chú ý: Các trường trong select phải giống nhau mới thực hiện được 50Ngôn ngữ truy vấn
  • 49. Ví dụ  + Ví dụ 1: Cho danh sách mã sinh viên của những sinh viên không có bất kỳ một điểm thi của một môn học nào. select MasV from Sinhvien Except select Masv from ketqua where diem not null 51Ngôn ngữ truy vấn
  • 50. Ví dụ 2: Cho danh sách tên của các sinh viên có đủ điểm hai môn với mã môn học là 1 và 3 select distinct tensv from Sinhvien as a, Ketqua as b where a.MaSV = b.MaSV and MaMH=1 Intersect select distinct tensv from Sinhvien as a, Ketqua as b where a.MaSV = b.MaSV and MaMH=3 52Ngôn ngữ truy vấn
  • 51. III. Hàm trong SQL  SQL có các loại hàm sau: - Các hàm tập hợp - Hàm chuyển đổi kiểu dữ liệu - Hàm ngày tháng - Hàm toán học - … 53Ngôn ngữ truy vấn
  • 52. *Hàm tính gộp SUM( col_name ) AVG( col_name ) COUNT ( col_name ) | COUNT( * ) MAX( col_name ) MIN( col_name ) Ngôn ngữ truy vấn 54
  • 53. *Hàm toán học ABS( num_expr ) POWER( num_expr, y ) ROUND( num_expr, length ) SQRT( float_expr) Ngôn ngữ truy vấn 55
  • 54.  Được dùng để thao tác giá trị ngày tháng  Gồm: - GETDATE( ) - DAY( date ), MONTH( date ), YEAR( date ) - DATEDIFF( datepart, date1, date2 ) - DATEADD( datepart, number, date ) - DATENAME( datepart, date ) - DATEPART( datepart, date ) *Hàm ngày tháng 58Ngôn ngữ truy vấn
  • 55. 59Ngôn ngữ truy vấn Đơn vị thời gian Ký hiệu Values Hour hh 0-23 Minute Mi, n 0-59 Second Ss, s 0-59 Day of Year Dy, y 1-366 Day Dd, d 1-31 Week Wk, www 1-53 Month Mm, m 1-12 Quarter Qq, q 1-4 Year Yy, yyyy 1753-9999
  • 56. *Hàm xử lý chuỗi  Dùng để tách, thay thế và tương tác với chuỗi ký tự  Gồm: - LEFT( string, number), RIGHT( string, number ) - LOWER( string ), UPPER( string ) - LTRIM( string ), RTRIM( string ) - LEN( string ) Ngôn ngữ truy vấn 60
  • 57.  Cho một cơ sở dữ liệu gồm các bảng và các trường tương ứng như sau:  SACH ( Masach, Tensach, Tentacgia, Nhaxuatban, Soluong)  DOCGIA( Sothe, Tendocgia, Khoa, Khoahoc, Thoihanthe)  PHIEUMUON( Masach, Sothe, ngaymuon, ngaytra, datra, ghichu) - Thiết lập các ràng buộc dữ liệu trên các bảng: PK, FK, CHECK, DEFAULT,.. - Nhập 1 bản ghi vào mỗi bảng - Thực hiện xóa, cập nhật dữ liệu trên một bảng bất kì với điều kiện phù hợp. - Hiển thị tên, khoa của các độc giả và sắp xếp theo khoa? - Tìm những độc giả mượn sách Toán cao cấp vào ngày 20/5/2003? - Hiển thị tên, số thẻ, tên sách của tất cả độc giả mượn sách trong tháng 5/2003 - Danh sách các sách không ai mượn - Cho biết độc giả tên A mượn sách bao nhiêu lần Ngôn ngữ truy vấn 61
  • 58. Bài tập áp dụng  NHANVIEN(MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)  HANG(MaHang, TenHang, NhaSX, TGianBaoHanh)  KHACHHANG(MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)  HOADONXUAT(MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)  CT_HOADON(MaHD, MaHang, SoLuongMua, DonGia)  Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau: - Cho danh sách họ tên của nhân viên sinh vào tháng 3 hoặc tháng 10 - Cho danh sách họ tên và địa chỉ của các khách hàng có sử dụng gmail - Cho biết tuổi cao nhất hiện nay của các nhân viên - Cho danh sách khách hàng có địa chỉ không thuộc quận Đống Đa hoặc quận Hoàng Mai - Cho danh sách các tên hàng không bán được mặt hàng nào - Tính tổng số tiền của từng hóa đơn xuất - Liệt kê danh sách các khách hàng đã mua trên 10 triệu - Cho danh sách các mặt hàng đã được mua trong năm 2014 và tổng tiền trên 10 triệu Ngôn ngữ truy vấn 62
  • 59. Bài tập áp dụng (tiếp)  NHANVIEN(MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)  HANG(MaHang, TenHang, NhaSX, TGianBaoHanh)  KHACHHANG(MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)  HOADONXUAT(MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)  CT_HOADON(MaHD, MaHang, SoLuongMua, DonGia)  Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau: - Tính tổng số tiền đã bán được của từng hóa đơn - Tính tổng số lượng và tổng số tiền đã bán được của từng mặt hàng - Tính tổng số lượng và tổng số tiền đã bán được của từng mặt hàng trong năm 2013 - Tính tổng số tiền đã mua hàng của từng khách hàng, thống kê dựa vào tên khách hàng - Cho biết tên mặt hàng đã bán với số lượng nhiều nhất Ngôn ngữ truy vấn 63
  • 60. Ví dụ  NHANVIEN ( MANV, HOTen, NS, GT, HSL, DC, MAPB, NgayVL)  PHONGBAN ( MAPB, TENDV , MaTP, NgayBD, SoNV)  DIADIEM_PB ( MaPB, DiaDiem)  DUAN ( MADA, TENDA, DIADIEM, NgBD, MAPB)  THANNHAN ( HOTEN, NS, GT, QuanHe, MANV)  PHANCONG ( MADA, MANV, SoGio, NgLamDA)  Xây dựng câu lệnh truy vấn thực hiện yêu cầu sau: 1. Cho biết tổng lương của từng phòng ban 2. Cho tên phòng ban có tổng lương trên 10 triệu 3. Cho tên phòng ban có tổng số nhân viên dưới 5 4. Cho biết tên nhân viên và tổng số giờ đã tham gia dự án của nhân viên đó 5. Cho biết tổng số nhân viên đã tham gia làm cho từng dự án theo tên dự án 6. Cho biết số dự án đã thực hiện của từng phòng ban 7. Cho biết tên dự án và tổng số giờ làm của các nhân viên cho dự án đó 8. Cho biết tên của nhân viên có số giờ làm cho dự án là nhiều nhất 9. Cho biết tên của phòng ban có tổng lương thấp nhất Ngôn ngữ truy vấn 64
  • 61. Bài tập về nhà Thiết kế CSDL của Bài tập lớn Sử dụng câu lệnh Create để tạo các bảng tương ứng In (vẽ) sơ đồ liên kết giữa các bảng nộp đầu giờ cho GV kiểm tra - Ghi rõ tên đề bài - Tên sinh viên và tên lớp tương ứng Chuẩn bị bộ dữ liệu có nghĩa để chèn vào các bảng Ngôn ngữ truy vấn 65
  • 62. Bài tập áp dụng  NHANVIEN( MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)  HANG( MaHang, TenHang, NhaSX, TGianBaoHanh, DonGia)  KHACHHANG( MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)  HOADONXUAT( MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)  CT_HOADON( MaHD, MaHang, SoLuongMua, GiamGia)  Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau: - Cho danh sách các nhân viên nữ đã bán được hàng vào tháng 3 - Cho danh sách khách hàng sử dụng thuê bao Viettel đã thanh toán tiền trực tiếp khi mua hàng - Cho danh sách tên các mặt hàng chưa bán được hàng nào - Cho danh sách nhân viên có lương cao nhất - Cho danh sách khách hàng ở Đống Đa đã đến mua hàng - Thống kê tổng số tiền của từng hóa đơn đã bán trong tháng 3 - In ra danh sách các hóa đơn trong tháng 3 đã tổng trị giá > 10 triệu - Cho biết tổng số loại hàng đã được bán của từng hóa dơn Ngôn ngữ truy vấn 66
  • 63. Bài tập thực hành (tiếp)  NHANVIEN( MaNV, Hoten, DiaChi, SDT, NgaySinh, GT, HSL)  HANG( MaHang, TenHang, NhaSX, TGianBaoHanh, DonGia)  KHACHHANG( MaKH, TenKH, CMT, DiaChi, SoDienThoai, Email)  HOADONXUAT( MaHD, MaKH, NgayLapHD, MaNV, PhuongThucTT)  CT_HOADON( MaHD, MaHang, SoLuongMua, GiamGia)  Viết câu lệnh truy vấn đầy đủ thực hiện yêu cầu sau (tiếp) - Cho biết tổng số hóa đơn đã được lập của mỗi nhân viên - Cho biết tổng số tiền đã bán hàng của mỗi nhân viên trong tháng 3 - Cho biết tổng số tiền đã mua hàng của từng khách hàng theo tên khách hàng - Cho biết tổng số lượng đã bán của từng mặt hàng, theo tên trong tháng 3 - Cho biết đã lập bao nhiêu hóa đơn trong năm 2012 Ngôn ngữ truy vấn 67

Editor's Notes

  1. BTVN: Tạo CSDL “Quản lý dự án”
  2. BTVN: Tạo CSDL “Quản lý dự án”
  3. NHANVIEN (MANV, TENNV, NS, DCHI, GT, LUONG, PHG)
  4. BTVN: Tạo CSDL “Quản lý dự án”
  5. Danh sach cac thuoc tinh can duoc cach nhau boi dau ,
  6. Sum, Avg, Count, Min, Max: bỏ qua giá trị NULL khi tính toán Count(*): không bỏ quá giá trị NULL
  7. Mệnh đề WHERE của cấu truy vấn cơ bản gồm các thuộc tính đơn, phép so sánh với hằng số
  8. Hàm là tập lệnh SQL để thực hiện công việc nào đó Hàm trong SQL làm việc với dữ liệu, nhóm dữ liệu để trả về một kết quả mong đợi
  9. SUM( col_name ) Hàm tính tổng, trả về tổng giá trị của col_name SELECT SUM(OrderQty) AS Total FROM Purchasing.PurchaseOrderDetail AVG( col_name ) Trả tính giá trị trung bình SELECT AVG(UnitPrice * OrderQty) AS AveragePrice FROM Purchasing.PurchaseOrderDetail COUNT Đếm số bản ghi trong bảng SELECT COUNT(*) AS ‘Number of Large Orders’ FROM Purchasing.PurchaseOrderDetail WHERE OrderQty &amp;gt; 100 MAX( col_name ) Trả về giá trị lớn nhất SELECT MAX(OrderQty * UnitPrice) AS ‘Largest Order’ FROM Purchasing.PurchaseOrderDetail MIN( col_name ) Trả về giá trị nhỏ nhất SELECT MIN(OrderQty * UnitPrice) AS ‘Smallest Order’ FROM Purchasing.PurchaseOrderDetail
  10. CEILING(num_expr) Trả về giá trị nhỏ nhất lớn hơn hoặc bằng num_expr SELECT CEILING(43.5) returns 44 FLOOR(num_expr) Trả về giá trị lớn nhất nhỏ hơn hoặc bằng num_expr SELECT FLOOR(43.5) returns 43 ABS(num_expr): Trả về giá trị tuyệt đối SELECT ABS(-43) return 43 POWER(num_expr,y):Hàm lũy thừa SELECT POWER(5,2) returns 25 ROUND(num_expr,length):Hàm làm tròn SELECT ROUND(43.543,1) returns 43.500 SQRT(float_expr):Hàm căn bậc hai SELECT SQRT(9) returns 3
  11. Với cú pháp hàm CAST bên dưới cho phép bạn có thể chuyển đổi một biểu thức nào đó sang một kiểu dữ liệu bất kỳ mong muốn. Thông thường đối với các kiểu dữ liệu image, text, ntext rất hạn chế trong việc chuyển đổi qua lại các kiểu dữ liệu khác. CAST ( expression AS data_type [ ( length ) ] ) expressionIs any valid expression. data_typeIs the target data type. This includes xml, bigint, and sql_variant. Alias data types cannot be used. lengthIs an optional integer that specifies the length of the target data type. The default value is 30. styleIs an integer expression that specifies how the CONVERT function is to translate expression. If style is NULL, NULL is returned. The range is determined by data_type. For more information, see the Remarks section. Với cú pháp hàm CONVERT bên dưới cho phép bạn có thể chuyển đổi một biểu thức nào đó sang một kiểu dữ liệu bất kỳ mong muốn nhưng có thể theo một định dạng nào đó (đặc biệt đối với kiểu dữ liệu ngày). CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) DECLARE @myval decimal (5, 2); SET @myval = 193.57; SELECT CAST(CAST(@myval AS varbinary(20)) AS decimal(10,5)); -- Or, using CONVERT SELECT CONVERT(decimal(10,5), CONVERT(varbinary(20), @myval)); Với cú pháp hàm STR bên dưới cho phép bạn có thể chuyển đổi kiểu dữ liệu số sang kiểu dữ liệu chuỗi. Phải đảm bảo đủ vùng trắng để chứa các ký số khi chuyển đổi sang kiểu dữ liệu chuỗi. STR ( float_expression [ , length [ , decimal ] ] ) float_expressionIs an expression of approximate numeric (float) data type with a decimal point. Length Is the total length. This includes decimal point, sign, digits, and spaces. The default is 10. decimalIs the number of places to the right of the decimal point. decimal must be less than or equal to 16. If decimal is more than 16 then the result is truncated to sixteen places to the right of the decimal point. VD: SELECT STR(123.45, 6, 1) Kết quả: 123.5 SELECT STR(123.45, 2, 2) GO Kết quả: **
  12. Hàm ngày tháng Được dùng để thao tác giá trị ngày tháng Hàm ngày tháng cho phép chúng ta lấy một phần của giá trị ngày tháng như: lấy ngày, tháng hoặc năm DATEPART: là một phần giá trị ngày tháng, được kết hợp sử dụng trong hàm ngày tháng để lấy một phần nào đó của giá trị ngày tháng GETDATE(): Trả về ngày hiện tại của hệ thống SELECT GETDATE() DATEADD(datepart,number,date): Cộng vào thêm number giá trị vào date SELECT DATEADD(mm,4,’01/01/99’) - returns 05/01/99 in the current date format DATEDIFF(datepart,date1,date2): So sánh giữa hai giá trị ngày tháng SELECT DATEDIFF(mm,’01/01/99’,’05/01/99’) - returns 4 DATENAME(datepart,date): Trả về giá trị ngày tháng dưới dạng chuỗi SELECT DATENAME(dw,’01/01/2000’) - returns Saturday DATEPART(datepart,date): Trả về một phần giá trị ngày tháng SELECT DATEPART(day,’01/15/2000’) - returns 15 DAY(date), MONTH(date), YEAR(date)
  13. REPLACE( string1, string2, string3 ): thay thế trong chuỗi 1, các chuỗi 2 thành chuỗi 3 CHARINDEX(string1, string2 [,start]):Hàm trả về vị trí đầu tiên tính từ vị trí start tại đó chuỗi string1 xuất hiện trong chuỗi string2. CHAR(ascii_code): Hàm trả về ký tự có mã ASCII tương ứng với đối số ASCII(string): Hàm trả về mã ASCII của ký tự đầu tiên bên trái của chuỗi đối số Ký tự đại diện %: đại diện cho sự xuất hiện của nhiều ký tự _: đại diện cho sự xuất hiện của một ký tự ASCII( char ) CHAR( ascii_code ) CHARINDEX( string1, string2 [, start] ) REPLACE( string1, string2, string3 ) REVERSE( string )
  14. Cho danh sách tên các khách hàng đã mua hàng trong 3 ngày gần đây Cho biết danh sách các mặt hàng đã được bán trong 1 tuần gần đây Lập danh sách gồm các thông tin: tên khách hàng, tên mặt hàng, số lượng, đơn giá, thành tiền và ngày mua hàng
  15. Cho biết tên mặt hàng đã bán với số lượng ít nhất trong năm 2013 Cho biết danh sách các mặt hàng chưa bán được sản phẩm nào
  16. Cho biết tên mặt hàng đã bán với số lượng ít nhất trong năm 2013 Cho biết danh sách các mặt hàng chưa bán được sản phẩm nào