29/01/2016<br />
<br />
FAA<br />
<br />
MỤC TIÊU<br />
<br />
NGÔN NGỮ TRUY VẤN DỮ<br />
LIỆU<br />
<br />
Sau khi buổi học sinh viên biết được:<br />
Về kiến thức: Cấu trúc các câu lệnh truy<br />
vấn và xử lý dữ liệu trong SQL<br />
Về kỹ năng: xem và thay đổi được dữ liệu<br />
trên một database<br />
<br />
2<br />
<br />
1<br />
<br />
NỘI DUNG<br />
<br />
TOÁN TỬ VÀ ĐỘ ƯU TIÊN<br />
<br />
T- SQL chia làm 3 nhóm câu lệnh:<br />
Ngôn ngữ định nghĩa dữ liệu<br />
Ngôn ngữ thao tác dữ liệu<br />
Ngôn ngữ điều khiển dữ liệu<br />
<br />
Độ ưu tiên<br />
<br />
Toán tử<br />
<br />
1<br />
<br />
* (Multiply), / (Division), % (Modulo)<br />
<br />
2<br />
<br />
+ (Positive), - (Negative), + (Add), - (Subtract)<br />
<br />
3<br />
<br />
=, >, =, , !< (Comparison operators)<br />
<br />
4<br />
<br />
NOT<br />
<br />
5<br />
<br />
AND<br />
<br />
6<br />
<br />
ALL, ANY, BETWEEN, IN, LIKE, OR, SOME<br />
<br />
7<br />
<br />
= (Assignment)<br />
<br />
3<br />
<br />
Ngôn ngữ định nghĩa dữ liệu<br />
<br />
Lệnh CREATE<br />
Create Database TenCSDL<br />
Create Table TenBang (<br />
<br />
1. Create: Tạo đối tượng<br />
2. Alter: Thay đổi cấu trúc bảng<br />
3. Drop: Xóa đối tượng<br />
<br />
Tên Cột<br />
<br />
Kiểu DL Null | Not Null,<br />
<br />
CONSTRAINT [Tên ràng buộc] CHECK (điều kiện),<br />
CONSTRAINT [Tên khóa chính] PRIMARY KEY<br />
CLUSTERED (DS CỘT),<br />
CONSTRAINT [Tên khóa ngoại] FOREIGN KEY (Cột<br />
khóa ngoại) REFERENCES Bảng LK đến (Cột LK)<br />
ON UPDATE CASCADE<br />
ON DELETE CASCADE<br />
)<br />
5<br />
<br />
6<br />
<br />
1<br />
<br />
29/01/2016<br />
<br />
Lệnh ALTER<br />
<br />
Lệnh ALTER<br />
<br />
ALTER TABLE<br />
VD: Thêm thông tin vào bảng<br />
ALTER TABLE …<br />
ADD TênĐốiTượng Thông tin đối tượng<br />
VD: Chỉnh sửa thông tin bảng<br />
ALTER TABLE …<br />
ADD TênĐốiTượng Thông tin đối tượng<br />
<br />
VD: Xóa đối tượng trong bảng<br />
ALTER TABLE …<br />
DROP TênĐốiTượng<br />
<br />
7<br />
<br />
Lệnh DROP<br />
<br />
8<br />
<br />
NGÔN NGỮ THAO TÁC DỮ LIỆU<br />
<br />
DROP TênĐốiTượng<br />
<br />
1. Câu lệnh Select – Hiển thị dữ liệu<br />
2. Câu lệnh Insert – Thêm dữ liệu<br />
3. Câu lệnh Update – Cập nhật dữ liệu<br />
4. Câu lệnh Delete – Xoá dữ liệu<br />
<br />
9<br />
<br />
1. CÂU LỆNH SELECT<br />
<br />
10<br />
<br />
Danh_Sách _Chọn<br />
Chọn tất cả các cột trong bảng<br />
<br />
Cú pháp:<br />
<br />
Cú pháp:<br />
SELECT * FROM Tên bảng<br />
VD: Hiển thị tất cả những dữ liệu của<br />
bảng DMHH<br />
<br />
SELECT [ALL | DISTINCT | TOP n] danh_sách_chọn<br />
[INTO tên_bảng_mới]<br />
FROM danh_sách_bảng/khung_nhìn<br />
[WHERE điều_kiện]<br />
[GROUP BY danh_sách_cột]<br />
[HAVING điều_kiện]<br />
[ORDER BY cột_sắp_xếp]<br />
[COMPUTE danh_sách_hàm_gộp [BY danh_sách_cột]<br />
<br />
Select *<br />
From T01_DMHH<br />
11<br />
<br />
12<br />
<br />
2<br />
<br />
29/01/2016<br />
<br />
Danh_Sách _Chọn<br />
<br />
Danh_Sách _Chọn<br />
<br />
Lưu ý:<br />
<br />
Chọn các cột được chỉ định<br />
Cú pháp:<br />
SELECT TenCot1, TenCot2,…<br />
FROM Tên bảng<br />
VD: Hiển thị Mã hàng và Tên hàng<br />
Select MaHang, TenHang<br />
<br />
Từ khóa DISTINCT<br />
TOP<br />
INTO<br />
<br />
From T01_DMHH<br />
13<br />
<br />
Danh_Sách _Chọn<br />
<br />
14<br />
<br />
Danh_Sách _Chọn<br />
<br />
Đổi tên các cột ở kết quả hiển thị<br />
<br />
Thêm một Field tính toán vào kết<br />
quả<br />
<br />
Cú pháp:<br />
SELECT ‘tiêu_đề_cột’ = TenCot<br />
hoặc TenCot ‘tiêu_đề_cột’<br />
hoặc TenCot as [tiêu_đề_cột]<br />
FROM Tên bảng<br />
<br />
VD:<br />
SELECT ThanhTien = SL*DonGia<br />
FROM Tên bảng<br />
<br />
15<br />
<br />
Mệnh đề FROM<br />
<br />
Mệnh đề WHERE<br />
<br />
Ý nghĩa: Xác định table, khung nhìn và<br />
sự liên kết giữa các table khi truy vấn dữ<br />
liệu<br />
DL truy vấn từ nhiều bảng nên dùng<br />
phép nối<br />
VD: Hiển thị toàn bộ thông tin hàng hóa từ<br />
bảng DanhMucHangHoa<br />
SELECT *<br />
FROM T01_DMHH<br />
<br />
16<br />
<br />
17<br />
<br />
Xác định điều kiện cho câu truy vấn<br />
Sau WHERE có thể là:<br />
Toán tử so sánh<br />
Giới hạn<br />
Danh sách<br />
Khuôn dạng<br />
Giá trị<br />
Kết hợp các điều kiện<br />
18<br />
<br />
3<br />
<br />
29/01/2016<br />
<br />
Mệnh đề WHERE<br />
<br />
Mệnh đề WHERE<br />
Giới hạn khoảng tìm kiếm<br />
(BETWEEN và NOT BETWEEN)<br />
VD: Hiển thị mặt hàng có số lượng nhập<br />
từ 10.000 đến 20.000<br />
SELECT *<br />
FROM ChiTietPhieuNX<br />
WHERE SoLuong between 10000 and<br />
20000 AND SoPhieu Like ‘PN%’<br />
<br />
Các toán tử so sánh (>,10000<br />
23<br />
<br />
Khi sử dụng ký tự đại diện ta dùng từ khoá LIKE,<br />
NOT LIKE<br />
Ký tự đại diện:<br />
<br />
% : chuỗi ký tự bất kỳ<br />
- : Ký tự đơn bất kỳ<br />
[] ký tự đơn bất kỳ trong giới hạn được chỉ<br />
định<br />
[^] ký tự đơn bất kỳ không trong giới hạn<br />
được chỉ định<br />
<br />
22<br />
<br />
Mệnh đề Group By<br />
GROUP BY để<br />
Phân nhóm dữ liệu<br />
Có thể áp dụng các hàm tổng hợp đối với<br />
những nhóm nhỏ hàng dữ liệu chọn ra.<br />
<br />
24<br />
<br />
4<br />
<br />
29/01/2016<br />
<br />
Mệnh đề Group By<br />
<br />
Mệnh đề Group By<br />
<br />
SQL cung cấp các hàm gộp<br />
<br />
Câu lệnh thống kê chia làm 2 loại:<br />
Thống kê trên toàn bộ dữ liệu<br />
Thống kê phân nhóm dữ liệu<br />
<br />
• SUM<br />
• AVG<br />
• COUNT<br />
• MAX<br />
• MIN<br />
<br />
25<br />
<br />
Mệnh đề Group By<br />
<br />
26<br />
<br />
Mệnh đề HAVING<br />
<br />
VD1: Nhập xuất kho bao nhiêu mặt hàng?<br />
SELECT count(distinct mahang)<br />
FROM ChiTietPhieuNhapXuat<br />
VD2: Đếm số lần nhập xuất của từng mặt<br />
hàng<br />
SELECT MaHang, COUNT(MaHang)<br />
FROM ChiTietPhieuNhapXuat<br />
GROUP BY MaHang<br />
<br />
Thiết lập điều kiện cho một nhóm hoặc<br />
hàm tổng hợp<br />
Phân biệt HAVING và WHERE?<br />
Lưu ý:<br />
Chỉ sau khi dữ liệu đã được nhóm và<br />
tổng hợp, điều kiện trong mệnh đề<br />
HAVING mới được áp dụng.<br />
<br />
27<br />
<br />
28<br />
<br />
Mệnh đề HAVING<br />
<br />
Mệnh đề ORDER BY<br />
<br />
VD: Hiển thị mặt hàng nhập kho nhiều<br />
lần trong kỳ<br />
SELECT MaHang, ‘Số lần nhập’=<br />
COUNT(MaHang)<br />
FROM ChiTietNhapXUAT<br />
WHERE SOPHIEU LIKE ‘PN%’<br />
GROUP BY MaHang<br />
HAVING count(MaHang)>=2<br />
29<br />
<br />
Sắp xếp theo thứ tự (tăng ASC, giảm<br />
DESC)<br />
VD: Sắp xếp theo chiều giảm dần về số<br />
lần nhập xuất kho của các mặt hàng<br />
SELECT MaHang,<br />
COUNT(*) as SoLanNhap<br />
FROM ChiTietPhieuNhapXuat<br />
GROUP BY MaHang<br />
ORDER BY COUNT(*) DESC<br />
30<br />
<br />
5<br />
<br />