Nội dung

 Câu lệnh INSERT.. INTO

 Câu lệnh Update

 Câu lệnh Delete

 Cấu trúc lệnh Select

Chương 4. THAO TÁC DỮ LIỆU

 Mệnh đề FROM

 Mệnh đề WHERE

 Mệnh đề HAVING

 Các hàm hệ thống

Lecturer: Email: Website:

Nguyễn Đức Cương - FIT cuongnguyenduc@gmail.com http://www.nguyenduccuong.com

 Kết nối bảng

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 2

Mục tiêu

Bảo trì dữ liệu

 Mô tả được các lệnh thao tác thêm, xóa, sửa dữ

 Liên quan đến việc bổ sung thông tin mới, sửa lại dữ liệu không chính xác, có thể xóa đi dữ liệu không cần thiết

 Có thể thêm dữ liệu, hiệu chỉnh dữ liệu, xóa dữ liệu

liệu

 Nhóm lệnh DML dùng để bảo trì dữ liệu gồm 3 lệnh

 Mô tả được lệnh tìm kiếm, lọc dữ liệu

 INSERT

 Có thể liệt kê, tìm kiếm lọc dữ liệu từ 1 hoặc nhiều

 UPDATE

trực tiếp trên CSDL

 DELETE

 Mô tả ý nghĩa và cách sử dụng của một số hàm hệ

bảng

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 3

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 4

thống

1

Câu lệnh INSERT ... VALUES

Câu lệnh INSERT ... VALUES

 Cú pháp:

 Ví dụ: Thêm phòng TCHC vào bảng PhongBan

 INSERT [INTO] [()]

 INSERT PhongBan VALUES

 Ý nghĩa:

 Nhận xét

 Thêm 1 hoặc nhiều dòng dữ liệu vào trong bảng

 Khi không chỉ ra tên cột sau tên bảng

 Có chỉ ra tên cột sau tên bảng

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 5

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 6

VALUES (giá trị,..)[,(giá trị,..),..]); (‘HCTH’,’Phòng Hành chính tổng hợp’,’12, Nguyễn Văn Bảo, Gò Vấp,’08.38940390’);

Câu lệnh INSERT ... SELECT

Câu lệnh INSERT ... SELECT

 Cú pháp:

 Ví dụ:

 INSERT [INTO] [()]

 INSERT EmployeeSales

 Ý nghĩa:

 Thêm 1 hoặc nhiều dòng dữ liệu từ 1 hay nhiều

SELECT {danh sách cột} Select EmployeeId, LastName FROM Employee WHERE EmployeeID LIKE ‘3%’ FROM {danh sách bảng} [WHERE <Điều kiện>];

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 7

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 8

bảng vào trong bảng khác.

2

Câu lệnh SELECT

Câu lệnh SELECT

 Ví dụ 1: Cho biếtthông tin về các phòng ban?

 Cú pháp

SELECT Maphong,Tenphong, DiaChi, Tel FROM PhongBan hoặc: SELECT *|{[DISTINCT] column|expression [alias],...} FROM table(s) [WHERE condition(s)] [HAVING group_condition] [ORDER BY {column, expr, alias} SELECT * FROM PhongBan

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 9

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 10

[ASC|DESC]];  Ý nghĩa: lọc thông tin từ 1, nhiều bảng  Lưu ý thứ tự thực hiện lệnh

Câu lệnh SELECT

Câu lệnh SELECT

 Ví dụ 3: Cho biết mã các ngoại ngữ mà

các nhân viên trong cơquan đãhọc?

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 11

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 12

 Ví dụ 2: Cho biết danh sách thưởng của các nhân viên bao gồm các thông tin mã nhân viên, họ tên, lương,và thưởng(bằnglương+ 40% lương)? Câu lệnh:  Câu lệnh: Select Mann From TDNN SELECT Manv, Hoten, Luong, 1.4* Luong as hoặc Thuong FROM Nhanvien Select Distinct Mann From TDNN

3

Câu lệnh SELECT

Câu lệnh SELECT – mệnh đề WHERE

 Lọc kết quả ra của mệnh đề FROM, hạn chế dòng

 Ví dụ 4: Đưa ra thông tin về 2 nhân viên đầutiên trong bảngnhân viên?

 Biểu thức điều kiện

Câu lệnh:

 Biểu thức

 Dữ liệu trong bảng

Select top 2 * From NHANVIEN

 Các toán tử

 Các hàm hệ thống hoặc do người dùng định

dữ liệu được trả về trong kết quả

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 13

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 14

nghịa

Câu lệnh SELECT

Câu lệnh SELECT

Ví dụ 5: Cho biết danh sách các nhân viên làm việcởphòng có mã sốlà HCA?

 Câu lệnh:

Select * From Nhanvien Where Maphong = ‘HCA’

 Các phép toán trong Biểu thức điều kiện • Toán tử so sánh: >, <, >=, <> • Toán tử logic: AND, OR, NOT • Toán tử phạm vi: BETWEEN… AND • Thuộc DS giá trị: IN and NOT IN • Giá trị chưa biết:IS NULL and IS NOT NULL • Tồn tại trong Subquery :EXISTS and NOT EXISTS • DISTINCT : loại bỏ trùng lắp.

16

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 15

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 16

4

Câu lệnh SELECT

Câu lệnh SELECT

 Ví dụ 6: Cho biết mã nhân viên, họ tên, ngày sinh, lương của các nhân viên có lương nằm trong khoảng từ 2000000 đồng đến3000000 đồng?

 Ví dụ 7: Cho biết mã nhân viên, họ tên, ngày sinh, lương của các nhân viên có lương không nằm trong khoảng từ 1000000 đồng đến 2000000 đồng?

Thực hiện:

Câu lệnh:

Select Manv, Hoten, Ngaysinh, Luong

Select Manv, Hoten, Ngaysinh, Luong

From Nhanvien

From Nhanvien

Where (Luong  2000000) and (Luong 

Where Luong not between 1000 and 2000

3000000)

17

18

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 17

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 18

Câu lệnh SELECT

Câu lệnh SELECT

 Ví dụ 8: Đưa ra danh sách các nhân

viên chưacó sốđiệnthoại?

 Ví dụ 09: Cho biết các nhân viên làm việc ở phòng có mã phòng là ‘HCA ‘hoặc‘KDA’?

Câu lệnh:

Select * From Nhanvien Where SDT is Null

Nhanvien

Select * From Where Maphong = ‘P1’ or Maphong = ‘P2’

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 19

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 20

5

Câu lệnh SELECT

Câu lệnh SELECT

Mệnh đề ORDER BY

 Ví dụ 10: Cho biết danh sách các nhân viên

có tên bắtđầubằng ‘N’?

=> Sắp thứ tự hàng tăng, giảm  Ví dụ 11: Hãy đưa ra danh sách nhân viên

Câu lệnh:

theo theo chiềutăngdầncủalương?

 Câu lệnh

Nhanvien

Select * From Where HoTen like ‘N%’

Select Manv, Hoten, Ngaysinh, Luong

From NHANVIEN

Order By Luong Asc

21

22

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 21

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 22

Câu lệnh SELECT

Câu lệnh SELECT

 Ví dụ 13: Liệt kê họ, tên của khách hàng và sắp

 SELECT LastName + ‘-’ + FirstName as FullName

 Ví dụ 12: Hãy đưa ra danh sách nhân viên theo theo chiều tăng dần của lương, nếu 2 nhân viên có cùng lương thì sắp xếp theo ngày sinh giảmdần?

xếp thành 1 cột tăng dần

Select Manv, Hoten, Ngaysinh, Luong

From NHANVIEN

Order By Luong Asc, Ngaysinh Desc

23

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 23

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 24

FROM Customer ORDER BY FullName ASC

6

Bài tập

MỘT SỐ HÀM THÔNG DỤNG

 Hiển thị số hóa đơn (order number), cách gửi quà

 Hàm toán học

 AVG(), – MIN(), – MAX(), – SUM()

 COUNT()

 Hiển thị tên, họ của tất cả người mua hàng

 SQUARE()

(shipping mode), các phí gói quà (gift-wrap charges) và tổng số tiền (total cost ) của tất cả hóa đơn đã được bán.

 SQRT()

 ROUND()

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 25

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 26

(shopper) sống ở tiểu bang California

MỘT SỐ HÀM THÔNG DỤNG

MỘT SỐ HÀM THÔNG DỤNG

 Các hàm xử lý xâu kí tự (tiếp)

 Các hàm xử lý xâu kí tự

 +: phép toán ghép các xâu

 ASCII(s): trả về giá trị mã ASCII của kí

tự bên nhất trái của xâu

 Len(s): trả về độ dài của xâu

 LTRIM(s): loại bỏ các kí tự trắng bên trái xâu

 Char(n): trả ra kí tự thứ n trong bảng

mã ASCII

 RTRIM(s): loại bỏ các kí tự trắng bên phải xâu

 Upper(s): chuyển đổi xâu sang chữ hoa

 Left(s, n):

 Lower(s): chuyển đổi xâu sang chữ

 Right(s, n):

thường

27

28

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 27

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 28

trả về n kí tự (xâu con) phía bên trái nhất xâu s trả về n kí tự (xâu con) phía bên phải nhất xâu s

7

MỘT SỐ HÀM THÔNG DỤNG

MỘT SỐ HÀM THÔNG DỤNG

 SubString(s, m ,n): trả về xâu con dài n kí

tự của xâu s bắt đầu từ ví trí thứ m

 Getdate(): trả về ngày tháng năm của hệ thống

 Replace(s, s1, s2): thay thế các xâu con s1

 DatePart(tham số datepart,date): trả về giá trị

Hàm thời gian:

xuất hiện trong xâu s bằng xâu s2

 Các tham số của datepart:

 Stuff (s, m, n, s1): xóa xâu con n kí tự bắt đầu từ vị trí thứ m trong xâu s và thay thế vào đó xâu s1

 Reverse(s): trả về xâu đảo ngược của xâu

nguyên là thành phần của giá trị date

s

 wk, ww  dw  hh  mi,n  ss,s:  ms

30

29

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 29

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 30

 qq,q :Quarter  yy, yyyy: Year  mm, m:Month  dy,y :Dayofyear  dd,d :Day :Week :Weekday :Hour :Minute Second :Milisecond

MỘT SỐ HÀM THÔNG DỤNG

MỘT SỐ HÀM THÔNG DỤNG

Hàm thời gian (TT):

 DateDiff(datepart, date1,date2): trả về khoảng ngày, tháng, năm, . . . giữa 2 ngày date1 và date2

 Dateadd(datepart,n,date):

 Datename()

 DAY(D); MONTH(D); YEAR(D)

32

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 31

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 32

 Hàm chuyển đổi kiểu dữ liệu – Convert(datatype[(size) ], exp [,style]) – Hàm CAST() thêm một số n datepart vào date

8

MỘT SỐ HÀM THÔNG DỤNG

MỘT SỐ HÀM THÔNG DỤNG

 Các hàm nhóm dữ liệu:

Sum ([All | Distinct] Biểu thức kiểu số): Hàm tính tổng của tập giá trị được tính theo biểu thức

Avg ([All | Distinct] Biểu thức kiểu số): Hàm tính giá trị trung bình của tập giá trị thuộc tính kiểu số:

•Count ([All | Distinct] Biểu thức): Hàm đếm số lượng các bộ thỏa mãn điều kiện •Max (Biểu thức), Min (Biểu thức): Hàm tính giá trị lớn nhất, nhỏ nhất của tập giá trị được tính theo biểu thức

33

34

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 33

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 34

MỘT SỐ HÀM THÔNG DỤNG

MỘT SỐ HÀM THÔNG DỤNG

Ví dụ 13: Cho biết lương trung bình của phòng có mã KDA?

Ví dụ 14: Cho biết tổng số nhân viên và trung bình lươngcủacơquan?

Select Avg(Luong) as TBluong

From NHANVIEN Where Maphong= ’KDA’

Select count(*) as TongNv, Avg(Luong) as TBluong

From NHANVIEN

35

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 35

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 36

9

Mệnh đề Compute

Mệnh đề Compute.. by

 Dùng để tính thống kê (trung bình, tổng,..) theo cột

 Dùng để tính thống kê (trung bình, tổng,..) theo từng

 Ví dụ: Liệt kê thông tin Productname, CategoryName, Unitprice các product. Dùng mệnh đề COMPUTE để thống kê đơn giá trung bình của sản phẩm.

 Ví dụ: Liệt kê thông tin Productname, CategoryName, Unitprice các product. Dùng mệnh đề COMPUTE để liệt kê đơn giá trung bình theo từng CategoryName

 Thực hiện

 Thực hiện

 Select ProductName,CategoryName,UnitPrice

 Select ProductName,CategoryName,UnitPrice

nhóm (kết hợp thêm mệnh đề order by)

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 37

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 38

From Categories c,Products p where c.CategoryID= p.CategoryID order by CategoryName Compute avg(UnitPrice) From Categories c,Products p where c.CategoryID= p.CategoryID order by CategoryName Compute avg(UnitPrice) by CategoryName

Câu lệnh UPDATE.. SET

Câu lệnh UPDATE.. SET

 Cú pháp

 Ví dụ:

 Ý nghĩa:

 Ví dụ 2: Tăng giá sản phẩm có tên Heneiken lên

UPDATE update SinhVien SET set MaLop=‘DHTH5TLT' = [, = , . . . ] [WHERE (s)] where MaSV=‘A012'

 Cập nhật thông tin trên các cột col_name1,

1%

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 39

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 40

col_name2, . . . cho các bản ghi thỏa mãn điều kiện sau Where

10

Câu lệnh DELETE

Câu lệnh DELETE

 Cú pháp:

 Ví dụ:

 Delete from Sinhvien Where Malop=‘CDTH14A’

 Bài tập:

 Ý nghĩa:

DELETE FROM table name [WHERE condition]

 Xóa các bản ghi thỏa mãn điều kiện WHERE

 Xóa toàn bộ dữ liệu trong bảng

 TRUNCATE TABLE

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 41

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 42

Xóa những thông tin của những hóa đơn được lập bởi nhân viên có mã ‘NV01’

Bài tập

CSDL - Northwind

 Customers (CustomerID, CompanyName, Address, City,

..) - thông tin khách hàng

 Categories (CategoryID, CategoryName,..)- Thông tin

DM sản phẩm

1/ Lọc các hóa đơn (Orders) được lập cho khách hàng (Customers) có mã 'ALFKI'

 Products (ProductID, ProductName, UnitPrice,

..)-

Thông tin sản phẩm

2/ Lấy thông tin của các sản phẩm (Products) của loại mặt hàng 'Seafood' (Category)

 Employees (EmployeeID, LastName, FirstName, City,..)

- Thông tin nhân viên

3/ Viết câu lệnh để xem thông tin khách hàng tại thành phố 'London'

 Orders (OrderID, Orderdate, CustID, EmpID) - Thông

tin hóa đơn được lập

 Order Details (OrderID, ProID, Price, Quanlity)- Thông

tin chi tiết của hóa đơn

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 43

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 44

4/ Viết câu lệnh để hiển thị giá (UnitPrice) của mặt hàng 'Chai' khi tăng thêm 10%

11

Bài tập

5/ Lọc thông tin của các sản phẩm có đơn giá lớn hơn 15 và bắt đầu bởi ký tự 'C'

6/ Lọc thông tin của các sản phẩm có đơn giá từ 15 - 20 và có chứa ký tự 'C'

7/ Hiển thị tên của các nhân viên có năm sinh >=1960

SQL NGÔN NGỮ THAO TÁC DỮ LIỆU (tiếp)

Lecturer: Email: Website:

Nguyễn Đức Cương - FIT cuongnguyenduc@gmail.com http://www.nguyenduccuong.com

8/ Tính tuổi trung bình, nhỏ nhất, lớn nhất của các nhân viên 9/ Tăng đơn giá của sản phẩm có tên 'Konbu' lên 3%

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 45

10/ Giảm giá tất cả sản phẩm của loại 'Seafood' xuống 5%

Nội dung

Kết nối giữa các bảng

 Kết nối các bảng

 Chỉ tồn tại trong thời gian truy vấn

 Không thay đổi dữ liệu

 Truy vấn con

 Sử dụng bí danh để dễ đọc

 Sử dụng lượng từ trong truy vấn

 Các loại liên kết:

 Truy vấn hợp (UNION)

 INNER JOIN

 OUTERJOIN

 CROSSJOIN

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 47

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 48

12

Kết nối giữa các bảng - INNER

Kết nối giữa các bảng - INNER

 INNER JOIN: Trả về những dòng mà giá trị trong cột liên kết giữa hai bảng là bằng nhau.

 Ví dụ: Lọc ra thông tin Tên khách hàng, Mã hóa đơn và ngày lập hóa đơn của các khách hàng.

 Cú pháp:

 Câu lệnh

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 49

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 50

SELECT col_name(s) SELECT KhachHang.MaKH, TenKH, MaHD, NgayHD FROM table1 FROM KhachHang INNER JOIN HoaDon INNER JOIN table2 ON Khachhang.MaKH = HoaDon.MaHD ON table1.col_name=table2.col_name

Kết nối giữa các bảng - INNER

Kết nối giữa các bảng - OUTTER

 Ví dụ 1: Đưa ra danh sách họ tên các nhân viên

 OUTER JOIN:

 LEFT OUTER JOIN: trả về kết quả là

làm việc ở phòng kinh doanh hoặc phòng kỹ thuật?

Select hoten From NHANVIEN NV những dòng trong bảng bên trái (Bảng cha), ngay cả những dòng không so trùng với bảng bên phải (Bảng con). Inner join PHONG P

 RIGHT OUTER JOIN: trả về tất cả những dòng của bảng bên phải (bảng con), ngay cả những dòng không so trùng với bảng bên trái (bảng cha).

 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 51

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 52

On NV.MAPHONG = P.MAPHONG Where Tenphong in ( “Kinh doanh”, “Kỹ thuật”)

13

Kết nối giữa các bảng - OUTTER

Kết nối giữa các bảng - OUTER

 Cú pháp:

 Ví dụ: Hiển thị các tác giả không xét đến nơi tác giả

 Câu lệnh

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 53

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 54

sống có tồn tại nhà xuất bản nào không SELECT colname(s) FROM table1 {LEFT OUTER JOIN | RIGHT OUTER JOIN} table2 Select a.au_fname, a.au_lname, p.pub_name FROM authors a LEFT OUTER JOIN publishers p ON a.city = p.city ON table1.colname=table2.colname

Kết nối giữa các bảng - OUTER

Kết nối giữa các bảng - CROSS JOIN

 Ví dụ: Hiển thị tất cả các nhà xuất bản bất kể thành phố nhà xuất bản có cùng thành phố với tác giả không?

 Câu lệnh

 CROSS JOIN: trả về tất cả các record mà mỗi dòng trong bảng thứ nhất kết hợp với tất cả các dòng trong bảng thứ hai, CROSS JOIN tương đương với tích descartes của các record trong hai bảng tham gia.

 Cú pháp:

Select a.au_fname, a.au_lname, p.pub_name

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 55

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 56

FROM authors a RIGHT OUTER JOIN publishers p ON a.city = p.city SELECT column_list FROM table1 CROSS JOIN table2

14

Kết nối giữa các bảng - CROSS

Truy vấn con

 Ví dụ

 Nhúng 1 câu truy vấn vào trong câu truy vấn khác

 Select a.au_fname, a.au_lname, p.pub_name

 Cung cấp cho truy vấn ngoài 1 kết quả dưới dạng:

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 57

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 58

FROM authors CROSS JOIN publishers 1 giá trị, 1 danh sách giá trị, tập dữ liệu

Truy vấn con

Truy vấn con

Ví dụ 1: Đưa ra danh sách các nhân viên làm

IN

việc ở phòng kinh doanh hoặc kỹ thuật?

(KDA, KTA)

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 59

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 60

… … Select hoten From NHANVIEN Where Maphong in (Select Maphong From PHONG Where tenphong in (‘Kinh doanh’, ‘Kỹ thuật’))

15

Truy vấn lồng

Truy vấn con

 Ví dụ 2 - Cho biết danh sách nhân viên có mức

Ví dụ 2: Cho biết họ tên các nhân viên có lương lớn nhất?

Select hoten From NHANVIEN Where luong =(Select max(luong)

From NHANVIEN )

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 61

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 62

lương lớn nhất 3000000

Truy vấn lồng

Sử dụng lượng từ trong truy vấn

 LượngtừExists (tồntại)

Ví dụ 3: Đưa ra danh sách các nhân viên có lương lớn hơn lương mọi nhân viên làm ở phòng Kinh doanh?

Where Exists ()

True: nếu tập hợp khác rỗng

False: ngược lại

Select * From NHANVIEN Where luong > (Select max(luong)

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 63

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 64

From NHANVIEN Where Maphong in (Select Maphong From Phong Where Tenphong = ‘Kinh doanh’))

16

Sử dụng lượng từ trong truy vấn

Sử dụng lượng từ trong truy vấn

 Lượng từ All

Ví dụ 4: Cho biết danh sách các nhân viên đã học ít nhất một ngoại ngữ?

Where All ( )

Select * From NHANVIEN nv Where Exists (Select * From TDNN td

Where nv.Manv=td.Manv)

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 65

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 66

TRUE: khi một giá trị của thuộc tính thỏa mãn phép so sánh với mọi phần tử trong tập hợp giá trị (hoặc tập giá trị do truy vấn con trả ra). FALSE: Ngược lại

Sử dụng các lượng từ trong truy vấn

Sử dụng lượng từ trong truy vấn

 Ví dụ 5: Cho biết danh sách họ tên các

nhân viên có lương lớn nhất?

 Ví dụ 6: Đưa ra danh sách các nhân viên có lương lớn hơn lương mọi nhân viên làm ở phòng Kinh doanh?

(2500000,2600000,270000 00,16000000, 2000000)

Select * From NHANVIEN Where luong >= ALL (Select luong

From NHANVIEN )

Select * From NHANVIEN Where luong >= ALL (Select luong (‘KDA’) From NHANVIEN Where Maphong in (Select Maphong

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 67

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 68

From Phong Where Tenphong = ‘Kinh doanh’))

17

Sử dụng lượng từ trong truy vấn

Sử dụng lượng từ trong truy vấn

 Lượng từ any | some

 Ví dụ 7: Đưa ra tên phòng có nhiều

nhân viên nhất?

WHERE

Any | Some ()

(‘KTA’) (‘Ky Thuat’) Select Tenphong From PHONG Where Maphong in (Select Maphong

TRUE: khi một giá trị của thuộc tính thỏa mãn phép so sánh với ít nhất một phần tử trong tập hợp giá trị (hoặc tập giá trị do truy vấn con trả ra).

FALSE: Ngược lại

(4,6,9) From NHANVIEN Group by Maphong Having count (*) >= ALL (Select count(*)

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 69

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 70

4, 6, 9 From NHANVIEN Group by Maphong ))

Sử dụng lượng từ trong truy vấn

Mệnh đề Compute, Compute by

 Danh sách các product, thông tin bao gồm:

 Ví dụ 8: Cho biết các nhân viên có lương lớn hơn ít nhất một nhân viên phòng kinh doanh?

(2500000,2600000,270000 00,16000000, 2000000)

Productname, CategoryName, Unitprice. Có dùng mệnh đề COMPUTE để liệt kê đơn giá trung bình theo từng CategoryName.

 Bổ sung COMPUTE vào câu trên để thống kê thêm đơn giá trung bình và tổng số lượng tồn của tất cả các product.

Select * From NHANVIEN Where luong > ANY (Select luong

From NHANVIEN Where Maphong in (Select Maphong

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 71

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 72

From Phong Where Tenphong = ‘Kinh doanh’))

18

Truy vấn hợp

Truy vấn hợp

Cú pháp:

 Ví dụ 9: Cho biết danh sách mã nhân viên, họ tên các nhân viên học ngoại ngữ mã ‘01’ hoặc mã ‘03’ ?

{ < query specification > | ( < query expression > } )

Select Manv, Hoten From NHANVIEN nv, TDNN td Where nv.Manv = td.Manv and Mann =‘01’

Union all

UNION[ALL] < query specification | ( < query expression > ) [ UNION [ ALL ]

Select Manv, Hoten From NHANVIEN nv, TDNN td Where nv.Manv = td.Manv and Mann =‘03’

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 73

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 74

< query specification | ( < query expression ) > [ ...n ] ]

Truy vấn hợp

Thảo luận

 Số lượng, thứ tự các cột phải giống nhau trong

Chú ý:

 Kiểu dữ liệu của các cột tương ứng trong các

mọi truy vấn.

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 75

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 76

truy vấn phải tương thích.

19