Bài giảng Thực hành cơ sở dữ liệu: Phần 2

54 35 0
Bài giảng Thực hành cơ sở dữ liệu: Phần 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Nối tiếp phần 1, Bài giảng Thực hành cơ sở dữ liệu: Phần 2 tiếp tục cung cấp đến bạn các bài thực hành giúp bạn nắm vững kiến thức về truy vấn nhóm; các phép nối bảng dữ liệu; truy vấn con (Subquery); thêm, sửa, xóa dữ liệu trong bảng; mô hình hóa cơ sở dữ liệu sử dụng công cụ MySQL Workbench;... Mời các bạn cùng tham khảo!

Bài thực hành số Truy vấn nhóm  Nội dung chính: Trong này, làm quen với hàm nhóm truy vấn nhóm: - Các hàm nhóm: SUM, AVG, MAX MIN , COUNT - Mệnh đề GROUP BY - Mệnh đề HAVING Các hàm nhóm Hàm SUM Đơi thơng tin cần không lưu trữ thực bảng sở liệu, lấy chúng cách tính tốn từ liệu lưu trữ Ví dụ, có bảng OrderDetails để lưu trữ thông tin đơn đặt hàng Khi nhìn vào đó, khơng biết tổng số tiền tất sản phẩm bán Tuy nhiên, hàm tính tổng SUM giúp trả lời câu hỏi Trước hết xem hoạt động hàm SUM, việc thực nhóm liệu trình bày phần Ví dụ: Tính tổng số lượng hàng hóa kho SELECT sum(quantityInStock) FROM products Kết trả sau: Hoặc để tính tổng số tiền thu từ đầu tới giờ, viết truy vấn sau: SELECT sum(priceEach * quantityOrdered) total FROM orderdetails 67 Kết trả sau: Hàm AVG AVG sử dụng để tính giá trị trung bình biểu thức, Nó khơng chấp nhận giá trị NULL Chúng ta sử dụng AVG để tính tốn giá trung bình tất sản phẩm mua sau: SELECT AVG(buyPrice) average_buy_price FROM Products Kết trả sau: Hàm MAX MIN Hàm MAX trả giá trị lớn hàm MIN trả giá trị nhỏ tập giá trị MAX(expression) MIN(expression) Ví dụ: Sử dụng MAX MIN để lấy mức giá cao mức giá nhỏ sản phẩm SELECT MAX(buyPrice) highest_price, MIN(buyPrice) lowest_price FROM Products Kết trả sau: 68 Hàm COUNT Hàm COUNT hàm đếm số lượng, chẳng hạn đếm số lượng sản phẩm bán sau: SELECT COUNT(*) AS Total FROM products Kết trả sau: Lưu ý: phiên khác hàm COUNT sử dụng tham số tên cột Nếu cách sử dụng, đếm dịng mà giá trị cột khác NULL Mệnh đề nhóm GROUP BY Mệnh đề GROUP BY sử dụng để gộp ghi có giá trị hay nhiều cột, thành tập hợp GROUP BY có phải đứng sau mệnh đề WHERE FROM Theo sau từ khoá GROUP BY danh sách biểu thức, phân cách dấu phẩy SELECT col1_,col_2, col_n, hàm nhóm(biểu thức) FROM tên bảng WHERE điều kiện GROUP BY col_1, col_2, col_n ORDER BY danh sách cột Theo định nghĩa, hàm nhóm cho phép thực phép tính tập ghi trả giá trị Hàm nhóm bỏ qua giá trị null thực tính tốn, ngoại trừ hàm COUNT Hàm nhóm thường sử dụng với mệnh đề GROUP BY câu lệnh SELECT 69 Ví dụ: Giả sử muốn phân chia đơn đặt hàng theo nhóm phụ thuộc vào tình trạng đơn hàng, làm sau: SELECT status FROM orders GROUP BY status Kết trả sau: Các hàm nhóm sử dụng với GROUP BY để thực tính tốn nhóm ghi trả giá trị cho hàng Ví dụ: muốn biết có đơn đặt hàng nhóm trạng thái, sử dụng hàm COUNT sau: SELECT status, count(*) FROM orders GROUP BY status Kết trả sau: 70 Ví dụ: muốn biết có loại sản phẩm loại dòng sản phẩm SELECT productLine, count(*) FROM products GROUP BY productline Ví dụ: Để có tổng số tiền cho sản phẩm bán, cần sử dụng chức SUM nhóm sản phẩm Dưới truy vấn: SELECT productCode,sum(priceEach * quantityOrdered) total FROM orderdetails GROUP by productCode Kết trả sau: 71 Ví dụ: Giả sử muốn xem kết truy vấn trên, hiển thị theo thứ tự tăng dần làm sau: SELECT productCode,sum(priceEach * quantityOrdered) total FROM orderdetails GROUP by productCode ORDER BY total DESC Kết trả sau: Lưu ý: khác GROUP BY MySQL ANSI SQL MySQL tuân theo chuẩn ANSI SQL Tuy nhiên, có khác biệt sử dụng GROUP BY MySQL sau:  Trong ANSI SQL, phải thực GROUP BY tất cột xuất mệnh đề SELECT MySQL khơng địi hỏi vậy, đưa thêm cột vào mệnh đề SELECT không bắt buộc chúng phải xuất mệnh đề GROUP BY 72  MySQL cho phép xếp nhóm theo thứ tự kết tính tốn, mặc định giảm dần Mệnh đề điều kiện HAVING HAVING mệnh đề xuất khơng mệnh đề SELECT Nó điều kiệ lọc liệu nhóm ghi kết việc thực hàm nhóm HAVING thường sử dụng với GROUP BY, điều kiện lọc áp dụng cột xuất mệnh đề GROUP BY mà Nếu HAVING không di kèm với GROUP BY, có ý nghĩa WHERE mà Lưu ý rằng, HAVING áp dụng nhóm ghi, cịn WHERE áp dụng ghi riêng lẻ Ví dụ: Chúng ta sử dụng mệnh đề GROUP BY để có tất đơn đặt hàng, số lượng mặt hàng bán tổng giá trị đơn đặt hàng sau: SELECT ordernumber, sum(quantityOrdered) AS itemsCount, sum(priceEach * quantityOrdered) AS total FROM orderdetails GROUP BY ordernumber 73 Bây giờ, yêu cầu hiển thị đơn hàng có tổng giá trị lớn $1000 cách sử dụng HAVING sau: SELECT ordernumber, sum(quantityOrdered) AS itemsCount, sum(priceEach * quantityOrdered) AS total FROM orderdetails GROUP BY ordernumber HAVING total > 1000 Chúng ta sử dụng bí danh cho cột sum (priceEach * quantityOrdered) total, mệnh đề HAVING, cần dùng bí danh thay Gõ sum( priceeach) lần Có thể sử dụng điều kiện kết hợp mệnh đề HAVING với tốn tử OR, AND Ví dụ: muốn biết đơn hàng có tổng giá trị lớn $ 1000 có 600 mặt hàng đó, sử dụng truy vấn sau đây: 74 SELECT ordernumber, sum(quantityOrdered) AS itemsCount, sum(priceeach) AS total FROM orderdetails GROUP BY ordernumber HAVING total > 1000 AND itemsCount > 600  Bài tập thực hành Đưa tên thành phố số lượng khách hàng thành phố Đưa số lượng đơn đặt hàng tháng 3/2005 Đưa số lượng đơn đặt hàng tháng năm 2005 Đưa 10 mã đơn đặt hàng có giá trị lớn Đưa mã nhóm hàng tổng số lượng hàng hố cịn kho nhóm hàng 75 Bài thực hành số Các phép nối bảng liệu  Nội dung chính: Trong thực hành trước, truy vấn thực bảng liệu Không ngạc nhiên nhiều truy vấn yêu cầu thông tin từ nhiều bảng liệu khác Ví dụ muốn đưa thơng tin khách hàng đơn hàng, cần kết hợp thông tin từ hai bảng liệu customers orders Kết hợp bảng liệu để tạo bảng suy diễn gọi phép nối (join) Trong này, làm quen với phép toán nối để truy vấn liệu từ nhiều bảng : INNER JOIN, LEFT JOIN, SELF JOIN PHÉP NỐI TRONG (INNER JOIN) INNER JOIN hay gọi phép nối trong, phần tùy chọn câu lệnh SELECT Nó xuất liền sau mệnh đề FROM Trước sử dụng INNER JOIN, phải xác định rõ tiêu chí sau đây:  Trước tiên, cần phải xác định bảng mà muốn liên kết với bảng Bảng xuất mệnh đề FROM Bảng muốn nối với bảng phải xuất sau từ khóa INNER JOIN Về mặt lý thuyết, nối bảng với số 76 MySQL Workbench cung cấp môi trường khác nhau:  Windows  Linux  Mac OS X Trên môi trường Windows, để chạy Workbench máy tính cần cài đặt NET framework Phần sau tập trung vào chức mơ hình hóa liệu Tạo mơ hình quan hệ thực thể EER Bước 1: Sử dụng chức Create new EER Model để tạo mơ hình 106 Bước 2: Thêm biểu đồ vào mơ hình (chọn Model -> Add Diagram) 107 Bước 3: Thêm bảng yêu cầu vào biểu đồ tạo bước trước sửa đổi bảng để đạt yêu cầu đặt Để thêm bảng vào mơ hình, chọn vào biểu tượng khoanh trịn hình Để sửa đổi bảng, chọn bảng chọn chức Edit Table Ví dụ: sửa tên bảng tạo film bổ sung thêm cột hình vẽ  PK: thuộc tính khóa  NN: giá trị không để trống  UQ: ràng buộc giá trị  BIN: để giá trị lưu dạng nhị phân  UN: Unsigned thuộc tính lưu dạng khơng dấu 108  AI: Nếu giá trị thuộc tính tự tăng  Default: Là giá trị ngầm định cột Tạo liên kết bảng Công cụ hỗ trợ tạo mối quan hệ bảng: gồm quan hệ 1-1, quan hệ 1-n, quan hệ n-m Chú ý: với quan hệ 1-n, cơng cụ cung cấp tình tạo quan hệ: 109  Nếu lựa chọn biểu tượng nét đứt: thuộc tính tự động tạo bên bảng tham chiếu để tham chiếu tới khóa bảng tham chiếu, thuộc tính tạo khơng phải thuộc tính khóa bảng tham chiếu  Nếu lựa chọn biểu tượng nét liền: thuộc tính tương tự tạo ra, khác biệt chỗ thuộc tính có thuộc tính khóa bảng tham chiếu  Nếu lựa chọn biểu tượng nét liền kèm bút: cho phép lựa chọn thuộc tính có sẵn bảng tham chiếu làm khóa ngồi tham chiếu tới khóa bảng tham chiếu Ví dụ: Tạo quan hệ 1-n bảng language bảng film tạo bước Bước 1: Chọn vào biểu tượng hình vẽ Bước 2: Click chuột vào bảng film, tiếp click chuột vào bảng language Kết sinh ràng buộc khóa liên kết hai bảng film language Chú ý: thuộc tính language_language_id tự động sinh 110 Ngồi cách tạo liên kết khóa ngồi trên, tạo liên kết khóa ngồi cách  Chọn sửa đổi bảng tham chiếu  Chọn vào tab Foreign Keys hình vẽ đây: Chú ý: Giao diện ngồi tạo liên kết khóa ngồi cịn hỗ trợ sửa đổi tùy chọn khóa ngồi ON UPDATE, ON DELETE 111 Ví dụ: Tạo liên kết n-m hai bảng film category Bước 1: Chọn vào biểu tượng hình vẽ Bước 2: Click chuột vào bảng film sau bảng category Kết công cụ tự động sinh bảng có tên film_has_category có khóa là tổ hợp từ khóa hai bảng film bảng category Sau bước tạo trên, người sử dụng sửa đổi bảng sinh theo nhu cầu 112 Tạo CSDL từ mơ hình quan hệ thực thể EER Để tạo sở liệu tên my_classicmodels lưu vào MySQL từ mơ hình trên: Bước 1: Sử dụng chức Database -> Forward Engineer Bước 2: Chọn đối tượng từ mơ hình EER lưu vào CSDL Bước 3: Chọn kết nối tới MySQL server dùng để lưu trữ CSDL tạo 113 Đồng hóa mơ hình EER với CSDL MySQL Server Trong q trình phát triển, mơ hình EER CSDL có thay đổi, Workbench cung cấp chức hỗ trợ đồng hóa thay đổi mơ hình EER CSDL 114 Ví dụ trên, mơ hình EER bổ sung bảng actor Để tiến hành đồng hóa, thực bước sau: Bước 1: Chọn chức Database -> Synchronize Model Bước 2: Chọn kết nối tới MySQL server cần đồng hóa Bước 3: Chọn CSDL muốn đồng đối tượng cần đồng hóa mơ hình EER CSDL 115 Tạo mơ hình quan hệ thực thể EER từ CSDL có sẵn Bên cạnh tạo mơ hình quan hệ thực thể EER từ đầu, tạo mơ hình từ CSDL có sẵn, điều gặp cần phát triển tiếp hệ thống CSDL có sẵn Chọn chức năng: “Create EER Model From Existing Database” 116 Hộp thoại Database server muốn kết nối đến Bước chọn CSDL muốn sinh mơ hình EER 117 Workbench tạo mơ hình EER từ CSDL chọn hình Lưu ý: bảng mơ hình chưa có liên kết CSDL gốc, chưa có liên kết bảng liệu 118  Bài tập thực hành Tạo mơ hình tên my_classicmodels gồm bảng sau: Các ràng buộc khóa ngồi với tùy chọn ON UPDATE CASCADE Các bảng sử dụng engine InnoDB Các khóa kiểu số tự động tăng Dùng chức Forward Engine để tạo sở liệu đặt tên my_classicmodels Bổ sung bảng customers sau vào mơ hình tạo câu 119 Bảng orders tạo câu tham chiếu tới bảng customers Sau sử dụng chức đồng hóa để đồng mơ hình với CSDL my_classicmodels lưu MySQL Server 120 ... e1.email, concat (e2.lastName ," ",e2.firstName) as manager, e2.email FROM employees e1, employees e2 WHERE e1.reportsTo = e2.employeeNumber; Kết trả sau: 87  Bài tập thực hành: Đưa thông tin... 1000 AND itemsCount > 600  Bài tập thực hành Đưa tên thành phố số lượng khách hàng thành phố Đưa số lượng đơn đặt hàng tháng 3 /20 05 Đưa số lượng đơn đặt hàng tháng năm 20 05 Đưa 10 mã đơn đặt hàng... nhóm hàng tổng số lượng hàng hố cịn kho nhóm hàng 75 Bài thực hành số Các phép nối bảng liệu  Nội dung chính: Trong thực hành trước, truy vấn thực bảng liệu Không ngạc nhiên nhiều truy vấn yêu

Ngày đăng: 17/04/2022, 12:45

Tài liệu cùng người dùng

Tài liệu liên quan