Tải bản đầy đủ (.pdf) (34 trang)

Hướng dẫn SQL & XQuery cho IBM DB2, Phần 6: Ngôn ngữ định nghĩa dữ liệu và ngôn ngữ kiểm soát dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (256.29 KB, 34 trang )

Hướng dẫn SQL & XQuery cho IBM DB2,
Phần 6: Ngôn ngữ định nghĩa dữ liệu và ngơn
ngữ kiểm sốt dữ liệu
Tổng quan về các thành phần DML, DDL, và DCL của SQL
Pat Moffatt, Giám đốc Chương trình quản lý thơng tin, Sáng kiến học đường, IBM
Bruce Creighton, Chuyên viên lập kế hoạch các phần kỹ năng, IBM
Jessica Cao, Chuyên viên phát triển các cơng cụ đào tạo, IBM
Tóm tắt: Hướng dẫn này, Phần 6 của loạt bài hướng dẫn SQL & XQuery cho
IBM DB2 , phát triển theo ngôn ngữ xử lý dữ liệu (DML) và giới thiệu ngôn ngữ
định nghĩa dữ liệu (DDL) và ngơn ngữ kiểm sốt dữ liệu (DCL). Nó cũng bàn luận
đến các lệnh SQL khác lệnh SELECT.
Trước khi bạn bắt đầu

Về loạt bài này
Loạt bài hướng dẫn này dạy các chủ đề SQL từ cơ bản đến nâng cao và các chủ đề
XQuery cơ bản. Nó cũng chỉ ra cách diễn đạt các câu hỏi nghiệp vụ thường gặp
bằng các truy vấn cơ sở dữ liệu sử dụng các câu truy vấn SQL hay các câu truy
vấn XQuery. Những người phát triển ứng dụng và những người quản trị cơ sở dữ
liệu có thể sử dụng hướng dẫn này để nâng cao các kỹ năng truy vấn cơ sở dữ liệu
của mình. Các thành viên tham gia sáng kiến học đường IBM có thể sử dụng loạt
hướng dẫn này như một phần trong chương trình giảng dạy cơ sở dữ liệu của họ.
Loạt bài hướng dẫn chỉ ra cách diễn đạt các câu hỏi kinh doanh thường gặp như
các truy vấn cơ sở dữ liệu khi sử dụng SQL hay các XQuery.
Tất cả các ví dụ trong bài này là dựa trên Aroma, một cơ sở dữ liệu mẫu chứa các
dữ liệu doanh thu về các sản phẩm cà phê và chè đã bán trong các cửa hàng trên
khắp nước Mỹ. Mỗi ví dụ gồm có ba phần:


Một câu hỏi kinh doanh dưới dạng ngơn ngữ thường ngày




Một hoặc nhiều ví dụ truy vấn, được biểu diễn bằng SQL hay XQuery




Một bảng các kết quả trả về từ cơ sở dữ liệu

Hướng dẫn này được thiết kế để cho phép các học viên học tập ngôn ngữ SQL và
XQuery. Cũng như học bất cứ cái gì khác, việc bổ sung thêm các bài tập thực hành
là rất quan trọng. Dữ liệu và các định nghĩa bảng sẽ tạo điều kiện thuận lợi cho các
bài tập thực hành này.
Đối với các sinh viên sử dụng tài liệu này như một phần của khố học, hãy nhận từ
thầy hướng dẫn của mình các chỉ dẫn để kết nối tới cơ sở dữ liệu Aroma và tìm
hiểu mọi sự khác biệt giữa hướng dẫn và cài đặt tại máy cục bộ của mình.
Cảm ơn bạn lựa chọn IBM® DB2® để nghiên cứu về các máy chủ dữ liệu lai,
phục vụ dữ liệu với cả hai cấu trúc: cấu trúc quan hệ thuần khiết lẫn cấu trúc
pureXML.
Hướng dẫn này được viết cho Express-C 9 DB2 trên nền Linux®, UNIX®, và
Windows®.
Về hướng dẫn này
Tất cả các phần trước của loạt bài này đã tập trung vào lệnh SELECT. Hướng dẫn
này giới thiệu các thành phần và các lệnh khác SQL, bao gồm:


CREATE TABLE



INSERT




UPDATE



DELETE



ALTER TABLE



CREATE VIEW



CREATE INDEX



DROP TABLE



GRANT




REVOKE


Kết nối tới một cơ sở dữ liệu
Bạn cần kết nối tới một cơ sở dữ liệu trước khi có thể sử dụng các câu lệnh SQL
để truy vấn hay xử lý dữ liệu. Lệnh CONNECT kết hợp một kết nối cơ sở dữ liệu
với một tên người sử dụng.
Đối với loạt bài này, tên cơ sở dữ liệu là aromadb. (Nếu bạn là sinh viên khi sử
dụng phần này như một phần của khố học, hãy thơng qua thầy hướng dẫn để tìm
ra tên cơ sở dữ liệu bạn cần nối tới.)
Để kết nối tới cơ sở dữ liệu aromadb, gõ lệnh sau đây vào trong bộ xử lý dòng
lệnh DB2:
CONNECT TO aromadb USER userid USING
password

Đối với sinh viên khi sử dụng phần này như một phần của khoá học, thay thế
"userid" và "password" bằng số ID và mật khẩu của người sử dụng mà bạn đã
nhận được từ thầy hướng dẫn. Nếu máy không hỏi userid và password thì chỉ cần
gõ vào lệnh sau đây:
CONNECT TO aromadb

Thơng điệp sau báo cho bạn biết rằng đã tạo kết nối thành công:
Database Connection Information
Database server

= DB2/NT 9.0.0

SQL authorization ID = USERID
Local database alias = AROMADB



Khi đã kết nối được, bạn có thể bắt đầu sử dụng cơ sở dữ liệu.
Các thành phần SQL

SQL gồm có ba thành phần: ngơn ngữ xử lý dữ liệu (DML), ngôn ngữ định nghĩa
dữ liệu (DDL) và ngôn ngữ kiểm soát dữ liệu (DCL). DML gồm các lệnh
SELECT, UPDATE, INSERT, và DELETE; DDL gồm các lệnh CREATE,
ALTER, và DROP ; ngơn ngữ kiểm sốt gồm có các lệnh GRANT và REVOKE.

Thành
phần
SQL

Lệnh

Mô tả

SELECT

Thường dùng để hiển thị các kết
quả truy vấn.

UPDATE

Thường dùng để thay đổi các giá
trị hiện có trong các bảng.
UPDATE ảnh hưởng đến dữ liệu
tại mức cột.


INSERT

Thường dùng để thêm các hàng
mới vào các bảng. INSERT ảnh
hưởng đến dữ liệu tại mức hàng.

DELETE

Thường dùng để xóa các hàng khỏi
các bảng. DELETE ảnh hưởng đến
dữ liệu tại mức hàng.

CREATE
TABLE

Thường dùng để tạo ra các bảng
mới.

ALTER

Thường dùng để thêm, điều chỉnh

DML

DDL


TABLE

hay bỏ các cột.


CREATE
VIEW

Thường dùng để tạo ra các khung
nhìn mới.

CREATE
INDEX

Thường dùng để tạo ra chỉ số mới.

DROP
TABLE

Thường dùng để xóa các bảng.

GRANT

Thường dùng để cấp quyền cho
những người sử dụng cơ sở dữ
liệu.

DCL
Thường dùng để hủy bỏ quyền của
REVOKE những người sử dụng cơ sở dữ
liệu.

Các lưu ý về cách dùng
Các hướng dẫn trước đây trong loạt bài này đã bàn về lệnh SELECT. Đó là lệnh

được những người dùng cuối sử dụng nhiều nhất.
Một số lệnh, như CREATE, GRANT, và REVOKE, có thể cần phải có quyền
quản trị để thực hiện lệnh. Với tư cách là một người sử dụng, bạn có thể hay
khơng thể được phép chạy các lệnh nào đó.

Lệnh CREATE TABLE

Câu hỏi


Bộ phận tiếp thị đã bắt đầu giới thiệu một chương trình thành viên mới để làm
tăng doanh thu. Các khách hàng có thể mua một "Gold Card" (Thẻ Vàng) và được
hưởng chiết khấu, các quà tặng miễn phí và thông tin qua email về các hoạt động
khuyến mại khác nhau.
Mỗi cửa hàng được cung cấp các thẻ ghi số trước.
Tạo ra một bảng mới trong cơ sở dữ liệu Aroma được gọi là Gold để lưu giữ
thông tin về các khách hàng Gold Card. Nó cần phải có các cột để chứa các giá trị
như một số nhận dạng (ID) thẻ duy nhất, khóa cửa hàng, họ, tên, email, và trạng
thái.

Ví dụ truy vấn
CREATE TABLE aroma.gold
(card_id SMALLINT NOT NULL PRIMARY
KEY,
storekey INTEGER NOT NULL,
fname VARCHAR(20) NOT NULL,
lname VARCHAR(20) NOT NULL,
email VARCHAR(30),
status VARCHAR(10) NOT NULL,
FOREIGN KEY (storekey) REFERENCES

aroma.store (storekey));

Kết quả
Bạn có thể thực hiện một lệnh SELECT để xem kết quả của lệnh CREATE
TABLE .


SELECT * FROM aroma.gold;

Card_id Storekey Fname Lname Email Status

Cú pháp của lệnh CREATE TABLE
CREATE TABLE table_name
(column_name1 column_descrpition,
column_name2 column_descrpition,
column_name3 column_descrpition,
... ,
[FOREIGN KEY (column_name) REFERENCES table_name2
(column_name2)]
);

Về truy vấn
Truy vấn này sử dụng một lệnh CREATE TABLE để xây dựng một bảng có tên là
Gold trong cơ sở dữ liệu Aroma. Lệnh CREATE phải bắt đầu với từ CREATE. Từ
thứ hai nói cho DB2 biết sẽ tạo ra kiểu đối tượng nào (ở đây là bảng - table), còn
từ thứ ba đặt tên đối tượng (Gold).


Phần nằm trong dấu ngoặc đơn là vùng mô tả cột để định nghĩa cột. Mọi cột phải
được gán ba phần: tên cột, kiểu dữ liệu, và đặc tính NULL.

Mệnh đề PRIMARY KEY là tùy chọn. Nó bảo đảm chắc chắn rằng các giá trị
trong cột card_id là duy nhất -- hai thẻ khơng thể có cùng số ID.
Mệnh đề FOREIGN KEY cũng là tùy chọn. Nó liên kết cột storekey của bảng
Gold với cột storekey của bảng Store. Điều này bảo đảm chắc chắn rằng khóa cửa
hàng (store key) tồn tại và hợp lệ và hai cột chứa các giá trị có cùng kiểu dữ liệu.
Để biết chi tiết hơn về lệnh CREATE TABLE , hãy tìm nó trong Trung tâm thông
tin DB2 (xem Tài nguyên). Trung tâm được giới thiệu trong Phần 1 của loạt bài
này.

Tên cột
Các bảng và các cột phải theo các quy ước đặt tên của DB2:


Ký tự đầu tiên của tên bảng phải là một ký tự chữ cái hay một trong các ký
hiệu quốc gia. Chúng bao gồm các chữ cái A - Z, ký hiệu Đôla ($), ký hiệu
(@), và ký hiệu số (#).



Các ký tự tiếp theo có thể chứa một tổ hợp các ký tự chữ cái, các chữ số 09, và dấu gạch chân (_). Trong hầu hết các trường hợp, dấu gạch chân được
sử dụng như một dấu phân tách trực quan.



Chiều dài tên của bảng/ cột thay đổi tùy theo nền hệ thống. Xin vui lòng
xem SQL Reference Guide (Hướng dẫn Tham khảo SQL) về các đặc thù
riêng (xem Resources).

Kiểu dữ liệu
Một cột phải lưu trữ các giá trị của một kiểu dữ liệu cụ thể.


Numbers

Tất cả các số có một dấu và một độ chính xác. Độ chính


(Các số)

xác là số các bit hay các chữ số, trừ dấu. Các số gồm có
SMALLINT, INTEGER, BIGINT, REAL, DOUBLE và
DECIMALS.

Một chuỗi ký tự) Một chuỗi ký tự là một chuỗi các byte.
Chiều dài của chuỗi là số lượng các byte trong chuỗi. Nếu
Character
chiều dài bằng không, giá trị này được gọi là chuỗi rỗng.
string (Chuỗi
Các chuỗi ký tự gồm có chuỗi ký tự có chiều dài cố định
ký tự)
và chuỗi ký tự có chiều dài thay đổi (VARCHAR, LONG
VARCHAR, và CLOB).
Một chuỗi đồ họa Một chuỗi đồ họa là một chuỗi của dữ
Graphic
string (Chuỗi liệu ký tự hai byte. Chuỗi đồ họa gồm có chuỗi đồ họa có
chiều dài cố định và chuỗi đồ họa có chiều dài thay đổi.
đồ họa)

(Chuỗi nhị
phân)


Một chuỗi nhị phân Một chuỗi nhị phân là một chuỗi các
byte. Nó thường được dùng để chứa dữ liệu khơng truyền
thống, như các hình ảnh. Đối tượng lớn nhị phân (BLOB)
là một chuỗi nhị phân. Xem các đối tượng lớn (LOBs) để
biết thêm thông tin.

Datetime
values (Các
giá trị ngày
giờ)

Các giá trị kiểu ngày giờ biểu diễn Date (ngày tháng),
Time (thời giờ) và Timestamp (thời ấn) (là một chuỗi ký tự
14 ký số biểu diễn ngày tháng và thời giờ hợp lệ dưới dạng
yyyyxxddhhmmss). Các giá trị kiểu ngày giờ có thể được sử
dụng trong một số phép tốn số học và phép tốn chuỗi
nhất định và tương thích với một số chuỗi ký tự nhất định;
tuy nhiên, chúng không phải là chuỗi ký tự mà cũng không
là các số. Các giá trị kiểu ngày giờ gồm có Date,Time, và
Timestamp.

Giá trị null là một giá trị đặc biệt, khác với tất cả các giá trị
Null value
khác null. Nó có nghĩa là khơng có mặt bất kỳ một giá trị
(Giá trị null) nào khác tại cột đó trên dịng đang xét. Giá trị null tồn tại
với tất cả các kiểu dữ liệu.


XML


DB2 9 là máy chủ cơ sở dữ liệu lai đầu tiên trên thế giới
cho phép quản lý dữ liệu theo mơ hình quan hệ và mơ hình
pureXML. DB2 9 đã đưa ra cơ chế tối ưu để lưu tữ dữ liệu
XML cùng với cơ chế quan hệ vốn có của nó.

Để biết các chi tiết về các kiểu dữ liệu, xem lại Phần1 của loạt bài này.

Đặc tính NULL
Tất cả Card_id, storekey, fname, và lname được định nghĩa như giá trị không null
(NOT NULL) do chúng là các thông tin quan trọng mà mỗi hàng phải có. Đối với
bảng này, một hàng khơng có card_id là vơ nghĩa đối với ngôn ngữ định nghĩa dữ
liệu và ngôn ngữ kiểm sốt dữ liệu.
Nếu một đặc tính null bị bỏ qua, nó sẽ bằng NULL theo mặc định. Email được cho
phép là null do không phải tất cả khách hàng đều có e-mails. Họ vẫn có thể được
hưởng các chiết khấu và các quà tặng miễn phí.
Sau khi tất cả các cột đều được định nghĩa, các khóa chính và khố ngồi được
định nghĩa. Bạn khơng cần chỉ rõ khóa chính mà khóa ngồi tham chiếu đến bởi vì
DB2 biết về khóa chính từ thơng tin danh mục.
Trước khi chuyển sang phần tiếp theo, bạn cần vào Trung tâm thông tin DB2
(xemTài nguyên) và đọc toàn bộ tài liệu trực tuyến về lệnh CREATE TABLE.
Điều này sẽ giúp bạn trở nên quen thuộc với định dạng của tài liệu trợ giúp và xem
lại những thứ bạn vừa mới học được.

Lệnh INSERT

Câu hỏi


Một khách hàng vừa mới mua Thẻ Vàng (Gold Card) đầu tiên từ cửa hàng có khóa
cửa hàng (storekey) là 1. Tên của cô ấy là Ada Alexander, và e-mail của cơ ấy là


Với mục đích của bài tập này, giả thiết rằng cửa hàng này được gán các thẻ đánh
số từ 1 tới 100.
Nhập bản ghi của cô ấy vào trong bảng Gold với trạng thái được đặt là Active
(hoạt động).

Ví dụ truy vấn
INSERT INTO aroma.gold
VALUES(1, 1, 'Ada', 'Alexander',
'',
'Active');

Kết quả
SELECT * FROM aroma.gold;

Card_idStorekeyFname Lname
1

1

Ada

Email

Status



Cú pháp của lệnh INSERT



INSERT INTO table_name
VALUES(value1, value2, value3, ...);

Về truy vấn
Ví dụ truy vấn này minh họa một lệnh INSERT để thêm một hàng mới vào bảng
Gold. Chú ý rằng chuỗi các giá trị trong lệnh INSERT được xếp cùng tuần tự
giống như tuần tự các cột trong bảng. Cũng lưu ý rằng có một giá trị cho từng cột
trong bảng.
Nếu giá trị là kiểu ký tự, nó phải được đặt trong các dấu nháy đơn.
Để biết thêm thông tin về lệnh INSERT tìm kiếm trong Trung tâm thơng tin DB2
(xem Tài ngun).
Bạn cũng có thể chèn nhiều hàng vào trong một bảng, chỉ sử dụng một lệnh
INSERT.
Câu hỏi
Có nhiều khách hàng mua các Thẻ Vàng từ cửa hàng có storekey 1. Tên của họ là
Ben Bowman - , Cynthia Chen , David Doyle - , Emily Enright
- and Frank Freeman - Hãy
nhập các bản ghi của họ vào trong bảng Gold bằng chỉ một lệnh.

Ví dụ truy vấn
INSERT INTO aroma.gold
VALUES(2, 1, 'Ben', 'Bowman', '',
'Active'),
(3, 1, 'Cynthia', 'Chen', '', 'Active'),


(4, 1, 'David', 'Doyle', '', 'Active'),
(5, 1, 'Emily', 'Enright', '', 'Active'),
(6, 1, 'Frank', 'Freeman', '', 'Active');


Kết quả
SELECT * FROM aroma.gold;

Card_id Storekey Fname Lname

Email

Status

1

1

Ada

Alexander Active

2

1

Ben

Bowman

3

1


Cynthia Chen



Active

4

1

David Doyle



Active

5

1

Emily Enright



Active

6

1


Frank

Freeman

Active

Active


Lệnh UPDATE

Câu hỏi
Emily Enright mới kết hôn với Frank Freeman và thay đổi tên họ của cô ấy thành
'Freeman'. Hãy cập nhật bảng Gold để phản ánh sự thay đổi này.

Ví dụ truy vấn
UPDATE aroma.gold
SET lname = 'Freeman'
WHERE card_id = 5;

Kết quả
SELECT * FROM aroma.gold;

Card_idStorekey Fname Lname

Email

Status

1


1

Ada



2

1

Ben

Bowman Active

3

1

CynthiaChen



Active


4

1


David Doyle

Active

5

1

Emily Freeman

6

1

Frank Freeman Active

Active

Cú pháp của lệnh UPDATE
UPDATE table_name
SET column_name = new_value
[WHERE search_condition];

search_condition

Điều kiện này sẽ được đánh giá là đúng
hay sai.

Mệnh đề SET chỉ rõ các cột được cập nhật và các giá trị mới của chúng.
Mệnh đề WHERE là quan trọng. Nếu nó bị bỏ sót, tất cả các hàng trong bảng sẽ

được gán giá trị mới new_value tại vị trí cột column_name.

Về truy vấn
Trong ví dụ này, một mệnh đề WHERE được dùng để định hướng DB2 tới các
hàng bạn muốn cập nhật. Đây là chỗ mà mã nhận biết duy nhất trở nên rất quan
trọng. Bạn muốn chỉ UPDATE cho riêng một Emily Enright. Mặc dù bảng Gold
hiện tại rất nhỏ bé và chỉ chứa một Emily Enright, nhưng nó có thể phát triển


mạnh và chứa nhiều bản ghi có các tên và họ giống nhau. Vì vậy ln ln sử
dụng các mã nhận biết duy nhất là một thói quen an tồn.
Để biết thêm thơng tin về lệnh UPDATE tìm kiếm nó trong Trung tâm thông tin
DB2 (xem Tài nguyên).

Lệnh DELETE

Câu hỏi
Frank Freeman đã huỷ bỏ tư cách thành viên của mình. Hãy xóa bản ghi của anh
ấy khỏi cơ sở dữ liệu.

Ví dụ truy vấn
DELETE FROM aroma.gold
WHERE card_id = 6;

Kết quả
SELECT * FROM aroma.gold;

Card_idStorekey Fname Lname
1


1

Ada

Email

Status




2

1

Ben

Bowman Active

3

1

CynthiaChen



4

1


David Doyle

Active

5

1

Emily Freeman

Active

Active

Cú pháp của lệnh DELETE
DELETE FROM table_name
[WHERE search_condition];

search_condition Điều kiện này sẽ được đánh giá là đúng hay sai.

Mệnh đề WHERE là quan trọng. Nếu nó bị bỏ qua, tất cả các hàng trong bảng sẽ
bị xóa.

Về truy vấn
Ở đây lệnh DELETE loại bỏ Frank Freeman ra khỏi bảng Gold. Xin nhắc lại, việc
nêu ra một điều kiện chỉ rõ mã nhận diện duy nhất là rất quan trọng. Nếu điều kiện
chỉ rõ là "WHERE lname = 'Freeman'" thì cả hai bản ghi của Frank and Emily
Freeman sẽ bị xóa.



Để biết thêm thơng tin về lệnh DELETE, tìm kiếm nó trong Trung tâm thơng tin
DB2 ( xem Tài ngun).

Lệnh ALTER TABLE

Câu hỏi
Bộ phận tiếp thị có đề xuất ý tưởng khác. Những người trong số các khách hàng
Thẻ Vàng giới thiệu được năm người trở thành thành viên Thẻ Vàng sẽ giành
được một phiếu quà tặng miễn phí $20. Hãy thêm một cột có tiêu đề referrals vào
bảng Gold.

Ví dụ truy vấn
ALTER TABLE aroma.gold
ADD referrals SMALLINT;

Kết quả
SELECT * FROM aroma.gold;

Card_idStorekey Fname Lname

Email

StatusReferrals


1

1


Ada



2

1

Ben

Bowman Active

3

1

CynthiaChen



4

1

David Doyle

Active

5


1

Emily Freeman

Active

Active

Cú pháp của lệnh ALTER TABLE
ALTER TABLE table_name
ADD column_name column_definition;

Về truy vấn
Truy vấn thêm một cột mới có tên referrals, chứa các số nguyên dài nhất đến năm
chữ số.
Tất cả các trường của cột mới chứa các giá trị NULL.

Câu hỏi
Cột card_id ban đầu được tạo ra có kiểu là SMALLINT, hỗ trợ các số nguyên lên
đến năm chữ số. Ta đã nhận thấy rằng khi bảng Gold lớn lên, cột này có thể đạt tới
các số id lớn hơn. Hãy thay đổi cột card_id để chứa các giá trị kiểu INTEGER.


Kết quả -- Trước ALTER
Trước khi bạn thay đổi kiểu dữ liệu của card_id, dùng lệnh SELECT bảng các cột
hệ thống để xem loại dữ liệu hiện tại.
SELECT * FROM sysibm.syscolumns
WHERE tbname='GOLD'
AND tbcreator='AROMA';


NAME

TBNAMETBCREATORREMARKS COLTYPE NULLS...

CARD_ID

GOLD

AROMA

SMALLINTN

...

EMAIL

GOLD

AROMA

VARCHAR Y

...

FNAME

GOLD

AROMA


VARCHAR N

...

LNAME

GOLD

AROMA

VARCHAR N

...

REFERRALSGOLD

AROMA

SMALLINT Y

...

STATUS

GOLD

AROMA

VARCHAR N


...

STOREKEY GOLD

AROMA

INTEGER

...

Ví dụ truy vấn

N


ALTER TABLE aroma.gold
ALTER card_id SET data type INTEGER;

Kết quả -- Sau ALTER
Bảng các cột hệ thống bây giờ cho thấy kiểu dữ liệu sau lệnh ALTER.
SELECT * FROM sysibm.syscolumns
WHERE tbname='GOLD'
AND tbcreator='AROMA';

NAME

TBNAMETBCREATORREMARKS COLTYPE NULLS...

CARD_ID


GOLD

AROMA

INTEGER N

...

EMAIL

GOLD

AROMA

VARCHAR Y

...

FNAME

GOLD

AROMA

VARCHAR N

...

LNAME


GOLD

AROMA

VARCHAR N

...

REFERRALSGOLD

AROMA

SMALLINTY

...

STATUS

AROMA

VARCHAR N

...

GOLD


STOREKEY GOLD

AROMA


INTEGER N

...

Chú ý: Một số cột đã bị cắt đi cho vừa với trang.

Cú pháp của lệnh ALTER TABLE
ALTER TABLE table_name
ALTER column_name SET data type
new_definition;

Về truy vấn
Truy vấn thay đổi kiểu dữ liệu card_id thành INTEGER, để hỗ trợ các số nguyên
lên đến 10 chữ số.
Ngoài ra, chú ý rằng các giá trị NULL cho cột referrals mới được thêm vào là Y,
với ý nghĩa là có thể có các giá trị null. Chúng ta không chỉ rõ đặc tính null cho cột
khi tạo ra cột này.
Để biết chi tiết hơn về các bảng hệ thống, xem Phần 1 của loạt bài này:
"Metadata."

Câu hỏi
Hệ thống referral không mang lại những kết quả hợp lý hay ý kiến ủng hộ của
khách hàng. Công ty đã quyết định kết thúc chương trình. Hãy loại bỏ cột
referrals.

Ví dụ truy vấn


ALTER TABLE aroma.gold

DROP COLUMN referrals;

Kết quả
SELECT * FROM aroma.gold;

Card_idStorekey Fname Lname

Email

Status

1

1

Ada



2

1

Ben

Bowman Active

3

1


CynthiaChen



4

1

David Doyle

Active

5

1

Emily Freeman

Cú pháp của lệnh ALTER TABLE
ALTER TABLE table_name

Active

Active


DROP COLUMN colum_name;

Về truy vấn

Truy vấn loại bỏ cột có tên referrals.
Để biết thêm thông tin về lệnh ALTER TABLE, tìm kiếm nó trong Trung tâm
thơng tin DB2 ( xem Resources).

Lệnh CREATE VIEW

Câu hỏi
Để bảo vệ sự riêng tư của các khách hàng, những người sử dụng cơ sở dữ liệu phải
không xem được các cột fname, lname và email. Hãy tạo ra một khung nhìn
(view) của bảng Gold chỉ chứa các cột card_id, storekey, và trạng thái.

Ví dụ truy vấn
CREATE VIEW aroma.gold_public(card_id,
storekey, status) AS
SELECT card_id, storekey, status
FROM aroma.gold;

Kết quả
SELECT * FROM aroma.gold_public;


Card_id

Storekey

Status

1

1


Active

2

1

Active

3

1

Active

4

1

Active

5

1

Active

Cú pháp của lệnh CREATE VIEW
CREATE VIEW view_name(view_column_list)
AS

SELECT table_column_list
FROM table_name;

Một danh sách các tên cột cho khung nhìn. Các tên cột áp dụng
tương ứng một - một với table_column_list của lệnh SELECT.
view_column_list
Nếu các tên cột không được chỉ rõ, vùng nhìn thấy sử dụng các
tên giống như các cột của bảng kết quả của lệnh SELECT .


×