Ban chỉ ĐẠo công nghệ thông tin của cơ quan đẢng giáo trình thiết kế, XÂy dựng và quản trị CƠ SỞ DỮ liệu hà NỘI, 2004



tải về 1.04 Mb.
trang21/29
Chuyển đổi dữ liệu07.07.2016
Kích1.04 Mb.
#87
1   ...   17   18   19   20   21   22   23   24   ...   29

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.




tải về 1.04 Mb.

Chia sẻ với bạn bè của bạn:
1   ...   17   18   19   20   21   22   23   24   ...   29




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương