Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 34

Cơ sở dữ liệu

Bài 07: Ngôn ngữ truy vấn dữ liệu

Giảng viên: Phạm Văn Hà – Khoa CNTT


Nội dung chi tiết
 N ội dung bài cũ
 Định nghĩa truy vấn dữ liệu
 Cú pháp của ngôn ngữ truy vấn dữ liệu
 Mệnh đề SELECT
 Mệnh đề WHERE
 Mệnh đề FROM
 Bài tập
 Tổng kết

2
Nội dung bài cũ

3
Nội dung bài cũ
 Ngôn ngữ định nghĩa dữ liệu (Data Definition
Language - DDL):
 Lược đồ quan hệ (Tables)
 Miền giá trị của từng thuộc tính (Columns)
 Ràng buộc toàn vẹn (Contrains)
 Các câu lệnh SQL:
 CREATE TABLE
 DROP TABLE
 ALTER TABLE
 Bài tập (nộp trên Canvas và chữa trong bu ổi TH) 4
Truy vấn dữ liệu là gì
 Một thư viện xây dựng CSDL để tổ chức quản lý và cho
mượn các loại sách
 Định nghĩa dữ liệu:
 Tạo ra các giá sách
 Quy định giá sách nào thì để loại gì
 Truy vấn dữ liệu:
 Tìm kiếm và lấy thông tin của 1 loại sách nào đó:
 Giáo trình CSDL của TS. Trần Đăng Hoan ở vị trí nào?
 Giáo trình Tin học DC của PGS. TS. Ngô Hồng Sơn còn bao
nhiêu?
 Thao tác dữ liệu:
 Cập nhật thông tin trong CSDL:
 Có sách mới lập trình C thì để vào giá sách nào?
 Cập nhật số lượng của giáo trình .NET ?
5
Truy vấn dữ liệu là gì
 Truy vấn dữ liệu:
 Là quá trình tìm kiếm và hiển thị thông tin
 Ngôn ngữ truy vấn dữ liệu (Data Query Language – DQL):
 Là ngôn ngữ rút trích thông tin trong CSDL thỏa một số
điều kiện nào đó

6
Cú pháp của ngôn ngữ truy vấn dữ liệu
 Cú pháp cơ bản Gồm 3 mệnh đề:
SELECT <danh sách các cột>
FROM <danh sách các bảng>
WHERE <điều kiện>

 SELECT: <danh sách các cột>


 Tên các cột cần được hiển thị trong kết quả truy vấn
 FROM : <danh sách các bảng>
 Tên các bảng liên quan đến câu truy vấn
 WHERE: <điều kiện>
 Biểu thức boolean xác định dòng nào sẽ được rút trích
 Nối các biểu thức: AND, OR, và NOT
 Phép toán:  ,  ,  ,  ,  , , LIKE và BETWEEN

7
Truy vấn cơ bản (tt)
 Sự tương quan giữa Ngôn ngữ truy vấn dữ liệu và ĐSQH

 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))
8
Ví dụ

Lấy tất cả các cột của


quan hệ kết quả
SELECT *
FROM NHANVIEN
WHERE PHG=5

MANV HONV TENLOT TENNV NGSINH DCHI PHAI LUONG MA_NQL PHG

333445555 Nguyen Thanh Tung 12/08/1955 638 NVC Q5 Nam 40000 888665555 5
987987987 Nguyen Manh Hung 09/15/1962 Ba Ria VT Nam 38000 333445555 5

 PHG=5 (NHANVIEN)
9
Mệnh đề SELECT
Chỉ định cột nào được lựa chọn:

SELECT MANV, HONV, TENLOT, TENNV


FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’

MANV HONV TENLOT TENNV

333445555 Nguyen Thanh Tung


987987987 Nguyen Manh Hung

 MANV,HONV,TENLOT,TENNV ( PHG=5  PHAI=‘Nam’ (NHANVIEN))


10
Mệnh đề SELECT (tt)

AS: Đặt tên bí danh cho các cột

SELECT MANV, HONV AS HO, TENLOT AS ‘TEN LOT’, TENNV AS TEN


FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’

MANV HO TEN LOT TEN

333445555 Nguyen Thanh Tung


987987987 Nguyen Manh Hung

 MANV,HO,TEN LOT,TEN 
( (
MANV,HONV,TENLOT,TENNV  PHG=5PHAI=‘Nam’(NHANVIEN)))
11
Mệnh đề SELECT (tt)

Mở rộng: Ghép nhiều cột thành 1

SELECT MANV, HONV + ‘ ’ + TENLOT + ‘ ’ + TENNV AS ‘HO TEN’


FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’

MANV HO TEN

333445555 Nguyen Thanh Tung


987987987 Nguyen Manh Hung

12
Mệnh đề SELECT (tt)

Mở rộng: Tính toán dựa trên giá trị cột

SELECT MANV, LUONG*1.1 AS ‘LUONG10%’


FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’

MANV LUONG10%

333445555 33000
987987987 27500

 MANV,LUONG10% (  MANV,LUONG*1.1(  (NHANVIEN)))


PHG=5PHAI=‘Nam’
13
Mệnh đề SELECT (tt)

Loại bỏ các dòng trùng nhau: DISTINCT

SELECT DISTINCT
LUONG LUONG
FROM NHANVIEN
WHERE PHG=5 AND PHAI=‘Nam’

LUONG

30000
- Tốn chi phí
25000
- Người dùng muốn thấy
25000
38000
38000

14
Ví dụ
 Cho biết MANV và TENNV làm việc ở phòng ‘Nghien cuu’

R1  NHANVIEN PHG=MAPHG PHONGBAN

KQ  MANV, TENNV (TENPHG=‘Nghien cuu’(R1))

SELECT MANV, TENNV


FROM NHANVIEN, PHONGBAN
WHERE
TENPHG=‘Nghien cuu’ AND PHG=MAPHG

15
Mệnh đề WHERE

SELECT MANV, TENNV Biểu thức luận lý (logic)


FROM NHANVIEN, PHONGBAN
WHERE TENPHG=‘Nghien cuu’ AND PHG=MAPHG

TRUE TRUE

16
Mệnh đề WHERE (tt)

BETWEEN: Kiểm tra dữ liệu trong 1 khoảng nào đó

SELECT MANV, TENNV


FROM NHANVIEN
WHERE LUONG>20000 AND LUONG<30000

SELECT MANV, TENNV


FROM NHANVIEN
WHERE LUONG BETWEEN 20000 AND 30000

17
Mệnh đề WHERE (tt)

NOT BETWEEN: Kiểm tra dữ liệu Không trong 1 khoảng nào đó

SELECT MANV, TENNV


FROM NHANVIEN
WHERE LUONG NOT BETWEEN 20000 AND 30000

18
Mệnh đề WHERE (tt)

LIKE: So sánh 1 giá trị với các giá trị tương tự (Sử dụng toán tử đại diện)

SELECT MANV, TENNV


FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen _ _ _ _’

Ký tự bất kỳ
SELECT MANV, TENNV
FROM NHANVIEN
WHERE DCHI LIKE ‘Nguyen %’

Chuỗi bất kỳ 19
Mệnh đề WHERE (tt)

NOT LIKE

SELECT MANV, TENNV


FROM NHANVIEN
WHERE HONV LIKE ‘Nguyen’

SELECT MANV, TENNV


FROM NHANVIEN
WHERE HONV NOT NOT LIKE ‘Nguyen’

20
Mệnh đề WHERE (tt)

So sánh thời gian:

SELECT MANV, TENNV


FROM NHANVIEN
WHERE NGSINH BETWEEN ‘1955-12-08’ AND ‘1966-07-19’

21
Mệnh đề WHERE (tt)

SO SÁNH NULL

SELECT MANV, TENNV


FROM NHANVIEN
WHERE MA_NQL IS NULL

SELECT MANV, TENNV


FROM NHANVIEN
WHERE MA_NQL IS NOT NULL

22
Mệnh đề FROM

Chỉ định lấy dữ liệu từ bảng nào:

SELECT MANV, MAPHG


FROM NHANVIEN, PHONGBAN

MANV MAPHG

333445555 1
333445555 4
333445555 5
987987987 1
987987987 4
987987987 5
… …
23
Mệnh đề FROM (tt)

Tên bí danh

SELECT TENPHG, DIADIEM


FROM PHONGBAN,
PHONGBAN ASDDIEM_PHG
PB, DDIEM_PHG AS DD
WHERE MAPHG=MAPHG
PB.MAPHG=DD.MAPHG

SELECT TENNV, NGSINH,


NV.NGSINH,
TENTN,
TENTN,
NGSINH
TN.NGSINH
FROM NHANVIEN,
NHANVIEN NV,
THANNHAN
THANNHAN TN
WHERE MANV=MA_NVIEN

24
25
Ví dụ 1
 Với những đề án ở ‘Ha Noi’, cho biết mã đề án, mã
phòng ban chủ trì đề án, họ tên trưởng phòng cùng với
ngày sinh và địa chỉ của người ấy
SELECT MADA,MAPHG,HONV + ‘ ‘ + TENLOT +’ ‘ +TENNV AS HOTEN,NGSINH,DCHI
FROM DEAN, PHONGBAN, NHANVIEN
WHERE DDIEM_DA = ‘Ha Noi’ AND PHONG = MAPHG AND TRPHG = MANV

26
Ví dụ 2
 Tìm họ tên của nhân viên phòng số 5 có
tham gia vào đề án “Sản phẩm X” với số
giờ làm việc trên 10 giờ
SELECT honv, tenlot, tennv
FROM dean, phancong, nhanvien
WHERE phg = ‘5’ and tenda = ‘Sản phẩm X’ and thoigian > 10 and soda = mada and ma_nvien =
manv

27
Ví dụ 3
 Tìm họ tên của từng nhân viên và người phụ trách trực tiếp nhân viên đó

28
Ví dụ 4
 Tìm họ tên của những nhân viên được “Nguyen Thanh Tung” phụ trách trực
tiếp

29
Bài tập
 Cho lược đồ CSDL:

30
Bài tập
 Yêu cầu:
 Đưa ra danh sách các nhân viên có trường reportsTo ch ưa xác đ ịnh.
 Đưa ra danh sách các CustomerNumber đã có thực hiện giao d ịch.
 Đưa ra danh sách các đơn hàng có ngày yêu cầu vận chuyển là ‘18/1/2003’. Lưu
ý: MySQL lưu dữ liệu ngày tháng theo định dạng năm/tháng/ngày
(YYYY/MM/DD).
 Đưa ra danh sách các đơn hàng có ngày đặt trong tháng 4 năm 2005 và có trạng
thái là ‘Shipped’
 Đưa ra danh sách các sản phẩm thuộc nhóm ‘Classic Cars’.

31
Q&A

32
Tổng kết bài học
 Nội dung cần nắm được:
 Định nghĩa và cú pháp truy vấn dữ liệu
 Mệnh đề SELECT (Lựa chọn cột, bí danh, ghép cột, tính giá trị trên c ột, loại b ỏ
giá trị trùng)
 Mệnh đề WHERE (Điều kiện lọc, BETWEEN, LIKE, NULL)
 Mệnh đề FROM (Lựa chọn bảng, bí danh bảng, điều kiện kết nối)
 Bài tập:
 Nộp trên Canvas theo Deadline
 Bài học tuần sau:
 Cách mệnh đề mở rộng: GROUP BY, ORDER BY, HAVING
 Truy vấn con (Sub query)

33
Thank you

34

You might also like