You are on page 1of 8

BÀI TẬP TUẦN 2-3

Mục tiêu:
 Biết cách truy vấn dữ liệu bằng lệnh SELECT

1) Truy vấn dữ
liệu Cú pháp:
SELECT [ALL | DISTINCT] [TOP n [WITH TIES]] select_list
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC | DESC ] ]
• ORDER BY : Sắp xếp
• WHERE: Điều kiện
• GROUP BY: Nhóm
• HAVING: Điều kiện nhóm
a) Truy vấn đơn giản
Hiển thị tất cả các cột có trong một
Table Cú phá p: SELECT * FROM <
tablename> Ví dụ : SELECT * FROM
Customers
Chọn một vài cột trong một Table
SELECT OrderID, OrderDate, CustomerID FROM Orders
Truy vấn loại bỏ các dòng bị trùng:
Cú phá p: Select Distinct
Ví dụ :
SELECT DISTINCT Order_Date as “Date of Order” FROM Orders
Truy vấ n dù ng cá c toá n tử chuẩ n trong biểu thứ c điều kiện:
Ví dụ 1:
SELECT ProductID, UnitPrice
FROM Product_T
WHERE UnitPrice < 275;
Ví dụ 2:
SELECT ProductID, ProductName,UnitPrice
FROM Products
WHERE ProductName like ‘N%’
AND UnitPrice > 300
b) Truy vấn trên nhiều bảng
Ví dụ :
SELECT c.CustomerID, CompanyName, OrderID, OrderDate
FROM Customers C INNER JOIN Orders O
ON C.CustomerID = O.CustomerID
c) Truy vấn seft join: Truy vấn trên một bảng liên kết với chính nó
Ví dụ :
SELECT e.Firstname+' '+e.Lastname AS 'Employee' ,
m.Firstname+' '+m.Lastname AS 'Manager'
FROM Employees e JOIN Employees m
ON e.ManagerID = m.EmployeeID
d)Lệnh Union: Union nố i kết quả từ nhiều câ u lệnh
select Ví dụ :
SELECT Firstname+' '+Lastname AS name, Homephone
FROM Employees
UNION
SELECT Companyname, Phone
FROM Customers
e) Truy vấn kết nhóm:
Cá c hà m tổ ng hợ p - Aggregate Functions: tổ ng hợ p thô ng tin từ nhiều bộ
thà nh mộ t bộ .
Chứ c nă ng grouping đượ c sử dụ ng để tạ o nhó m trướ c khi thự c hiện tổ ng hợ p
dữ liệu.
Cá c hà m tổ ng hợ p: COUNT, SUM, MAX, MIN, AVG.
Ví dụ:
SELECT SUM(quantity)
AS ‘Sum of Quantity‘ FROM [Order Details]
Mệnh đề GROUP BY: chỉ định cá c thuộ c tính kết nhó m xuấ t hiện trong mệnh
đề select, kết quả củ a hà m thố ng kê đượ c á p dụ ng cho cá c bộ trong cù ng mộ t
nhó m.
Ví dụ : Tổ ng tiền củ a từ ng hó a đơn
SELECT orderid, SUM(quantity+unitprice)
AS ‘Total‘ FROM [Order Details]
GROUP BY orderid
Mệnh đề Having: xá c định điều kiện lọ c sau khi nhó m dữ liệu
Ví dụ : Danh sá ch cá c hó a đơn có tổ ng tiền lớ n hơn
10000000 SELECT orderid, SUM(quantity+unitprice)
AS ‘Total‘ FROM [Order Details]
GROUP BY ordered
HAVING SUM(quantity+unitprice)>10000000
f) Lệnh Select into
Có thể tạ o mộ t bả ng mớ i dự a và o kết quả củ a câ u lệnh select.
Ví dụ :
SELECT C.CustomerID AS NameId, OrderID, OrderDate
INTO Customer_Order
FROM Customers C INNER JOIN Orders O
ON C.CustomerID = O.CustomerID
WHERE month(OrderDate) = 7
g) Truy vấn con - Nested Queries
Nested query là mộ t query chứ a mộ t query khá c, query đượ c chứ a bên trong
gọ i là subquery. Subquery thườ ng xuấ t hiện trong mệnh đề WHERE củ a query.
Ngoà i ra Subquery cũ ng có thể xuấ t hiện trong mệnh đề FROM hoặ c HAVING.
Các phép toán dùng trong nested query
 IN: so sá nh mộ t giá trị v vớ i mộ t tậ p giá trị V, kết quả là TRUE nếu v tồ n tạ i
trong V.
Ví dụ:
SELECT Orderid, orderdate FROM [Orders] WHERE Orderid IN (SELECT
Orderid FROM [Customers] WHERE city = ‘Lon don’)
 NOT IN: so sá nh mộ t giá trị v vớ i mộ t tậ p giá trị V, kết quả là TRUE nếu v
khô ng tồ n tạ i trong V
Ví dụ :
SELECT Orderid, orderdate FROM [Orders] WHERE Orderid NOT IN
(SELECT Orderid FROM [Customers] WHERE city = ‘Lon don’)
 ANY: kết hợ p vớ i cá c phép toá n op (>, >=, <, <=, and <>), kết quả là TRUE
nếu và chỉ nếu cá c giá trị trong tậ p v thỏ a mã n phép toá n op vớ i ít nhấ t là
mộ t giá trị trong V.
Ví dụ 1:
Select Productid, Productname, Unitprice from [Products]
Where Unitprice>ANY (Select Unitprice from [Products] where
ProductName like ‘B%’)
Ví dụ 2:
Select Productid, Productname, Unitprice from [Products]
Where Unitprice=ANY (Select Unitprice from [Products] where
ProductName like ‘B%’)
 ALL: kết hợ p vớ i cá c phép toá n op (>, >=, <, <=, and <>), kết quả là TRUE
nếu và chỉ nếu cá c giá trị trong tậ p v thỏ a mã n phép toá n op vớ i tấ t cả giá
trị trong V
Ví dụ :
Select Productid, Productname, Unitprice from [Products]
Where Unitprice>ALL (Select Unitprice from [Products] where
ProductName like ‘B%’)
 EXISTS: kiểm tra kết quả củ a subquery có rỗ ng hay khô ng, exists trả về giá
trị là TRUE nếu kết quả củ a subquery chứ a ít nhấ t là mộ t bộ giá trị.
Ví dụ : Danh sá ch cá c sả n phẩ m đã bá n đượ c
Select * from [Products] s
where EXISTS ( SELECT * from [Order Details] c
where s.Productid=c.Productid)
 NOT EXISTS: trả về giá trị là TRUE nếu kết quả củ a subquery khô ng chứ a
bộ giá trị nà o.
Ví dụ : Danh sá ch cá c sả n phẩ m chưa bá n
đượ c Select * from [Products] s
where NOT EXISTS ( SELECT * from [Order
Details] c where s.Productid=c.Productid)

PHẦN THỰC HÀNH


Lệnh SELECT
BÀI TẬP 1: LỆNH SELECT – TRUY VẤN ĐƠN GIẢN
Chọ n CSDL hiện hà nh là NorthWind, tìm hiểu cấ u trú c và dữ liệu củ a cá c bả ng.
Xâ y dự ng sơ đồ quan hệ cho cá c bả ng dướ i. Sau đó dù ng câ u lệnh Select … From
… Where … để truy vấn dữ liệu như sau, vớ i cấ u trú c củ a cá c bả ng như sau:
Products(ProductID,ProductName, SupplierID, UnitPrice, UnitInStock, … )
Customers(CustomerID, CompanyName, Address, City, Region, Country, …)
Employees(EmployeeID, LastName, FirstName, BirthDate, City, …)
Orders(OderID, CustomerID, EmployeeID, OrderDate,…)
Order Details(OrderID, ProductID, UnitPrice, Quantity, Discount)
Suppliers(SupplierID, SupplierName,…)

Chú ý: Nếu câu nào mà bạn đánh đúng lệnh mà kết quả không có, bạn cho
biết tại sao?
1. Liệt kê thô ng tin củ a tấ t cả cá c sả n phẩ m (Products)
2. Liệt kê danh sá ch cá c customers. Thô ng tin bao gồ m CustomerID,
CompanyName, City, Phone.
3. Liệt kê danh sá ch cá c products. Thô ng tin bao gồ m
ProductId, ProductName, UnitPrice.
4. Liệt kê danh sá ch cá c employees. Thô ng tin bao gồ m EmployeeId,
EmployeeName, Phone, Age. Trong đó EmployeeName đượ c ghép từ
LastName và FirstName; Age là tuổ i đượ c tính từ nă m hiện hà nh
(GetDate()) và nă m củ a Birthdate.
5. Liệt kê danh sá ch cá c Customers có ContactTitle bắ t đầ u bằ ng chữ O
6. Danh sá ch cá c customers ở thà nh phố Paris.
7. Liệt kê danh sá ch Customers ở thà nh phố LonDon, Boise và Paris
8. Liệt kê danh sá ch Customers có tên bắ t đầ u bằ ng chữ V mà ở thà nh phố
Lyon
9. Liệt kê danh sá ch cá c Customers khô ng có số fax
10. Liệt kê danh sá ch cá c Customers có số Fax
11. Liệt kê danh sá ch employees có nă m sinh <=1960.
12. Liệt kê danh sá ch cá c products có từ ‘Boxes’ trong cộ t QuantityPerUnit.
13. Liệt kê danh sá ch cá c products có Unitprice lớ n hớ n 10 và nhỏ hơn 15.
14. Liệt kê danh sá ch cá c orders có OrderDate đượ c lậ p trong thá ng 9
nă m 1996.
15. Liệt kê danh sá ch cá c products ứ ng vớ i tiền tồ n vố n. Thô ng tin bao
gồ m ProductId, ProductName, Unitprice, UnitsInStock, TotalAccount.
Trong đó TotalAccount= UnitsInStock * Unitprice.
16. Liệt kê danh sá ch 5 customers có city bắ t đầ u ‘M’.
17. Liệt kê danh sá ch 2 employees có tuổ i lớ n nhấ t. Thô ng tin bao gồ m
EmployeeID, EmployeeName, Age. Trong đó , EmployeeName đượ c ghép từ
LastName và FirstName; Age là nă m hiện hà nh trừ nă m sinh.
18. Liệt kê danh sá ch cá c Products có số lượ ng tồ n nhỏ hơn 5
19. Liệt kê danh sá ch cá c Orders gồ m OrderId, Productid, Quantity,
Unitprice, Discount, ToTal = Quantity * unitPrice – 20%*Discount.
20. Liệt kê danh sá ch cá c Employees khô ng ở thà nh phố London và
Redmond

BÀI TẬP 2: LỆNH SELECT – TRUY VẤN CÓ KẾT NỐI


1.Liệt kê cá c customer khô ng có lậ p hó a đơn trong thá ng 7/1997
2.Liệt kê cá c customer có lậ p hó a đơn trong 15 ngà y đầ u tiên củ a 7/1997
3.Liệt kê danh sá ch cá c sả n phẩ m đượ c giao và o ngà y 16/7/1996
4.Liệt kê danh sá ch cá c hó a đơn củ a cá c Customers mua hà ng trong thá ng 4,
9 củ a nă m 1997. Thô ng tin gồ m Orderid, CompanyName, OrderDate,
RequiredDate, đượ c sắ p xếp theo CompanyName, cù ng Companyname thì
theo OrderDate giả m dầ n.
5.Liệt kê danh sá ch cá c hó a đơn do nhâ n viên có Lastname là Fuller lậ p.
6.Liệt kê danh sá ch cá c Products do nhà cung cấ p (supplier) có mã 1,3,6 bá n
đượ c trong thá ng 6,7 củ a nă m 1997, đượ c sắ p xếp theo mã nhà cung cấ p
(SupplierID), cù ng mã nhà cung cấ p thì sắ p xếp theo ProductID.
7.Liệt kê danh sá ch cá c Products đã bá n có Discount là 1
8.Liệt kê danh sá ch cá c Products có đơn giá bá n bằ ng đơn giá mua.
9.Liệt kê danh sá ch cá c Products mà hó a đơn có OrderID là 10248 đã mua.
Liệt kê danh sá ch cá c Employers đã lậ p cá c hó a đơn trong thá ng 7 củ a nă m
10.

1996
Liệt kê danh sá ch cá c sả n phẩ m Products chưa bá n đượ c trong thá ng 6
11.

nă m 1996
Liệt kê danh sá ch cá c Employes khô ng lậ p hó a đơn và o ngà y hô m nay
12.

Liệt kê danh sá ch cá c Customers chưa mua hà ng trong nă m 1997


13.

Liệt kê danh sá ch cá c nhà cung cấ p Suppliers khô ng cung cấ p Products có


14.

mã là 59.
15. Tìm tấ t cả cá c Customers mua cá c sả n phẩ m có tên bắ t đầ u bằ ng chữ T
trong thá ng 7.
BÀI TẬP 3: LỆNH SELECT – TRUY VẤN GOM NHÓM
1. Danh sá ch cá c orders ứ ng vớ i tổ ng tiền củ a từ ng hó a đơn. Thô ng tin bao
gồ m OrdersId, OrderDate, TotalAccount. Trong đó TotalAccount là Sum
củ a Quantity * Unitprice, kết nhó m theo OrderId.
2. Danh sá ch cá c orders ứ ng vớ i tổ ng tiền củ a từ ng hó a đơn có Shipcity là
‘Madrid’. Thô ng tin bao gồ m OrdersId, OrderDate, TotalAccount. Trong đó
TotalAccount là Sum củ a Quantity * Unitprice, kết nhó m theo OrderId.
3. Danh sá ch cá c products có tổ ng số lượ ng lậ p hó a đơn lớ n nhấ t.
4. Cho biết mỗ i customers đã lậ p bao nhiêu hó a đơn. Thô ng tin gồ m
CustomerID, CompanyName, CountOfOrder. Trong đó CountOfOrder (tổ ng
số hó a đơn) đượ c đếm (Count) theo từ ng Customers.
5. Cho biết mỗ i Employee đã lậ p đượ c bao nhiêu hó a đơn, ứ ng vớ i tổ ng tiền.
6. Danh sá ch cá c customer ứ ng vớ i tổ ng tiền cá c hoá đơn đượ c lậ p từ
31/12/1996 đến 1/1/1998.
7. Danh sá ch cá c customer ứ ng vớ i tổ ng tiền cá c hoá đơn, mà cá c hó a đơn
đượ c lậ p từ 31/12/1996 đến 1/1/1998 và tổ ng tiền cá c hó a đơn >20000.
8. Danh sá ch cá c customer ứ ng vớ i tổ ng số hoá đơn, tổ ng tiền cá c hoá đơn,
mà cá c hó a đơn đượ c lậ p từ 31/12/1996 đến 1/1/1998 và tổ ng tiền cá c
hó a đơn >20000. Thô ng tin đượ c sắ p xếp theo CustomerID, cù ng mã thì
sắ p xếp theo tổ ng tiền giả m dầ n.
9. Danh sá ch cá c Category có tổ ng số lượ ng tồ n (UnitsInStock) lớ n hơn 300,
đơn giá trung bình nhỏ hơn 25. Thô ng tin kết quả bao gồ m CategoryID,
CategoryName, Total_UnitsInStock, Average_Unitprice.
10.Danh sá ch cá c Category có tổ ng số product lớ n hớ n 10. Thô ng tin kết quả
bao gồ m CategoryID, CategoryName, Total_UnitsInStock.
11.Danh sá ch cá c product theo từ ng CategoryName, thô ng tin bao gồ m:
Productname, CategoryName, Unitprice, UnitsinStock. Có dù ng mệnh đề
COMPUTE để liệt kê đơn giá trung bình, tổ ng số lượ ng tồ n (sum of
UnitsinStock) theo từ ng CategoryName.
12.Danh sá ch cá c Customer ứ ng vớ i tổ ng tiền củ a cá c hó a đơn ở từ ng thá ng.
Thô ng tin bao gồ m CustomerID, CompanyName, Month_Year, Total. Trong
đó Month_year là thá ng và nă m lậ p hó a đơn, Total là tổ ng củ a Unitprice*
Quantity, có thố ng kế tổ ng củ a total theo từ ng Customer và Month_Year .
(có dù ng COMPUTE)
13.Cho biết Employees nà o bá n đượ c nhiều tiền nhấ t trong 7 củ a nă m 1997
14.Danh sá ch 3 khá ch có nhiều đơn hà ng nhấ t củ a nă m 1996.
15.Cho biết khá ch hà ng nà o có số lầ n mua hàng lớ n hơn 10 trong nă m 1997.
BÀI TẬP 4: LỆNH SELECT – TRUY VẤN CON SUBQUERY
1. Cá c product có đơn giá lớ n hơn đơn giá trung bình củ a cá c product.
2. Cá c product có đơn giá lớ n hơn đơn giá trung bình củ a cá c product có
ProductName bắ t đầ u là ‘N’
3. Cho biết nhữ ng sản phẩ m có tên bắ t đầ u bằ ng chữ N và đơn giá > đơn giá
củ a sả n phẩ m khá c
4. Danh sá ch cá c products đã có khá ch hà ng đặ t hà ng (tứ c là ProductId có
trong Order Details). Thô ng tin bao gồ m ProductId, ProductName,
Unitprice
5. Danh sá ch cá c products có đơn giá nhậ p lớ n hơn đơn giá bá n nhỏ nhấ t củ a
tấ t cả cá c Products
6. Danh sá ch cá c hó a đơn củ a nhữ ng Customers mà Customers ở thà nh phố
LonDon và Madrid.
7. Danh sá ch cá c products có đơn vị tính có chữ Box và có đơn giá mua nhỏ
hơn đơn giá trung bình củ a tấ t cả cá c Products.
8. Danh sá ch cá c Products có số lượ ng (Quantity) bá n đượ c lớ n nhấ t.
9. Danh sá ch cá c Customer chưa từ ng lậ p hó a đơn (viết bằ ng ba cá ch: dù ng
NOT EXISTS, dù ng LEFT JOIN, dù ng NOT IN )
10.Cho biết cá c sả n phẩ m có đơn giá bá n cao nhấ t
11.Cho biết cá c sản phẩ m có đơn vị tính có chứ a chữ box và có đơn giá bá n
cao nhấ t
12.Danh sá ch cá c products có đơn giá bá n lớ n hơn đơn giá bá n trung bình củ a
cá c Products có ProductId<=5
13.Danh sá ch cá c Customers và cá c Employees khô ng ở cù ng thà nh phố
14.Cho biết nhữ ng sản phẩ m nà o có tổ ng số lượ ng bá n đượ c lớ n hơn số lượ ng
trung bình bá n ra
15.Liệt kê danh sá ch cá c khá ch hàng mua cá c hó a đơn mà cá c hó a đơn này chỉ
mua nhữ ng sả n phẩ m có mã >=3
16.Liệt kê danh sá ch cá c khá ch hàng mà cá c khá ch hà ng nà y mua cá c hó a đơn
do cá c nhâ n viên lậ p hó a đơn ở cù ng thà nh phố vớ i khá ch hà ng
17.Danh sá ch cá c Customers mà cá c Customers đã mua hà ng trong thá ng 7, 9
nă m 1997
18.Danh sá ch cá c City có nhiều hơn 3 customer.
19.Tìm tấ t cả cá c Customers mua ít nhấ t 2 đơn hà ng.
20.Bạ n hãy đưa ra câ u hỏ i cho 3 câ u truy vấ n sau:
Select ProductId, ProductName, UnitPrice from [Products]
Where Unitprice>ALL (Select Unitprice from [Products] where
ProductName like ‘B%’)
Select ProductId, ProductName, UnitPrice from [Products]
Where Unitprice>ANY (Select Unitprice from [Products] where
ProductName like ‘B%’)

Select ProductId, ProductName, UnitPrice from [Products]


Where Unitprice=ANY (Select Unitprice from [Products] where
ProductName like ‘B%’)

BÀI TẬP 5: LỆNH SELECT – CÁC LOẠI TRUY VẤN KHÁC


1. Liệt kê danh sá ch cá c City có Customers hoặ c Employee (dù ng Union)

2. Liệt kê danh sá ch cá c Country có Customers hoặ c Employee (dù ng Union)

3. Kết danh sá ch cá c Customer và Employee lạ i vớ i nhau. Thô ng tin gồ m CodeID,


Name, Address, Phone. Trong đó CodeID là CustomerID/EmployeeID, Name là
Companyname/LastName + FirstName, Phone là Homephone.
4. Danh sá ch cá c Suppliers cung cấ p tấ t cả cá c mặ t hà ng.
5. Danh sá ch cá c Customers đã mua tấ t cả cá c mặ t hà ng

You might also like