Bài tập sql cơ bản và nâng cao có đáp án

SQL (Structured Query Language) được sử dụng để truy vấn và thao tác dữ liệu trong cơ sở dữ liệu quan hệ. Nó là một ngôn ngữ tiêu chuẩn được hỗ trợ bởi nhiều hệ quản trị cơ sở dữ liệu quan hệ như MySQL, PostgreSQL, Oracle và SQL Server.

Cơ bản về SQL

SQL (structured query language) là một ngôn ngữ truy vấn có cấu trúc, được sử dụng để truy vấn và thao tác dữ liệu trong cơ sở dữ liệu quan hệ. Nó là một ngôn ngữ tiêu chuẩn, được hỗ trợ bởi nhiều hệ quản trị cơ sở dữ liệu quan hệ như MySQL, PostgreSQL, Oracle và SQL Server.

Các câu lệnh SQL cơ bản

Dưới đây là một số câu lệnh SQL cơ bản:

  • SELECT: Lấy dữ liệu từ cơ sở dữ liệu.
  • INSERT: Thêm dữ liệu vào cơ sở dữ liệu.
  • UPDATE: Cập nhật dữ liệu trong cơ sở dữ liệu.
  • DELETE: Xóa dữ liệu khỏi cơ sở dữ liệu.

Các toán tử SQL cơ bản

Dưới đây là một số toán tử SQL cơ bản:

  • Toán tử so sánh: So sánh hai giá trị.
  • Toán tử logic: Kết hợp hai hoặc nhiều mệnh đề.
  • Toán tử toán học: Thực hiện các phép toán số học.

Các hàm SQL cơ bản

Dưới đây là một số hàm SQL cơ bản:

  • Hàm COUNT: Đếm số lượng bản ghi trong một tập hợp.
  • Hàm SUM: Tính tổng của các giá trị trong một tập hợp.
  • Hàm AVG: Tính trung bình của các giá trị trong một tập hợp.

Các câu lệnh SQL nâng cao

Dưới đây là một số câu lệnh SQL nâng cao:

  • JOIN: Kết hợp dữ liệu từ nhiều bảng.
  • GROUP BY: Nhóm dữ liệu theo một thuộc tính.
  • HAVING: Lọc dữ liệu trong một nhóm.
  • WITH: Tạo một subquery.

Luyện tập SQL

Để học SQL hiệu quả, bạn nên luyện tập thường xuyên. Có rất nhiều tài nguyên trực tuyến và ngoại tuyến có thể giúp bạn nâng cao kỹ năng SQL. Bạn cũng có thể tham gia các cộng đồng SQL để được hỗ trợ và chia sẻ kiến thức.

Bài tập SQL cơ bản

Dưới đây là một loạt các bài tập SQL cơ bản. Sau khi hoàn thành tất cả các bài tập này, bạn sẽ có kiến thức cơ bản về cách sử dụng SQL. Dưới đây là một số truy vấn SQL cơ bản và giải đáp cho từng truy vấn:

  1. SELECT – Lựa chọn dữ liệu từ bảng

Truy vấn để lấy tất cả dữ liệu từ một bảng:

SELECT * FROM TenBang;
  1. WHERE – Lọc dữ liệu dựa trên điều kiện

Truy vấn để lấy tất cả dữ liệu từ bảng có một điều kiện cụ thể:

SELECT * FROM TenBang WHERE DieuKien;

Ví dụ: Lấy tất cả những người có tuổi lớn hơn 30 từ bảng “People”:

SELECT * FROM People WHERE Age > 30;
  1. ORDER BY – Sắp xếp dữ liệu

Truy vấn để lấy dữ liệu từ bảng và sắp xếp theo một cột cụ thể:

SELECT * FROM TenBang ORDER BY TenCot ASC/DESC;

Ví dụ: Lấy danh sách các sản phẩm từ bảng “Products” và sắp xếp theo giá từ thấp đến cao:

SELECT * FROM Products ORDER BY Price ASC;
  1. GROUP BY – Nhóm dữ liệu

Truy vấn để nhóm dữ liệu dựa trên giá trị của một cột:

SELECT TenCot, COUNT(*) FROM TenBang GROUP BY TenCot;

Ví dụ: Đếm số lượng đơn hàng của mỗi khách hàng từ bảng “Orders” và nhóm theo tên khách hàng:

SELECT CustomerName, COUNT(*) FROM Orders GROUP BY CustomerName;
  1. JOIN – Kết nối dữ liệu từ nhiều bảng

Truy vấn để kết nối dữ liệu từ hai hoặc nhiều bảng:

SELECT CacCot FROM Bang1 INNER JOIN Bang2 ON Bang1.KhoaChung = Bang2.KhoaChung;

Ví dụ: Lấy thông tin sản phẩm và tên nhà cung cấp từ bảng “Products” và “Suppliers” bằng cách kết nối chúng qua cột “SupplierID”:

SELECT Products.ProductName, Suppliers.SupplierName FROM Products INNER JOIN Suppliers ON Products.SupplierID = Suppliers.SupplierID;
  1. INSERT INTO – Thêm dữ liệu mới vào bảng

Truy vấn để thêm dữ liệu mới vào bảng:

INSERT INTO TenBang (CacCot) VALUES (GiaTri);

Ví dụ: Thêm một khách hàng mới vào bảng “Customers”:

INSERT INTO Customers (CustomerName, ContactName, City) VALUES ('Tên khách hàng', 'Tên liên hệ', 'Thành phố');
  1. UPDATE – Cập nhật dữ liệu trong bảng

Truy vấn để cập nhật dữ liệu trong bảng:

UPDATE TenBang SET TenCot = GiaTriMoi WHERE DieuKien;

Ví dụ: Cập nhật giá sản phẩm có ID là 1 trong bảng “Products” thành 1000:

UPDATE Products SET Price = 1000 WHERE ProductID = 1;
  1. DELETE – Xóa dữ liệu từ bảng

Truy vấn để xóa dữ liệu từ bảng:

DELETE FROM TenBang WHERE DieuKien;

Ví dụ: Xóa khách hàng có ID là 5 từ bảng “Customers”:

DELETE FROM Customers WHERE CustomerID = 5;

Bài tập SQL nâng cao có đáp án

Dưới đây là một số bài tập SQL nâng cao cùng với đáp án của chúng:

  1. Bài tập 1: Lấy tất cả sản phẩm có giá cao nhất trong bảng “Products”.
SELECT * FROM Products WHERE Price = (SELECT MAX(Price) FROM Products);
  1. Bài tập 2: Tạo một truy vấn để tính tổng số sản phẩm của mỗi nhà cung cấp và hiển thị kết quả bằng cột “TotalProducts”.
SELECT Suppliers.SupplierName, COUNT(Products.ProductID) AS TotalProducts FROM Suppliers LEFT JOIN Products ON Suppliers.SupplierID = Products.SupplierID GROUP BY Suppliers.SupplierName;
  1. Bài tập 3: Tạo một truy vấn để lấy tên của tất cả khách hàng mà họ đã đặt hàng từ cả hai nguồn cung cấp “Supplier A” và “Supplier B”.
SELECT Customers.CustomerName FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID INNER JOIN OrderDetails ON Orders.OrderID = OrderDetails.OrderID INNER JOIN Products ON OrderDetails.ProductID = Products.ProductID INNER JOIN Suppliers ON Products.SupplierID = Suppliers.SupplierID WHERE Suppliers.SupplierName IN ('Supplier A', 'Supplier B') GROUP BY Customers.CustomerName;
  1. Bài tập 4: Tạo một truy vấn để lấy tên của tất cả những khách hàng không có đơn hàng trong bảng “Orders”.
SELECT Customers.CustomerName FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID WHERE Orders.OrderID IS NULL;
  1. Bài tập 5: Tạo một truy vấn để lấy một danh sách các sản phẩm mà không có ai mua từ bảng “OrderDetails”.
SELECT Products.ProductName FROM Products LEFT JOIN OrderDetails ON Products.ProductID = OrderDetails.ProductID WHERE OrderDetails.ProductID IS NULL;

Nhớ kiểm tra kết quả của từng truy vấn để đảm bảo tính đúng đắn. Chúc bạn học tốt và thành công với SQL cơ bản và nâng cao!

FEATURED TOPIC