You are on page 1of 18

MÔ TẢ CƠ SỞ DỮ LIỆU QUẢN LÝ BÁN HÀNG

DB_SALES

ThS Lai Đình Khải

Nội dung

Lược đồ cơ sở dữ liệu

Các bảng dữ liệu

Bài tập

DB_SALES 1
Lược đồ cơ sở dữ liệu

Các bảng dữ liệu


Bảng product_category (loại sản phẩm)

Thuộc tính Diễn giải Kiểu dữ liệu Khóa


category_id Mã loại sản char(10) primary key
phẩm
category_name Loại sản phẩm nvarchar(100)
not null

Dữ liệu mẫu

category_id category_name
c01 Máy tính bảng
c02 Laptop
c03 Linh kiện
c04 Máy in

Bảng product (sản phẩm)

DB_SALES 2
Thuộc tính Diễn giải Kiểu dữ liệu Khóa
product_id Mã sản char(10) primary key
phẩm
category_id địa chỉ char(10) foreign key (category_id)
references
Product_category(category
_id)
product_name Tên sản nvarchar(100)
phẩm not null)
price Đơn giá int

Dữ liệu mẫu

product_id category_id product_name price


p01 c01 Apple iPad Air 2 1000
16GB
p02 c01 Apple iPad Mini 4 14000
p03 c02 HP PAVILION 11900
X360 I3-7100U
p04 c02 DELL INS 3459 12000
I5-6200U
p05 c03 DDRAM ll 270
1GB/800 Dynet
p06 c03 DDRam3 265
kingmax
2Gb/1333
p07 c03 HDD 250GB 1180
SATA western
p08 c04 Canon D520 5000
p09 c03 USB 2 GB 150
p10 c03 USB 4 GB 180
p11 c04 Máy in Epson 5020
L385

Bảng customer (khách hàng)

Thuộc tính Diễn giải Kiểu dữ liệu Khóa


customer_id Mã khách hàng primary key
char(10),
firstname Tên khách hàng nvarchar(100)
not null
DB_SALES 3
lastname Họ khách hàng nvarchar(100)
not null
address Địa chỉ nvarchar(30)
phone Số điện thoại nvarchar(15)

Dữ liệu mẫu

customer_id firstname lastname address phone


1 Chinh Le Kieu Quan 1 01674692693
10 Nhân Nguyen Quan 6 09324562111
Thanh
2 Minh Bui Hoang Quan 1 01674692667
3 Thoa Nguyen Ngoc Quan 2 01674692668
4 huynh Tran Thanh Quan 3 01673492331
5 An Ngo Minh Quan 4 09074692456
6 Van Nguyen Van Hoc mon 09074693840
7 Mai Luu Ngoc Nha be 09054692009
8 Hòa Au Cam Quan 10 09034562045
9 Thành Cao Dinh Hoc mon 09054562233

Bảng invoices (hóa đơn)

Thuộc tính Diễn giải Kiểu dữ liệu Khóa


Invoice_number Mã hóa đơn char(10) primary key
customer_id Mã khách char(10) foreign key
hàng (customer_id)
references
customers(customer_
id),

employee_id Mã nhân viên CHAR(10) foreign key


(employee_id )
references
employee(employee_i
d )
Invoice_date ngày lập hóa DATETIME
đơn
delivery_date Ngày giao DATETIME
hàng

DB_SALES 4
Dữ liệu mẫu

Invoice_number customer_id employee_id Invoice_date delivery_date


i01 1 001 2016-06-02 2016-06-02
i02 2 001 2016-09-04 2016-09-04
i03 3 002 2016-11-11 2016-11-12
i04 4 003 2016-09-04 2016-09-06
i05 5 001 2016-04-09 2016-04-09
i06 6 002 2016-04-09 2016-04-09
i07 7 004 2016-10-10 2016-10-10
i08 9 001 2017-05-10 2017-05-10
i09 2 001 2018-04-20 2018-04-24
i10 3 003 2018-04-25 2018-04-28

Bảng invoice_detail (chi tiết hóa đơn)

Thuộc tính Diễn giải Kiểu dữ liệu Khóa


Invoice_number Mã hóa đơn char(10) primary
key(Invoice_number,
product_id),
product_id Mã sản phẩm char(10)
foreign
key(product_id)refe
rences
products(product_id
)
foreign
key(Invoice_number)
references
invoices(Invoice_nu
mber)
quantity Số lượng int
unit_price Đơn giá int

Dữ liệu mẫu

Invoice_number product_id quantity unit_price


i01 p01 1 890
i01 p02 2 12000
i02 p03 1 11900
i03 p04 1 12000

DB_SALES 5
i04 p01 1 1000
i05 p06 2 265
i06 p06 4 265
i06 p09 2 150
i07 p09 1 130
i08 p09 1 140
i09 p09 2 150
i10 p02 1 14000
i10 p09 1 150
i10 p11 1 5020

Bài tập
I. Truy vấn trả về 1 trị thông qua các hàm tính toán tổng hợp (aggregate
function)
1. Tổng số lượng nhân viên
Thực hiện 1:
SELECT COUNT(*) AS [NoEmployee] FROM dbo.customers
2. Nhân viên có lương cao nhất
Thực hiện 1:
SELECT MAX(salary) FROM dbo.employee
3. Số lượng sản phẩm 'Laptop'

II. Truy vấn kết dữ liệu từ nhiều bảng


Lưu ý:
▪ Hai bảng có quan hệ 1 - n
▪ Nếu kết dữ liệu theo phép kết bằng thì dùng:
• Điều kiện so sánh ở mệnh đề where.
• Phép kết (Inner) Join …ON
▪ Nếu phép kết ưu tiên giữ toàn bộ giá trị của 1 trong 2 bảng hoặc cả hai
thì dùng Left/ Right/ Full Outer Join
1. Danh sách khách hàng và các hóa đơn mà khách hàng đó đã mua.
Thực hiện 1:

SELECT
c.firstname,c.lastname,inv.Invoice_number,inv.Invoice_date
FROM dbo.customers AS c JOIN dbo.invoices AS inv
ON inv.customer_id = c.customer_id
Thực hiện 2:

DB_SALES 6
SELECT
c.firstname,c.lastname,inv.Invoice_number,inv.Invoice_date
FROM dbo.customers AS c, dbo.invoices AS inv
WHERE inv.customer_id = c.customer_id

2. Thông tin chi tiết của hóa đơn 01 gồm tên sản phẩm số lượng, đơn giá
bán, thành tiền.
3. Danh sách các nhân viên và các hóa đơn mà họ đã bán (bao gồm cả nhân
viên chưa bán được hóa đơn nào).
Thực hiện 1:

SELECT e.name,inv.Invoice_number,inv.Invoice_date
FROM dbo.employee AS e LEFT JOIN dbo.invoices AS inv
ON inv.employee_id = e.employee_id

III. Truy vấn theo nhóm (group by)


Lưu ý:
▪ Câu hỏi tính tổng/ trung bình/ đếm số lượng/ Tìm giá trị lớn nhất, nhỏ
nhất của từng (mỗi) loại
▪ Câu lệnh Select chỉ chọn được các thuộc tính trong Group by và các
hàm tính toán tổng hợp.
▪ Số lượng sản phẩm (tính trên đầu sản phẩm) của từng loại sản phẩm
1. Đơn giá sản phẩm cao nhất của từng loại sản phẩm
Thực hiện 1: thực hiện kết dữ liệu trước, sau đó gom nhóm và tìm giá trị lớn
nhất.

SELECT p.category_id,pc.category_name, MAX(p.price) AS[Max


of price]
FROM dbo.products AS p JOIN dbo.Product_category AS pc
ON pc.category_id = p.category_id
GROUP BY p.category_id,pc.category_name

Thực hiện 2: chỉ là cách viết khác thực hiện 1 (không phải là cách khác) thực
hiện tìm max cho từng nhóm rời mới kết dữ liệu với bảng Product_category

SELECT Product_category.category_id, category_name, T.[Max


of price]
FROM dbo.Product_category JOIN
(SELECT category_id, MAX(price) AS [Max of price]
DB_SALES 7
FROM dbo.products
GROUP BY category_id) AS T
ON T.category_id = Product_category.category_id

2. Số lượng hóa đơn xuất ra của mỗi nhân viên


Thực hiện 1:
SELECT inv.employee_id,em.name, COUNT(*) AS [No Of invoices]
FROM dbo.invoices AS INv JOIN dbo.employee AS em
ON em.employee_id = INv.employee_id
GROUP BY INv.employee_id,em.name

Thực hiện 2:

SELECT em.employee_id,em.name,T.[No Of invoices]


FROM dbo.employee AS em JOIN
(SELECT employee_id, COUNT(*) AS [No Of invoices]
FROM dbo.invoices
GROUP BY employee_id) AS T
ON T.employee_id = em.employee_id

3. Số lượng bán được của mỗi sản phẩm.


4. Số lượng bán được của mỗi loại sản phẩm.
5. Số lượng khách hàng của mỗi quận huyện.

SELECT address, COUNT(*)


FROM dbo.customers
GROUP BY address

6. Tổng số tiền bán được của mỗi sản phẩm


7. Tổng số tiền bán được của mỗi loại sản phẩm
8. Hóa đơn có trị giá cao nhất, thông tin gồm mã hóa đơn, ngày lập hóa
đơn và nhân viên lập hóa đơn.
9. Tính số tiền bán hàng trung bình của từng nhân viên
10. Tính số tiền bán hàng trung bình của từng nhân viên trong từng tháng.
Thông tin gồm Họ tên nhân viên và tổng số tiền.
11. Số lượng hóa đơn được xuất bởi từng nhân viên.
IV. Truy vấn theo nhóm có điều kiện (where…group by…having)
Lưu ý:
▪ Điều kiện trên thuộc tính thì sử dụng where để lọc dữ liệu

DB_SALES 8
▪ Điều kiện trên hàm tính toán tổng hợp thì dùng Having
1. Tổng số hóa đơn được xuất trong tháng 4/2018
2. Số lượng hóa đơn bán laptop
Thực hiện 1:
SELECT COUNT(*) AS [No OF invoices]
FROM dbo.products AS p JOIN dbo.invoice_detail AS ind
ON ind.product_id = p.product_id
JOIN dbo.Product_category AS pc
ON pc.category_id = p.category_id
where pc.category_name =N'laptop'

3. Số lượng hóa đơn mua trên 10.000


4. Danh sách những nhân viên đã xuất trên 3 hóa đơn.
Thực hiện 1:

SELECT em.employee_id,em.name, COUNT(*) AS [No of invoice]


FROM dbo.invoices AS inv JOIN dbo.employee em
ON em.employee_id = inv.employee_id
GROUP BY em.employee_id,em.name
HAVING COUNT(*)>=3

Thực hiện 2:

SELECT em.employee_id,em.name,T.[No of invoice]


FROM dbo.employee AS em JOIN
(SELECT employee_id, COUNT(*) AS [No of invoice]
FROM dbo.invoices
GROUP BY employee_id
HAVING COUNT(*)>=3) AS T
ON T.employee_id = em.employee_id

5. Những sản phẩm có số lượng được bán trên 5.


6. Những nhân viên có tổng doanh thu trên 20000. Thông tin gồm mã nhân
viên, họ tên nhân viên, tổng doanh thu.
Thực hiện 1:
SELECT em.employee_id,em.name,
SUM( ind.quantity*ind.unit_price) AS [Total]
FROM dbo.employee AS em JOIN dbo.invoices AS inv
ON inv.employee_id = em.employee_id

DB_SALES 9
JOIN dbo.invoice_detail AS ind
ON ind.Invoice_number = inv.Invoice_number
GROUP BY em.employee_id,em.name
HAVING SUM(ind.quantity*ind.unit_price) >20000

V. Subquery
Lưu ý:
▪ Subquery trả về 1 trị thường đặt trong Select hoặc 1 vế trong biểu
thức so sánh của mệnh đề where
▪ Subquery trả về 1 cột thường đặt sau toán tử ALL, Any, In trong mệnh
đề where (trước all, any phải có toán tử so sánh >,=,<…)
▪ Subquery trả về 1 bảng (trường hợp đặc biệt là 1 bảng chỉ có 1 cột)
thường nằm trong mệnh đề From với một bí danh nào đó.
▪ Có thể sử dụng In để thay cho việc dùng Join trong trường hợp truy
vấn liên quan đến thông tin trên 2 bảng nhưng câu lệnh select chỉ
chọn những giá trị trên 1 bảng.
1. Danh sách nhân viên được tuyển dụng chung ngày với nhân viên ‘002’
Thực hiện 1:
SELECT *
FROM dbo.employee
WHERE startdate= (SELECT startdate
FROM dbo.employee
WHERE employee_id='002')
AND employee_id<>'002'

2. Danh sách khách hàng mua hàng từ các nhân viên được tuyển dụng
trong năm 2017.
VI. Truy vấn tìm giá trị lớn nhất và nhỏ nhất
▪ Sử dụng so sánh với Subquery trả về 1 giá trị khi sử dụng Select…
max()
▪ Sử dụng toán tử so sánh và ALL với Subquery trả về 1 danh sách
▪ Có thể sử dụng cấu trúc group by để tính toán tìm ra các giá trị trước
khi so sánh.
1. Nhân viên có lương lớn nhất.
Thực hiện 1:

SELECT * FROM dbo.employee

DB_SALES 10
WHERE salary >=ALL (SELECT salary FROM dbo.employee)
Thực hiện 2:

SELECT* FROM dbo.employee


WHERE salary =(SELECT MAX(salary) FROM dbo.employee)

2. Mỗi loại sản phẩm bán nhiều nhất là bao nhiêu sản phẩm.
3. Hóa đơn có trị giá thấp nhất.
VII. Truy vấn theo phép hợp
▪ Danh sách gồm nhiều tập dữ liệu thỏa mãn các điều kiện khác nhau
(tập dữ liệu thỏa mãn điều kiện thứ 1 hoặc thỏa mãn điều kiện thứ 2).
▪ Các tập dữ liệu có cùng số thuộc tính (số cột) và kiểu dữ liệu giữa các
cột tương ứng phải tương thích nhau.
▪ Sử dụng toán tử Union
1. Lập danh sách các hóa đơn được lập trong tháng 4 năm 2018 hoặc có
ngày giao hàng trong tháng 5 năm 2017. Thông tin gồm mã hóa đơn, mã
nhân viên và ngày (ngày lập hoặc ngày giao hàng).
Thực hiện 1:

SELECT *
FROM dbo.invoices
WHERE YEAR(Invoice_date)='2018'
AND MONTH(Invoice_date) =4
UNION
SELECT *
FROM dbo.invoices
WHERE YEAR(delivery_date)='2017'
AND MONTH(delivery_date) =5

2. Lập danh sách khách hàng quận 1 mua máy laptop và khách hàng quận
4 mua các mặt hàng thuộc nhóm linh kiện.
VIII. Truy vấn theo phép giao: tập dữ liệu thỏa nhiều điều kiện cùng lúc trên
cùng 1 nhóm thuộc tính.
Sử dụng IN, Exists hoặc Intersect
1. Danh sách các khách hàng đã mua laptop và Ram.
2. Danh sách nhân viên bán hàng cho những khách hàng quận 1 và quận 4.
Thực hiện 1: Sử dụng Exists

DB_SALES 11
SELECT DISTINCT em.employee_id, em.name
FROM dbo.customers AS c JOIN dbo.invoices AS inv
ON inv.customer_id = c.customer_id
JOIN dbo.employee AS em
ON em.employee_id = inv.employee_id
WHERE c.address='quan 1' AND
EXISTS (SELECT * FROM dbo.customers AS c1
JOIN dbo.invoices AS inv1
ON c1.customer_id=inv1.customer_id
WHERE c1.address='quan 4'
AND inv1.employee_id=inv.employee_id
)
Thực hiện 2: Sử dụng Intersect

SELECT em.employee_id, em.name


FROM dbo.customers AS c JOIN dbo.invoices AS inv
ON inv.customer_id = c.customer_id
JOIN dbo.employee AS em
ON em.employee_id = inv.employee_id
WHERE c.address='quan 1'
INTERSECT
SELECT em.employee_id, em.name
FROM dbo.customers AS c JOIN dbo.invoices AS inv
ON inv.customer_id = c.customer_id
JOIN dbo.employee AS em
ON em.employee_id = inv.employee_id
WHERE c.address='quan 4'

IX. Truy vấn với từ khóa “CHƯA” (hoặc từ “không”) (có từ khóa “CHƯA”
trong câu hỏi hoặc câu hỏi được diễn đạt lại với từ “CHƯA” theo ngữ nghĩa)
▪ Hãy chú ý các quan hệ 1-n.
▪ Liên tưởng đến phép trừ
▪ Sử dụng NOT IN, NOT Exists, Except HOẶC COUNT()=0
1. Sản phẩm nào chưa được bán trong tháng 4 năm 2018 (Lấy tập dữ liệu tất
cả các sản phẩm trừ đi tập dữ liệu các sản phẩm được bán trong tháng 4
năm 2018)
Thực hiện 1: Sử dụng NOT EXISTS

SELECT p.product_id ,p.product_name


DB_SALES 12
FROM dbo.products AS p
WHERE NOT EXISTS (SELECT ind.product_id
FROM dbo.invoices AS inv JOIN
dbo.invoice_detail AS ind
ON ind.Invoice_number = inv.Invoice_number
WHERE MONTH(inv.Invoice_date)=4
AND YEAR(inv.Invoice_date)=2018
AND p.product_id=ind.product_id
)
Thực hiện 2: Sử dụng NOT IN

SELECT p.product_id ,p.product_name


FROM dbo.products AS p
WHERE p.product_id NOT IN ( SELECT ind.product_id
FROM dbo.invoices AS inv JOIN
dbo.invoice_detail AS ind
ON ind.Invoice_number = inv.Invoice_number
WHERE MONTH(inv.Invoice_date)=4
AND YEAR(inv.Invoice_date)=2018
)
Thực hiện 3: Sử dụng EXCEPT

SELECT p.product_id ,p.product_name


FROM dbo.products AS p
EXCEPT
SELECT ind.product_id, p.product_name
FROM dbo.invoices AS inv JOIN dbo.invoice_detail AS ind
ON ind.Invoice_number = inv.Invoice_number
JOIN dbo.products AS p
ON ind.product_id = p.product_id
WHERE MONTH(inv.Invoice_date)=4
AND YEAR(inv.Invoice_date)=2018

Thực hiện 4: Sản phẩm chưa được bán là sản phẩm có số lần bán sản phẩm
đó =0

SELECT p.product_id ,p.product_name


FROM dbo.products AS p
WHERE (SELECT COUNT(ind.product_id)
FROM dbo.invoices AS inv

DB_SALES 13
JOIN dbo.invoice_detail AS ind
ON ind.Invoice_number = inv.Invoice_number
WHERE MONTH(inv.Invoice_date)=4
AND YEAR(inv.Invoice_date)=2018
AND ind.product_id=P.product_id) = 0

2. Nhân viên chưa xuất được hóa đơn nào trong tháng 4 năm 2018
3. Các khách hàng không mua hàng trong năm 2017
X. Truy vấn với từ khóa “CHỈ” (có từ ‘CHỈ’ trong câu hỏi hoặc câu hỏi được
diễn đạt lại có từ CHỈ theo ngữ nghĩa)
▪ Chú ý đến các bảng bên n trong quan hệ 1-n
1. Hóa đơn chỉ mua các sản phẩm có giá dưới 300. Thông tin gồm số hóa
đơn và ngày lâp hóa đơn.
Thực hiện 1: Sử dụng NOT EXISTS. Tìm các dòng có số hóa đơn thỏa điều
kiện <300 và kiểm tra đối với số hóa đơn đó không tồn tại 1 dòng chi tiết
hóa đơn nào có đơn giá >300.

Thực hiện 1: Sử dụng NOT EXISTS


SELECT DISTINCT ind.Invoice_number, inv.Invoice_date
FROM dbo.invoice_detail AS ind JOIN dbo.invoices AS inv
ON inv.Invoice_number = ind.Invoice_number
WHERE unit_price<300
AND NOT EXISTS (SELECT *
FROM dbo.invoice_detail
WHERE Invoice_number=ind.Invoice_number
AND unit_price>300)
Thực hiện 2: Sử dụng EXCEPT.
SELECT DISTINCT inv.Invoice_number,inv.Invoice_date
FROM dbo.invoice_detail AS ind JOIN dbo.invoices AS inv
ON inv.Invoice_number = ind.Invoice_number
WHERE NOT EXISTS
(SELECT Invoice_number,product_id
FROM dbo.invoice_detail
WHERE Invoice_number=inv.Invoice_number
EXCEPT
SELECT Invoice_number,product_id
FROM dbo.invoice_detail
WHERE unit_price<300 AND Invoice_number=inv.Invoice_number
DB_SALES 14
)

Thực hiện 3: Sử dụng INTERSECT.


SELECT DISTINCT inv.Invoice_number,inv.Invoice_date
FROM dbo.invoice_detail AS ind JOIN dbo.invoices AS inv
ON inv.Invoice_number = ind.Invoice_number
WHERE unit_price<300 AND NOT EXISTS
(SELECT Invoice_number
FROM dbo.invoice_detail
WHERE unit_price>=300 AND Invoice_number=ind.Invoice_number
INTERSECT
SELECT Invoice_number
FROM dbo.invoice_detail
WHERE unit_price<300 AND Invoice_number=ind.Invoice_number
)
2. Liệt kê các hóa đơn chỉ bán đúng sản phẩm thuộc nhóm linh kiện.
Thực hiện 1: Sử dụng NOT EXISTS
SELECT DISTINCT ind.Invoice_number
FROM dbo.Product_category AS pc JOIN dbo.products AS p
ON p.category_id = pc.category_id
JOIN dbo.invoice_detail AS ind
ON ind.product_id = p.product_id
WHERE pc.category_name=N'Linh kiện'
AND NOT EXISTS( SELECT *
FROM dbo.Product_category AS pc1
JOIN dbo.products AS p1
ON p1.category_id = pc1.category_id
JOIN dbo.invoice_detail AS ind1
ON ind1.product_id = p1.product_id
WHERE pc1.category_name<>N'Linh kiện'
AND ind1.Invoice_number=ind.Invoice_number
)

Thực hiện 2: Sử dụng EXCEPT.


SELECT DISTINCT ind.Invoice_number
FROM dbo.Product_category AS pc JOIN dbo.products AS p
ON p.category_id = pc.category_id
JOIN dbo.invoice_detail AS ind
ON ind.product_id = p.product_id
DB_SALES 15
WHERE NOT EXISTS (SELECT ind1.Invoice_number,
ind1.product_id, pc1.category_name
FROM dbo.Product_category AS pc1
JOIN dbo.products AS p1
ON p1.category_id = pc1.category_id
JOIN dbo.invoice_detail AS ind1
ON ind1.product_id = p1.product_id
WHERE ind1.Invoice_number=ind.Invoice_number
EXCEPT
SELECT ind1.Invoice_number, ind1.product_id,
pc1.category_name
FROM dbo.Product_category AS pc1
JOIN dbo.products AS p1
ON p1.category_id = pc1.category_id
JOIN dbo.invoice_detail AS ind1
ON ind1.product_id = p1.product_id
WHERE pc1.category_name=N'Linh kiện'
AND ind1.Invoice_number=ind.Invoice_number
)

3. Danh sách các nhân viên chỉ bán hàng cho các khách hàng quận 1.
XI. Truy vấn với từ khóa “Tất cả” (có từ khóa tất cả trong câu hỏi hoặc câu
hỏi được diễn đạt lại có từ tất cả theo ngữ nghĩa)
▪ Sử dụng not exists hoặc except
1. Danh sách các khách hàng đã mua sản phẩm với tất cả nhân viên bán
hàng.

Thực hiện 1: Sử dụng NOT EXISTS.


SELECT c.customer_id, c.firstname, c.lastname
FROM dbo.customers AS c
WHERE NOT EXISTS (SELECT*
FROM dbo.employee AS EM
WHERE NOT EXISTS (SELECT *
FROM dbo.invoices
WHERE customer_id= C.customer_id
AND employee_id=EM.employee_id
)
)
Thực hiện 2: Sử dụng EXCEPT
DB_SALES 16
SELECT C.customer_id,C.firstname,C.lastname
FROM dbo.customers AS C
WHERE NOT EXISTS
(
SELECT employee_id
FROM dbo.employee
EXCEPT
SELECT employee_id
FROM dbo.invoices
WHERE customer_id= c.customer_id
)

Thực hiện 3: Sử dụng hàm COUNT(*). Tìm số lượng nhân viên mà khách
hàng đã mua hàng so sánh với số lượng tất cả nhân viên.

SELECT C.customer_id,C.firstname,C.lastname
FROM dbo.customers AS C
Where (SELECT DISTINCT COUNT(*)
FROM dbo.invoices
WHERE customer_id=c.customer_id)
= (SELECT COUNT(*) FROM dbo.employee)

2. Sản phẩm được bán trong tất cả hóa đơn trong ngày 24/4/2018.
3. Danh sách nhân viên đã bán được tất cả các sản phẩm.
4. Danh sách khách hàng mua tất cả các loại sản phẩm (product_category)
XII. Cập nhật dữ liệu
▪ Sử dụng câu lệnh Update
1. Cập nhật giá các loại laptop thêm 200.
Thực hiện 1:
UPDATE dbo.products
SET price=price+ 200
WHERE category_id='c02'

Thực hiện 2: sử dụng phép kết để ghi đúng điều kiện loại hàng là laptop
UPDATE dbo.products SET price=price+ 200
FROM dbo.products AS p JOIN dbo.Product_category AS pc
ON pc.category_id = p.category_id

DB_SALES 17
WHERE pc.category_name='laptop'
2. Thay đổi ngày chuyển hàng trong tháng 4/2018 dời lại 1 ngày.
3. Tăng lương thêm 300 cho các nhân viên được tuyển dụng năm 2016.

DB_SALES 18

You might also like