You are on page 1of 14

CƠ SỞ DỮ

LIỆU
structured query language

I. I. Giới thiệu
II.II. Các phép toán truy
vấn
III.III. Bài tập
I. Giới thiệu

• SQL là ngôn ngữ truy vấn và thao


tác trên CSDL quan hệ
• Là ngôn ngữ phi thủ tục
• SQL khởi nguồn là SEQUEL –
Structured English Query
Language
II. Các phép toán truy vấn
SELECT [DISTINCT} * |
Tên_cột|hàm
FROM bảng
[WHERE điều_kiện]
[GROUP BY tên_cột]
[HAVING điều_kiện]
[ORDER BY tên_cột ASC |
DESC]
II. Các phép toán truy vấn
Phép Kết: INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL
JOIN
Ví dụ: In ra danh sách các khách hàng (MAKH,
HOTEN) đã mua hàng trong ngày 1/1/2017
SELECT kh.MAKH,HOTEN
FROM KHACHHANG kh INNER JOIN HOADON hd
ON kh.MAKH = hd.MAKH

WHERE NGHD = ‘1/1/2007’


II. Các phép toán truy vấn
Đặt bí danh – Alias: cho thuộc tính và quan hệ: tên_cũ AS tên_mới

◼ Select manv,hoten as [ho va ten] From NHANVIEN 

Liệt kê tất cả các thuộc tính của quan hệ:

◼ Select * from Nhanvien

◼ Select NHANVIEN.* from NHANVIEN 

Distinct: trùng chỉ lấy một lần

◼ Select distinct nuocsx from SANPHAM 

Sắp xếp kết quả hiển thị: Order by

◼ Select * from SANPHAM order by nuocsx, gia DES


II. Các phép toán truy vấn
Toán tử so sánh: =, >,<,>=,<=,<> 

Toán tử logic: AND, OR, NOT 

Phép toán: +, - ,* , /  BETWEEN …. AND 

IS NULL, IS NOT NULL 

LIKE (_ %) 

IN, NOT IN 

EXISTS , NOT EXISTS 

SOME, ALL
II. Các phép toán truy vấn
Phép chia
Sử dụng NOT EXISTS 
Ví dụ: Tìm Phi công có thể lái tất cả phi cơ 
Select MAPC from PHICONG where not exists (1)
(select * from PHICO where not exists (2) (select *
from CHUNGNHAN CN where
PHICO.MAPC=CN.MAPC and CN.MAPHICONG=
PHICONG. MAPHICONG)
Bài tập
Hiển thị thông tin các tài khoản của các khách hàng
(SoTK, TrangThai, SoDu) đã mở tài khoản vào ngày
‘01/01/2017’ (NgayMo) và sắp xếp kết quả theo số
dư tăng dần

SELECT SoTK, TrangThai, SoDu

FROM TaiKhoan

WHERE NgayMo = ’01/01/2017’

ORDER BY NgayMo ASC


Bài tập
Liệt kê mã loại giao dịch (MaLGD) cùng với tổng số
tiền (SoTien) giao dịch của từng loại giao dịch

SELECT MaLGD , SUM(SoTen) AS Tong

FROM GiaoDich

WHERE lgd.MaLGD = gd.MaLGD

GROUP BY MaLGD
Bài tập
Cho biết những khách hàng (MaKH, HoTen, CMND) đã
mở cả hai loại tài khoản: tiết kiệm (TenLTK= ‘Tiết
kiệm’) và thanh toán (TenLTK= ‘Thanh toán’)

SELECT MaKH, HoTen, CMND


FROM KhachHang kh, TaiKhoan tk, LoaiTaiKhoan ltk
WHERE kh.MaKH = tk.MaKH AND ltk.MaLTK =
tk.MaLTK
AND TenLTK = ‘Tiet Kiem’
INTERSECT
SELECT MaKH, HoTen, CMND
FROM KhachHang kh, TaiKhoan tk, LoaiTaiKhoan ltk
WHERE kh.MaKH = tk.MaKH AND ltk.MaLTK =
tk.MaLTK
AND TenLTK = ‘Thanh Toan’
Bài tập
Liệt kê thông tin các giao dịch (MaGD, SoTK, MaLGD, NgayGD,
SoTien, NoiDung) có số tiền lớn nhất trong tháng 12 năm 2017

SELECT TOP 1 WITH TIES MaGD, SoTK, MaLGD, NgayGD, SoTien,


NoiDung

FROM GiaoDich

WHERE MONTH(NgayGD) = 12 AND YEAR(NgayGD) = 2017

ORDER BY SoTien DESC


Bài tập
Liệt kê danh sách các khách hàng (MaKH, HoTen, SoDT) đã mở tất
cả các loại tài khoản

SELECT MaKH, HoTen, SoDT FROM KhachHang kh


WHERE NOT EXISTS (
SELECT * FROM LoaiTaiKhoan ltk
WHERE NOT EXISTS (
SELECT * FROM TaiKhoan tk
WHERE kh.MaKH = tk.MaKH AND ltk.MaLTK = tk.MaLTK
)
)
Bài tập
Liệt kê những loại tài khoản (MaLTK, TenLTK) được mở
nhiều nhất trong năm 2016

SELECT TOP 1 WITH TIES MaLTK, TenLTK,


COUNT(SoTK) AS SL
FROM TaiKhoan tk, LoaiTaiKhoan ltk AND
YEAR(NgayMo) = 2016
WHERE tk.MaLTK = ltk.MaLTK
GROUP BY MaTLK, TenLTK
ORDER BY SL DESC

You might also like