Bài tập thực hành SQL sau đây để các bạn có thể nắm vững cú pháp hơn. Các bạn nên thử tự xây dựng các bảng trước khi xem lời giải để đảm bảo học tốt hơn.
Xin chào các bạn mình là Phạm Vũ – Học viên FUNiX. Sau khi học xong bài hướng dẫn về cách thao tác với bảng và Ràng buộc khóa chính, khóa ngoại trong sql thì mình có bài tập thực hành SQL sau đây để các bạn có thể nắm vững cú pháp hơn. Các bạn nên thử tự xây dựng các bảng trước khi xem lời giải để đảm bảo học tốt hơn nhé! Show
1. Phần 1: Nội dung bài tập thực hành sqlHãy viết các câu lệnh SQL để tạo CSDL có tên QLBanhang gồm 4 bảng có cấu trúc như sau: Những thuộc tính gạch chân là khóa chính (primary key) của bảng. 1.1 Bảng KHACHHANG Tên cột Kiểu dữ liệu Kích thướcMAKHNvarchar 5 TENKH Nvarchar 30 DIACHI Nvarchar 300 DT Varchar 10 EMAIL Varchar 30 1.2 Bảng VATTU Tên cột Kiểu dữ liệu Kích thướcMAVTNvarchar 5 TENVT Nvarchar 30 DVT Nvarchar 20 GIAMUA money SLTON int 1.3 Bảng HOADON Tên cột Kiểu dữ liệu Kích thướcMAHDNvarchar 10 NGAY Datetime MAKH Nvarchar 5 TONGTG money 1.4 Bảng CHITIETHOADON Tên cột Kiểu dữ liệu Kích thướcMAHDNvarchar 10MAVTNvarchar 5 SL int GIABAN money Thời gian làm bài dự kiến: 30 phút \>>> Xem thêm: Cách sao lưu và khôi phục cơ sở dữ liệu Microsoft SQL Server bằng SSMS 2. Phần 2: Thực hành với hệ quản trị cơ sở dữ liệu SQL Server2.1 Bước 1: Tạo database QLBanHangCREATE DATABASE QLBANHANG; 2.2 Bước 2: Tạo bảng KHACHHANGCú pháp: use QLBanHang CREATE TABLE KHACHHANG( MAKH nvarchar(5) NOT NULL PRIMARY KEY, TENKH nvarchar(30), DIACHI nvarchar(300), DT varchar(10), EMAIL varchar(30) ); Kết quả: 2.3 Bước 3: Tạo bảng VATTUCú pháp: CREATE TABLE VATTU( MAVT nvarchar(5) NOT NULL PRIMARY KEY, TENVT nvarchar(30), DVT nvarchar(20), GIAMUA money, SLTON int ); Kết quả: 2.4 Bước 4: Tạo bảng HOADONCú pháp: CREATE TABLE HOADON( MAHD nvarchar(10) NOT NULL PRIMARY KEY, NGAY datetime, MAKH nvarchar(5), TONGTG money ); Kết quả: 2.5 Bước 5: Tạo bảng CHITIETHOADONCú pháp: CREATE TABLE CHITIETHOADON( MAHD nvarchar(10) NOT NULL, MAVT nvarchar(5) NOT NULL, SL int, GIABAN money CONSTRAINT PK_ChiTietHoaDon PRIMARY KEY(MAHD,MAVT) ); Kết quả: \>>> Xem thêm: Các lệnh cơ bản thao tác với SQL 3. Phần 3: Kết luậnSau khi hoàn thành xong bài thực này này, bạn đã có thể nắm vững cú pháp tạo Database, tạo bảng với khóa chính và các cột với các kiểu dữ liệu khác nhau như int, nvarchar, varchar, datetime, money. Hy vọng bài viết này hữu ích với bạn, nếu có góp ý nào vui lòng liên hệ tới email: [email protected]. 1. Sử dụng câu lệnh truy vấn dữ liệu đơn giản với các yêu cầu sau.1.1. Lấy danh sách tất cả sản phẩmSELECT * FROM products; 1.2. Chỉ lấy các thông tin về mã sản phẩm, tên sản phẩm, giá nhập, giá niêm yết (giá bán), số lượng, % giảm giá của các sản phẩmSELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 1.3. Lấy mã sản phẩm, tên sản phẩm, giá nhập, giá niêm yết (giá bán) của những sản phẩm có số lượng còn lại > 60SELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products WHERE quantity_per_unit > 60; 1.4. Lấy 3 sản phẩm mới nhất vừa được thêm vào Hệ thốngSELECT id, product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products ORDER BY id DESC LIMIT 3; 1.5. Lấy sản phẩm mà tên sản phẩm có chứa chữ 'Samsung'SELECT * FROM products WHERE product_name LIKE '%Samsung%'; 1.6. Lấy các sản phẩm với tên có chứa 'MacBook' và giá niêm yết (giá bán) trên 7,000,000SELECT * FROM products WHERE product_name LIKE '%Macbbook%' AND list_price > 7000000; 1.7. Lấy các sản phẩm với tên có giá niêm yết (giá bán) từ 8,000,000 đến 10,000,000Xài BETWEEN SELECT * FROM products WHERE list_price BETWEEN 8000000 AND 10000000; Xài AND SELECT * FROM products WHERE list_price >= 8000000 AND list_price <= 10000000; 1.8. Liệt kệ Danh sách các Đơn hàng trong tháng 07/2016?Xài BETWEEN SELECT * FROM orders WHERE order_date BETWEEN '2016-07-01 00:00:00' AND '2016-07-31 23:59:59'; Xài >= <= SELECT * FROM orders WHERE order_date >= '2016-07-01 00:00:00' AND order_date <= '2016-07-31 23:59:59'; 1.9. Lấy danh sách ID nhà cung cấp (duy nhất) có sản phẩm trong hệ thốngSELECT DISTINCT supplier_id FROM products; 2. Sử dụng kết nối các bảng với lệnh truy vấn SQL để:2.1. Lấy mã sản phẩm, tên sản phẩm, giá nhập, giá niêm yết (giá bán), số lượng, tên nhà cung cấp của tất cả sản phẩmSELECT p.product_code, p.product_name, p.standard_cost, p.list_price, p.quantity_per_unit, s.supplier_name FROM products AS p JOIN suppliers AS s ON p.supplier_id = s.id; 2.2. Lấy mã sản phẩm, tên sản phẩm, giá nhập, giá niêm yết (giá bán), số lượng, mã nhà cung cấp, tên nhà cung cấp, mã loại sản phẩm, tên loại sản phẩm của những sản phẩm có giá lớn hơn 5.000.000.SELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 0 2.3. Lấy tất cả sản phẩm là máy tính bảng (tablet)SELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 1 2.4. Hiển thị sản phẩm có giá cao nhất2.5. Hiển thị thông tin của các đơn đặt hàng, bao gồm:Mã đơn hàng "Order_" + id Họ tên Khách hàng first_name + last_name Địa chỉ khách hàng address1 Địa chỉ giao hàng ship_address1 Phí vận chuyển shipping_pee Hình thức thanh toán payment_type SELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 2 2.6. Hiển thị thông tin các Đơn hàng và danh sách Các sản phẩm mà khách hàng "Sanchez Sean" (ID=40) đã mua trong năm 2017SELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 3 3. Thực hiện câu lệnh Group By và Having để thực hiện các thống kê sau3.1. Hiển thị mỗi Loại sản phẩm có bao nhiêu sản phẩm.SELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 4 3.2. Tính tổng số lượng sản phẩm Còn lại của từng loại sản phẩmSELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 5 3.3. Tìm loại sản phẩm mà có tổng số lượng Sản phẩm đang có trong hệ thống > 50SELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 6 4. Thực hiện câu lệnh truy vấn trả lời các yêu cầu sau:4.1. Tìm nhà cung cấp không bán được sản phẩm nào trong Hệ thống?[su_spoiler title="Bài giải (Nên nhớ tự làm trước khi click vào đây)"] SELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 7 [/su_spoiler] 4.2. Tìm top 3 Khách hàng mua nhiều nhất trong năm nay để tri ân khách hàng?[su_spoiler title="Bài giải (Nên nhớ tự làm trước khi click vào đây)"] SELECT product_code, product_name, standard_cost, list_price, quantity_per_unit, discount FROM products; 8 [/su_spoiler] 4.3. Thống kê danh sách các sản phẩm nào đã bán gần hết số lượng (số lượng < 10 xem như gần hết), để Chủ SHOP nhập thêm hàng về?4.3. Hình thức thanh toán phổ biến nhất là gì? |