Lưu hành nội b Trang 65
Bài 9:
CÁC CÂU LNH TRUY VN
* Xét CSDL banhang gm các table:
NHANVIEN, DONVI, MATHANG, NHATKYBANHANG
- Cu trúc:
- D liu: Bng NHANVIEN
Bng DONVI
Lưu hành nội b Trang 66
IV. Các câu lnh truy vn
1. Câu lnh SELECT
Công dng:
- Chn các field t bng.
Cú pháp:
SELECT [ALL | DISTINCT][TOP n] danh_sách_chn
[INTO tên_bng_mi]
FROM danh_sách_bng [ | khung_nhìn]
[WHERE điều_kin]
[GROUP BY danh_sách_ct]
[HAVING điều_kin]
[ORDER BY ct_sp_xếp]
[COMPUTE danh_sách_hàm_gp [BY danh_sách_ct]]
Chú ý: Các thành phn trong câu lnh SELECT phải được s dụng theo đúng thứ t trên.
c. Danh sách chn trong câu lnh SELECT
- Chn tt c các field
Ví d 9.1a:
Câu lệnh sau đây cho biết thông tin ca các nhân viên trong bng NHANVIEN.
SELECT * FROM nhanvien n1
- Đổi tên các ct trong kết qu
Ví d 9.1b:
Câu lệnh sau đây cho biết HOTEN (h tên) được đổi thành H và Tên, DIACHI (địa ch)
được đổi thành Địa Ch ca các nhân viên trong bng NHANVIEN.
SELECT 'H và Tên' = hoten, 'Địa Ch' = diachi
FROM nhanvien
Hoc:
SELECT hoten 'H và Tên', diachi 'Địa Ch'
FROM nhanvien
- S dng cấu trúc CASE để đổi tên các ct trong kết qu
Ví d 9.1c:
Câu lệnh sau đây cho biết HOTEN (h tên), HSLUONG (h s lương) và (xếp loại lương)
ca các nhân viên trong bng NHANVIEN theo HSLUONG (h s lương).
SELECT 'H và Tên'= hoten, 'H s lương' = hsluong, 'H s lương' =
CASE
WHEN hsluong = NULL THEN 'Không xác định'
WHEN hsluong <= 1.92 THEN 'Lương thấp'
WHEN hsluong <= 3.11 THEN 'Lương trung bình'
WHEN hsluong <= 5.2 THEN 'Lương cao'
ELSE 'Lương rt cao'
END
FROM nhanvien
- Thêm chui ký t trong kết qu
Ví d 9.1d:
Câu lệnh sau đây sẽ cho thêm chui 'H s lương là:' trước ct HSLUONG (h s
lương) trong từng dòng kết qu.
SELECT 'H và Tên' = hoten, 'H s lương là:', 'H s lương' = hsluong
FROM nhanvien
- Tính toán các giá tr trong câu lnh SELECT
Lưu hành nội b Trang 67
Ví d 9.1e:
Câu lệnh sau đây sẽ cho HOTEN (h tên) LUONG (lương) của nhân viên theo công
thc LUONG = HSLUONG * 730000.
SELECT 'H và Tên' = hoten, 'Lương' = hsluong * 730000
FROM nhanvien
- T khóa DISTINCT: dùng để loi b nhng dòng d liu có kết qu ging nhau
Ví d 9.1f:
Câu lnh sau s cho các giá tr hsluong khác nhau trong bng NHANVIEN
SELECT hsluong
FROM nhanvien
- To bng mi bng câu lnh SELECT … INTO
Ví d 9.1g:
Câu lnh sau s to bng tên NHANVIEN_LUU gm các field HOTEN (h tên),
DIACHI (địa ch) ca các nhân viên có HSLUONG > 1.92 t bng NHANVIEN.
SELECT hoten, diachi
INTO nhanvien_luu
FROM nhanvien
WHERE hsluong > 1.92
- Sp xếp kết qu (ASC: tăng, DESC: giảm) bng ORDER BY
Ví d 9.1h:
Câu lệnh sau đây sẽ sp xếp các nhân viên theo th t gim dn ca HSLUONG (h s
lương), nếu HSLUONG bng nhau tsp xếp kết qu theo th t tăng dần ca NGAYSINH
(ngày sinh)
SELECT hoten, ngaysinh, hsluong
FROM nhanvien
ORDER BY hsluong DESC, ngaysinh ASC
d. Xác định bng bng mệnh đề FROM
FROM danh_sách_bng [ | khung_nhìn]
Ví d 9.1i:
Câu lệnh sau đây cho biết HOTEN (h tên), DIACHI (địa ch) ca các nhân viên bng
cách gán bí danh (alias) cho bng NHANVIEN.
SELECT hoten, diachi
FROM nhanvien n1
e. Đặt điều kin truy xut d liu bng mệnh đề WHERE
WHERE điều_kin
điều_kin: s dng các phép toán sau
+ So sánh: = , > , < , >= , <= , <> , !> , !<
+ Gii hn: BETWEEN … AND … , NOT BETWEEN … AND …
+ Danh sách: IN , NOT IN
+ Khuôn dng: LIKE , NOT LIKE
Vi các ký t đại din: % , _ , [] , [^]
+ Các giá tr chưa biết: IS NULL , IS NOT NULL
+ Kết hợp các điều kin: AND , OR
Ví d 9.1j:
Câu lệnh sau đây cho biết HOTEN (h tên), DIACHI (địa chỉ) DIENTHOAI (điện
thoi) ca các nhân viên có HSLUONG (h s lương) lớn hơn 1.92
SELECT hoten, diachi
FROM nhanvien
WHERE hsluong > 1.92
Lưu hành nội b Trang 68
Ví d 9.1k:
Câu lệnh sau đây cho biết HOTEN (h tên), DIACHI (địa chỉ) DIENTHOAI (điện
thoi) ca các nhân viên có HSLUONG (h s lương) trong khoảng 1.92 đến 3.11
SELECT hoten, diachi
FROM nhanvien
WHERE hsluong BETWEEN 1.92 AND 3.11
Ví d 9.1l:
Câu lệnh sau đây cho biết HOTEN (h tên), DIACHI (địa chỉ) DIENTHOAI (điện
thoi) ca các nhân viên có HSLUONG (h s lương) là 1.86, 1.92, 2.11
SELECT hoten, diachi
FROM nhanvien
WHERE hsluong IN (1.86, 1.92, 2.11)
* Hoc:
SELECT hoten, diachi
FROM nhanvien
WHERE hsluong = 1.86 OR hsluong = 1.92 OR hsluong = 2.11
Ví d 9.1m:
Câu lệnh sau đây cho biết thông tin ca nhân viên có tên là NAM.
SELECT *
FROM nhanvien
WHERE hoten LIKE '%NAM'
Ví d 9.1n:
Câu lệnh sau đây cho biết thông tin của nhân viên không có điện thoi.
SELECT *
FROM nhanvien
WHERE dienthoai IS NULL
2. Thêm d liu INSERT
Công dng:
- Thêm dòng d liu (mu tin/record) vào bng.
Cú pháp:
INSERT INTO tên_bng
[(danh_sách_ct)] VALUES(danh_sách_tr)
Ví d 9.2a:
Câu lệnh sau đây thêm một dòng d liu vào bng DONVI
INSERT INTO donvi
VALUES('06', 'Phòng CTCT-HSSV', '821460')
Ví d 9.2b:
Câu lệnh sau đây thêm một dòng d liu vào bng NHANVIEN
INSERT INTO nhanvien
VALUES('NV02003', 'Lê Th Mai', '23/05/1972', NULL, '523312', 1.92, '02')
Ví d 9.2c:
Câu lệnh sau đây thêm mt dòng d liu vào bng NHANVIEN nhưng chỉ điền d liu
vào mt s ct.
INSERT INTO nhanvien(manv, hoten, diachi, madonvi)
VALUES('NV05002', 'Nguyn Th Hnh Dung', '56 Trn Phú', '05')
Ví d 9.2d: Thêm d liu vào bng vi d liu ly t bng khác
Câu lệnh sau đây thêm d liu vào bng LUONG_NHANVIEN vi d liu ly t bng
NHANVIEN.
Lưu hành nội b Trang 69
INSERT INTO luong_nhanvien
SELECT manv, hoten, hsluong*730000 FROM nhanvien
3. Cp nht d liu UPDATE
Công dng:
- Cp nht d liu trong các bng.
Cú pháp:
UPDATE tên_bng
SET tên_ct = biu_thc
[ , ...
, tên_ct_k = biu_thc_k]
[FROM danh_sách_bng]
[WHERE điều_kin]
Ví d 9.3a:
Câu lệnh sau đây tăng HSLUONG (hệ s lương) thêm 0.2 cho các nhân viên
MADONVI là 04.
UPDATE nhanvien
SET hsluong = hsluong + 0.2
WHERE madonvi = '04'
Ví d 9.3b:
Câu lệnh sau đây s cp nht giá tr cho field THANHTIEN (thành tin) trong bng
NHATKYBANHANG theo công thc THANHTIEN = SOLUONG * DONGIA.
UPDATE nhatkybanhang
SET thanhtien = soluong * MATHANG.dongia
FROM MATHANG
WHERE nhatkybanhang.mahang = MATHANG.mahang
4. Xóa d liu DELETE
Công dng:
- Để xóa d liu trong bng.
Cú pháp:
DELETE FROM tên_bng
[FROM danh_sách_bng]
[WHERE điều_kin]
Ví d 9.4:
Câu lệnh sau đây xoá khi bng NHANVIEN nhng nhân viên làm tại đơn vị
SODIENTHOAI (s điện thoi) là '848484'
DELETE FROM nhanvien
FROM donvi
WHERE nhanvien.madonvi = donvi.madonvi AND donvi.dienthoai = '848484'
5. Xóa toàn b d liu TRUNCATE
Công dng:
- Để xóa toàn b d liu trong bng.
Cú pháp:
TRUNCATE TABLE tên_bng
Ví d 9.5:
Câu lnh sau xoá toàn b d liu trong bng LUONG_NHANVIEN
DELETE FROM luong_nhanvien