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