Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 59 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
59
Dung lượng
1,17 MB
Nội dung
NGÔN NGỮHỎISQL
NGÔN NGỮHỎISQL
A. TÓM TẮT LÝ THUYẾT
1. Phép tìm kiếm đơn giản
2. Phép tìm kiếm phần tử duy nhất
3. Phép tìm kiếm có sắp xếp các phần tử theo một thứ tự định trước
4. Phép tìm kiếm các phần tử theo điều kiện
5. Tìm kiếm lồng nhau
6. Tìm kiếm từ nhiều tập tin
7. Tìm kiếm theo nhóm dữ liệu
8. Lưu 1 số thuộc tính, kết quả câu hỏiSQL vào tập tin cơ sỡ dữ liệu
Cú pháp lệnh : SELECT [ ALL / DISTINCT ]
1. Phép tìm kiếm đơn giản :
TOP
Cú pháp : SELECT * | < Danh sách các thuộc tính > ;
FROM < Tập tin cơ sở dữ liệu >
Nếu các câu lệnh được viết trên nhiều dòng khác nhau thì có dấu ; cuối mỗi dòng lệnh, Các thuộc tính
được viết cách nhau bởi dấu ,. Ý nghiã như thực hiện phép chiếu trên các thuộc tính thuộc vào < Danh sách các
thuộc tính >.
Khi muốn liệt kê tất cả các thuộc tính ta dùng SELECT *
Ví dụ : Tìm danh sách tên và địa chỉ các công trình cần xây dựng.
SELECT TEN_CTR, DIACHI_CTR ;
FROM CGTRINH
2. Phép tìm kiếm phần tử duy nhất : ( Bỏ đi các phần tử trùng nhau )
TOP
Cú pháp : SELECT DISTINCT < Danh sách các thuộc tính > ;
FROM < Tập tin cơ sở dữ liệu >
Ví dụ : Tìm danh sách tên và địa chỉ các công trình cần xây dựng (Liệt kê không trùng lắp danh sách các
công trình).
SELECT DISTINCT TEN_CTR, DIACHI_CTR ;
FROM CGTRINH
3. Phép tìm kiếm có sắp xếp các phần tử theo 1 thứ tự định trước :
TOP
Cú pháp : SELECT [ DISTINCT ] * | < Danh sách các thuộc tính > ;
FROM < Tập tin cơ sở dữ liệu > ;
ORDER BY < Thuộc tính 1 > ASC | DESC [ , < Thuộc tính 2 > ASC | DESC ]
• ASC : Sắp xếp các phần tử theo thứ tự tăng dần.
• DESC : Sắp xếp các phần tử theo thứ tự giảm dần.
• Trong trường hợp < thuộc tính 1 > bằng nhau thì sẽ sắp xếp theo < thuộc tính 2 >,
Ví dụ : Tìm kiếm và sắp xếp danh sách các sinh viên theo thứ tự tuổi giảm dần.
SELECT MASV, TENSV, YEAR () - NSINH ;
FROM SINHVIEN ;
ORDER BY NSINH ASC
4. Phép tìm kiếm các phần tử theo điều kiện :
TOP
Cú pháp : SELECT [ DISTINCT ] * | < Danh sách các thuộc tính > ;
FROM < Tập tin cơ sở dữ liệu > ;
WHERE < Ðiều kiện chọn >
AND / OR < Thuộc tính > < Ðiều kiện >
( < Ðiều kiện > có thể là IN (thuộc vào), NOT IN (không thuộc), ANY (Một vài),
Ví dụ 1 : Tìm danh sách các sinh viên quê ở Kiên Giang và là sinh viên giỏi.
SELECT MASV, TENSV ;
FROM SINHVIEN ;
WHERE UPPER (QUEQUAN) = ‘KIENGIANG’ ;
AND PROPER (HOCLUC) = Gioi’ ;
Ví dụ 2 : Tìm tên các đề tài do Lê Giang Ðông chủ nhiệm và có kinh phí thực hiện tên 3 triệu. Hiển thị kết
quả theo thứ tự kinh phí giảm dần.
SELECT TEN_DT ;
FROM DETAI ;
WHERE PROPER ( CNHIEM) = ‘Nguyen Xuan Huy’ ;
AND KINHPHI > 3 ;
ORDER BY KINHPHI DESC
5. Tìm kiếm lồng nhau :
TOP
Cú pháp : SELECT [ DISTINCT ] * | < Danh sách các thuộc tính > ;
FROM < Tập tin cơ sở dữ liệu 1 > ;
WHERE < Ðiều kiện chọn > ;
AND / OR < Thuộc tính > < Ðiều kiện > ;
(SELECT < Danh sách các thuộc tính > ;
FROM < Tập tin cơ sở dữ liệu 2 > ;
WHERE < Ðiều kiện chọn >
AND / OR < Thuộc tính > < Ðiều kiện >)
Ví dụ 1: Tìm họ tên sinh viên thực hiện đề tài có nơi áp dụng ở ngoài tỉnh Cần Thơ.
SELECT DISTNCT TENSV ;
FROM SINHVIEN ;
WHERE MASV IN
( SELECT MASV
FROM SV_DT ;
WHERE LOWER (NOIAD) = ‘can tho’) Ví dụ 2 : Tìm
tên đề tài có kinh phí thực hiện thấp nhất.
SELECT TENDT ;
FROM DETAI ;
WHERE KINHPHI IN ;
( SELECT MIN (KINHPHI) ;
FROM DETAI )
Ví dụ 3 : Tìm mã và tên sinh viên thực hiện đề tài ở Cần Thơ và An Giang.
SELECT MASV, TENSV ;
FROM SV_DT ;
WHERE UPPER (NOIAD)= ‘CANTHO’ ;
AND MASV IN
(SELECT MASV, TENSV ;
FROM SV_DT ;
WHERE UPPER (NOIAD)= ‘ANGIANG’ )
• Cách khác :
SELECT MASV, TENSV ;
FROM SV_DT ;
WHERE UPPER (NOIAD)= ‘CANTHO’ ;
INTERSECTION ;
( SELECT MASV, TENSV ;
FROM SV_DT ;
WHERE UPPER (NOIAD)= ‘ANGIANG’ )
+ INTERSECTION : Giao của 2 tập hợp.
+ UNION : Hợp của 2 tập hợp.
+ MINUS : Hiệu của 2 tập hợp.
6. Tìm kiếm từ nhiều tập tin :
TOP
Cú pháp : SELECT [ DISTINCT ] * | < [< Bí danh.]Thuộc tính >, [<Bí danh.]Thuộc tính >
FROM < Tập tin CSDL1 > [< Bí danh 1 > ], < Tập tin CSDL1 > [< Bí danh 2 >, ] ;
WHERE < Ðiều kiện nối > ;
AND / OR < Ðiều kiện chọn >
Cần xác định thuộc các tập tin cơ sở dữ liệu khác nhau bằng cách xác định bí danh (Alias) cho mỗi tập tin
cơ sở dữ liệu.
Ví dụ 1: Tìm họ tên và mã sinh viên thực hiện đề tài do cô Châu Xuân Phương hướng dẫn.
SELECT A.MASV, A.TENSV ;
FROM SINHVIEN A, DETAI B, SV_DT C ;
WHERE A.MASV = C.MASV ;
AND B.MADT = C.MADT ;
AND UPPER(CNHIEM) = ‘CHAU XUAN PHUONG’
Ví dụ 2: Tìm họ tên và mã sinh viên thực hiện đề tài do thầy Lâm Quốc Anh và cô Châu Xuân Phương hướng
dẫn.
SELECT A.MASV, A.TENSV ;
FROM SINHVIEN A, DETAI B, SV_DT C ;
WHERE A.MASV = C.MASV ;
AND B.MADT = C.MADT ;
AND UPPER(CNHIEM) = ‘LAM QUOC ANH’ ;
INTERSECTION ;
( SELECT A.MASV, A.TENSV ;
FROM SINHVIEN A, DETAI B, SV_DT C ;
WHERE A.MASV = C.MASV ;
AND B.MADT = C.MADT ;
AND UPPER(CNHIEM) = ‘CHAU XUAN PHUONG’)
7. Tìm kiếm theo nhóm dữ liệu :
TOP
Cú pháp : SELECT [ DISTINCT ] * / < [< Bí danh.]Thuộc tính >, [<Bí danh.]Thuộc tính > ;
FROM < Tập tin CSDL1 > [< Bí danh 1 > ], < Tập tin CSDL1 > [< Bí danh 2 >, ];
WHERE < Ðiều kiện nối > ;
AND / OR < Ðiều kiện chọn >
GROUP BY < Danh sách các thuộc tính > ;
[ HAVING < Ðiều kiện chọn theo nhóm > ]
Ví dụ 1 : Tìm họ tên sinh viên, số lượng đề tài mà sinh viên đó có thực hiện.
SELECT TENSV, COUT (MADT) ;
FROM SINHVIEN A, SV_DT B ;
WHERE A.MASV = B.MASV ;
GROUP BY MASV
Ví dụ 2 : Tính tổng chi phí làm đề tài cho từng sinh viên.
SELECT TENSV, SUM (KINHPHI) ;
FROM SINHVIEN A, DETAI B, SV_DT C ;
WHERE A.MASV = C.MASV ;
AND B.MASV = C.MASV ;
GROUP BY C.MASV
8. Lưu một số thuộc tính , kết quả của câu hỏiSQL vào tập tin cơ sở dữ liệu :
TOP
Cú pháp : SELECT * | < Danh sách các thuộc tính > | < Tên cũ > AS < Tên mới >
INTO DBF < Tên tập tin lưu kết quả >;
FROM
WHERE
Ví dụ : Tìm họ tên, chức danh, số tiền tạm ứng của những cán bộ có dạy vượt giờ.
Bước 1 : Tạo tập tin tam dbf chứa danh sách các cán bộ có dạy vượt giờ :
SELE A.GIOCHUAN, B.MACB, SUM (B.SOTIET * B.HESO)
AS GIODAY INTO DBF TAM;
FROM MACD A, GD95-96 B, MACB C;
WHERE A.MACD = B.MACD;
AND A.MACB= C.MACB;
GROUP BY B. MACB;
HAVING SUM (B.SOTIET * B.HESO) > A.GIOCHUAN
Bước 2 : Tìm họ tên, chức danh, số tiền tạm ứng của những cán bộ có dạy vượt giờ
SELE A.MACB, C.CHUCDANH , B.HOTEN, SUM (D.SOTIEN) AS TU;
FROM TAM A, MACB B, MACD C, T_UNG D;
WHERE A.MACB = B.MACB;
A.MACB = D.MACB;
B.MACD = C.MACD;
GROUP BY D.MACB;
NGÔN NGỮHỎISQL
B. PHẦN BÀI TẬP THỰC HÀNH
• BÀI THỰC HÀNH SỐ 1
• BÀI THỰC HÀNH SỐ 2
• BÀI THỰC HÀNH SỐ 3
• BÀI THỰC HÀNH SỐ 4
• BÀI THỰC HÀNH SỐ 5
• BÀI THỰC HÀNH SỐ 6
BÀI THỰC HÀNH SỐ 1
TOP
Cho cơ sở dữ liệu như sau :
HANGHOA (MA_HANG,TEN_HG) : Mỗi mặt hàng sẽ có một mã hàng, và một tên hàng.
STT
FIELD NAME TYPE WIDTH DEC DIỄN GIẢI
1 MA_HANG Character 3 Mã hàng
2 TEN_HG Character 20 Tên hàng
DAILY(STT_DL, TEN_DL, DCHI_DL) : Mỗi đại lý có một số thứ tự, tên và một địa chỉ.
STT
FIELD NAME TYPE WIDTH DEC DIỄN GIẢI
1 STT_DL Number 3 Số thứ tự đại lý
2 TEN_DL Character 20 Tên đại lý
3 DCHI_DL Character 20 Ðịa chỉ đại lý
MUA (STT_DL, MA_HANG, NGAY_MUA, SOLG_MUA, TRIGIA_MUA) : Mỗi một ngày, đại lý sẽ tổng kết
xem đã mua những mặt hàng nào với số lượng và trị giá bao nhiêu.
STT
FIELD NAME TYPE WIDTH DEC DIỄN GIẢI
1 STT_DL Number 3 Số thứ tự đại lý
2 MA_HANG Character 3 Mã hàng
3 NGAY_MUA Date 8 Ngày mua
4 SOLG_MUA Number 6 Số lượng mua
5 TRIGIA_MUA Number 10 Trị giá mua
BAN (STT_DL, MA_HANG, NGAY_BAN, SOLG_BAN, TRIGIA_BAN ) : Sau mỗi ngày, đại lý sẽ tổng kết xem
đã bán được những mặt hàng nào với số lượng và trị giá bán là bao nhiêu.
STT
FIELD NAME TYPE WIDTH DEC DIỄN GIẢI
1 STT_DL Number 3 Số thứ tự đại lý
2 MA_HANG Character 3 Mã hàng
3 NGAY_BAN Date 8 Ngày bán
4 SOLG_BAN Number 6 Số lượng bán
5 TRIGIA_BAN Number 10 Trị giá bán
Yêu cầu : Viết các câu hỏi sau dưới dạng ngônngữhỏiSQL
1. Tìm những mặt hàng đã bán trong tháng 1/95 tại đại lý số 3.
2. Tìm những mặt hàng đã mua trước năm 1995 và có trị giá mua > 500000.
3. Tìm tên và địa chỉ đại lý có mua bia Heineken.
4. Tìm tất cả các mặt hàng mà đại lý số 2 đã bán trong năm 1994.
5. Tìm tên những mặt hàng mà đại lý Vạn Lợi đã mua trước 01/01/95 và có số lượng mua lớn hơn 150.
6. Tìm những mặt hàng đã được mua và bán trong cùng một ngày ở cùng một đại lý.
7. Tìm tên và địa chỉ đại lý có tổng giá trị mua trong một ngày lớn hơn 700000.
8. Tìm tổng giá trị mua và tổng giá trị bán của mặt hàng Coca Cola ở đại lý Tân Hiệp Hưng.
9. Tìm đơn giá mua trung bình của bia Sài Gòn trên các đại lý.
10. Tìm dơn giá mua trung bình của bia Sài gòn trên các đại lý.
11. Tìm tên, địa chỉ của đại lý và những mặt hàng có số lượng mua và số lượng bán bằng nhau trong cùng
một ngày.
12. Tìm tổng thu nhập từng ngày trên từng đại lý.
13. Tìm tổng giá trị mua trong tháng 1/95 tại đại lý Vạn Lợi.
14. Tìm số mặt hàng có bán ở từng đại lý.
15. Tìm tên và địa chỉ của đại lý có bán nhiều mặt hàng nhất.
Gợi ý :
Câu 7: Sử dụng nhóm dữ liệu và hàm tính tổng SUM ().
Câu 9: Sử dụng ánh xạ lồng nhau hoặc mở tập tin trên nhiều miền làm việc khác nhau.
Câu 10: Sử dụng hàm tính trung bình AVG() kết hợp với thao tác nhóm dữ liệu.
BÀI THỰC HÀNH SỐ 2
TOP
Cho cơ sở dữ liệu như sau :
CGTRINH (STT_CTR, TEN_CTR, DIACHI_CTR, TINH_THANH, KINH_PHI, TEN_CHU,
TEN_THAU, NGAY_BD) : Mỗi một công trình có một số thứ tự, tên công trình, địa chỉ, kinh phí thực hiện,
thuộc về một chủ nhân nào đó, do một chủ thầu thi công, được khởi công vào một ngày nào đó ở một tỉnh thành
nào đó.
[...]... FIELD NAME HOTEN_KTS STT_CTR THU_LAO TYPE Character Number Number WIDTH 20 4 7 DEC 2 DIỄN GIẢI Họ và tên kiến trúc sư Số thứ tự công trình Tiền thù lao (triệu đồng) Yêu cầu : Viết các câu hỏi sau dưới dạng ngôn ngữhỏi SQL 1 Tìm danh sách các công trình được thực hiện ở Hà Nội 2 Tìm danh sách các công nhân có chuyên môn hàn hoặc điện và làm việc cho công ty xây dựng số 6 3 Tìm các công trình mà công nhân... viết và một tác giả có thể viết nhiều bài báo khác nhau STT 1 2 FIELD NAME STT_BAI BUT_HIEU TYPE Number Character WIDTH 3 20 DEC DIỄN GIẢI Số thứ tự bài báo Bút hiệu Yêu cầu : Viết các câu hỏi sau dưới dạng ngôn ngữhỏi SQL 1 Tìm các bài báo và tạp chí của Tô Phan 2 Tìm tựa, số trang của các bài báo trong tạp chí kiến thức ngày nay số 156 3 Tìm các bài viết của Nguyễn Trọng Vinh trên các báo tuần 4 Tìm... cung ứng mặt hàng nào đó với một số lượng xác định STT 1 2 3 4 FIELD NAME MA_NCC MA_HANG MA_DU_AN SO_LG TYPE Character Character Character Number WIDTH 2 2 2 4 DEC 0 Yêu cầu : Viết các câu hỏi sau dưới dạng ngôn ngữhỏi SQL 1 Tìm thông tin về các dự án ở thành phố Hồ Chí Minh 2 Tìm mã hàng, tên hàng cung cấp cho dự án Tân Phú ở Cần Thơ 3 Tìm tên, mã nhà cấp cung ứng mặt hàng P1 cho dự án J1 DIỄN GIẢI Mã... STT 1 2 3 FIELD NAME MACB LAN SOTIEN TYPE Character Number Number WIDTH 4 2 8 DEC 0 DIỄN GIẢI Mã cán bộ Số thứ tự lần tạm ứng Số tiền tạm ứng trong lần đang xem xét Yêu cầu : Viết các câu hỏi sau dưới dạng ngôn ngữhỏi SQL 1 Tìm mã số, họ tên các cán bộ có dạy môn Foxpro 2 Tìm các lớp, môn học do Nguyễn Khanh phụ trách 3 Tìm các lớp, môn học và có số tiết lớn hơn 30 tiết và do cán bộ có chức danh giảng... hoặc lớn hơn lứa tuổi của họ) STT 1 2 FIELD NAME VDV_MA DOI_MA TYPE Character Character WIDTH 3 2 DEC DIỄN GIẢI Mã vận động viên Mã đội mà vận động viên tham gia Yêu cầu : Viết các câu hỏi sau dưới dạng ngôn ngữhỏi SQL 1 Tìm danh sách các vận động viên của câu lạc bộ mã 45 2 Tìm danh sách các vận động viên thuộc đội 3 của câu lạc bộ 27 3 Tính số lượng các trận đấu diễn ra trong ngày 900616 4 Tìm tên,... khoảng thời gian từ 12 giờ đến 16 giờ tại phòng 49 trong ngày 900805 14 Tìm số tối đa các trận đấu diễn ra trong cùng một ngày 15 Tìm số các trận đấu diễn ra trong cùng một ngày ở cùng một phòng NGÔNNGỮHỎISQL C LỜI GIẢI CÁC BÀI TẬP THỰC HÀNH • • • • • • BÀI THỰC HÀNH SỐ 1 BÀI THỰC HÀNH SỐ 2 BÀI THỰC HÀNH SỐ 3 BÀI THỰC HÀNH SỐ 4 BÀI THỰC HÀNH SỐ 5 BÀI THỰC HÀNH SỐ 6 ĐỀ THI SỐ 01 BÀI THỰC HÀNH SỐ 1 .
NGÔN NGỮ HỎI SQL
NGÔN NGỮ HỎI SQL
A. TÓM TẮT LÝ THUYẾT
1. Phép tìm kiếm đơn giản
2
5 TRIGIA_BAN Number 10 Trị giá bán
Yêu cầu : Viết các câu hỏi sau dưới dạng ngôn ngữ hỏi SQL
1. Tìm những mặt hàng đã bán trong tháng 1/95 tại đại