Bài giảng Cơ sở dữ liệu - Bài 4: Ngôn ngữ SQL truy vấn cơ sở dữ liệu - Thiều Quang Trung
1 • Câu truy vấn tổng quát
2 • Toán tử sử dụng trong truy vấn
3 • Các dạng câu truy vấn
4 • Các hàm tổng hợp nhóm
5 • Ví dụ các câu hỏi truy vấn
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Cơ sở dữ liệu - Bài 4: Ngôn ngữ SQL truy vấn cơ sở dữ liệu - Thiều Quang Trung", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Cơ sở dữ liệu - Bài 4: Ngôn ngữ SQL truy vấn cơ sở dữ liệu - Thiều Quang Trung
BÀI 4 NGÔN NGỮ SQL TRUY VẤN CSDL GV Th.S. Thiều Quang Trung Trường Cao đẳng Kinh tế đối ngoại • Câu truy vấn tổng quát 1 • Toán tử sử dụng trong truy vấn 2 • Các dạng câu truy vấn 3 • Các hàm tổng hợp nhóm 4 • Ví dụ các câu hỏi truy vấn 5 Nội dung GV Thiều Quang Trung 2 Ngôn ngữ truy vấn SQL • Là ngôn ngữ chuẩn, có cấu trúc dùng để truy vấn và thao tác trên CSDL quan hệ. • Câu truy vấn tổng quát: SELECT [DISTINCT] danh_sách_cột | hàm FROM danh sách các quan hệ (hay bảng, table) [WHERE điều_kiện] [GROUP BY danh_sách_cột_gom_nhóm] [HAVING điều_kiện_trên_nhóm] [ORDER BY cột1 ASC | DESC, cột2 ASC | DESC, ] GV Thiều Quang Trung 3 Các toán tử sử dụng trong truy vấn Toán tử so sánh: • =,>,=, • BETWEEN • IS NULL, IS NOT NULL • LIKE (%,_) • IN, NOT IN • EXISTS, NOT EXISTS • SOME, ALL, ANY Toán tử logic: AND, OR. Các phép toán: +, - ,* , / Các hàm xử lý ngày (DAY( )), tháng (MONTH( )), năm (YEAR( )) GV Thiều Quang Trung 4 Các dạng câu truy vấn 5 dạng câu SELECT: • SELECT đơn giản • SELECT có mệnh đề ORDER BY • SELECT lồng (Subquery) • SELECT gom nhóm (GROUP BY) • SELECT gom nhóm có điều kiện HAVING GV Thiều Quang Trung 5 Phân loại câu truy vấn Các hàm tổng hợp nhóm cơ bản sử dụng với câu truy vấn: • COUNT( ) • SUM( ) • MAX( ) • MIN( ) • AVG( ) GV Thiều Quang Trung 6 Ví dụ các câu hỏi truy vấn NHANVIEN (MaNV, HoTen, Phai, Luong,NTNS, Ma_NQL, MaPH) PHONGBAN (MaPH, TenPH, TRPH) DEAN (MaDA, TenDA, Phong, NamThucHien) PHANCONG (MaNV, MaDA, ThoiGian) Bài tập: Cho lược đồ CSDL “quản lý đề án công ty” như sau: GV Thiều Quang Trung 7 MANV HOTEN NTNS PHAI MA_NQL MaPH LUONG 001 Vuong Ngoc Quyen 22/10/1957 Nu QL 3.000.000 002 Nguyen Thanh Tung 09/01/1955 Nam 001 NC 2.500.000 003 Le Thi Nhan 18/12/1960 Nu 001 DH 2.500.000 004 Dinh Ba Tien 09/01/1968 Nam 002 NC 2.200.000 005 Bui Thuy Vu 19/07/1972 Nam 003 DH 2.200.000 006 Nguyen Manh Hung 15/09/1973 Nam 002 NC 2.000.000 007 Tran Thanh Tam 31/07/1975 Nu 002 NC 2.200.000 008 Tran Hong Minh 04/07/1976 Nu 004 NC 1.800.000 NHANVIEN Ví dụ các câu hỏi truy vấn GV Thiều Quang Trung 8 MADA TENDA PHONG NamThucHien TH001 Tin hoc hoa 1 NC 2002 TH002 Tin hoc hoa 2 NC 2003 DT001 Dao tao 1 DH 2004 DT002 Dao tao 2 DH 2004 MAPH TENPH TRPH QL Quan Ly 001 DH Dieu Hanh 003 NC Nghien Cuu 002 DEAN PHONGBAN GV Thiều Quang Trung 9 MANV MADA THOIGIAN 001 TH001 30,0 001 TH002 12,5 002 TH001 10,0 002 TH002 10,0 002 DT001 10,0 002 DT002 10,0 003 TH001 37,5 004 DT001 22,5 004 DT002 10,0 006 DT001 30,5 007 TH001 20,0 007 TH002 10,0 008 DT002 12,5 PHANCONG GV Thiều Quang Trung 10 Câu hỏi có toán tử BETWEEN, IS NULL và mệnh đề ORDER BY Câu hỏi 1: Sử dụng =,>,>=, Danh sách các nhân viên sinh trong khoảng từ năm 1970 đến 1975? Select MaNV, HoTen From NhanVien where Year(NTNS)>=1970 AND Year(NTNS)<=1975 Câu hỏi 2: Sử dụng BETWEEN, ORDER BY. Danh sách các nhân viên sinh trong khoảng từ năm 1970 đến 1975? Sắp xếp theo mức lương giảm dần. Select * From NhanVien where Year(NTNS) BETWEEN 1970 and 1975 ORDER BY Luong DESC Câu hỏi 3: Sử dụng IS NULL. Cho biết những nhân viên không có người quản lý trực tiếp? (không chịu sự quản lý trực tiếp của người nào) Select MaNV, HoTen, NTNS, Ma_NQL from NhanVien where Ma_NQL is Null GV Thiều Quang Trung 11 Câu hỏi có toán tử SO SÁNH IN & NOT IN Câu hỏi 4: Sử dụng Is Not Null. Cho biết những nhân viên có người quản lý trực tiếp?Thông tin hiển thị gồm: mã nhân viên, họ tên, mã người quản lý. Câu hỏi 5: Sử dụng IN (so sánh với một tập hợp giá trị cụ thể). Cho biết họ tên nhân viên thuộc phòng „NC‟ hoặc phòng „DH‟? Câu hỏi 6: Sử dụng IN (so sánh với một tập hợp giá trị chọn từ câu SELECT khác). Cho biết họ tên nhân viên tham gia đề án “Tin học hóa 1” ? GV Thiều Quang Trung 12 Câu hỏi có toán tử SO SÁNH IN & NOT IN Câu hỏi 7: Cho biết mã số, họ tên, ngày tháng năm sinh của những nhân viên đã tham gia đề án? Câu hỏi 8: Sử dụng NOT IN. Cho biết mã số, họ tên, ngày tháng năm sinh của những nhân viên không tham gia đề án nào? Gợi ý cho mệnh đề NOT IN: thực hiện câu truy vấn “tìm nhân viên có tham gia đề án (dựa vào bảng PhanCong)”, sau đó lấy phần bù. Câu hỏi 9: Cho biết tên phòng ban không chủ trì các đề án triển khai năm 2005? Gợi ý: thực hiện câu truy vấn “tìm phòng ban chủ trì các đề án triển khai năm 2005”, sau đó lấy phần bù. GV Thiều Quang Trung 13 Câu hỏi có toán tử SO SÁNH LIKE Câu hỏi 10: so sánh chuỗi = chuỗi. Liệt kê mã nhân viên, ngày tháng năm sinh, mức lương của nhân viên có tên “Bui Thuy Vu”? Câu hỏi 11: Sử dụng LIKE (%: thay thế 1 chuỗi ký tự). Tìm những nhân viên có họ Nguyễn. Câu hỏi 14: Sử dụng LIKE ( _: thay thế 1 ký tự bất kỳ). Tìm những nhân viên tên có tên „Nguyễn La_‟ (ví dụ Lam, Lan) Câu hỏi 12: Tìm những nhân viên có tên Lan. Câu hỏi 13: Tìm những nhân viên có tên lót là “Văn”. GV Thiều Quang Trung 14 Câu hỏi có hàm gộp COUNT,SUM,MAX,MIN,AVG a) Sử dụng các hàm COUNT, SUM, MIN, MAX, AVG trên 1 nhóm lớn (trên toàn bộ quan hệ): Câu hỏi 15: Tính số nhân viên của công ty. Câu hỏi 16: Tính số lượng nhân viên quản lý trực tiếp nhân viên khác. Câu hỏi 17: Tìm mức lương lớn nhất, mức lương trung bình, tổng lương của công ty. Câu hỏi 18: Cho biết nhân viên có mức lương lớn nhất Câu hỏi 19: Cho biết nhân viên có mức lương trên mức lương trung bình của công ty. GV Thiều Quang Trung 15 Câu hỏi có MỆNH ĐỀ GROUP BY b) Sử dụng các hàm COUNT, SUM, MIN, MAX, AVG trên từng nhóm nhỏ: mệnh đề GROUP BY Chia các dòng thành các nhóm nhỏ dựa trên tập thuộc tính chia nhóm. Thực hiện các phép toán trên nhóm: Count, Sum, Min, Max, AVG. GV Thiều Quang Trung 16 Giải thích MỆNH ĐỀ GROUP BY n h ó m Các thuộc tính GROUP BY: Q a a b b c c c c c d d d Chia các dòng thành các nhóm dựa trên tập thuộc tính chia nhóm Q Count(S) Q S a b c d 2 2 5 3 10 2 9 5 10 8 6 4 10 16 Câu SQL: Select Q, count(S) From NV Group by Q Quan hệ NV 18 50 Tương tự cho các hàm SUM, MIN, MAX, AVG GV Thiều Quang Trung 17 Câu hỏi có MỆNH ĐỀ GROUP BY Câu hỏi 20: Cho biết số lượng nhân viên theo từng phái? Do cột phái có 2 giá trị “nam” và “nữ”, trường hợp này ta chia bảng NhanVien thành 2 nhóm nhỏ. Thuộc tính chia nhóm là thuộc tính “Phai”. Câu hỏi 21: Cho biết số lượng nhân viên theo từng phòng? Do cột MaPH có 3 giá trị “NC” và “DH” và “QL”, trường hợp này ta chia bảng nhân viên thành 3 nhóm nhỏ. Thuộc tính chia nhóm là thuộc tính “MaPH”. Tương tự: cho biết tổng lương của mỗi phòng, cho biết mức lương thấp nhất của từng phòng, mức lương cao nhất, mức lương trung bình của từng phòng GV Thiều Quang Trung 18 Câu hỏi có MỆNH ĐỀ GROUP BY Câu hỏi 23: Với mỗi phòng, cho biết số lượng nhân viên theo từng phái? Do cột MaPH có 3 giá trị “NC” và “DH” và “QL”, mỗi phòng chia nhỏ theo từng phái: 2 nhóm “Nam” và “Nữ”, trường hợp này ta chia bảng nhân viên thành 6 nhóm nhỏ. Như vậy, tập thuộc tính chia nhóm cho câu truy vấn là (MaPH, Phai). Câu hỏi 22: Cho biết tên phòng và số lượng nhân viên theo từng phòng? Giống câu 21 nhưng bổ sung thêm bảng PhongBan để lấy tên phòng. Thuộc tính chia nhóm là (TenPH) thay cho MaPH. GV Thiều Quang Trung 19 Câu hỏi có MỆNH ĐỀ GROUP BY Câu hỏi 24: Đếm số đề án của từng nhân viên tham gia? - Do cột MaNV có 7 giá trị “NV001”,”NV008” (không có nhân viên “005”), trường hợp này ta chia bảng PhanCong thành 7 nhóm nhỏ. Với mỗi nhóm nhỏ (MaNV), ta đếm số đề án (count(MADA)) tham gia. Thuộc tính chia nhóm là thuộc tính “MaNV”. - Tương tự: tính tổng số giờ làm việc của mỗi nhân viên (SUM), thời gian làm việc thấp nhất của mỗi nhân viên (MIN), thời gian làm việc lớn nhất của mỗi nhân viên (MAX), thời gian làm việc trung bình, Câu hỏi 25: Cho biết mã, tên nhân viên và số đề án mà n/v đã tham gia? GV Thiều Quang Trung 20 Câu hỏi có MỆNH ĐỀ HAVING Câu hỏi 26: Cho biết những nhân viên tham gia từ 2 đề án trở lên? Lọc kết quả theo điều kiện, sau khi đã gom nhóm Điều kiện của HAVING là điều kiện về các hàm tính toán trên nhóm (Count, Sum, Min, Max, AVG) và các thuộc tính trong danh sách GROUP BY. Câu hỏi 27: Cho biết mã phòng ban có trên 4 nhân viên? GV Thiều Quang Trung 21 22 GV Thiều Quang Trung
File đính kèm:
- bai_giang_co_so_du_lieu_bai_4_ngon_ngu_sql_truy_van_co_so_du.pdf