Ngôn ngữ truy vấn dữ liệu

Sau khi buổi học sinh viên biết được:  Về kiến thức: Cấu trúc các câu lệnh truy vấn và xử lý dữ liệu trong SQL  Về kỹ năng: xem và thay đổi được dữ liệu trên một database

pdf9 trang | Chia sẻ: thuychi11 | Lượt xem: 528 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Ngôn ngữ truy vấn dữ liệu, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
29/01/2016 1 FAA NGÔN NGỮ TRUY VẤN DỮ LIỆU 1 MỤC TIÊU Sau khi buổi học sinh viên biết được:  Về kiến thức: Cấu trúc các câu lệnh truy vấn và xử lý dữ liệu trong SQL  Về kỹ năng: xem và thay đổi được dữ liệu trên một database 2 NỘI DUNG T- SQL chia làm 3 nhóm câu lệnh:  Ngôn ngữ định nghĩa dữ liệu  Ngôn ngữ thao tác dữ liệu  Ngôn ngữ điều khiển dữ liệu 3 Độ ưu tiên Toán tử 1 * (Multiply), / (Division), % (Modulo) 2 + (Positive), - (Negative), + (Add), - (Subtract) 3 =, >, =, , !=, !>, !< (Comparison operators) 4 NOT 5 AND 6 ALL, ANY, BETWEEN, IN, LIKE, OR, SOME 7 = (Assignment) TOÁN TỬ VÀ ĐỘ ƯU TIÊN Ngôn ngữ định nghĩa dữ liệu  1. Create: Tạo đối tượng  2. Alter: Thay đổi cấu trúc bảng  3. Drop: Xóa đối tượng 5 Lệnh CREATE Create Database TenCSDL Create Table TenBang ( Tên Cột Kiểu DL Null | Not Null, CONSTRAINT [Tên ràng buộc] CHECK (điều kiện), CONSTRAINT [Tên khóa chính] PRIMARY KEY CLUSTERED (DS CỘT), CONSTRAINT [Tên khóa ngoại] FOREIGN KEY (Cột khóa ngoại) REFERENCES Bảng LK đến (Cột LK) ON UPDATE CASCADE ON DELETE CASCADE ) 6 29/01/2016 2 Lệnh ALTER  ALTER TABLE VD: Thêm thông tin vào bảng ALTER TABLE ADD TênĐốiTượng Thông tin đối tượng VD: Chỉnh sửa thông tin bảng ALTER TABLE ADD TênĐốiTượng Thông tin đối tượng 7 Lệnh ALTER VD: Xóa đối tượng trong bảng ALTER TABLE DROP TênĐốiTượng 8 Lệnh DROP  DROP TênĐốiTượng 9 NGÔN NGỮ THAO TÁC DỮ LIỆU 1. Câu lệnh Select – Hiển thị dữ liệu 2. Câu lệnh Insert – Thêm dữ liệu 3. Câu lệnh Update – Cập nhật dữ liệu 4. Câu lệnh Delete – Xoá dữ liệu 10 1. CÂU LỆNH SELECT 11 Cú pháp: SELECT [ALL | DISTINCT | TOP n] danh_sách_chọn [INTO tên_bảng_mới] FROM danh_sách_bảng/khung_nhìn [WHERE điều_kiện] [GROUP BY danh_sách_cột] [HAVING điều_kiện] [ORDER BY cột_sắp_xếp] [COMPUTE danh_sách_hàm_gộp [BY danh_sách_cột] Danh_Sách _Chọn Chọn tất cả các cột trong bảng Cú pháp: SELECT * FROM Tên bảng VD: Hiển thị tất cả những dữ liệu của bảng DMHH Select * From T01_DMHH 12 29/01/2016 3 Danh_Sách _Chọn Lưu ý: Từ khóa DISTINCT TOP INTO 13 Danh_Sách _Chọn Chọn các cột được chỉ định Cú pháp: SELECT TenCot1, TenCot2, FROM Tên bảng VD: Hiển thị Mã hàng và Tên hàng Select MaHang, TenHang From T01_DMHH 14 Danh_Sách _Chọn Đổi tên các cột ở kết quả hiển thị Cú pháp: SELECT ‘tiêu_đề_cột’ = TenCot hoặc TenCot ‘tiêu_đề_cột’ hoặc TenCot as [tiêu_đề_cột] FROM Tên bảng 15 Danh_Sách _Chọn Thêm một Field tính toán vào kết quả VD: SELECT ThanhTien = SL*DonGia FROM Tên bảng 16 Mệnh đề FROM Ý nghĩa: Xác định table, khung nhìn và sự liên kết giữa các table khi truy vấn dữ liệu  DL truy vấn từ nhiều bảng nên dùng phép nối VD: Hiển thị toàn bộ thông tin hàng hóa từ bảng DanhMucHangHoa SELECT * FROM T01_DMHH 17 Mệnh đề WHERE Xác định điều kiện cho câu truy vấn Sau WHERE có thể là: Toán tử so sánh Giới hạn Danh sách Khuôn dạng Giá trị Kết hợp các điều kiện 18 29/01/2016 4 Mệnh đề WHERE  Các toán tử so sánh (>,) VD: Đọc thông tin toàn bộ mặt hàng có GiaBan = 10000 SELECT * FROM T01_DMHH WHERE GiaBan = 10000 19 Mệnh đề WHERE  Giới hạn khoảng tìm kiếm (BETWEEN và NOT BETWEEN) VD: Hiển thị mặt hàng có số lượng nhập từ 10.000 đến 20.000 SELECT * FROM ChiTietPhieuNX WHERE SoLuong between 10000 and 20000 AND SoPhieu Like ‘PN%’ 20 Mệnh đề WHERE  Danh sách các giá trị (IN và NOT IN) VD: Hiển thị thông tin của Khách hàng có mã khách là KH01, KH02 SELECT * FROM T02_DMKH WHERE MaKH IN (‘KH01’,’KH02’) 21 Mệnh đề WHERE Khi sử dụng ký tự đại diện ta dùng từ khoá LIKE, NOT LIKE Ký tự đại diện:  % : chuỗi ký tự bất kỳ  - : Ký tự đơn bất kỳ  [] ký tự đơn bất kỳ trong giới hạn được chỉ định  [^] ký tự đơn bất kỳ không trong giới hạn được chỉ định 22 Mệnh đề WHERE Toán tử logic AND, OR để kết hợp các điều kiện VD: Hiển thị thông tin về mặt hàng nhập kho có MaHang là B và SLNhap lớn hơn 10.000 SELECT * FROM ChiTietNhapKho WHERE Mahang ='SP_B' AND SLNhap >10000 23 Mệnh đề Group By GROUP BY để Phân nhóm dữ liệu Có thể áp dụng các hàm tổng hợp đối với những nhóm nhỏ hàng dữ liệu chọn ra. 24 29/01/2016 5 Mệnh đề Group By  SQL cung cấp các hàm gộp • SUM • AVG • COUNT • MAX • MIN 25 Mệnh đề Group By Câu lệnh thống kê chia làm 2 loại: Thống kê trên toàn bộ dữ liệu Thống kê phân nhóm dữ liệu 26 Mệnh đề Group By VD1: Nhập xuất kho bao nhiêu mặt hàng? SELECT count(distinct mahang) FROM ChiTietPhieuNhapXuat VD2: Đếm số lần nhập xuất của từng mặt hàng SELECT MaHang, COUNT(MaHang) FROM ChiTietPhieuNhapXuat GROUP BY MaHang 27 Mệnh đề HAVING Thiết lập điều kiện cho một nhóm hoặc hàm tổng hợp Phân biệt HAVING và WHERE? Lưu ý: Chỉ sau khi dữ liệu đã được nhóm và tổng hợp, điều kiện trong mệnh đề HAVING mới được áp dụng. 28 Mệnh đề HAVING VD: Hiển thị mặt hàng nhập kho nhiều lần trong kỳ SELECT MaHang, ‘Số lần nhập’= COUNT(MaHang) FROM ChiTietNhapXUAT WHERE SOPHIEU LIKE ‘PN%’ GROUP BY MaHang HAVING count(MaHang)>=2 29 Mệnh đề ORDER BY Sắp xếp theo thứ tự (tăng ASC, giảm DESC) VD: Sắp xếp theo chiều giảm dần về số lần nhập xuất kho của các mặt hàng SELECT MaHang, COUNT(*) as SoLanNhap FROM ChiTietPhieuNhapXuat GROUP BY MaHang ORDER BY COUNT(*) DESC 30 29/01/2016 6 Mệnh đề COMPUTE BY Cú pháp: COMPUTE Hàm gộp (tên_cột) [BY tên_cột] Hàm gộp: COUNT, AVG, SUM, MIN, MAX 31 Mệnh đề COMPUTE BY VD: Hiển thị thông tin về tổng số lượng nhập kho của từng mã hàng. SELECT MaHang, SLNhap FROM ChiTietPhieuNhap ORDER BY MaHang ASC COMPUTE sum (SLNhap) BY MaHang 32 Phép nối (JOIN) Inner Join (Phép nối trong) Outer Join (Phép nối ngoài)  Left Outer Join  Right Outer Join  Full Outer Join 33 Mệnh đề JOIN Inner Join: 34 Kết quả Mệnh đề JOIN Inner Join: Cú pháp: SELECT DS chọn FROM Bảng 1 [INNER] JOIN Bảng 2 ON điều kiện nối Điều kiện nối: Bảng 1. Cột tham chiếu = Bảng 2. Cột tham chiếu 35 Mệnh đề JOIN Outer join (phép nối ngoài) SELECT DS chọn FROM Bảng 1 [LEFT | RIGHT] OUTER JOIN Bảng 2 ON Điều kiện nối Điều kiện nối: Bảng 1. Cột tham chiếu = Bảng 2. Cột tham chiếu 36 29/01/2016 7 Outer join Lưu ý: Những cột mà không có giá trị phù hợp sẽ được hiển thị giá trị NULL. 37 Left outer Join 38 Kết quả Right outer Join 39 Kết quả Full outer Join 40 Kết quả Truy vấn con (Subquery) Subquery là lệnh SELECT mà kết quả trả về là 1 giá trị đơn (single value) và được đặt lồng vào bên trong các lệnh SELECT, INSERT, UPDATE, hay DELETE, hay bên trong truy vấn con khác. 41 Truy vấn con (Subquery) VD: Hiển thị các mặt hàng chưa nhập xuất trong kỳ (Có trong DMHH nhưng không có trong CTPNX) SELECT * FROM DanhMucHangHoa WHERE MaHang not in (SELECT MaHang FROM ChiTietPhieuNhapXuat) 29/01/2016 8 HIỂN THỊ THEO ĐIỀU KIỆN CÚ PHÁP SELECT , ‘TÊN TRƯỜNG’ =CASE WHEN Điều kiện 1 THEN Gía trị 1 WHEN Điều kiện 2 THEN Gía trị 2 .. ELSE Giá trị n END, . FROM WHERE . TẠO BẢNG ẢO CREATE VIEW TEN_BANG_AO AS CÂU LỆNH SELECT LẤY DL TẠO BẢNG ẢO 2. CÂU LỆNH INSERT  Thêm từng dòng dữ liệu INSERT INTO tên_bảng[(danh_sách_cột)] VALUES (danh_sách_trị) Thêm các dòng dữ liệu từ bảng khác: INSERT INTO tên_bảng[(danh_sách_cột)] câu_lệnh_SELECT 45 3. CÂU LỆNH UPDATE Cú pháp: UPDATE TenBang SET GIÁ TRỊ MỚI WHERE ĐK CẬP NHẬT VD: Đổi Tên của khách hàng 01 thành Công ty Viễn Thông UPDATE DMKH SET TenKH =N ‘Cty Viễn Thông’ WHERE MaKH =‘KH01’ 46 4. CÂU LỆNH DELETE Cú pháp DELETE FROM tên_bảng [FROM danh_sách_bảng] [WHERE điều_kiện] VD: Xóa Mặt hàng D Delete from DanhMucHangHoa where MaHang = ‘SP_D’ 47 4. CÂU LỆNH DELETE Xoá toàn bộ dữ liệu trong bảng TRUNCATE TABLE tên_bảng VD: Xóa toàn bộ dữ liệu của NhatKyChung truncate table NhatKyChung 48 29/01/2016 9 Ngôn ngữ điều khiển dữ liệu Grant Deny Revoke . 49