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.
trang25/29
Chuyển đổi dữ liệu07.07.2016
Kích1.04 Mb.
1   ...   21   22   23   24   25   26   27   28   29

5.Sao chép một phần bảng


Về sau bạn sẽ thấy rằng có thể cần phải tách cấu trúc bảng thành một số phần nào đó khi nó không thỏa mãn một kiểm tra thiết kế nào đó. May mắn là, SQL cho phép chúng ta sao chép nội dung của các cột đã chọn sang các bảng mới vừa được tạo ra để tránh phải nhập lại dữ liệu một cách thủ công.

Để sao chép các cột đã chọn từ một bảng, trước hết cần tạo cấu trúc bảng mới để nhận dữ liệu. Chẳng hạn, nếu bạn muốn sao chép P_CODE và PRICE từ bảng INVENTRY sang bảng mới có tên là TEMP_1, trước hết cần tạo ra cấu trúc bảng TEMP_1 như dưới đây.

CREATE TABLE TEMP_1 ( PART_CODE CHAR(8) NOT NULL,
PRICE DECIMAL(8,2));

Nhớ rằng các tên cột của bảng TEMP_1 không trùng với các tên cột của bảng gốc và bảng mới không nhất thiết phải có số cột bằng số cột của bảng gốc. Khi đó, cột đầu tiên trong bảng TEMP_1 được đặt tên là PART_CODE, mà không phải là P_CODE có trong bảng INVENTRY; đồng thời bảng TEMP_1 chỉ chứa hai cột, không phải bảy cột như trong bảng INVENTRY. Tuy nhiên, các đặc điểm cột phải tương xứng; bạn không thể sao chép thuộc tính kiểu kí tự vào cấu trúc số, và ngược lại.

Sau khi đã tạo được bảng nhận, sao chép các giá trị cột tương ứng vào bảng TEMP_1 mới tạo ra bởi dãy lệnh

INSERT INTO (Danh sách tên cột của bảng nhận)


SELECT
FROM

Do đó, chúng ta dùng

INSERT INTO TEMP_1 (PART_CODE, PRICE)

SELECT P_CODE, PRICE FROM INVENTRY;

Nội dung của bảng TEMP_1 bây giờ có thể được kiểm tra bởi câu vấn tin

SELECT * FROM TEMP_1;

để liệt kê nội dung của mới TEMP_1:


PART_CODE

PRICE

13-Q2/P2
ZW-23116
2QQ23DRT
54778-2T
23114-AA
89-WRE-Q
2232/QWE
1546-QQ2
WWE/D324
2232/QTY

14.99
8.45
5.87
4.99
14.40
256.99
99.87
39.95
5.95
109.92

Trong chương 5 bạn sẽ thấy tầm quan trọng của sao chép một phần bảng trong cái gọi là quá trình chuẩn hoá.

6.Xoá bảng khỏi CSDL


Một bảng có thể bị xoá khỏi CSDL bởi lệnh DROP. Chẳng hạn, chúng ta có thể xoá bảng TEMP_1 vừa tạo với

DROP TABLE TEMP_1;


VI.VẤN TIN PHỨC TẠP VÀ CÁC HÀM SQL


Một trong những ưu điểm quan trọng nhất của SQL là khả năng cho phép người dùng tạo ra các câu vấn tin phức tạp với nhiều dạng khác nhau. Các toán tử lôgic được giới thiệu ở phần trước để cập nhật nội dung bảng cũng sẽ chỉ làm việc trong môi trường vấn tin. Ngoài ra, SQL còn cung cấp các hàm hữu ích để đếm, tìm giá trị nhỏ nhất và lớn nhất, tính giá trị trung bình... Hơn thế nữa, SQL cũng cho phép người dùng hạn chế các câu vấn tin đối với các mục dữ liệu không trùng lặp hoặc các mục trùng lặp của nó có thể được nhóm lại.

1.Sắp xếp danh sách


Mệnh đề ORDER BY của SQL đặc biệt hữu dụng nếu thứ tự liệt kê quan trọng đối với bạn. Cú pháp

ORDER BY

tạo ra một danh sách theo thứ tự tăng dần. Nếu danh sách cần chỉ ra theo thứ tự giảm dần, dùng

ORDER BY DESC

Chẳng hạn, nếu bạn muốn nội dung của bảng INVENTRY được liệt kê bởi PRICE theo thứ tự tăng dần, dùng

SELECT *
FROM INVENTRY


ORDER BY PRICE;

để đưa ra kết quả như dưới đây.



P_CODE

P_DESCRIPT

STOCK_DATE

ON_HAND

MIN_QUANT

PRICE

V_CODE

54778-2T

Rat-tail file, 1/8in fine

12/03/1990

43

20

4.99

21344

2QQ23DRT

PVC pipe, 3.5in, 8ft

07/02/1991

188

75

5.87

21344

WWE/D324

Claw hammer

08/12/1991

23

10

5.95

21225

ZW-23116

2.5in, wood screw, 100

06/25/1991

237

100

8.45

21231

23114-AA

Sledge hammer, 12lb

02/15/1991

8

5

14.4

21231

13-Q2/P2

7.25in, power saw blade

08/12/1991

32

15

14.99

21344

1546-QQ2

Hardware cloth,1/4in,50ft

08/14/1991

15

5

39.95

23119

2232/QWE

B&D jigsaw, 8in, blade

11/26/1990

6

3

99.87

24288

2232/QTY

B&D jigsaw, 12in, blade

11/26/1990

8

3

109.92

24288

89-WRE-Q

Houselite chain saw, 16in

08/11/1991

11

5

256.99

24288

So sánh danh sách này với nội dung bảng thực tế trong bảng 3.1 và lưu ý sự thay đổi theo thứ tự được liệt kê: sản phẩm giá thấp nhất bây giờ được đứng đầu tiên, tiếp theo là các sản phẩm giá thấp nhất tiếp theo... Bạn nên biết rằng ORDER đưa ra quá trình sắp xếp lôgic; nội dung bảng thực tế không bị ảnh hưởng bởi lệnh ORDER.

Tiếp theo, gõ dòng lệnh

SELECT *
FROM INVENTRY
ORDER BY PRICE DESC;

và khảo sát kết quả đưa ra:



P_CODE

P_DESCRIPT

STOCK_DATE

ON_HAND

MIN_QUANT

PRICE

V_CODE

89-WRE-Q

Houselite chain saw, 16in

08/11/1991

11

5

256.99

24288

2232/QTY

B&D jigsaw, 12in, blade

11/26/1990

8

3

109.92

24288

2232/QWE

B&D jigsaw, 8in, blade

11/26/1990

6

3

99.87

24288

1546-QQ2

Hardware cloth,1/4in,50ft

08/14/1991

15

5

39.95

23119

13-Q2/P2

7.25in, power saw blade

08/12/1991

32

15

14.99

21344

23114-AA

Sledge hammer, 12lb

02/15/1991

8

5

14.4

21231

ZW-23116

2.5in, wood screw, 100

06/25/1991

237

100

8.45

21231

WWE/D324

Claw hammer

08/12/1991

23

10

5.95

21225

2QQ23DRT

PVC pipe, 3.5in, 8ft

07/02/1991

188

75

5.87

21344

54778-2T

Rat-tail file, 1/8in fine

12/03/1990

43

20

4.99

21344

Nếu bạn muốn tạo ra một danh mục điện thoại, có lẽ là hữu dụng nếu bạn đưa ra dãy được sắp thứ tự (tên cuối, tên đầu, kí tự đầu của tên đệm) theo ba bước:

Sắp xếp theo tên cuối.

Trong các tên cuối, sắp xếp theo tên đầu.

Trong các tên được sắp theo bước 2, sắp xếp theo kí tự đầu của tên đệm.

Dãy được sắp đa mức như vậy được gọi là dãy được sắp theo tầng, nó được tạo ra một cách dễ dàng bởi việc liệt kê danh sách thuộc tính, cách nhau bởi dấu phảy, sau mệnh đề ORDER BY:

ORDER BY

(Khái niệm tầng được dùng để mô tả điều kiện theo đó phép sắp xếp lôgic được thực hiện theo bước.) Chẳng hạn, lệnh

SELECT C_LNAME, C_FNAME, C_I, V_PHONE


FROM VENDOR
ORDER BY C_LNAME, C_FNAME, C_I;

sẽ đưa ra kết quả dưới đây:



C_LNAME

C_FNAME

C_I

V_PHONE

Cavazos

Maria

D.

800-333-9011

Fielding

Anne

K.

666-233-1281

Smith

Sally

K.

800-234-1200

Smith

Stanley

G.

800-213-9999

Smithson

Ronald

W.

212-667-0090

Mệnh đề ORDER BY hữu dụng trong nhiều ứng dụng, đặc biệt khi điều kiện DESC được sử dụng. Hãy xem xét khả năng khi kiểm tra ngày đến hạn hoá đơn theo thứ tự giảm dần, kiểm tra các hạng mục ngân sách các cơ quan chính phủ theo số lượng, hoặc khảo sát một số bất kỳ các giao dịch tài chính.

Chúng ta cũng có thể dùng mệnh đề ORDER BY kết hợp với các lệnh SQL khác. Chẳng hạn, để ý cách dùng các hạn chế trong dãy lệnh dưới đây:

SELECT P_DESCRIPT, V_CODE, STOCK_DATE, PRICE
FROM INVENTRY
WHERE STOCK_DATE < ‘07/15/91’
AND PRICE <= 50.00
ORDER BY V_CODE, PRICE DESC;

Kết quả đưa ra sẽ là danh sách dưới đây:



P_DESCRIPT

V_CODE

STOCK_DATE

PRICE

Sledge hammer, 12lb

21231

02/15/1991

14.40

2.5in, wood screw, 100

21231

06/25/1991

8.45

PVC pipe, 3.5in, 8ft

21344

07/02/1991

5.87

Rat-tail file, 1/8in fine

21344

12/03/1990

4.99

Nhận xét rằng bên trong V_CODE đầu tiên các giá được liệt kê theo thứ tự giảm dần, theo ngay sau bởi V_CODE thứ hai, cũng với các giá được liệt kê theo thứ tự giảm dần.
1   ...   21   22   23   24   25   26   27   28   29


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

    Quê hương