0% found this document useful (0 votes)
8 views

Lecture 09 - Read SQL Tables - For Student

slide lecture 9 SQL

Uploaded by

Ngọc Huyềnn
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views

Lecture 09 - Read SQL Tables - For Student

slide lecture 9 SQL

Uploaded by

Ngọc Huyềnn
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

KHOA HỌC DỮ LIỆU TRONG KINH TẾ VÀ KINH DOANH​

CƠ SỞ DỮ LIỆU​
Cơ sở dữ liệu
Bài 09: Thực hành với câu lệnh SELECT
Học liệu sử dụng

Bộ dữ liệu
AdventureworksDW2019

Công cụ (chọn một)


• SQL Server Management Studio
• Azure Data Studio
• Datagrip
• ….
Từ điển dữ liệu
https://dataedo.com/samples/html/Data_warehouse/index.html
Cấu trúc bài học

1. Cấu trúc SQL

2. Kỹ thuật gán tên tạm thời (alias) và bình luận (comment)

3. Điều kiện lọc với WHERE và toán tử

4. Kỹ thuật truy vấn con (Subquery)

5. Kỹ thuật tạo bảng tạm thời (Temp table)


6. Kỹ thuật Biểu thức Bảng Chung (CTE)
Thực hành với câu lệnh SELECT

Phần 1: Ngôn ngữ truy vấn có cấu trúc


Các loại câu lệnh SQL

▪ DML: SELECT, INSERT, UPDATE, DELETE


▪ DDL: CREATE, ALTER, DROP
▪ DCL: GRANT, REVOKE, DENY

6
Câu lệnh SQL

• Kiểu dữ liệu
• Giá trị NULL
• Sắp xếp kết quả trả ra
• Lọc có điều kiện
• Kết hợp bảng bằng phép UNION
• Kết hợp bảng bằng phép JOIN
• Truy vấn con & Biểu thức bảng chung (CTE)
• Tổng hợp dữ liệu và hàm Cửa sổ

7
SELECT và FROM

• Truy vấn SELECT cơ bản nhất tuân theo mẫu SELECT... FROM
<tên_bảng>.
• Truy vấn này là cách để lấy dữ liệu từ một bảng duy nhất.
• Nếu bạn muốn lấy tất cả dữ liệu từ bảng sản phẩm trong cơ sở dữ liệu
mẫu, chỉ cần sử dụng truy vấn sau:
SELECT * FROM DimProduct

• Nếu bạn muốn lấy lấy ra các cột cụ thể bảng sản phẩm trong cơ sở
dữ liệu mẫu, chỉ cần sử dụng truy vấn sau:
SELECT ProductKey
, EnglishProductName FROM DimProduct
8
WHERE

• Mệnh đề WHERE là một phần của logic có điều SELECT *


kiện giúp giới hạn lượng dữ liệu được trả về. Tất cả FROM Table
các hàng được trả về trong câu lệnh SELECT với WHERE Condition
mệnh đề WHERE trong đó đáp ứng các điều kiện
của mệnh đề WHERE.
• Mệnh đề WHERE thường có thể được tìm thấy sau
mệnh đề FROM của một câu lệnh SELECT.

9
ORDER BY

• Mệnh đề ORDER BY được sử dụng để sắp xếp kết quả được


đặt theo thứ tự tăng dần (ASC) hoặc giảm dần (DESC)
• ORDER BY theo một cột hoặc nhiều cột.
SELECT ProductCategoryID AS Category, [Name]
FROM SalesLT.Product
WHERE ProductCategoryID = 18
AND ListPrice < 1000.00
ORDER BY Category, ListPrice DESC;

10
GROUP BY

• GROUP BY là một mệnh đề chia các


hàng của tập dữ liệu thành nhiều Group 1 Aggregate 1
nhóm dựa trên một số loại khóa được
chỉ định trong mệnh đề GROUP BY. Group 2 Aggregate 2

• Khóa của GROUP BY và giá trị tổng hợp


cho nhóm sau đó được hiển thị trong Dataset Group 3 Aggregate 3
đầu ra SQL.
… …

GROUP N Aggregate N

11
HAVING

• Mệnh đề HAVING tương tự như mệnh đề WHERE, nó được sử dụng


cùng với mệnh đề GROUP BY.
• Cú pháp của GROUP BY và câu lệnh HAVING là:

SELECT Key
, Aggfunc(Col_1)
FROM Table_1
GROUP BY Key
HAVING Other_aggfunc(Col_2)_condition

12
Câu lệnh SELECT
Thành phần Biểu thức Vai trò
5 SELECT <Chọn danh sách> Xác định cột nào sẽ trả về
1 FROM <Nguồn bảng> Xác định (các) bảng để truy vấn
2 WHERE <Điều kiện tìm kiếm> Lọc các hàng bằng điều kiện
3 GROUP BY <Nhóm theo danh sách> Sắp xếp các hàng theo nhóm
4 HAVING <Điều kiện tìm kiếm> Lọc nhóm bằng điều kiện
6 ORDER BY <Sắp xếp theo danh sách> Sắp xếp đầu ra

SELECT OrderDate, COUNT(OrderID) AS Orders


FROM Sales.SalesOrder
WHERE Status = 'Shipped'
GROUP BY OrderDate
HAVING COUNT(OrderID) > 1
ORDER BY OrderDate DESC;
Ví dụ câu lệnh truy vấn SELECT

• Truy vấn tất cả các cột


SELECT * FROM Production.Product;

• Truy vấn một số cột cụ thể


SELECT Name
, ListPrice
FROM Production.Product;

• Biểu thức và gán tên


SELECT Name AS Product
, ListPrice * 0.9 AS SalePrice
FROM Production.Product;
Thực hành với câu lệnh SELECT

Phần 2: Tên tạm thời và bình luận


Tên tạm thời (Alias)

Tên tạm thời trong (Alias) SQL được sử dụng để cung cấp cho một bảng
hoặc một cột trong bảng, một tên tạm thời (Chỉ tồn tại trong khoảng
thời gian của truy vấn)

SELECT OrderDate, COUNT(OrderID) AS Orders


FROM Sales.SalesOrder Tên tạm thời
WHERE Status = 'Shipped'
GROUP BY OrderDate
HAVING COUNT(OrderID) > 1
ORDER BY OrderDate DESC;
Bình luận (Comment)
Bình luận được sử dụng để giải thích các phần của câu lệnh SQL hoặc để ngăn chặn việc
thực thi các câu lệnh SQL.
Hai loại bình luận:
• Comment một dòng
-- Đây là một comment 1 dòng trong SQL
SELECT ProductKey, Color, ListPrice
FROM dbo.dimProduct

• Comment nhiều dòng


/* Nhận xét này có thể được thay thế trong nhiều dòng trong SQL*/
SELECT EmployeeKey /*hoặc thậm chí ở đây*/, FirstName, LastName
FROM dbo.DimEmployee
Thực hành với câu lệnh SELECT

Phần 3: WHERE và toán tử


WHERE

• Câu lệnh WHERE được sử dụng để lọc các bản ghi.

SELECT ProductCategoryID AS Category, [Name]


FROM SalesLT.Product
WHERE ProductCategoryID = 18
AND ListPrice < 1000.00
ORDER BY Category, ListPrice DESC;
Toán tử
Nhóm Toán tử Mô tả
= Bằng
<> Or != Không bằng
Toán tử so sánh > Lớn hơn
< Nhỏ hơn
>= Lớn hơn hoặc bằng
<= Nhỏ hơn hoặc bằng
Trả về các bản ghi đáp ứng tất cả các điều kiện được phân tách bởi
AND
mệnh đề AND trong WHERE.
Trả về bản ghi đáp ứng bất kỳ điều kiện nào được phân tách bởi OR
Toán tử logic OR
trong mệnh đề WHERE.
Trả lại bản ghi không đáp ứng bất kỳ điều kiện nào trong điều khoản
NOT
WHERE.
[NOT] BETWEEN Trả về giá trị [NOT] trong một phạm vi đã cho
Chỉ định nhiều giá trị trong mệnh đề WHERE
[NOT] IN
(viết tắt cho nhiều điều kiện OR)
Toán tử SQL
IS [NOT] NULL Trả về các bản ghi có giá trị [NOT] NULL trong các tệp đã cho.
Trả về các bản ghi [DO
[NOT] LIKE
NOT] khớp với một mẫu đã xác định trong một cột.
Thực hành với câu lệnh SELECT

Phần 4: Truy vấn con - Bảng tạm - CTEs


Truy vấn con (Subquery)
Trong SQL, truy vấn con có thể được định nghĩa đơn giản là một truy vấn trong một truy vấn khác
Truy vấn con có thể được sử dụng như:
● Giá trị hoặc danh sách các giá trị
● Bảng

Ví dụ:
SELECT calendar_year
, calendar_month
FROM
(
SELECT DISTINCT
YEAR(FullDateAlternateKey) as calendar_year
, MONTH(FullDateAlternateKey) as calendar_month
FROM DimDate
) as calendar
Truy vấn con (Subquery)

Viết truy vấn hiển thị các cột Product key, EnglishProductNameName và Color từ các hàng
trong dbo. Bảng DimProduct. Chỉ hiển thị những hàng trong đó Số tiền bán hàng vượt quá
1.000 đô la và ngày đặt hàng trong năm 2010

Ví dụ:
SELECT Productkey
, EnglishProductNameName
, Color
FROM DimProduct
WHERE Productkey in
(
SELECT Productkey
FROM FactInternetSales
WHERE SalesAmount > 1000
)
Bảng tạm (Temporary table)
Trong SQL, bảng tạm là các bảng tồn tại tạm thời

Ví dụ:
SELECT DISTINCT
YEAR(FullDateAlternateKey) as calendar_year
, MONTH(FullDateAlternateKey) as calendar_month
INTO #calendar
FROM DimDate

SELECT
calendar_year
, calendar_month
FROM #calendar
CTEs
Biểu thức Bảng Chung (Common Table Expression - CTE) là tập kết quả của một truy
vấn tồn tại tạm thời và chỉ để sử dụng trong ngữ cảnh của một truy vấn lớn hơn

Ví dụ: WITH calendar AS (


SELECT DISTINCT
YEAR(FullDateAlternateKey) as calendar_year ,MONTH(FullDateAlternateKey) as
calendar_month
FROM DimDate
)

SELECT
calendar_year
,calendar_month
FROM calendar
Truy vấn con so với CTE - Bài tập

Bài tập 1: (Sử dụng Subquery và CTEs)

Truy vấn Product key, Salesamount, OrderDate, Shipdate từ bảng FactResellerSales. Với điều
kiện, chỉ truy vấn những hàng trong đó màu không phải là màu xanh lam.

Bài tập 2: (Sử dụng Subquery và CTEs)

Truy vấn Product key, Salesamount, OrderDate, Shipdate từ bảng FactResellerSales. Với điều kiện, những
hàng trong EnglishProductCategory chứa “Bike”.
Tài liệu tham khảo

• Chapter 3,4,5,6 – SQL Textbook by Datapot


• Chapter 3 - "SQL for Data Analytics Perform fast and efficient data analysis with the
power of SQL" by Upom Malik, Matt Goldwasser, Benjamin Johnston
Thực hành với câu lệnh SELECT

Giải đáp câu hỏi


XIN CẢM ƠN !

You might also like