Bài tập truy vấn dữ liệu trong sql năm 2024

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.

  • Cách tạo bảng trong SQL
  • Tích hợp ChatGPT và SQL: Tiến bộ và cơ hội trong nhận dạng giọng nói dựa trên AI
  • ChatGPT và SQL: Hỗ trợ Sức khỏe Tâm thần thông qua Trí tuệ Nhân tạo
  • SQL Series 6- Các loại ràng buộc trong SQL (Phần 2): Not Null, Unique, Default, Check
  • SQL Series 4- Các loại ràng buộc trong SQL (Phần 1): Ràng buộc khóa chính, khóa ngoại

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é!

1. Phần 1: Nội dung bài tập thực hành sql

Hã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 Server

2.1 Bước 1: Tạo database QLBanHang

CREATE DATABASE QLBANHANG;

2.2 Bước 2: Tạo bảng KHACHHANG

Cú 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ả:

Bài tập truy vấn dữ liệu trong sql năm 2024

2.3 Bước 3: Tạo bảng VATTU

Cú 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ả:

Bài tập truy vấn dữ liệu trong sql năm 2024

2.4 Bước 4: Tạo bảng HOADON

Cú pháp:

CREATE TABLE HOADON( MAHD nvarchar(10) NOT NULL PRIMARY KEY, NGAY datetime, MAKH nvarchar(5), TONGTG money );

Kết quả:

Bài tập truy vấn dữ liệu trong sql năm 2024

2.5 Bước 5: Tạo bảng CHITIETHOADON

Cú 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ận

Bài tập truy vấn dữ liệu trong sql năm 2024

Sau 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ẩm

SELECT * 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ẩm

SELECT 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 > 60

SELECT 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ống

SELECT 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,000

SELECT * 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,000

Xà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ống

SELECT 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ẩm

SELECT 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ất
2.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 2017

SELECT 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ê sau

3.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ẩm

SELECT 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 > 50

SELECT 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ì?