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
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
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
(‘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.