- ProductLines: Lưu trữ các danh mục dòng sản phẩm - Orders: Lưu trữ các đơn bán hàng do khách hàng đặt - OrderDetails: Lưu trữ các chi tiết của mỗi đơn hàng - Payments: Lưu trữ các khoả
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC
Trang 22
Mục L c ụ
Tuần 1: Thiết lập môi trường làm việc MySQL 4
Bài 1: Thiết lập được hệ quản trị cơ sở dữ liệu trên máy tính cá nhân 4
Bài 2: Tạo được một cơ sở dữ liệu mẫu để làm việc 4
Tuần 2: Thực hành truy vấn SQL 5
Bài 1: SELECT, ORDER BY, WHERE, SELECT DISTINCT 5
Bài 3: BETWEEN, LIKE, LIMIT 6
Bài 4: IS NULL, Table & Column Aliases 7
Bài 5: JOINS, INNER JOIN, LEFT JOIN, RIGHT JOIN, SELF JOIN,CROSS JOIN 9
Bài 6: GROUP BY, HAVING, ROLLUP 11
Bài 7: Subquery, Derived Tables, EXISTS 12
Bài 8: UNION, MINUS, INTERSECT 15
TUẦN 3: THỰC HÀNH TÌM HIỂU ĐƯỢC CẤU TRÚC MỘT CƠ SỞ DỮ LIỆU 17
Bài 1: Xây dựng lược đồ (Diagram) 17
Bài 2: Truy vấn các bảng hệ thống trong cơ sở dữ liệu 18
TUẦN 4: THỰC HÀNH XÂY DỰNG ĐƯỢC CẤU TRÚC CỦA MỘT CƠ SỞ DỮ LIỆU 19
Bài 1: Thiết lập bảng dữ liệu (PK, UK, DataType, Null, constraint) 19
Bài 2: Thiết lập quan hệ dữ liệu (Relationship) 19
Bài 3: Thiết lập khung nhìn (Views) 20
Bài 4: Thiết lập thủ tục và hàm (procedure & function) 20
TUẦN 5: THỰC HÀNH CÁC CÂU LỆNH THAO TÁC DỮ LIỆU (PHẦN MYSQL DATA MANIPULATION) 22
Bài 1: Thực hiện các câu lệnh cập nhật (insert,update, delete dữ liệu) 22
Bài 2: Cập nhật dữ liệu từ 1 bảng excel qua sinh tự động SQL Script 22
Bài 3: Cập nhật dữ liệu từ một bảng khác 24
Bài 4: Cập nhật dữ liệu qua một procedure 24
TUẦN 6: THỰC HÀNH CÁC CÂU LỆNH SỬ DỤNG HÀM TRONG TRUY VẤN 26
Bài 1: Aggregate Functions, Math Functions, Comparison Functions 26
Bài 2: Control Flow Functions and Expressions 27
Bài 3: Window Functions 28
Bài 4: Date Functions, String Functions 28
Bài 5: Đánh chỉ mục dữ liệu một bảng 29
TUẦN 7: THỰC HÀNH THIẾT KẾ CƠ SỞ DỮ LIỆU LƯU TRỮ ĐƠN HÀNG 31
Trang 33
Bài 1 + 2 : Xây dựng lược đồ R-E và E-R 31
Bài 3: Thiết kế trên hệ quản trị cơ sở dữ liệu 31
Bài 4: In diagram cơ sở dữ liệu 31
Bài 5: Viết câu lệnh thêm dữ liệu và bảng 32
Bài 6: Viết câu lệnh truy vấn Thay đổi cấu trúc CSDL 32
Bài 7: Thay đổi cấu trúc CSDL 33
TUẦN 8 34
TUẦN 9: THỰC HÀNH QUẢN TRỊ CƠ SỞ DỮ LIỆU 37
Bài 1: Start, Stop, and Restart MySQL Server 37
Bài 2: Users, Roles, and Privileges 37
Bài 3: Show commands 39
Bài 4: Backup and Restore 40
Bài 5: Database maintenance 40
TỔNG KẾT MÔN HỌC 41
Tài liệu tham khảo: 42
Trang 44
Tuần 1: Thiết lập môi trường làm việc MySQL
Bài 1: Thi t lế ập được hệ quản trị cơ sở ữ liệu trên máy tính cá nhân d
Em sử dụng hệ quản trị cơ sở dữ liệu MySQL
Bài 2: Tạo được một cơ sở dữ liệu mẫu để làm việc
Mô tả cơ sở dữ liệu:
Cơ sở dữ liệu mẫu được dùng ở đây được download ở: https://www.mysqltutorial.org/mysql-sample-database.aspx/ Cơ sở dữ liệu mẫu này có tên classicmodels Bao gồm các bảng sau:
- Customers: Lưu trữ dữ liệu của khách hàng - Products: Lưu trữ kích cỡ các xe mẫu
- ProductLines: Lưu trữ các danh mục dòng sản phẩm - Orders: Lưu trữ các đơn bán hàng do khách hàng đặt - OrderDetails: Lưu trữ các chi tiết của mỗi đơn hàng - Payments: Lưu trữ các khoản thanh toán
- Employees: Lưu trữ tất cả thông tin của nhân viên - Offices: Lưu trữ dữ liệu bán hàng
Input: Câu lệnh chọn bảng Customers.
Output: Bảng Customers từ cơ sở dữ liệu mẫu Classicmodels Mã nguồn:
USE classicmodels;
SELECT * FROM customers;
Giao diện kết quả:
Trang 55
Tuần 2: Th c hành truy v n SQL ựấ
Bài 1: SELECT, ORDER BY, WHERE, SELECT DISTINCT
- SELECT: Cho phép bạn chọn dữ liệu từ một hoặc nhiều bản - ORDER BY: Sắp xếp lại các kết quả tìm được
- WHERE: Thêm điều kiện tìm kiếm cho các kết quả được trả về - SELECT DISTINCT: Loại bỏ các kết quả trùng lặp
Input: Các câu lệnh sử dụng SELECT, ORDER BY, WHERE, SELECT DISTINCT Output: Từ cơ sở dữ liệu Classicmodels, chọn ra các kết quả không trùng lặp từ các
trường state, city, country trong bảng Customers với điều kiện state không để trống và sắp xếp theo state
Mã nguồn:
USE classicmdodels;
SELECTDISTINCT state, city, country, FROM customers;
WHEREstateIS NOT NULLORDERBYstate
Giao diện kết quả:
Bài 2: AND, OR, IN
Trang 66 AND: cho phép tồn tại nhiều điều kiện trong câu lệnh
OR: dùng để kết hợp nhiều điều kiện trong một câu lệnh
IN: Khai báo một tập hợp các giá trị, nếu dữ liệu cần tìm trùng khớp với giá trị khai báo thì hợp lệ
Input: câu lệnh có sử dụng AND, OR, IN
Output: Từ cơ sở dữ liệu Classicmodels, chọn ra các kết quả từ trường officeCode, city, phone, country, state có trong bảng Offices, với điều kiện Country là USA hoặc Japan và officeCode < 6
Mã nguồn:
USE classicmdodels;
SELECT officeCode, city, phone, country, state FROM offices,
WHERE country IN ('USA' OR 'JAPAN') AND officeCode < 6
Giao diện kết quả:
Bài 3: BETWEEN, LIKE, LIMIT
BETWEEN: Kiểm tra xem một giá trị có nằm trong phạm vi không LIKE: truy xuất dữ liệu dựa theo quy tắc tìm kiếm
LIMIT: hạn chế số lượng kết quả tìm được
Input: các câu lệnh chứa BETWEEN, LIKE, LIMIT.
Trang 77
Output: Từ cơ sở dữ liệu classicmodels, chọn ra các kết quả từ trường
customerNumber, customerName, creditLimit, postalCode trong bảng customers với điều kiện customerName và creditLimit trong khoảng từ 100000 đến 400000 Mã nguồn:
USE classicmdodels;
SELECT customerNumber, customerName, creditLimit,postalCode FROM customers,
WHERE customerName LIKE '%a%' AND (creditLimit BETWEEN 100000.00 AND 400000.00)
ORDERBY customerNumber LIMIT200
Giao diện kết quả:
Bài 4: IS NULL, Table & Column Aliases
IS NULL: Kiểm tra xem giá trị có phải NULL không ALIAS: Dùng để định danh tên mới cho cột hoặc bảng
Input: câu lệnh sử dụng IS NULL và ALIAS
Output: Từ cơ sở dữ liệu classicmodels, chọn ra các kết quả từ trường
contactFirstName, contactLastName, state từ bảng customers với điều kiện state khác NULL
Mã nguồn:
Trang 99
Bài 5: JOINS, INNER JOIN, LEFT JOIN, RIGHT JOIN, SELF JOIN,CROSS JOIN
INNER JOIN: Ghép hàng trong một bảng với mọi hàng trong bảng khác.LEFT JOIN: Chọn dữ liệu từ bảng trái ghép với mọi hàng trong bảng phải RIGHT JOIN: Chọn dữ liệu từ bảng phải ghép với mọi hàng trong bảng trái SELF JOIN: Dùng để nối một bảng với chính nó.
Input: Các câu lệnh chứa mệnh đề JOINMã nguồn:
USE classicmodels;
SELECT customerNumber, customerName, phone FROM customers
CROSSJOIN orderdetails
USE classicmodels;
SELECT orderNumber, orderDate, requiredDate, shippedDate FROM orders
INNERJOIN orderdetails USING (orderNumber)
INNERJOIN products USING (productCode)
ORDERBY orderNumber
USE classicmodels;
SELECT customerNumber, customerName, phone FROM customers
LEFT JOIN orders USING (customerNumber);
Trang 1010
ORDERBY salesRepEmployeeNumber Giao diện kết quả:
Trang 1111
Bài 6: GROUP BY, HAVING, ROLLUP
- Group By: Hợp các câu lệnh để sắp xếp dữ liệu giống nhau thành một nhóm - Having: Chỉ định điều kiện lọc mà kết quả nhóm xuất hiện trong kết quả
Mã nguồn: USE classicmodels;
SELECT city, COUNT(customerName) AS total_customers FROM customers
GROUPBY city
ORDERBY city
Trang 1212
USE classicmodels;
SELECT city, COUNT(customerName) AS total_customers FROM customers
GROUPBY city WITHROLLUPHAVINGcount(customerName) >=3
Giao diện kết quả:
Bài 7: Subquery, Derived Tables, EXISTS
- Subquery: truy vấn lồng vào bên trong mệnh đề Where
Trang 1313
- Derived Tables: Bảng được trả về từ câu lệnh Select - Exists: Kiểm tra sự tồn tại
Mã nguồn: USE classicmodels;
SELECT customerNumber, customerName, creditLimit, (CASE
WHEN creditLimit < 10000THEN 'Bronze'
WHEN creditLimit BETWEEN 10000 AND100000THEN 'Silver' WHEN creditLimit > 100000THEN 'Gold'
SELECT customerNumber, checkNumber, amount FROM payments
WHERE amount =(SELECTMAX (amount) FROM payments) Giao diện kết quả:
Trang 1414
Trang 1518
Bài 2: Truy v n các b ng h thấảệống trong cơ sở dữ liệu a) Tên các bảng
Mã nguồn:
USE classicmodels;
SELECTTABLE_NAMEFROM information_schema.tables
WHERE table_schema = 'classicmodels' ORDERBY TABLE_NAME
Giao diện kết quả:
b) Tên các cột của một bảng và tính chất các cột đó Mã nguồn:
SELECT *FROM information_schema.columns
WHERE table_schema = 'classicmodels'
ORDERBYTABLE_NAME, ordinal_position
Giao diện kết quả:
Trang 1619
MỘT CƠ SỞ DỮ LIỆU
Bài 1: Thi t l p bế ậảng d li u (PK, UK, DataType, Null, constraint) ữ ệ
Bài 2: Thi t l p quan h d li u (Relationship) ế ậệ ữ ệ
Mã nguồn:
CREATEDATABASE BaiTuan4;
CREATETABLE BaiTuan4.Persons (personID int NOTNULL, name VARCHAR(255) NOT NULL, age , address int VARCHAR(255) NOTNULL, city VARCHAR(255), city VARCHAR(255), CONSTRAINT uc_name_address UNIQUE (name, address),
PRIMARYKEY (personID));
CREATETABLE BaiTuan4.Orders (orderID intNOT NULL, OrderNumber intNOT
NULL, PersonID intNOT NULL, PRIMARYKEY (orderID), FOREIGNKEY (personID) REFERENCES Persons (PersonID));
INSERTINTO BaiTuan4.Persons (personID, name, age, address, city)
VALUES ('101','Hoang','19','Cau Giay','Ha Noi'), ('102','Quang','21','Tay Ho','Ha Noi'), ('103','Huy','17','Tu liem','Ha Noi'), ('104','Mai','19','Cau Giay' 'Ha Noi'), , ('105','Nhat' '19',, 'Hoan Kiem' 'Ha Noi'); ,
SELECT *FROM BaiTuan4.Persons ORDERBY personID
Giao diện kết quả:
Trang 1720
Bài 3: Thi t l p khung nhìn (Views) ế ậ
Mã nguồn:
CREATEVIEW members AS
SELECT CONCAT(name, , age) ',' AS 'profile', CONCAT(address, , city) ',' AS 'location'
FROM baituan4.persons;
SELECT *FROM members
Giao diện kết quả:
Bài 4: Thi t l p thế ậủ ụ t c và hàm (procedure & function) Mã nguồn:
Trang 1922
Bài 1: Th c hi n các câu l nh c p nh t (insert,update, delete d li u) ựệệậậữ ệ
Mã nguồn:
INSERTINTO huy.order (orderID, orderNumber)
VALUES ( , '3' '10');
UPDATE huy.orderSET orderNumber = 3 WHERE orderID = 3
DELETEFROM huy.orders
Giao diện kết quả:
Bài 2: C p nh t dậậữ li u t 1 bệừảng excel qua sinh t ng SQL Script ự độ
Mã nguồn:
USE huy;
DELETEFROM huy.order;
INSERTINTO huy.order (orderId, orderNumber, personId)
Trang 2023
INSERTINTO huy.order (orderId, orderNumber, personId)
VALUES ('5','555' '567', );
UPDATE huy.order
SET personID = 1 WHERE orderid = 1
UPDATE huy.orderSET personID = 2 WHERE orderid = 2;
UPDATE huy.orderSET personID = 3 WHERE orderid = 3;
UPDATE huy.orderSET personID = 4 WHERE orderid = 4;
UPDATE huy.orderSET personID = 5
WHERE orderid = 5
Giao diện kết quả:
Trang 21INNERJOIN orderdetails ON orders.ordernumber = orderdetails.ordernumber
SET status ='sale';
Giao diện kết quả:
Bài 4: C p nh t dậậữ li u qua m t procedure ệộ
INSERTINTO huy.order (orderid, ordernumber, personid)
VALUES (orderid, ordernumber, personid); END //
DELIMITER ;
CALL insertid_ ('11' '11' '111', , );
SELECT *FROM huy.order
Giao diện kết quả:
Trang 2225
Trang 25CREATETABLE scores(name VARCHAR(20) PRIMARYKEY score INTNOTNULL);
INSERTINTO score(name, score)
VALUES ('Smith',81), ('Jones',55), ('Williams',55),('Taylor',62),('Brown', 62), ('Davies', ), ('Evans', ), ('Wilson', ); 84 87 72
Bài 4: Date Functions, String Functions
USE classicmodels;
Trang 2730
EXPLAINSELECT employeeNumber, lastName, firstName FROM employees
WHERE jobTitle = 'Sales Rep';
SHOW INDEXES FROM employees;
Trang 2831
ĐƠN HÀNG
Bài 1 + 2 : Xây dựng lược đồ R-E và E-R
Bài 3: Thi t k trên h qu n trếếệảị cơ sở ữ li u dệ
Bài 4: In diagram cơ sở dữ liệu
Trang 2932
Bài 5: Vi t câu l nh thêm d li u và b ng ếệữ ệả
Bài 6: Vi t câu l nh truy vếệấn Thay đổi c u trúc CSDL ấ
Trang 3134
TUẦN 8 Đề bài:
Bài 1:
a) D → EG ➔ AD → EG và G → B ➔ EG → B ➔ AD → BAD → B ➔ AD → AB và AB → C ➔ AB → BC ➔ AD → BC b) {A}+ = {A, B, C, D, E, G}
c) Phân rã các phụ thuộc hàm có nhiều thuộc tính
F1 = {AB → C, AC → D, D → E, D → G, G → B, A → D, CG → A}
Trang 3235 Loại các thuộc tính dư thừa
AB → C loại B
F2 = { A → C, AC → D, D → E, D → G, G → B, A → D, CG → A} AC → D loại C
F3= { A → C, A → D, D → E, D → G, G → B, A → D, CG → A} CG → A loại G
F4= { A → C, A → D, D → E, D → G, G → B, C → A} Một phủ tối thiếu của F là F4
Bài 2:
a) AB → G, G → H ➔ AB → H
GH → A, A → C và G → H ➔ GH → H ➔ GH → C b) {G}+ = {A, C, G, H}
Bài 3:
a) I → M ➔ HI → HM mà HN → G ➔ HI → G GH → L, L -> K ➔ GH → GK
GK → I, I → M ➔ GK → M
GH → M và GH → L ➔ GH → KM b) {G,H}+ = { G, H, L, K, I, M}
Loại các thuộc tính dư thừa, HM → G loại được M vì
{ }H + = {H, G, L, K, I, M} có F1 = {GH → L, I → M, L → K, H G, GK → → I, H → L}
Loại bỏ các thuộc tính dư thừa, bỏ được GH → L
F chứa tối thiểu Một phủ tối thiểu của F là {I → M, L → K, H → G, GK → I, H → L}
Bài 4:
a) Tập nguồn {H} Tập trung gian {I, K, N} Một khóa tối thiểu là {H, I} b) Ta có bảng:
Trang 33{BG}+= BDEGHAC ➔ {B.G} là khóa tối thiểu của quan hệ R{BH}+= BHDE
Trang 3437
Bài 1: Start, Stop, and Restart MySQL Server
- Start:
- Stop & Restart:
Bài 2: Users, Roles, and Privileges
- Create User:
Trang 3538
- Grant Privileges:
- Manage Roles:
Trang 3639
Bài 3: Show commands
- Show Databases and Tables:
- Show Columns:
Trang 3740
Bài 4: Backup and Restore
Bài 5: Database maintenance
Trang 38
41
Trong môn học này, ngoài nh ng ki n thữ ế ức đã được thầy gi ng d y trong ti t hả ạ ế ọc thì những bài th c hành hàng tu n thự ầ ầy giao cũng giúp em biết thêm r t nhi u v h c ấ ề ề ọphần Cơ sở dữ liệu này
- Thực hành các câu lệnh s d ng hàm trong truy vử ụ ấn
- Thiết k ế cơ sở ữ ệu lưu trữ d li
- Luyện t p v ph thu c hàm trong h qu n trậ ề ụ ộ ệ ả ị cơ sở ữ ệu d li- Quản trị cơ sở ữ ệ d liu.
Trang 3942
Tài li u tham kh o: ệả
1) https://www.mysqltutorial.org/ 2) https://viettus.vn/sql 3) https://w3schools.com
4) Slide bài gi ng th y Nguy n Danh Tú ả ầ ễ