1.Liệt kê từng phần nội dung bảng
Bạn có thể chọn một phần nội dung bảng với SELECT bằng cách liệt kê tên của các trường mong muốn và đặt điều kiện cho các hàng cần đưa ra. Cú pháp dưới đây sẽ cho phép bạn mô tả các giá trị bảng cần đưa ra:
SELECT
FROM
WHERE ;
Chẩng hạn, câu vấn tin
SELECT P_DESCRIPT, STOCK_DATE, PRICE, V_CODE
FROM INVENTRY
WHERE V_CODE = 21344;
sẽ tạo ra kết quả
P_DESCRIPT
|
STOCK_DATE
|
PRICE
|
V_CODE
|
7.25in, power saw blade
PVC pipe, 3.5in, 8ft
Rat-tail file, 1/8in fine
|
08/12/91
07/02/91
12/03/90
|
14.99
5.87
4.99
|
21344
21344
21344
|
Nhiều điều kiện lôgic có thể được đặt lên nội dung bảng được chọn. Theo đó cấu trúc lệnh SQL đảm bảo khả năng vấn tin vô cùng linh hoạt. Chẳng hạn, các kí hiệu toán học nêu trong bảng 3.5 có thể được dùng để hạn chế kết quả đưa ra. Ví dụ dưới đây dùng phép toán khác (không bằng):
SELECT P_DESCRIPT, STOCK_DATE, PRICE, V_CODE
FROM INVENTRY
WHERE V_CODE <> 21344;
Kết quả đưa ra liệt kê tất cả các hàng ứng với mã nhà cung cấp không phải là 21344:
P_DESCRIPT
|
STOCK_DATE
|
PRICE
|
V_CODE
|
2.5in, wood screw, 100
Sledge hammer, 12lb
Houselite chain saw, 16in
B&D jigsaw, 8in, blade
Hardware cloth,1/4in,50ft
Claw hammer
B&D jigsaw, 12in, blade
|
06/25/91
02/15/91
08/11/91
11/26/90
08/14/91
08/12/91
11/26/90
|
8.45
14.40
256.99
99.87
39.95
5.95
109.92
|
21231
21231
24288
24288
23119
21225
24288
|
và dãy lệnh
SELECT P_DESCRIPT, ON_HAND, MIN_QUANT, PRICE
FROM INVENTRY
WHERE PRICE <= 10;
sẽ đưa ra kết quả
P_DESCRIPT
|
ON_HAND
|
MIN_QUANT
|
PRICE
|
2.5in, wood screw, 100
PVC pipe, 3.5in, 8ft
Rat-tail file, 1/8in fine
Claw hammer
|
237
188
43
23
|
100
75
20
10
|
8.45
5.87
4.99
5.95
|
Bảng 3.5 Các toán tử toán học
Kí hiệu
|
Ý nghĩa
|
=
|
Bằng
|
<
|
Nhỏ hơn
|
<=
|
Nhỏ hơn hoặc bằng
|
>
|
Lớn hơn
|
>=
|
Lớn hơn hoặc bằng
|
<>
|
Không bằng*
|
* Một số phiên bản SQL dùng != thay cho <>.
|
Sử dụng các toán tử toán học trên các thuộc tính kí tự. Vì máy tính nhận biết mọi kí tự bằng số là mã chuẩn ASCII của nó, nên các toán tử toán học có thể được dùng để đặt các hạn chế cho các thuộc tính dựa trên kí tự. Vì vậy, lệnh
SELECT P_DESCRIPT, ON_HAND, MIN_QUANT, PRICE
FROM INVENTRY
WHERE P_CODE < ‘16-AAAAA’;
sẽ là đúng và có thể đưa ra một danh sách tất cả các hàng trong đó P_CODE “nhỏ hơn” ‘16-2222AAAAA’ theo thứ tự bảng chữ cái. (Vì giá trị mã ASCII ứng với chữ cái B lớn hơn giá trị mã của chữ cái A, suy ra rằng A nhỏ hơn B.) Vì vậy, kết quả đưa ra sẽ là
P_DESCRIPT
|
ON_HAND
|
MIN_QUANT
|
PRICE
|
7.25in, power saw blade
Hardware cloth,1/4in,50ft
|
32
15
|
15
5
|
14.99
39.95
|
So sánh xâu kí tự được thực hiện từ trái qua phải. Kiểu so sánh từ trái qua phải này đặc biệt hữu dụng khi các thuộc tính kiểu như các tên được so sánh. Chẳng hạn, xâu ‘Ardmore’ có thể được đánh giá lớn hơn xâu ‘Aarenson’ nhưng nhỏ hơn xâu ‘Brown’; các kết quả như vậy có thể được dùng để tạo ra các danh sách xếp theo thứ tự bảng chữ cái như kiểu danh mục điện thoại.
Nếu các kí tự 0-9 được lưu như các xâu, cùng một so sánh xâu từ trái qua phải có thể làm xuất hiện các dị thường. Chẳng hạn, mã ASCII ứng với kí tự ‘5’ là, như mong muốn, lớn hơn mã ASCII ứng với kí tự ‘4’, nhưng cũng chính ‘5’ lại được đánh giá lớn hơn xâu ‘44’ do kí tự đầu tiên trong xâu ‘44’ nhỏ hơn ‘5’. Vì lý do này bạn có thể nhận được kết quả không như mong muốn khi so sánh giá trị ngày nếu chúng được lưu theo kiểu kí tự. Chẳng hạn, phép so sánh kí tự ASCII từ trái qua phải có thể kết luận rằng ngày ‘01/01/91’ xuất hiện trước ngày ‘12/31/90’ do ‘01/01/91’ nhỏ hơn ‘12/31/90’ vì kí tự bên trái nhất ‘0’ trong xâu ‘01/01/91’ nhỏ hơn kí tự trái nhất ‘1’ trong xâu ‘12/31/90’. Một cách tự nhiên, nếu xâu dữ liệu được lưu dưới dạng yy/mm/dd, các phép so sánh sẽ đưa ra kết quả thích hợp, nhưng ít người muốn sử dụng cách biểu diễn ngày không chuẩn đó. Điều này giải thích vì ssao tất cả các RDBMS hiện nay đều hỗ trợ kiểu ngày, đồng thời cũng giải thích vì sao bạn nên dùng chúng! (Hơn nữa, bạn tận dụng được các ưu điểm của số học ngày nếu bạn dùng kiểu ngày.)
Dùng các toán tử toán học trên kiểu ngày. Các thủ tục ngày thường có đặc điểm riêng theo từng phần mềm mà không phải là thủ tục SQL. Chẳng hạn, nếu bạn dùng XDB, OS/2 EE Database Manager hoặc DB2 cho máy lớn mainframe của IBM, câu vấn tin dựa trên kiểu ngày
Liệt kê tất cả các hàng sản phẩm có ngày nhập kho la trong hoặc trước ngày 1 tháng 7,
có dạng như sau:
SELECT *
FROM INVENTRY
WHERE STOCK_DATE >= 07/01/91;
Kết quả sẽ là
P_CODE
|
P_DESCRIPT
|
STOCK_DATE
|
ON_HAND
|
MIN_QUANT
|
13-Q2/P2
2QQ23DRT
89-WRE-Q
1546-QQ2
WWE/D324
|
7.25in, power saw blade
PVC pipe, 3.5in, 8ft
Houselite chain saw, 16in
Hardware cloth,1/4in,50ft
Claw hammer
|
08/12/91
07/02/91
08/11/91
08/14/91
08/12/91
|
32
188
11
15
23
|
15
75
5
5
10
|
Để ý là lệnh trên không bao ngày vào trong cặp dấu nháy đơn hoặc kép. Nếu bạn dùng ORACLE, câu vấn tin trên được viết như sau
SELECT *
2 FROM INVENTRY
3 WHERE STOCK_DATE >= ‘07-JUL-91’;
Để ý là ORACLE yêu cầu dùng cặp dấu nháy đơn và khuôn dạng ngày mặc định khác.
Khuôn dạng ngày dBASE IV yêu cầu dùng hàm đặc biệt có tên là CTOD để chuyển tập kí tự xâu ngày thành ngày Julian:
SELECT *
FROM INVENTRY
WHERE STOCK_DATE >= CTOD(‘07/01/91’);
Nhớ dùng cặp dấu nháy để bao quanh xâu ngày.
Chia sẻ với bạn bè của bạn: |