);
1.Thay đổi kiểu dữ liệu của cột
Dùng cú pháp MODIFY vừa trình bày, thuộc tính V_CODE của bảng INVENTRY có thể được thay đổi từ kiểu nguyên thành kiểu kí tự với lệnh
ALTER TABLE INVENTRY
MODIFY (V_CODE CHAR(5));
Hoặc, nếu bạn đang dùng SQL XDB, gõ
ALTER TABLE INVENTRY
MODIFY V_CODE CHAR(5);
Một số phiên bản SQL (như ORACLE) sẽ không cho phép bạn thay đổi kiểu dữ liệu trừ khi cột được thay đổi rỗng. Chẳng hạn, nếu bạn muốn thay đổi trường V_CODE từ kiểu nguyên thành kiểu kí tự, lệnh
ALTER TABLE INVENTRY
MODIFY (V_CODE CHAR(5));
sẽ đưa ra thông báo lỗi vì cột V_CODE hiện đang chứa dữ liệu. Nếu cột V_CODE không chứa dữ liệu, dãy lệnh trên có thể tạo ra thay đổi cho cấu trúc bảng mong muốn.
2.Thay đổi đặc điểm thuộc tính
Nếu cột cần thay đổi đang chứa dữ liệu, bạn có thể tạo ra bất cứ sự thay đổi nào trên các đặc điểm cột nếu các thay đổi đó không làm thay đổi kiểu dữ liệu. Chẳng hạn, nếu bạn muốn tăng độ rộng của cột PRICE thành tám chữ số, dùng lệnh
ALTER TABLE INVENTRY
MODIFY (PRICE DECIMAL(8,2));
Nếu bây giờ bạn liệt kê lại nội dung, bạn sẽ thấy rằng độ rộng cột PRICE đã tăng lên một chữ số. Nhớ rằng, phiên bản SQL của bạn có thể không dùng cặp dấu ngoặc tròn:
ALTER TABLE INVENTRY
MODIFY PRICE DECIMAL(8,2);
3.Bổ sung cột cho bảng
Bạn có thể thay đổi bảng hiện tại với việc bổ sung một hoặc nhiều cột. Trong ví dụ dưới đây, chúng ta sẽ bổ sung cột có tên SALE_CODE cho bảng INVENTRY. (Chúng ta sẽ dùng cột này về sau để xác định xem có hay không một sản phẩm có sẵn trong kho ứng với một khoảng thời gian nào đó đã được bán trong một thương vụ cụ thể.)
Giả sử chúng ta muốn các mục SALE_CODE là 1, 2, hoặc 3. Vì chúng ta sẽ không thực hiện các phép toán số học với SALE_CODE nên SALE_CODE sẽ được định kiểu là thuộc tính kí tự đơn. Lưu ý sự bao gồm tất cả thông tin yêu cầu trong lệnh ALTER dưới đây:
ALTER TABLE INVENTRY
ADD (SALE_CODE CHAR(1));
Một số phiến bản SQL (chẳng hạn của XDB) có thể bỏ qua cặp dấu ngoặc tròn:
ALTER TABLE INVENTRY
ADD SALE_CODE CHAR(1);
4.Nhập dữ liệu cho cột mới
Để đưa dữ liệu vào trong một phần của hàng, SQL dùng lệnh UPDATE. Lệnh INSERT chúng ta dùng trước đây không đưa ra cách xác định ví trí các mục dữ liệu cột cụ thể; hoặc một hàng đầy đủ hoặc không có hàng nào được đưa vào. Chẳng hạn, đưa giá trị ‘2’ của thuộc tính SALE_CODE vào hàng bốn, dùng lệnh UPDATE kết hợp với khóa chính P_CODE ‘54778-2T’ để hoàn thành công việc. (Kiểm tra nội dung bảng gốc và lưu ý rằng P_CODE = ‘54778-2T’ định danh hàng bốn!) Nhập giá trị với dãy lệnh
UPDATE INVENTRY
SET SALE_CODE = ‘2’
WHERE P_CODE = ‘54778-2T’;
Lệnh dưới đây với bảng đã thay đổi kiểm tra ảnh hưởng của lệnh nêu trên:
SELECT P_DESCRIPT, STOCK_DATE, SALE_CODE
FROM INVENTRY
WHERE P_CODE = ‘54778-2T’;
đưa ra kết quả
P_DESCRIPT
|
STOCK_DATE
|
SALE_CODE
|
Rat-tail file, 1/8in fine
|
12/03/90
|
2
|
Dãy dữ liệu có thể được nhập vào bởi cùng một cách, xác định từng vị trí mục dữ liệu với khóa chính P_CODE và ví trí cột của nó SALE_CODE. Chẳng hạn, nếu chúng ta muốn nhập giá trị SALE_CODE ‘1’ ứng với các giá trị P_CODE là ‘2232/QWE’ và ‘2232/QTY’, chúng ta dùng
UPDATE INVENTRY
SET SALE_CODE = ‘1’
WHERE P_CODE IN (‘2232/QWE’, ‘2232/QTY’);
Hoặc nếu RDBMS của bạn không hỗ trợ IN, dùng hai lệnh dưới đây:
UPDATE INVENTRY
SET SALE_CODE = ‘1’
WHERE P_CODE = ‘2232/QWE’;
UPDATE INVENTRY
SET SALE_CODE = ‘1’
WHERE P_CODE = ‘2232/QTY’;
Kết quả có thể được kiểm tra với lệnh
SELECT P_DESCRIPT, STOCK_DATE, SALE_CODE
FROM INVENTRY;
để đưa ra kết quả
P_DESCRIPT
|
STOCK_DATE
|
SALE_CODE
|
7.25in, power saw blade
2.5in, wood screw, 100
PVC pipe, 3.5in, 8ft
Rat-tail file, 1/8in fine
Sledge hammer, 12lb
Houselite chain saw, 16in
B&D jigsaw, 8in, blade
Hardware cloth,1/4in,50ft
Claw hammer
B&D jigsaw, 12in, blade
|
08/12/91
06/25/91
07/02/91
12/03/90
02/15/91
08/11/91
11/26/90
08/14/91
08/12/91
11/26/90
|
2
1
1
|
Mặc dù dãy UPDATE vừa chỉ ra cho phép chúng ta bổ sung dữ liệu vào các ô bảng đã chỉ rõ, quá trình rất phức tạp. May mắn là, nếu mối quan hệ có thể được thiết lập giữa các mục dữ liệu và các cột hiện có, mối quan hệ đó có thể được dùng để gán các giá trị vào các ô thích hợp của chúng. Chẳng hạn, giả sử rằng chúng ta muốn đặt mã bán hàng dựa trên STOCK_DATE vào bảng, dùng lịch sau:
STOCK_DATE SALE_CODE
trước 01/01/91 2
trong khoảng 01/01/91 đến 07/01/91 1
Hai dãy lệnh dưới đây sẽ tạo ra các phép gán thích hợp. (Lưu ý: Một số phiên bản SQL yêu cầu không dùng các ngoặc nhọn hoặc dấu nháy cho giá trị ngày!)
UPDATE INVENTRY
SET SALE_CODE = ‘2’
WHERE STOCK_DATE < ‘01/01/91’;
UPDATE INVENTRY
SET SALE_CODE = ‘1’
WHERE STOCK_DATE >= ‘01/01/91’
STOCK_DATE < ‘07/01/91’;
Kiểm tra kết quả gán như dưới đây:
SELECT P_DESCRIPT, STOCK_DATE, SALE_CODE
FROM INVENTRY;
Kết quả đưa ra là
P_DESCRIPT
|
STOCK_DATE
|
PRICE
|
SALE_CODE
|
7.25in, power saw blade
2.5in, wood screw, 100
PVC pipe, 3.5in, 8ft
Rat-tail file, 1/8in fine
Sledge hammer, 12lb
Houselite chain saw, 16in
B&D jigsaw, 8in, blade
Hardware cloth,1/4in,50ft
Claw hammer
B&D jigsaw, 12in, blade
|
08/12/91
06/25/91
07/02/91
12/03/90
02/15/91
08/11/91
11/26/90
08/14/91
08/12/91
11/26/90
|
14.99
8.45
5.87
4.99
14.40
256.99
99.87
39.95
5.95
109.92
|
1
2
1
2
2
|
(Lưu các thay đổi bởi lệnh COMMIT.)
Chia sẻ với bạn bè của bạn: