Giáo trình Cơ sở dữ liệu - Phạm Thị Hoàng Nhung

Tóm tắt Giáo trình Cơ sở dữ liệu - Phạm Thị Hoàng Nhung: ...ioitinh char(3) DEFAULT ‘Nam’ ) 2.5 Sửa đổi cấu trúc Có thể sửa đổi cấu trúc của bảng hiện đang tồn tại bằng lệnh ALTER. Chúng ta có thể thêm một thuộc tính (cột) mới, thay đổi cấu trúc của một thuộc tính (cột ) đang có, bổ sung khoá, bổ sung ràng buộc. Cú pháp tổng quát: ALTER TABLE t...tự có chiều dài bằng n. Nếu chuỗi char1 ngắn hơn n thì thêm vào bên trái chuỗi char2 cho đủ n ký tự. Nếu chuỗi char1 dài hơn n thì giữ lại n ký từ tính từ trái sang - LTRIM(char1, n [,char2]): Bỏ các ký tự trống bên trái - NLS_INITCAP(char): Cho chuỗi với ký tự đầu các từ là chữ hoa, các chữ...ân viên phụ trách trực tiếp 1 nhân viên khác. Cụ thể như sau: SELECT NV.MaNV, NV.Hoten, PT.MaNV, PT.Hoten FROM NHANVIEN NV, NHANVIEN PT WHERE (NV.MaNV=PT.MaPT) AND (NV.Luong>PT.Luong) Kết quả: NV.MaNV NV.Hoten PT.MaNV PT.Hoten NV002 Hoàng Thanh Vân NV001 Phạm Thị Nhàn NV002 Hoàng ...

pdf64 trang | Chia sẻ: havih72 | Lượt xem: 346 | Lượt tải: 0download
Nội dung tài liệu Giáo trình Cơ sở dữ liệu - Phạm Thị Hoàng Nhung, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
cho kết quả là 1 hàng 
Xét bảng NHANVIEN trên. 
Ví dụ: Đưa ra Hoten, TenDV, Congviec, Luong của những người có lương 
lớn hơn lương trung bình của toàn bộ nhân viên. 
Đối với yêu cầu này ta cần làm những việc sau: 
- Đưa ra trung bình lương của tất cả các nhân viên. 
- Đưa ra những nhân viên thỏa mãn yêu cầu. 
Chương 5. TRUY VẤN DỮ LIỆU (SELECT) 
PHẦN II- NGÔN NGỮ SQL 45
SELECT Hoten, TenDV, Congviec, Luong 
FROM NHANVIEN AS NV, DONVI AS DV 
WHERE (NV.MaDV= DV.MaDV) 
 AND (Luong> ( SELECT AVG(Luong) 
 FROM NHANVIEN )) 
Kết quả: 
Hoten TenDV Congviec Luong 
Nguyễn Nam Hải KHTN Giám đốc 1000 
Hoàng Thanh Vân KHTN Giáo viên 600 
Đỗ Trung Dũng DHQG Thư ký 700 
Ví dụ 2: 
Đưa ra những nhân viên có lương lớn hơn người có lương lớn nhất trong 
đơn vị có tên là DHTL. 
Công việc: 
- Tìm MaDV có tên đơn vị là DHTL. 
- Tìm mức lương lớn nhất trong đơn vị này. 
- Tìm những nhân viên có lương thỏa mãn yêu cầu. 
SELECT Hoten, TenDV, Congviec, Luong 
FROM NHANVIEN AS NV, DONVI AS DV 
WHERE (NV.MaDV= DV.MaDV) 
 AND (Luong> ( SELECT MAX(Luong) 
 FROM NHANVIEN 
 WHERE MaDV = 
SELECT MaDV 
FROM DONVI 
WHERE TenDV='DHTL'))) 
Kết quả: 
Hoten TenDV Congviec Luong 
Nguyễn Nam Hải KHTN Giám đốc 1000 
Phạm Thị Nhàn KHTN Thư ký 500 
Hoàng Thanh Vân KHTN Giáo viên 600 
Đỗ Trung Dũng DHQG Thư ký 700 
5.8.2 Lệnh SELECT bên trong cho kết quả là nhiều hàng 
Giả sử lệnh SELECT bên trong có dạng: 
Chương 5. TRUY VẤN DỮ LIỆU (SELECT) 
PHẦN II- NGÔN NGỮ SQL 46
SELECT MaDV,MAX(Luong) AS LuongLN,MIN(Luong) AS LuongNN 
FROM NHANVIEN 
GROUP BY MaDV 
Kết quả: 
MaDV LuongLN LuongNN 
0001 1000 100 
0002 200 200 
0003 700 700 
 Như vậy, kết quả của câu lệnh SELECT bên trong cho kết quả là một tập 
giá trị, thì ta phải sử dụng các phép toán so sánh với tập hợp, không sử dụng được 
các phép toán so sánh như (>, <, =, . ). 
Toán tử SOME/ANY/ALL/NOT IN/EXITS 
[NOT] IN : Không thuộc 
ANY và SOME : So sánh một giá trị với mỗi giá trị trong một danh sách hay 
trong kết quả trả về của câu hỏi con, phải sau toán tử = 
ALL : So sánh một giá trị với mọi giá trị trong danh sách hay trong kết 
quả trả về của câu hỏi con. 
EXISTS : Trả về TRUE nếu có tồn tại. 
- Phép toán IN: 
Ta có biểu thức: IN {Tập hợp} trả lại kết quả = TRUE nếu tập 
hợp các giá trị nằm trong tập hợp đứng sau IN. 
Bảng NHANVIEN: 
NHANVIEN 
MaNV HoTen CongViec Luong MaDV MaPT 
NV001 Phạm Thị Nhàn Thư ký 500 0001 NV002 
NV002 Hoàng Thanh Vân Giáo viên 600 0001 NV003 
NV003 Hoàng Thị Lan Giáo viên 200 0002 NV002 
NV004 Đỗ Trung Dũng Thư ký 700 0003 NV002 
NV005 Đỗ Văn Hải Bảo vệ 100 0001 NV002 
NV006 Nguyễn Nam Hải Giám đốc 1000 0001 
NV007 Nguyễn Hoàng Lan Giáo viên 500 0001 NV006 
NV008 Nguyễn Thanh Ngọc Giáo viên 700 0002 
Ví dụ 1: Đưa ra Hoten, MaDV, Luong của các nhân viên có Luong=Luong 
thấp nhất trong đơn vị của họ. 
Công việc: 
- Tính lương thấp nhất cho từng đơn vị 
- So sánh (MaDV, Luong) của tất cả nhân viên với tập hợp đó. 
Chương 5. TRUY VẤN DỮ LIỆU (SELECT) 
PHẦN II- NGÔN NGỮ SQL 47
SELECT Hoten, MaDV, Luong 
FROM NHANVIEN 
WHERE (MaDV, Luong) IN (Select MaDV, Min(Luong) 
From NHANVIEN 
Group by MaDV) 
Đối với một vài HQTCSDL, tập hợp trong phép toán IN chỉ bao gồm 1 giá 
trị. Ví dụ không thể so sánh (MaDV, Luong), chỉ được phép so sánh MaDV hoặc 
Luong. 
 Ví dụ 2: Đưa ra Hoten, MaDV, Luong của các nhân viên có Luong=Luong 
thấp nhất trong một đơn vị nào đó. 
SELECT NHANVIEN.MaNV, NHANVIEN.Hoten, NHANVIEN.Luong 
FROM NHANVIEN 
WHERE NHANVIEN.Luong IN ( 
SELECT Min(NHANVIEN.Luong) AS MinOfLuong 
FROM NHANVIEN 
GROUP BY NHANVIEN.MaDV) 
Kết quả: 
MaNV Hoten Luong 
NV003 Hoàng Thị Lan 200 
NV004 Đỗ Trung Dũng 700 
NV005 Đỗ Văn Hải 100 
NV008 Nguyễn Thanh Ngọc 700 
Phép toán ALL 
Kết hợp với các phép so sánh thông thường để so sánh một giá trị với 1 tập 
hợp. 
Giá_trị > ALL{Tập hợp}: Biểu thức TRUE nếu giá trị so sánh > tất cả các 
giá trị trong tập hợp. 
Ví dụ: 
5> ALL(2,3,4): TRUE 
5> ALL(2,4,6): FALSE 
Phép toán ANY 
Giá_trị> ANY{Tập hợp}: Biểu thức TRUE nếu giá trị so sánh > một giá 
trị nào đó trong tập hợp. 
Chương 5. TRUY VẤN DỮ LIỆU (SELECT) 
PHẦN II- NGÔN NGỮ SQL 48
Ví dụ: 
 5> ANY(2,4,6): TRUE 
Ví dụ: Đưa ra Hoten, Luong của các nhân viên có Luong lớn nhất của đơn 
vị có mã đơn vị là 0002. 
SELECT Hoten, Luong 
FROM NHANVIEN 
WHERE Luong> ALL( 
 Select Luong 
 From NHANVIEN 
 Where MaDV ='0002') 
Kết quả select trong là: 
Luong 
200 
700 
Kết quả của cả câu lệnh: 
Hoten Luong 
Nguyễn Nam Hải 1000 
Nếu thay ALL = ANY thì kết quả: 
Hoten Luong 
Phạm Thị Nhàn 500 
Hoàng Thanh Vân 600 
Đỗ Trung Dũng 700 
Nguyễn Nam Hải 1000 
Nguyễn Hoàng Lan 500 
Nguyễn Thanh Ngọc 700 
5.8.3 Mệnh đề HAVING trong SELECT lồng nhau. 
Mệnh đề HAVING được sử dụng khi có điều kiện nhóm 
Ví dụ: Đưa ra MaDV, AVG(Luong) của đơn vị có trung bình lương lớn 
hơn lương nhỏ nhất của đơn vị có mã đơn vị là 0003. 
- Tính lương lớn nhất của đơn vị có mã đơn vị là 0003 
- Đưa ra những đơn vị có TBLương > Lương nhỏ nhất vừa tính được 
Chương 5. TRUY VẤN DỮ LIỆU (SELECT) 
PHẦN II- NGÔN NGỮ SQL 49
SELECT MaDV, Avg(Luong) AS AvgOfLuong 
FROM NHANVIEN 
GROUP BY NHANVIEN.MaDV 
HAVING AVG(Luong)> 
 Select Min(Luong) 
 From NHANVIEN 
 Where MaDV='0002') 
5.8.4 Mệnh đề ORDER BY trong SELECT lồng nhau 
Mỗi lệnh SELECT chỉ có 1 mệnh đề ORDER By duy nhất. 
Một lệnh SELECT lồng nhau được coi là một lệnh SELECT. Vì vậy, nếu 
muốn sắp xếp dữ liệu thì mệnh để ORDER BY phải là mệnh đề cuối cùng của lệnh 
SELECT ngoài cùng, các lệnh SELECT bên trong không có ORDER BY. 
5.9 Các lệnh lồng nhau liên kết 
Các lệnh liên kết cũng là các lệnh SELECT lồng nhau nhưng nó có cách 
thực hiện khác các lệnh lồng nhau thông thường. 
Các bước thực hiện: 
- Xét 1 hàng của bảng 
- Sử dụng dữ liệu của hàng đó để thực hiện lệnh SELECT bên trong. 
- Sử dụng kết quả của SELECT bên trong để thực hiện SELECT bên 
ngoài 
- Lặp lại các bước trên cho đến khi hết các hàng được xét. 
Ví dụ: Có bảng NHANVIEN 
NHANVIEN 
MaNV HoTen CongViec Luong MaDV MaPT 
NV001 Phạm Thị Nhàn Thư ký 500 0001 NV002 
NV002 Hoàng Thanh Vân Giáo viên 600 0001 NV003 
NV003 Hoàng Thị Lan Giáo viên 200 0002 NV002 
NV004 Đỗ Trung Dũng Thư ký 700 0003 NV002 
NV005 Đỗ Văn Hải Bảo vệ 100 0001 NV002 
NV006 Nguyễn Nam Hải Giám đốc 1000 0001 
NV007 Nguyễn Hoàng Lan Giáo viên 500 0001 NV006 
NV008 Nguyễn Thanh Ngọc Giáo viên 700 0002 
Đưa ra Hoten, MaDV, Luong của những nhân viên có Luong> LuongTB 
của đơn vị của họ. 
Chương 5. TRUY VẤN DỮ LIỆU (SELECT) 
PHẦN II- NGÔN NGỮ SQL 50
SELECT NHANVIEN.HoTen, NHANVIEN.MaDV, NHANVIEN.Luong 
FROM NHANVIEN 
WHERE ((NHANVIEN.Luong)> (Select AVG(Luong) 
From NHANVIEN NV1 
Where NV1.MaDV= NHANVIEN.MaDV)) 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 51
6 THỰC HÀNH TỔNG HỢP 
- Phần thực hành được thực hiện trên hệ quản trị cơ sở dữ liệu 
Microsoft Aaccess. 
- Tất cả các thao tác phải được thực hiện bằng ngôn ngữ SQL thông 
qua các Query. 
6.1 Hướng dẫn thực hành 
Mỗi yêu cầu được ghi vào 1 query. Các bước thao tác với Query như sau: 
Bước 1: Mở Microsoft Access. 
Bước 2: Tạo cơ sở dữ liệu (New/ Blank Database). 
 Nhập tên của cơ sở dữ liệu. 
Bước 3: Tạo 1 truy vấn (Query) mới. 
- Kích chuột vào Create query in Design view. 
- Chọn SQL. 
- Soạn thảo câu lệnh SQL. 
- Ghi và đặt tên cho mỗi Query. 
- Thực hiện câu lệnh bằng cách nhấn vào ! trên thanh công cụ. 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 52
- Chọn Save, nhập tên của Query. 
- Chú ý: 
o Tất cả các yêu cầu của bài thực hành đều được thực hiện bằng 
lệnh của SQL thông qua Query. 
o Mỗi một yêu cầu được ghi lại trong một Query. Đặt tên 
Query theo tên của câu hỏi. Ví dụ: Cau1, Cau2, 
6.2 Bài số 1 
1. Tạo một cơ sở dữ liệu có tên là Thuchanh. 
2. Tạo một bảng có tên là DOCGIA, có các thuộc tính như sau: 
CREATE TABLE DOCGIA( 
MaDG Text(10) NOT NULL PRIMARY KEY, 
TenDG Text(30) NOT NULL, 
DiaChi Text(50) NOT NULL, 
Tuoi NUMBER); 
3. Thêm một thuộc tính mới có tên là Ghichu cho bảng DOCGIA. 
ALTER TABLE DOCGIA 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 53
ADD COLUMN GhiChu Text(50)); 
4. Thay đổi kiểu dữ liệu của thuộc tính Ghichu thành kiểu dữ liệu Memo. 
ALTER TABLE DOCGIA 
ALTER COLUMN GhiChu Memo; 
5. Xóa thuộc tính Ghichu trong bảng DOCGIA. 
ALTER TABLE DOCGIA 
DROP COLUMN GhiChu; 
6. Thực hiện các lệnh sau đây, mỗi lệnh này sẽ cho kết quả như thế nào? 
Nêu sự khác nhau giữa chúng. 
Câu 1: 
INSERT INTO DOCGIA 
VALUES(‘DHTL05’,’Nguyễn Công Thành’,’Lớp 41NC’,22 ); 
Câu 2: 
INSERT INTO DOCGIA(MaDG, TenDG, DiaChi) 
VALUES(‘DHTL06’,’Nguyễn Phương Lan’,’Lớp 41NC’ ); 
7. Xóa một bản ghi có MaDG= ‘DHTL01’ trong bảng DOCGIA. 
DELETE FROM DOCGIA WHERE MaDG=’DHTL01’; 
8. Xóa những độc giả có địa chỉ là: 41NC trong bảng DOCGIA. 
DELETE FROM DOCGIA WHERE Diachi=’41NC’; 
9. Sửa địa chỉ của độc giả có MaDG là TD001 thành địa chỉ mới là CVK3I. 
UPDATE DOCGIA 
SET (Diachi=’CVK3I’) 
WHERE MaDG=’TD001’; 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 54
6.3 Bài số 2 
1. Tạo một cơ sở dữ liệu (CSDL) dùng để quản lý nhân viên, lấy tên CSDL 
là QLNhanVien. 
2. Cấu trúc của CSDL gồm các bảng với các quan hệ sau: 
a. NHANVIEN 
Tên thuộc tính Kiểu dữ liệu Kích cỡ Khuôn dạng 
MaNV Ký tự 8 Chữ hoa +số 
HoTen Ký tự 30 
Congviec Ký tự 50 
Luong Số 
MaDV Ký tự 4 
MaPT Ký tự 8 Chữ hoa + số 
(Mã người phụ trách) 
b. DONVI 
Tên thuộc tính Kiểu dữ liệu Kích cỡ Khuôn dạng 
MaDV Ký tự 4 Chữ hoa +số 
TenDV Ký tự 50 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 55
c. BACLUONG 
Tên thuộc tính Kiểu dữ liệu Kích cỡ Khuôn dạng 
MaBac Ký tự 50 Chữ hoa +số 
BacCao Số 
BacThap Số 
Chú ý: Mỗi câu lệnh tạo bảng được viết bằng 1 Query, đặt tên lần lượt là 
21, 2b, 2c. 
3. Thêm dữ liệu (bằng lệnh INERT) cho bảng NHANVIEN để có kết quả 
như sau: 
NHANVIEN 
MaNV HoTen CongViec Luong MaDV 
NV001 Phạm Thị Nhàn Thư ký 500 0001 
NV002 Hoàng Thanh Vân Giáo viên 600 0001 
NV003 Hoàng Thị Lan Giáo viên 200 0002 
NV004 Đỗ Trung Dũng Thư ký 700 0003 
4. Thêm dữ liệu (bằng lệnh INERT) cho bảng DONVI để có kết quả như 
sau: 
DONVI 
MaDV TenDV 
0001 KHTN 
0002 DHTL 
0003 DHQG 
5. Thêm dữ liệu (bằng lệnh INERT) cho bảng BACLUONG để có kết quả 
như sau: 
BACLUONG 
MaBac BacThap BacCao 
1 400 500 
2 501 600 
3 601 800 
6. Dùng câu lệnh truy vấn dữ liệu, đưa ra tất cả thông tin về nhân viên. 
7. Đưa ra Hoten, Congviec, Luong của tất cả các nhân viên. 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 56
8. Đưa ra toàn bộ công việc của các nhân viên, các giá trị không trùng nhau. 
9. Đưa ra Hoten, LuongQuy của tất cả các nhân viên, với LuongQuy= Luong*3. 
10. Đưa ra Hoten, Luong sắp xếp theo thứ tự tăng dần/ giảm dần của Luong. 
11. Đưa ra Hoten, Luong của các nhân viên có Luong>300. 
12. Đưa ra Hoten, Luong của các nhân viên có Luong>300 và làm công việc là 
Giáo viên. 
13. Đưa ra những nhân viên có lương hoặc 200, 300, 600. 
14. Đưa ra những nhân viên có Lương trong khoảng 300 đến 600. 
15. Đưa ra Hoten, Congviec của các nhân viên có Họ tên bắt đầu bằng chữ 
‘Hoàng’. 
16. Đưa ra lương trung bình, lương lớn nhất, nhỏ nhất của tất cả các nhân viên 
trong bảng NHANVIEN. 
17. Đưa ra Côngviệc, Lương trung bình của từng loại công việc. 
18. Đưa ra Côngviệc, Lương trung bình của tất cả các nhân viên có Luong>200 
theo từng loại công việc. 
19. Đưa ra tổng lương của từng nhóm công việc trong từng đơn vị. 
20. Đưa ra những Congviec và trung bình lương của các công việc có trung bình 
lương >=300 
21. Đưa ra những đơn vị và lương lớn nhất của các đơn vị có lương lớn nhất 
>=300. 
22. Đưa ra Hoten, Congviec, TenDV của tất cả nhân viên. 
23. Câu lệnh sau cho kết quả như thế nào. 
SELECT HoTen, CongViec, TenDV 
FROM NHANVIEN NV, DONVI DV 
WHERE NV.MaDV= DV.MaDV; 
24. Đưa ra Hoten, Congviec, MaBac của tất cả nhân viên 
25. Đưa ra HoTen, Congviec, TenDV, Luong của những nhân viên có 
Luong>=500. 
26. Câu lệnh sau cho kết quả như thế nào. 
SELECT NV.MaNV, NV.Hoten, PT.MaNV, PT.Hoten 
FROM NHANVIEN NV, NHANVIEN PT 
WHERE (NV.MaNV=PT.MaPT) AND (NV.Luong>PT.Luong); 
27. Đưa ra những công việc trong đơn vị 1 có MaDV là 0001 và đơn vị 2 có 
MaDV là 0002. 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 57
28. Đưa ra Hoten, TenDV, Congviec, Luong của những người có lương lớn hơn 
lương trung bình của toàn bộ nhân viên. 
29. Đưa ra những nhân viên có lương lớn hơn người có lương lớn nhất trong đơn 
vị có tên là DHTL. 
30. Đưa ra Hoten, MaDV, Luong của các nhân viên có Luong=Luong thấp nhất 
trong đơn vị của họ. 
31. Đưa ra Hoten, MaDV, Luong của các nhân viên có Luong=Luong thấp nhất 
trong một đơn vị nào đó. 
32. Đưa ra Hoten, Luong của các nhân viên có Luong lớn nhất của đơn vị có mã 
đơn vị là 0002. 
33. Đưa ra MaDV, AVG(Luong) của đơn vị có trung bình lương lớn hơn lương 
nhỏ nhất của đơn vị có mã đơn vị là 0003. 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 58
6.4 Bài số 3 
Thực hiện các thao tác sau cho Cơ sở dữ liệu dùng để quản lý một cửa hàng kinh 
doanh. 
I. ĐỊNH NGHĨA DỮ LIỆU 
1. Tạo cơ sở dữ liệu 
Tạo một cơ sở dữ liệu dùng để quản lý cửa hàng đặt tên là QLCH bao gồm các bảng 
có mối quan hệ như sau: 
Cấu trúc của mỗi bảng như sau: 
1. KHACH 
Tên thuộc tính Kiểu dữ liệu Kích cỡ Khuôn dạng 
Ma_khach Ký tự 6 Chữ hoa +số 
Ten_kh Ký tự 30 Chữ đầu viết hoa 
Diachi_kh Ký tự 30 Chữ đầu viết hoa 
2. HANG 
Tên thuộc tính Kiểu dữ liệu Kích cỡ Khuôn dạng 
Ma_hang Ký tự 6 Chữ hoa+số 
Ten_hang Ký tự 15 Chữ đầu viết hoa 
Mota_hang Ký tự 30 Chữ đầu viết hoa 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 59
Don_vi Ký tự 10 Chữ thường 
3. DONHANG 
Tên thuộc tính Kiểu dữ liệu Kích cỡ Khuôn dạng 
So_don Ký tự 6 Chữ hoa +số 
Ma_khach Ký tự 15 Chữ hoa +số 
Ngay_don Ngày 8 Dd/mm/yy 
4. DONGDON 
Tên thuộc tính Kiểu dữ liệu Kích cỡ Khuôn dạng 
So_don Ký tự 6 Chữ hoa +số 
Ma_hang Ký tự 6 Chữ hoa +số 
So_luongd Số 7 Số nguyên 
5. PHIEUGIAO 
Tên thuộc tính Kiểu dữ liệu Kích cỡ Khuôn dạng 
So_phieu Ký tự 6 Chữ hoa +số 
Ma_khach Ký tự 6 Chữ hoa +số 
Ngay_giao Ngày 30 Dd/mm/yy 
Noi_giao Ký tự 30 
Tong_tien Số 9 Số thực 
6. DONGPHIEU 
Tên thuộc tính Kiểu dữ liệu Kích cỡ Khuôn dạng 
So_phieu Ký tự 6 Chữ hoa+ số 
Ma_hang Ký tự 6 Chữ hoa + số 
Don_gia Số 6 Số thực 
So_luonggi Số 7 Số thực 
2. Sửa đổi cấu trúc: 
1. Thêm một thuộc tính: 
- Trong bảng KHACH, thêm một thuộc tính SoThich nhằm lưu vào 
bảng KHACH sở thích của khách hàng. 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 60
- Trong bảng HANG, thêm hai thuộc tính là NoiCungCap và 
NoiSanXuat nhằm lưu vào bảng HANG thông tin về nơi cung cấp 
hàng hóa đó và nơi sản xuất chúng. 
2. Thay đổi kiểu của một thuộc tính. 
- Trong bảng KHACH, thay đổi kiểu dữ liệu cho trường SoThich, từ 
kiểu Text thành kiểu Memo. 
- Trong bang HANG, thay đổi kiểu dữ liệu cho trường NoiCungCap, 
từ kiểu Text thành kiểu Number. 
3. Xóa một thuộc tính. 
- Trong bảng HANG, hãy xóa 2 thuộc tính NoiCungCap và 
NoiSanXuat. 
- Trong bảng KHACH, hãy xóa thuộc tính SoThich. 
II. QUẢN TRỊ DỮ LIỆU 
1. Thêm giá trị vào các dòng của bảng 
- Thêm vào bảng KHACH các giá trị như sau: 
KHACH 
Ma_khach Ten_kh diachi_kh 
K001 Đào Minh Thư Đại học Quốc Gia 
K002 Nguyễn Liên Dung BNC 
K003 Phạm Hoàng Nhung Đại học Thủy Lợi 
- Thêm vào bảng DONHANG các giá trị như sau: 
DONHANG 
so_don Ma_khach ngay_don 
DH001 K001 3/22/2002 
DH002 K001 7/13/2003 
DH003 K002 12/24/2002 
- Thêm vào tất cả các bảng, mỗi bảng một số bộ giá trị phù hợp. 
Chú ý: Hãy thử trường hợp thêm ma_khach là K0010 vào bảng 
DONHANG thì kết quả thế nào? Tại sao? 
2. Thêm giá trị cho một số thuộc tính 
- Thêm giá trị vào bảng KHACH để được giá trị như sau: 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 61
KHACH 
Ma_khach Ten_kh Diachi_kh 
K001 Đào Minh Thư Đại học Quốc Gia 
K002 Nguyễn Liên Dung BNC 
K003 Phạm Hoàng Nhung Đại học Thủy Lợi 
K004 Trịnh Hồng Cường 
K005 Nguyễn Văn Hải Đại học Thủy Lợi 
- Thêm giá trị vào bảng HANG để được giá trị như sau: 
HANG 
ma_hang ten_hang Mota_hang don_vi 
H001 Hoa loa kèn Hoa trắng, to Bông 
H002 Hoa hồng Nhiều mau Bông 
H003 Hoa lan Cành 
3. Xóa hàng 
- Xóa một hàng có ma_hang = ‘H001’ trong bảng HANG. 
- Xóa tất cả các khách hàng có Diachi_kh = ‘Đại học Thủy Lợi ‘ trong 
bảng KHACH. 
- Xóa khách hàng có tên là Trịnh Hồng Cường. 
4. Sửa đổi giá trị của một hàng. 
- Sửa đổi địa chỉ của khách hàng thành địa chỉ mới là Đại học Quốc 
Gia với ma_khach là K002. 
- Sửa đổi tất cả các tên hàng là “Hoa lan” thành “Hoa phong lan” và 
mô tả hàng là “Hàng nhập khẩu từ Đà Lạt” 
III. CÁC LỆNH TRUY VẤN DỮ LIỆU 
1. Xem toàn bộ nội dung của bảng KHACH 
2. Xem toàn bộ nội dung của bảng HANG. 
3. Xem toàn bộ nội dung của bảng DONHANG. 
4. Đưa ra Tên và Địa chỉ của tất cả các Khách hàng trong bảng 
KHACH. 
5. Đưa ra Tên hàng, Mô tả hàng và Đơn vị tính của tất cả các mặt hàng 
trong bảng HANG. 
6. Đưa ra tất cả các đơn vị tính dùng để tính hàng hóa. 
7. Đưa ra tất cả các tên hàng trong bảng HANG. 
8. Đưa ra tất cả các địa chỉ của khách hàng. 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 62
9. Đưa ra so_phieu, ma_hang, don_gia, soluonggi và Thành tiền 
(don_gia*so_luong) của tất cả các hàng trong bảng PHIEU_GIAO. 
10. Đưa ra so_phieu, ma_hang, don_gia, soluonggi và Thành tiền 
(don_gia*so_luong), sử dụng bí danh la thanh_tien của tất cả các 
hàng trong bảng PHIEU_GIAO . 
11. Đưa ra tất cả giá trị của bảng HANG theo thứ tự giảm dần của 
ma_hang. 
12. Đưa ra tất cả các giá trị của bảng PHIEUGIAO theo thứ tự tăng dần 
(giảm dần) của tổng tiền (tong_tien). 
13. Đưa ra tất cả các khách hàng có địa chỉ là Đại học Quốc Gia trong 
bảng KHACH. 
14. Đưa ra So_phieu, Ma_khach trong bảng PHIEUGIAO với điều kiện 
Tong_ 
tien>=100.000, và sắp xếp theo điều kiện giảm dần của Tong_tien. 
15. Đưa ra ten_hang, mota_hang của những hàng hóa có don_vi được 
tính theo bông trong bảng HANG. 
16. Đưa ra danh sách các bản ghi bao gồm so_phieu, ma_khach, 
ngay_giao trong bảng PHIEUGIAO với điều kiện Noi_giao là Hà 
Nội và Tong_tien>50.000. 
17. Đưa ra danh sách các bản ghi bao gồm Ma_khach, Ten_khach trong 
bảng KHACH với điều kiện địa chỉ của khách ở Đại học Quốc Gia 
hoặc Đại học Thủy Lợi. 
18. Đưa ra những mặt hàng trong bảng HANG có đơn vị tính là Bông, 
Cành hoặc Bó. 
19. Đưa ra danh sách những khách hàng (Ma_khach, Tong 
_tien) nằm trong bảng PHIEUGIAO có Noi_giao nằm trong số các 
địa điểm sau: Hà Nội, Hồ Chí Minh, Hải Phòng. 
20. Đưa ra tất cả những thông tin trong bảng PHIEUGIAO với điều kiện 
tong_tien nằm trong khoảng từ 100.000 đến 500.000. 
21. Đưa ra ma_kh, ten_kh trong bảng KHACH của những khách hàng 
có họ là Nguyễn. 
22. Đếm số lần mua hàng của khách hàng có ma_kh là K001 trong bảng 
PHIEUGIAO. Thuộc tính mới này được đặt tên là SoLanMua. 
23. Tính tổng tiền trung bình của mỗi PHIEUGIAO. Thuộc tính mới này 
được đặt tên là TrungBinhPG. 
24. Tính tổng tiền trong bảng PHIEUGIAO của những khách hàng có 
ma_khach = ‘K002’. 
Chương 6 . THỰC HÀNH TỔNG HỢP 
PHẦN II- NGÔN NGỮ SQL 63
25. Tính tổng số các khách hàng trong bảng KHACH có địa chỉ 
(diachi_KH) là Đại học Thủy Lợi. 
26. Đưa ra ma_khach, ngay_giao, noi_giao trong bảng PHIEUGIAO có 
tong_tien thanh toán lớn nhất. 
27. Đưa ra ma_khach, ngay_giao, noi_giao trong bảng PHIEUGIAO có 
tong_tien thanh toán nhỏ nhất. 
TÀI LIỆU THAM KHẢO 
PHẦN II- NGÔN NGỮ SQL 64
TÀI LIỆU THAM KHẢO 
1. Date, C.J., and Darwen, H.: A Guide to the SQL Standard, 3rd ed., Addison-
Wesley. 
2. Tiện ích Book Online của SQL Server 2000. 
3. Tiện ích Help của Microsoft Access 2000. 
4. Tiện ích Help của Oracle 9i. 
5. Nguyễn Văn Vỵ, SQL2, NXB Thống kê. 
6. Elmasri & Navathe: Fundamentals of Database Systems, International 
Edition. 

File đính kèm:

  • pdfgiao_trinh_co_so_du_lieu_pham_thi_hoang_nhung.pdf