Câu truy vấn đơn giản Câu lệnh Select… From… Vd: Hiển thị Họ, tên , phái của các nhân viên Select Honv, Tennv, Phai From Nhanvien Tương đương với phép chiếu trong ĐSQH Honv, Tennv, Ph
Trang 1Chương 3
SQL
Structured Query Language
Phần 1
Trang 2Giới thiệu
SQL là ngôn ngữ CSDL Quan hệ chuẩn
Được sử dụng trong các DBMS thương mại
Được phát triển từ IBM (vào đầu 70s, Sequel)
Phiên bản chuẩn được ANSI công bố đầu tiên vào 1986
SQL là ngôn ngữ khai báo cấp cao
Người dùng chỉ ra kết quả cần đạt là gì
Tối ưu hóa và quyết định thi hành ntn là do DBMS
Trang 3 Các thao tác thêm, xóa , sửa dữ liệu
Kiểm soát các transaction
DCL ( D ata C ontrol L anguage)
Phân quyền người dùng
Trang 4Giới thiệu
tăng khả năng lập trình thủ tục
T-SQL trong MS SQL Server cho phép
dùng cấu trúc điều khiển, biến cục bộ, cursor
Tạo các procedure, trigger
Trang 5Ngôn ngữ thao tác dữ liệu - DML
UPDATE, DELETE
Dùng để truy vấn dữ liệu (query data)
Lấy và hiển thị dữ liệu từ một hay nhiều bảng
Trang 7Câu truy vấn đơn giản
Câu lệnh Select… From…
Vd: Hiển thị Họ, tên , phái của các nhân viên
Select Honv, Tennv, Phai
From Nhanvien
Tương đương với phép chiếu trong ĐSQH
Honv, Tennv, Phai (NHANVIEN)
Hiển thị tất cả các cột , bằng sử dụng *
Vd: Hiển thị danh sách các nhân viên
Select *
From Nhanvien
Trang 8Câu truy vấn đơn giản
Vd: Danh sách nơi sinh của các nhân viên
Select DISTINCT noisinh
From Nhanvien
Trang 9Câu truy vấn đơn giản
Hiển thị các cột tính toán (Calculated fields)
Sử dụng hàm trong cột tính toán
Các cột có thể đặt tên mới – alias
Vd1: hiển thị chi tiết hóa đơn gồm mahd, masp, soluong, dongia và thành tiền
Select mahd, masp, soluong,dongia, soluong*dongia AS thanhtien From chitiethoadon
Vd2: hiển thị họ tên, và năm sinh của nhân viên
Select Honv+Tennv as HT , year(ngaysinh) as NS
From Nhanvien
Trang 10Lệnh Select - Mệnh đề Where
được chọn :
Các cột nằm trong bảng có trong mệnh đề From
Các toán tử so sánh, toán tử logic And, Or, Not, tóan
tử Between
Các toán tử khác : Like, in, …
Trang 11Lệnh Select - Mệnh đề Where
Vd1: Hiển thị các mặt hàng có đơn giá >100
Select Tensp , dongia
From Sanpham
Where dongia > 100
Vd2: Hiển thị các mặt hàng có đơn giá >100 hoặc đơn giá <50
Select Tensp , dongia
From Sanpham
Where dongia > 100 or dongia < 50
Vd3: Hiển thị các mặt hàng có đơn giá trong khoảng từ 50 đến 100
Select Tensp , dongia
From Sanpham
Where dongia <= 100 and dongia >= 50
Where dongia between 50 and 100
Trang 12Where Honv like “Nguyễn%”
Vd5: hiển thị danh sách các nhân viên có địa chỉ ở đường Nguyễn Trãi
Trang 13Lệnh Select - Mệnh đề Where
Sử dụng IS NULL / IS NOT NULL để so sánh với giá trị NULL
Vd: Hiển thị danh sách các Nhân viên chưa biết số điện thoại
Select * From Nhanvien
Where dienthoai IS NULL
Vd: mệnh đề Where có thể chứa biểu thức cột
select Honv, Tennv
From Nhanvien
where left(Honv,1) like ‘N'
Trang 15Lệnh Select – sử dụng các hàm
thống kê
Còn gọi là Aggregate Functions
Hàm Count, Sum, Avg, Min, Max
Vd: hiển thị tổng trị giá tất cả các hóa đơn
Trang 16Lệnh Select – sử dụng các hàm
thống kê
Hàm count(tencot), count(*) và count(distinct)
Vd1: cho biết số lượng nhân viên
Select Count(Noisinh) From Nhanvien
Select Count(Distinct Noisinh) From Nhanvien Select Count(*) From Nhanvien
Vd2: Hiển thị tổng số hóa đơn , tổng trị giá các hóa đơn ?
Trang 17Vd2: Hiển thị tổng trị giá của từng hóa đơn
Select Mahd, maSp, sum(soluong*dongia) As TongTg
From Chitiethoadon
Group By Mahd
Trang 19Lệnh Select – mệnh đề Group by
Chú ý : các cột xuất hiện trong mệnh đề Select phải
có trong mệnh đề Group By, ngoại trừ các cột được tạo từ hàm thống kê
Trang 21Truy vấn lồng - Subqueries
trong một câu lệnh select khác (outer)
Kết quả của lệnh inner select, hay subselect được
sử dụng trong lệnh outer select để xác định tập kết quả
Thường đặt trong mệnh đề Where, Having của lệnh outer select
lệnh khác như INSERT, DELETE, UPDATE
Trang 24Truy vấn lồng - Subqueries
Vd2: hiển thị những nhân viên có lương lớn hơn lương của ít nhất một nhân viên có chức vụ là ‘trưởng phòng’
Select T.Manv, T.Chucvu
From Nhanvien As T, Nhanvien As S
Where T.Luong > S.Luong
And S.Chucvu like ‘trưởng phòng’
Trang 25Where Luong >All (Select Luong From Nhanvien
Where Chucvu like ‘trưởng phòng’ )
Vd4: hiển thị những nhân viên có bán hàng trong tháng 5
Select Manv, Honv, Tennv
From Nhanvien
Where Manv IN (Select Manv From Hoadon
Where Month(NgaylapHD) = 5 )
Trang 26Truy vấn lồng - Subqueries
Kiểm tra kết quả của câu truy vấn con có rỗng
Where Exists (Select * From Hoadon
Where Manv = t.Manv)
Trang 27Lệnh Select – truy vấn từ nhiều bảng
gõ tên dài và làm truy vấn dễ đọc hơn
bảng trước, sau đó kết nối nhóm này với
bảng thứ ba…
Trang 28Lệnh Select – truy vấn từ nhiều bảng
Vd1: Hiển thị Mahd, TenKH, NgaylapHD của hóa đơn 10148
Select Mahd, Tenkh, NgaylapHD
From Hoadon As H INNER JOIN Khachhang As K
ON H.Makh = K.MakhWhere Mahd = ‘10148’
Hoặc :
Select Mahd, Tenkh, NgaylapHD
From Hoadon As H , Khachhang As K
Where H.Makh = K.Makh and Mahd = ‘10148’
Trang 29Lệnh Select – truy vấn từ nhiều bảng
Vd2: Hiển thị tên khách hàng mua hàng trong tháng 2
Select K.Makh, Tenkh
From Khachhang As K INNER JOIN Hoadon As H
ON K.Makh = H.Makh Where Month(ngaylapHD) =2
Vd3: Hiển thị tên khách hàng chưa từng mua hàng
Select K.Makh, Tenkh
From Khachhang As K LEFT JOIN Hoadon As H
ON K.Makh = H.Makh Where Mahd IS NULL
Trang 30Lệnh Select – truy vấn từ nhiều bảng
hóa đơn do nhân viên đã lập
Select Tennv, Mahd, Masp, Soluong, Dongia
From (Nhanvien As N INNER JOIN Hoadon As H ON N.Manv= H.Manv ) INNER JOIN Chitiethoadon As C
ON H.Mahd=C.Mahd
Trang 31Lệnh Select – toán tử Union
Sử dụng toán tử Union để hợp tập dữ liệu của các câu lệnh Select vào quan hệ kết quả
Vd: hiển thị các thành phố có trong cả hai bảng
Khachhang và Nhanvien
Select Thanhpho From Khachhang
UNION
Select Noisinh From Nhanvien
Sử dụng toán tử Except (phép hiệu), Intersect (phép giao) : trong SQLServer2005
Trang 32Lệnh Insert
INSERT INTO tênbảng [dscột]
VALUES (danhsách giá trị)
thứ tự các thuộc tính được nêu trong lệnh
CREATE TABLE
Trang 33Lệnh Insert
Insert into Sanpham
Values(12, ‘Sữa bột’, ‘Kg’, 200, NULL)
Insert into
Sanpham(Tensp, Donvitinh, Dongia) Values(‘Mì ăn liền’, ‘Thùng’, 100)
Trang 34Lệnh Insert
Insert Into tênbảng [dscột]
Select … From …Where…
Vd: giả sử có bảng HOADONLUU( MAHD,LOAIHD,
MAKH, MANV, NGAYLAPHD, NGAYGNHANG, DIENGIAI )
Insert Into HoadonLuu
Select * From Hoadon
Where Year(Ngaylaphd) <2009
Trang 36Lệnh Update
Vd1: tăng giá của tất cả cácmặt hàng lên 10%
Update Sanpham
Set Dongia = Dongia*1.1
Vd2: nhân viên có mã 101 được bổ nhiệm làm ‘quản lý’
và lương mới là 310
Update Nhanvien
Set Chucvu = ‘quảnlý’ , Luong = 310
Where Manv = 101
Trang 37Delete From Nhanvien
Where Manv = ‘101’
Trang 38Lệnh Delete
Vd2:
Delete From Nhanvien
Vd3:
Delete From Nhanvien
Where Manv NOT IN
(Select Manv From Hoadon
Where Year(Ngaylaphd)=2009 )
Trang 39Cascade Update & Cascade
Delete
vi phạm các Ràng buộc toàn vẹn đã cài đặt
Bị từ chối thực hiện
những bộ tham chiếu đến (cascade update, cascade delete)
Khi thực hiện thao tác trên bảng cha
Trang 40DB quản lý bán hàng