1. Trang chủ
  2. » Thể loại khác

Chương 4. THAO TÁC DỮ LIỆU. Lecturer: Nguyễn Đức Cương - FIT

19 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Chương 4. Thao Tác Dữ Liệu
Tác giả Nguyễn Đức Cương
Trường học FPT University
Chuyên ngành Công nghệ Thông tin
Thể loại Bài giảng
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 19
Dung lượng 615,58 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

INTO Câu lệnh Update Câu lệnh Delete Cấu trúc lệnh Select Mệnh đề FROM Mệnh đề WHERE Mệnh đề HAVING Các hàm hệ thống Kết nối bảng Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slid

Trang 1

Chương 4 THAO TÁC DỮ LIỆU

Lecturer: Nguyễn Đức Cương - FIT

Email: cuongnguyenduc@gmail.com

Website: http://www.nguyenduccuong.com

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 2

Nội dung

Câu lệnh INSERT INTO

Câu lệnh Update

Câu lệnh Delete

Cấu trúc lệnh Select

Mệnh đề FROM

Mệnh đề WHERE

Mệnh đề HAVING

Các hàm hệ thống

Kết nối bảng

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 3

Mục tiêu

Mô tả được các lệnh thao tác thêm, xóa, sửa dữ

liệu

Có thể thêm dữ liệu, hiệu chỉnh dữ liệu, xóa dữ liệu

trực tiếp trên CSDL

Mô tả được lệnh tìm kiếm, lọc dữ liệu

Có thể liệt kê, tìm kiếm lọc dữ liệu từ 1 hoặc nhiều

bảng

Mô tả ý nghĩa và cách sử dụng của một số hàm hệ

thống

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 4

Bảo trì dữ liệu

Liên quan đến việc bổ sung thông tin mới, sửa lại

dữ liệu không chính xác, có thể xóa đi dữ liệu không cần thiết

Nhóm lệnh DML dùng để bảo trì dữ liệu gồm 3 lệnh

 INSERT

 UPDATE

 DELETE

Trang 2

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 5

Câu lệnh INSERT VALUES

Cú pháp:

INSERT [INTO] <Tên bảng>[(<danh sách cột>)]

VALUES (giá trị, )[,(giá trị, ), ]);

Ý nghĩa:

Thêm 1 hoặc nhiều dòng dữ liệu vào trong bảng

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 6

Câu lệnh INSERT VALUES

Ví dụ: Thêm phòng TCHC vào bảng PhongBan

INSERT PhongBan VALUES (‘HCTH’,’Phòng Hành chính tổng hợp’,’12, Nguyễn Văn Bảo, Gò Vấp,’08.38940390’);

Nhận xét

 Khi không chỉ ra tên cột sau tên bảng

 Có chỉ ra tên cột sau tên bảng

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 7

Câu lệnh INSERT SELECT

Cú pháp:

INSERT [INTO] <Tên bảng>[(<danh sách cột>)]

SELECT {danh sách cột}

FROM {danh sách bảng}

[WHERE <Điều kiện>];

Ý nghĩa:

Thêm 1 hoặc nhiều dòng dữ liệu từ 1 hay nhiều

bảng vào trong bảng khác

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 8

Câu lệnh INSERT SELECT

Ví dụ:

INSERT EmployeeSales Select EmployeeId, LastName FROM Employee WHERE EmployeeID LIKE ‘3%’

Trang 3

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 9

Câu lệnh SELECT

 Cú pháp

SELECT *|{[DISTINCT] column|expression

[alias], }

FROM table(s)

[WHERE condition(s)]

[HAVING group_condition]

[ORDER BY {column, expr, alias}

[ASC|DESC]];

 Ý nghĩa: lọc thông tin từ 1, nhiều bảng

 Lưu ý thứ tự thực hiện lệnh

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 10

Câu lệnh SELECT

Ví dụ 1: Cho biết thông tin về các phòng ban?

SELECT Maphong,Tenphong, DiaChi, Tel FROM PhongBan

hoặc:

SELECT * FROM PhongBan

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 11

Câu lệnh SELECT

Ví dụ 2: Cho biết danh sách thưởng của các nhân

viên bao gồm các thông tin mã nhân viên, họ tên,

lương, và thưởng (bằng lương + 40% lương)?

Câu lệnh:

SELECT Manv, Hoten, Luong, 1.4* Luong as

Thuong

FROM Nhanvien

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 12

Câu lệnh SELECT

Ví dụ 3: Cho biết mã các ngoại ngữ mà các nhân viên trong cơ quan đã học?

Câu lệnh:

Select Mann From TDNN hoặc

Select Distinct Mann From TDNN

Trang 4

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 13

Câu lệnh SELECT

 Ví dụ 4: Đưa ra thông tin về 2 nhân

viên đầu tiên trong bảng nhân viên?

Câu lệnh:

Select top 2 *

From NHANVIEN

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 14

Câu lệnh SELECT – mệnh đề WHERE

Lọc kết quả ra của mệnh đề FROM, hạn chế dòng

dữ liệu được trả về trong kết quả

Biểu thức điều kiện

 Biểu thức

 Dữ liệu trong bảng

 Các toán tử

 Các hàm hệ thống hoặc do người dùng định nghịa

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 15

Câu lệnh SELECT

Các phép toán trong Biểu thức điều kiện

• Toán tử so sánh: >, <, >=, <>

• Toán tử logic: AND, OR, NOT

• Toán tử phạm vi: BETWEEN… AND

• Thuộc DS giá trị: IN and NOT IN

• Giá trị chưa biết:IS NULL and IS NOT NULL

• Tồn tại trong Subquery :EXISTS and NOT EXISTS

• DISTINCT : loại bỏ trùng lắp

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 16

Câu lệnh SELECT

Ví dụ 5: Cho biết danh sách các nhân viên làm việc ở phòng có mã số là HCA?

 Câu lệnh:

Select * From Nhanvien Where Maphong = ‘HCA’

16

Trang 5

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 17

Câu lệnh SELECT

Ví dụ 6: Cho biết mã nhân viên, họ tên,

ngày sinh, lương của các nhân viên có

lương nằm trong khoảng từ 2000000 đồng

đến 3000000 đồng ?

Câu lệnh:

Select Manv, Hoten, Ngaysinh, Luong

From Nhanvien

Where (Luong  2000000) and (Luong 

3000000)

17

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 18

Câu lệnh SELECT

 Ví dụ 7: Cho biết mã nhân viên, họ tên, ngày sinh, lương của các nhân viên có lương không nằm trong khoảng từ 1000000 đồng đến 2000000 đồng?

Thực hiện:

Select Manv, Hoten, Ngaysinh, Luong From Nhanvien

Where Luong not between 1000 and 2000

18

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 19

Câu lệnh SELECT

 Ví dụ 8: Đưa ra danh sách các nhân

viên chưa có số điện thoại?

Select *

From Nhanvien

Where SDT is Null

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 20

Câu lệnh SELECT

Ví dụ 09: Cho biết các nhân viên làm

việc ở phòng có mã phòng là ‘HCA

‘hoặc ‘KDA’?

Câu lệnh:

Select * From Nhanvien Where Maphong = ‘P1’ or Maphong = ‘P2’

Trang 6

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 21

Câu lệnh SELECT

Ví dụ 10: Cho biết danh sách các nhân viên

có tên bắt đầu bằng ‘N’?

Câu lệnh:

Select *

Where HoTen like ‘N%’

21

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 22

Câu lệnh SELECT Mệnh đề ORDER BY

=> Sắp thứ tự hàng tăng, giảm

 Ví dụ 11: Hãy đưa ra danh sách nhân viên theo theo chiều tăng dần của lương?

Câu lệnh Select Manv, Hoten, Ngaysinh, Luong From NHANVIEN

Order By Luong Asc

22

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 23

Câu lệnh SELECT

Ví dụ 12: Hãy đưa ra danh sách nhân viên

theo theo chiều tăng dần của lương, nếu 2

nhân viên có cùng lương thì sắp xếp theo

ngày sinh giảm dần?

Select Manv, Hoten, Ngaysinh, Luong

From NHANVIEN

Order By Luong Asc, Ngaysinh Desc

23

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 24

Câu lệnh SELECT

Ví dụ 13: Liệt kê họ, tên của khách hàng và sắp xếp thành 1 cột tăng dần

SELECT LastName + ‘-’ + FirstName as FullName FROM Customer

ORDER BY FullName ASC

Trang 7

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 25

Bài tập

Hiển thị số hóa đơn (order number), cách gửi quà

(shipping mode), các phí gói quà (gift-wrap

charges) và tổng số tiền (total cost ) của tất cả hóa

đơn đã được bán

Hiển thị tên, họ của tất cả người mua hàng

(shopper) sống ở tiểu bang California

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 26

MỘT SỐ HÀM THÔNG DỤNG

Hàm toán học

 AVG(), – MIN(), – MAX(), – SUM()

 COUNT()

 SQUARE()

 SQRT()

 ROUND()

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 27

MỘT SỐ HÀM THÔNG DỤNG

Các hàm xử lý xâu kí tự

 ASCII(s): trả về giá trị mã ASCII của kí

tự bên nhất trái của xâu

 Char(n): trả ra kí tự thứ n trong bảng

mã ASCII

 Upper(s): chuyển đổi xâu sang chữ hoa

 Lower(s): chuyển đổi xâu sang chữ

thường

27

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 28

MỘT SỐ HÀM THÔNG DỤNG

Các hàm xử lý xâu kí tự (tiếp)

 +: phép toán ghép các xâu

 Len(s): trả về độ dài của xâu

 LTRIM(s): loại bỏ các kí tự trắng bên trái xâu

 RTRIM(s): loại bỏ các kí tự trắng bên phải xâu

 Left(s, n): trả về n kí tự (xâu con) phía bên trái nhất xâu s

 Right(s, n): trả về n kí tự (xâu con) phía bên phải nhất xâu s

28

Trang 8

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 29

MỘT SỐ HÀM THÔNG DỤNG

 SubString(s, m ,n): trả về xâu con dài n kí

tự của xâu s bắt đầu từ ví trí thứ m

 Replace(s, s1, s2): thay thế các xâu con s1

xuất hiện trong xâu s bằng xâu s2

 Stuff (s, m, n, s1): xóa xâu con n kí tự bắt

đầu từ vị trí thứ m trong xâu s và thay thế

vào đó xâu s1

 Reverse(s): trả về xâu đảo ngược của xâu

s

29

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 30

MỘT SỐ HÀM THÔNG DỤNG

Hàm thời gian:

 Getdate(): trả về ngày tháng năm của hệ thống

 DatePart(tham số datepart,date): trả về giá trị nguyên là thành phần của giá trị date

 Các tham số của datepart:

 qq,q :Quarter

 yy, yyyy: Year

 mm, m:Month

 dy,y :Dayofyear

 dd,d :Day

30

 wk, ww :Week

 mi,n :Minute

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 31

MỘT SỐ HÀM THÔNG DỤNG

Hàm thời gian (TT):

 DateDiff(datepart, date1,date2): trả về khoảng

ngày, tháng, năm, giữa 2 ngày date1 và

date2

 Dateadd(datepart,n,date): thêm một số n

datepart vào date

 Datename()

 DAY(D); MONTH(D); YEAR(D)

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 32

MỘT SỐ HÀM THÔNG DỤNG

 Hàm chuyển đổi kiểu dữ liệu – Convert(datatype[(size) ], exp [,style]) – Hàm CAST()

32

Trang 9

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 33

MỘT SỐ HÀM THÔNG DỤNG

Các hàm nhóm dữ liệu:

•Count ([All | Distinct] Biểu thức):

Hàm đếm số lượng các bộ thỏa mãn

điều kiện

•Max (Biểu thức), Min (Biểu thức ):

Hàm tính giá trị lớn nhất, nhỏ nhất của

tập giá trị được tính theo biểu thức

33

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 34

MỘT SỐ HÀM THÔNG DỤNG

Sum ([All | Distinct] Biểu thức kiểu số):

Hàm tính tổng của tập giá trị được tính theo biểu thức

Avg ([All | Distinct] Biểu thức kiểu số): Hàm tính giá trị trung bình của tập giá trị thuộc tính kiểu số:

34

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 35

MỘT SỐ HÀM THÔNG DỤNG

Ví dụ 13: Cho biết lương trung bình của

phòng có mã KDA?

Select Avg(Luong) as TBluong

From NHANVIEN

Where Maphong= ’KDA’

35

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 36

MỘT SỐ HÀM THÔNG DỤNG

Ví dụ 14: Cho biết tổng số nhân viên và trung bình lương của cơ quan?

Select count(*) as TongNv, Avg(Luong) as

TBluong

From NHANVIEN

Trang 10

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 37

Mệnh đề Compute

Dùng để tính thống kê (trung bình, tổng, ) theo cột

Ví dụ: Liệt kê thông tin Productname, CategoryName,

Unitprice các product Dùng mệnh đề COMPUTE để

thống kê đơn giá trung bình của sản phẩm

Thực hiện

SelectProductName,CategoryName,UnitPrice

FromCategories c,Products p

wherec.CategoryID= p.CategoryID

order by CategoryName

Computeavg(UnitPrice)

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 38

Mệnh đề Compute by

Dùng để tính thống kê (trung bình, tổng, ) theo từng nhóm (kết hợp thêm mệnh đề order by)

Ví dụ: Liệt kê thông tin Productname, CategoryName, Unitprice các product Dùng mệnh đề COMPUTE để liệt kê đơn giá trung bình theo từng CategoryName

Thực hiện

SelectProductName,CategoryName,UnitPrice

FromCategories c,Products p

wherec.CategoryID= p.CategoryID

order by CategoryName

Computeavg(UnitPrice) by CategoryName

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 39

Câu lệnh UPDATE SET

Cú pháp

UPDATE <table_name>

SET <col_name1>=<exp1>

[, <col_name2> = <exp2>, ]

[WHERE <codition>(s)]

 Ý nghĩa:

Cập nhật thông tin trên các cột col_name1,

col_name2, cho các bản ghi thỏa mãn điều

kiện sau Where

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 40

Câu lệnh UPDATE SET

Ví dụ:

update SinhVien set MaLop=‘DHTH5TLT' where MaSV=‘A012'

Ví dụ 2: Tăng giá sản phẩm có tên Heneiken lên 1%

Trang 11

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 41

Câu lệnh DELETE

Cú pháp:

DELETE FROM table name

[WHERE condition]

Ý nghĩa:

Xóa các bản ghi thỏa mãn điều kiện WHERE

Xóa toàn bộ dữ liệu trong bảng

TRUNCATE TABLE <tên bảng>

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 42

Câu lệnh DELETE

Ví dụ:

 Delete from Sinhvien Where Malop=‘CDTH14A’

Bài tập:

Xóa những thông tin của những hóa đơn được lập bởi nhân viên có mã ‘NV01’

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 43

CSDL - Northwind

Customers (CustomerID, CompanyName, Address, City,

) - thông tin khách hàng

Categories (CategoryID, CategoryName, )- Thông tin

DM sản phẩm

Products (ProductID, ProductName, UnitPrice,

)-Thông tin sản phẩm

Employees (EmployeeID, LastName, FirstName, City, )

- Thông tin nhân viên

Orders (OrderID, Orderdate, CustID, EmpID) - Thông

tin hóa đơn được lập

Order Details (OrderID, ProID, Price, Quanlity)- Thông

tin chi tiết của hóa đơn

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 44

Bài tập

1/ Lọc các hóa đơn (Orders) được lập cho khách hàng (Customers) có mã 'ALFKI'

2/ Lấy thông tin của các sản phẩm (Products) của loại mặt hàng 'Seafood' (Category)

3/ Viết câu lệnh để xem thông tin khách hàng tại thành phố 'London'

4/ Viết câu lệnh để hiển thị giá (UnitPrice) của mặt hàng 'Chai' khi tăng thêm 10%

Trang 12

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 45

Bài tập

5/ Lọc thông tin của các sản phẩm có đơn giá lớn

hơn 15 và bắt đầu bởi ký tự 'C'

6/ Lọc thông tin của các sản phẩm có đơn giá từ 15

-20 và có chứa ký tự 'C'

7/ Hiển thị tên của các nhân viên có năm sinh

>=1960

8/ Tính tuổi trung bình, nhỏ nhất, lớn nhất của các

nhân viên

9/ Tăng đơn giá của sản phẩm có tên 'Konbu' lên 3%

10/ Giảm giá tất cả sản phẩm của loại 'Seafood'

xuống 5%

SQL NGÔN NGỮ THAO TÁC

DỮ LIỆU (tiếp)

Lecturer: Nguyễn Đức Cương - FIT Email: cuongnguyenduc@gmail.com Website: http://www.nguyenduccuong.com

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 47

Nội dung

Kết nối các bảng

Truy vấn con

Sử dụng lượng từ trong truy vấn

Truy vấn hợp (UNION)

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 48

Kết nối giữa các bảng

Chỉ tồn tại trong thời gian truy vấn

Không thay đổi dữ liệu

Sử dụng bí danh để dễ đọc

Các loại liên kết:

 INNER JOIN

 OUTERJOIN

 CROSSJOIN

Trang 13

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 49

Kết nối giữa các bảng - INNER

INNER JOIN: Trả về những dòng mà giá trị

trong cột liên kết giữa hai bảng là bằng nhau

Cú pháp:

SELECT col_name(s)

FROM table1

INNER JOIN table2

ON table1.col_name=table2.col_name

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 50

Kết nối giữa các bảng - INNER

Ví dụ: Lọc ra thông tin Tên khách hàng, Mã hóa đơn và ngày lập hóa đơn của các khách hàng

Câu lệnh SELECT KhachHang.MaKH, TenKH, MaHD, NgayHD FROM KhachHang INNER JOIN HoaDon

ON Khachhang.MaKH = HoaDon.MaHD

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 51

Kết nối giữa các bảng - INNER

Ví dụ 1: Đưa ra danh sách họ tên các nhân viên

làm việc ở phòng kinh doanh hoặc phòng kỹ thuật?

Selecthoten

FromNHANVIEN NV

Inner join PHONG P

On NV.MAPHONG = P.MAPHONG

WhereTenphong in ( “Kinh doanh”, “Kỹ thuật”)

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 52

Kết nối giữa các bảng - OUTTER

OUTER JOIN:

 LEFT OUTER JOIN: trả về kết quả là những dòng trong bảng bên trái (Bảng cha), ngay cả những dòng không so trùng với bảng bên phải (Bảng con)

 RIGHT OUTER JOIN: trả về tất cả những dòng của bảng bên phải (bảng con), ngay

cả những dòng không so trùng với bảng bên trái (bảng cha)

Trang 14

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 53

Kết nối giữa các bảng - OUTTER

Cú pháp:

SELECT colname(s)

FROM table1 {LEFT OUTER JOIN |

RIGHT OUTER JOIN} table2

ON table1.colname=table2.colname

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 54

Kết nối giữa các bảng - OUTER

Ví dụ: Hiển thị các tác giả không xét đến nơi tác giả sống có tồn tại nhà xuất bản nào không

Câu lệnh Select a.au_fname, a.au_lname, p.pub_name FROM authors a LEFT OUTER JOIN publishers p ON a.city = p.city

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 55

Kết nối giữa các bảng - OUTER

Ví dụ: Hiển thị tất cả các nhà xuất bản bất kể thành

phố nhà xuất bản có cùng thành phố với tác giả

không?

Câu lệnh

Select a.au_fname, a.au_lname, p.pub_name

FROM authors a RIGHT OUTER JOIN publishers p ON

a.city = p.city

Nguyễn Đức Cương – cuongnguyenduc@gmail.com Slide 56

Kết nối giữa các bảng - CROSS JOIN

CROSS JOIN: trả về tất cả các record mà mỗi dòng trong bảng thứ nhất kết hợp với tất cả các dòng trong bảng thứ hai, CROSS JOIN tương đương với tích descartes của các record trong hai bảng tham gia

Cú pháp:

SELECT column_list FROM table1 CROSS JOIN table2

Ngày đăng: 16/05/2022, 01:38

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w