intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng SQL Server 2008: Chương 4 - Nguyễn Đức Cương

Chia sẻ: Lavie Lavie | Ngày: | Loại File: PDF | Số trang:19

80
lượt xem
8
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng SQL Server 2008: Chương 4 - Thao tác dữ liệu của Nguyễn Đức Cương biên soạn giúp cho các bạn biết được các lệnh thao tác thêm, xóa, sửa dữ liệu; thêm dữ liệu, hiệu chỉnh dữ liệu, xóa dữ liệu trực tiếp trên CSDL; lệnh tìm kiếm, lọc dữ liệu; liệt kê, tìm kiếm lọc dữ liệu từ 1 hoặc nhiều bảng; ý nghĩa và cách sử dụng của một số hàm hệ thống.

Chủ đề:
Lưu

Nội dung Text: Bài giảng SQL Server 2008: Chương 4 - Nguyễn Đức Cương

  1. 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 Lecturer: Nguyễn Đức Cương - FIT  Mệnh đề HAVING Email: cuongnguyenduc@gmail.com Website: http://www.nguyenduccuong.com  Các hàm hệ thống  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 liệu 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 trực tiếp trên CSDL  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 bảng  DELETE  Mô tả ý nghĩa và cách sử dụng của một số hàm hệ thống Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 3 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 4 1
  2. 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 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’);  Ý 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 Câu lệnh INSERT ... SELECT Câu lệnh INSERT ... SELECT  Cú pháp:  Ví dụ:  INSERT [INTO] [()]  INSERT EmployeeSales SELECT {danh sách cột} Select EmployeeId, LastName FROM Employee FROM {danh sách bảng} WHERE EmployeeID LIKE ‘3%’ [WHERE ];  Ý nghĩa:  Thêm 1 hoặc nhiều dòng dữ liệu từ 1 hay nhiều bảng vào trong bảng khác. Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 7 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 8 2
  3. Câu lệnh SELECT Câu lệnh SELECT  Cú pháp  Ví dụ 1: Cho biết thông tin về các phòng ban? SELECT *|{[DISTINCT] column|expression [alias],...} SELECT Maphong,Tenphong, DiaChi, Tel FROM table(s) FROM PhongBan [WHERE condition(s)] hoặc: [HAVING group_condition] [ORDER BY {column, expr, alias} SELECT * [ASC|DESC]]; FROM PhongBan  Ý nghĩa: lọc thông tin từ 1, nhiều bảng  Lưu ý thứ tự thực hiện lệnh Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 9 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 10 Câu lệnh SELECT Câu lệnh SELECT  Ví dụ 2: Cho biết danh sách thưởng của các nhân  Ví dụ 3: Cho biết mã các ngoại ngữ mà viên bao gồm các thông tin mã nhân viên, họ tên, các nhân viên trong cơ quan đã học? lương, và thưởng (bằng lương + 40% lương)? Câu lệnh:  Câu lệnh: Select Mann From TDNN SELECT Manv, Hoten, Luong, 1.4* Luong as Thuong hoặc FROM Nhanvien Select Distinct Mann From TDNN Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 11 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 12 3
  4. Câu lệnh SELECT Câu lệnh SELECT – mệnh đề WHERE  Ví dụ 4: Đưa ra thông tin về 2 nhân  Lọc kết quả ra của mệnh đề FROM, hạn chế dòng dữ liệu được trả về trong kết quả viên đầu tiên trong bảng nhân viên?  Biểu thức điều kiện Câu lệnh:  Biểu thức Select top 2 *  Dữ liệu trong bảng From NHANVIEN  Các toán tử  Các hàm hệ thống hoặc do người dùng định nghịa Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 13 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 14 Câu lệnh SELECT Câu lệnh SELECT  Các phép toán trong Biểu thức điều kiện Vídụ 5: Cho biết danh sách các nhân viên • Toán tử so sánh: >, =, làm việc ở phòng có mã số là HCA? • Toán tử logic: AND, OR, NOT  Câu lệnh: • Toán tử phạm vi: BETWEEN… AND • Thuộc DS giá trị: IN and NOT IN Select * • Giá trị chưa biết:IS NULL and IS NOT NULL From Nhanvien • Tồn tại trong Subquery :EXISTS and NOT EXISTS Where Maphong = ‘HCA’ • 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
  5. Câu lệnh SELECT Câu lệnh SELECT  Ví dụ 6: Cho biết mã nhân viên, họ tên,  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ó ngày sinh, lương của các nhân viên có lương nằm trong khoảng từ 2000000 đồng lương không nằm trong khoảng từ 1000000 đến 3000000 đồng? đồng đến 2000000 đồng? Câu lệnh: Thực hiện: 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  Ví dụ 09: Cho biết các nhân viên làm viên chưa có số điện thoại? việc ở phòng có mã phòng là ‘HCA ‘hoặc ‘KDA’? Select * From Nhanvien Câu lệnh: Where SDT is Null Select * From Nhanvien 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
  6. Câu lệnh SELECT Câu lệnh SELECT  Ví dụ 10: Cho biết danh sách các nhân viên Mệnh đề ORDER BY có tên bắt đầu bằ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ều tăng dần của lương? Select *  Câu lệnh From Nhanvien 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ụ 12: Hãy đưa ra danh sách nhân viên  Ví dụ 13: Liệt kê họ, tên của khách hàng và sắp theo theo chiều tăng dần của lương, nếu 2 xếp thành 1 cột tăng dần nhân viên có cùng lương thì sắp xếp theo  SELECT LastName + ‘-’ + FirstName as FullName ngày sinh giảm dần? FROM Customer Select Manv, Hoten, Ngaysinh, Luong ORDER BY FullName ASC 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 6
  7. 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 (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  AVG(), – MIN(), – MAX(), – SUM() đơn đã được bán.  COUNT()  Hiển thị tên, họ của tất cả người mua hàng  SQUARE() (shopper) sống ở tiểu bang California  SQRT()  ROUND() Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 25 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 26 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ự  Các hàm xử lý xâu kí tự (tiếp)  ASCII(s): trả về giá trị mã ASCII của kí  +: phép toán ghép các xâu tự bên nhất trái của xâu  Len(s): trả về độ dài của xâu  Char(n): trả ra kí tự thứ n trong bảng  LTRIM(s): loại bỏ các kí tự trắng bên trái xâu 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): trả về n kí tự (xâu con) phía bên trái nhất xâu s  Lower(s): chuyển đổi xâu sang chữ thường  Right(s, n): trả về n kí tự (xâu con) phía bên phải nhất xâu s 27 28 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 27 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 28 7
  8. 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í Hàm thời gian: 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ị xuất hiện trong xâu s bằng xâu s2 nguyên là thành phần của giá trị date  Stuff (s, m, n, s1): xóa xâu con n kí tự bắt  Các tham số của datepart: đầu từ vị trí thứ m trong xâu s và thay thế  qq,q :Quarter  wk, ww :Week vào đó xâu s1  yy, yyyy: Year  dw :Weekday  mm, m:Month  hh :Hour  Reverse(s): trả về xâu đảo ngược của xâu  dy,y :Dayofyear  mi,n :Minute s  dd,d :Day  ss,s: Second  ms :Milisecond 29 30 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 29 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 30 MỘT SỐ HÀM THÔNG DỤNG MỘT SỐ HÀM THÔNG DỤNG Hàm thời gian (TT):  Hàm chuyển đổi kiểu dữ liệu  DateDiff(datepart, date1,date2): trả về khoảng – Convert(datatype[(size) ], exp [,style]) ngày, tháng, năm, . . . giữa 2 ngày date1 và date2 – Hàm CAST()  Dateadd(datepart,n,date): thêm một số n datepart vào 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 8
  9. 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 •Count ([All | Distinct] Biểu thức): biểu thức Hàm đếm số lượng các bộ thỏa mãn điều kiện 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 •Max (Biểu thức), Min (Biểu thức): tính kiểu số: 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 Ví dụ 14: Cho biết tổng số nhân viên và phòng có mã KDA? trung bình lương của cơ quan? Select Avg(Luong) as TBluong From NHANVIEN Select count(*) as TongNv, Avg(Luong) as Where Maphong= ’KDA’ 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
  10. 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 nhóm (kết hợp thêm mệnh đề order by)  Ví dụ: Liệt kê thông tin Productname, CategoryName, Unitprice các product. Dùng mệnh đề COMPUTE để  Ví dụ: Liệt kê thông tin Productname, CategoryName, thống kê đơn giá trung bình của sản phẩm. 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 From Categories c,Products p  Select ProductName,CategoryName,UnitPrice where c.CategoryID= p.CategoryID From Categories c,Products p order by CategoryName where c.CategoryID= p.CategoryID Compute avg(UnitPrice) order by CategoryName Compute avg(UnitPrice) by CategoryName Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 37 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 38 Câu lệnh UPDATE.. SET Câu lệnh UPDATE.. SET  Cú pháp  Ví dụ: UPDATE update SinhVien SET = [, = , . . . ] set MaLop=‘DHTH5TLT' [WHERE (s)] where MaSV=‘A012'  Ý nghĩa:  Ví dụ 2: Tăng giá sản phẩm có tên Heneiken lên  Cập nhật thông tin trên các cột col_name1, 1% col_name2, . . . cho các bản ghi thỏa mãn điều kiện sau Where Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 39 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 40 10
  11. Câu lệnh DELETE Câu lệnh DELETE  Cú pháp:  Ví dụ: DELETE FROM table name  Delete from Sinhvien Where Malop=‘CDTH14A’ [WHERE condition]  Bài tập:  Ý nghĩa: 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’  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 CSDL - Northwind Bài tập  Customers (CustomerID, CompanyName, Address, City, 1/ Lọc các hóa đơn (Orders) được lập cho khách ..) - thông tin khách hàng hàng (Customers) có mã 'ALFKI'  Categories (CategoryID, CategoryName,..)- Thông tin 2/ Lấy thông tin của các sản phẩm (Products) của DM sản phẩm loại mặt hàng 'Seafood' (Category)  Products (ProductID, ProductName, UnitPrice, ..)- 3/ Viết câu lệnh để xem thông tin khách hàng tại Thông tin sản phẩm thành phố 'London'  Employees (EmployeeID, LastName, FirstName, City,..) 4/ Viết câu lệnh để hiển thị giá (UnitPrice) của mặt - Thông tin nhân viên hàng 'Chai' khi tăng thêm 10%  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 11
  12. 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' SQL 7/ Hiển thị tên của các nhân viên có năm sinh >=1960 NGÔN NGỮ THAO TÁC 8/ Tính tuổi trung bình, nhỏ nhất, lớn nhất của các DỮ LIỆU (tiếp) nhân viên 9/ Tăng đơn giá của sản phẩm có tên 'Konbu' lên 3% Lecturer: Nguyễn Đức Cương - FIT Email: cuongnguyenduc@gmail.com 10/ Giảm giá tất cả sản phẩm của loại 'Seafood' Website: http://www.nguyenduccuong.com xuống 5% Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 45 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  Truy vấn con  Không thay đổi dữ liệu  Sử dụng lượng từ trong truy vấn  Sử dụng bí danh để dễ đọc  Truy vấn hợp (UNION)  Các loại liên kết:  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
  13. 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ị  Ví dụ: Lọc ra thông tin Tên khách hàng, Mã hóa trong cột liên kết giữa hai bảng là bằng nhau. đơn và ngày lập hóa đơn của các khách hàng.  Cú pháp:  Câu lệnh 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 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 49 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 50 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: làm việc ở phòng kinh doanh hoặc phòng kỹ thuật?  LEFT OUTER JOIN: trả về kết quả là Select hoten 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 From NHANVIEN NV 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 On NV.MAPHONG = P.MAPHONG cả những dòng không so trùng với bảng bên trái (bảng cha). Where Tenphong in ( “Kinh doanh”, “Kỹ thuật”)  Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 51 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 52 13
  14. 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ả sống có tồn tại nhà xuất bản nào không SELECT colname(s)  Câu lệnh FROM table1 {LEFT OUTER JOIN | Select a.au_fname, a.au_lname, p.pub_name RIGHT OUTER JOIN} table2 FROM authors a LEFT OUTER JOIN publishers p ON ON table1.colname=table2.colname a.city = p.city Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 53 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 54 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  CROSS JOIN: trả về tất cả các record mà mỗi phố nhà xuất bản có cùng thành phố với tác giả dòng trong bảng thứ nhất kết hợp với tất cả không? các dòng trong bảng thứ hai, CROSS JOIN tương đương với tích descartes của các record  Câu lệnh trong hai bảng tham gia. Select a.au_fname, a.au_lname, p.pub_name  Cú pháp: FROM authors a RIGHT OUTER JOIN publishers p ON a.city = p.city SELECT column_list FROM table1 CROSS JOIN table2 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 55 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 56 14
  15. 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: FROM authors CROSS JOIN publishers 1 giá trị, 1 danh sách giá trị, tập dữ liệu Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 57 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 58 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? … Select hoten (KDA, KTA) From NHANVIEN Where Maphong in (Select Maphong From PHONG Where tenphong in (‘Kinh … … doanh’, ‘Kỹ thuật’)) Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 59 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 60 15
  16. Truy vấn con Truy vấn lồng  Ví dụ 2 - Cho biết danh sách nhân viên có mức lương lớn nhất Ví dụ 2: Cho biết họ tên các nhân viên có lương lớn nhất? 3000000 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 Truy vấn lồng Sử dụng lượng từ trong truy vấn  Lượng từ Exists (tồn tạ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 ở Where Exists () Select * True: nếu tập hợp khác rỗng From NHANVIEN Where luong > (Select max(luong) False: ngược lại From NHANVIEN Where Maphong in (Select Maphong From Phong Where Tenphong = ‘Kinh doanh’)) Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 63 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 64 16
  17. 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 đã Where All học ít nhất một ngoại ngữ? ( ) 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á Select * From NHANVIEN nv trị (hoặc tập giá trị do truy vấn con trả ra). Where Exists (Select * From TDNN td FALSE: Ngược lại 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 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  Ví dụ 6: Đưa ra danh sách các nhân nhân viên có lương lớn nhất? viên có lương lớn hơn lương mọi nhân viên làm ở phòng Kinh doanh? Select * From NHANVIEN Select * (2500000,2600000,270000 Where luong >= ALL (Select luong From NHANVIEN 00,16000000, 2000000) Where luong >= ALL (Select luong From NHANVIEN ) (‘KDA’) From NHANVIEN Where Maphong in (Select Maphong From Phong Where Tenphong = ‘Kinh doanh’)) Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 67 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 68 17
  18. Sử dụng lượng từ trong truy vấn Sử dụng lượng từ trong truy vấn  Vídụ 7: Đưa ra tên phòng có nhiều  Lượng từ any | some nhân viên nhất? WHERE Any | Some () Select Tenphong From PHONG (‘KTA’) TRUE: khi một giá trị của thuộc tính thỏa Where Maphong in (Select Maphong mãn phép so sánh với ít nhất một phần From NHANVIEN tử trong tập hợp giá trị (hoặc tập giá trị Group by Maphong (4,6,9) do truy vấn con trả ra). Having count (*) >= ALL (Select count(*) From NHANVIEN FALSE: Ngược lại 4, 6, 9 Group by Maphong )) Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 69 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 70 Sử dụng lượng từ trong truy vấn Mệnh đề Compute, Compute by  Ví dụ 8: Cho biết các nhân viên có  Danh sách các product, thông tin bao gồm: Productname, CategoryName, Unitprice. Có dùng lương lớn hơn ít nhất một nhân viên mệnh đề COMPUTE để liệt kê đơn giá trung bình phòng kinh doanh? theo từng CategoryName. Select * (2500000,2600000,270000 From NHANVIEN 00,16000000, 2000000)  Bổ sung COMPUTE vào câu trên để thống kê thêm Where luong > ANY (Select luong đơn giá trung bình và tổng số lượng tồn của tất cả các product. From NHANVIEN Where Maphong in (Select Maphong From Phong Where Tenphong = ‘Kinh doanh’)) Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 71 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 72 18
  19. 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 > ? ) } UNION[ALL] < query specification | ( < query expression > ) Select Manv, Hoten From NHANVIEN nv, TDNN td [ UNION [ ALL ] Where nv.Manv = td.Manv and Mann =‘01’ < query specification | ( < query expression Union all > ) Select Manv, Hoten From NHANVIEN nv, TDNN td [ ...n ] ] 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 Truy vấn hợp Thảo luận Chú ý:  Số lượng, thứ tự các cột phải giống nhau trong mọi truy vấn.  Kiểu dữ liệu của các cột tương ứng trong các truy vấn phải tương thích. Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 75 Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 76 19
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2