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

Chuẩn bị cho kỳ thi cơ bản về DB2 9, Phần 5: Làm việc với các đối tượng của DB2 doc

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 (1.94 MB, 39 trang )

Chuẩn bị cho kỳ thi cơ bản về DB2 9, Phần 5: Làm việc
với các đối tượng của DB2
Hana Curtis, Chuyên gia, IBM Canada
Tóm tắt: Bài viết này thảo luận về những kiểu dữ liệu, bảng, khung nhìn (view),
và chỉ mục được định nghĩa bởi DB2 9. Nó giải thích những đặc tính của những
đối tượng trên, và làm cách nào để tạo ra và xử lí chúng sử dụng Ngôn ngữ truy
vấn cấu trúc(SQL), và chúng có thể được sử dụng trong ứng dụng như thế nào. Bài
viết này là bài thứ năm trong một loạt bảy bài viết mà bạn có thể sử dụng để chuẩn
bị cho kỳ thi 730, lấy chứng chỉ DB2 9 cơ bản.
Trước khi bạn bắt đầu
Về loạt bài này
Bạn đã nghĩ tới việc có một chứng chỉ cơ bản của DB2 (Bài thi số 730)? Nếu bạn
nghĩ như thế thì bạn đã đến đúng chỗ. Đây là loạt bảy bài hướng dẫn chuẩn bị cho
kỳ thi chứng chỉ DB2 bao hàm tất cả những kiến thức cơ bản những chủ đề bạn
cần hiểu trước khi bạn đọc những câu hỏi sát hạch đầu tiên. Ngay cả khi bạn
không có kế hoạch giành được chứng chỉ đi chăng nữa, những bài viết này cũng là
nơi tuyệt vời để có được kiến thức để biết DB2 9 là gì.


Về bài viết này
Những kiến thức trong bài viết này chủ yếu về những đối tượng trong mục 5 của
bài thi, có tựa đề là "Làm việc với đối tượng DB2". Bạn có thể thấy những mục
đích này tại:
Những chủ đề trong bài viết này gồm có:
 Giới thiệu về những kiểu dữ liệu có sẵn trong DB2, và việc sử dụng khi
định nghĩa một bảng. (Xử lí khác nhau đối với các loại dữ liệu khác nhau,
xem bài viết thứ tư trong loạt bài viết này).
 Giới thiệu về những kiểu dữ liệu nâng cao.
 Bảng, khung nhìn, và chỉ mục.
 Giải thích về các kiểu ràng buộc dữ liệu và cách sử dụng chúng.



Các mục đích
Sau khi hoàn thành bài viết này, các bạn có thể:
 Hiểu được những kiểu dữ liệu cơ bản và nâng cao
 Tạo ra các bảng, các khung nhìn, và chỉ số trong cơ sở dữ liệu DB2
 Hiểu được những đặc tính và cách dùng của những ràng buộc duy nhất,
ràng buộc về toàn vẹn, và ràng buộc kiểm tra bảng
 Sử dụng khung nhìn để giới hạn khả năng truy cập dữ liệu
 Hiểu được những đặc tính của chỉ mục


Yêu cầu hệ thống
Bạn không cần một bản sao chép của DB2 để hoàn thành bài viết này. Tuy nhiên,
nếu bạn thích, bạn có thể tải xuống phiên bản thử nghiệm của IBM DB2 9 để làm
việc với bài viết này.

Kiểu dữ liệu
DB2 cung cấp sự phân loại kiểu dữ liệu một cách linh động và phong phú. DB2
bắt đầu với những kiểu dữ liệu cơ bản như INTEGER, CHAR, và DATE. Nó cũng
bao gồm những khả năng để tạo ra những loại dữ liệu do người dùng định nghĩa
(UDTs) do vậy bạn có thể tạo ra những cấu trúc dữ liệu mới, phức tạp phù hợp với
môi trường lập trình phức tạp ngày nay. Việc chọn kiểu dữ liệu để sử dụng phụ
thuộc vào kiểu và phạm vi thông tin chứa trong cột.
Có bốn lớp dữ liệu có sẵn: Số, Chuỗi ký tự, thời gian, và XML.
Những kiểu dữ liệu người dùng định nghĩa được phân loại như: riêng biệt, có cấu
trúc và tham chiếu.
Kiểu dữ liệu số

Ở đây có ba phạm trù của kiểu dữ liệu số, như trong hình trên. Mỗi kiểu dữ liệu có
một phạm vi của dữ liệu mà chúng có khả năng lưu trữ.

 Integer (Số nguyên): SMALLINT, INTEGER, và BIGINT được sử dụng để
chứa số nguyên. Ví dụ, đếm số thiết bị trong bản kiểm kê có thể được định
nghĩa như là INTEGER. SMALLINT có thể chứa được những số nguyên
trong phạm vi từ -32,768 đến 32,767, với kích thước 2 bytes. INTEGER có
thể chứa được những số nguyên từ -2,147,483,648 đến 2,147,483,647, với
kích thước 4 bytes. BIGINT có thể chứa được những số nguyên từ -
9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807, với kích thước
8 bytes.
 Decimal (Số thực): DECIMAL được sử dụng để chứa những số dưới dạng
số thập phân. Để định nghĩa kiểu dữ liệu này, chỉ rõ một độ chính xác (p),
xác định tổng các chữ số và một phạm vi (s), xác định số các chữ số thập
phân. Một cột định nghĩa bởi DECIMAL(10,2) có thể giữ giá trị tiền tệ lên
tới 99999999.99 đô la. Số lượng yêu cầu chứa trong cơ sở dữ liệu phụ
thuộc vào sự chính xác và được tính bởi công thức p/2 +1. Do vậy,
DECIMAL(10,2) đòi hỏi 10/2 + 1 hoặc là 6 bytes.
 Dấu phẩy động: REAL và DOUBLE được sử dụng để chứa những số xấp
xỉ. Ví dụ, những phép đo chính xác rất lớn hoặc rất nhỏ có thể được định
nghĩa như là REAL. REAL có thể được định nghĩa với độ dài từ 1 đến 24
số và cần 4 bytes để chứa. DOUBLE có thể được định nghĩa với độ dài từ
25 đến 53 số và cần 8 bytes để chứa. FLOAT có thể được sử dụng như một
kiểu tương tự cho kiểu REAL hoặc DOUBLE.


Kiểu dữ liệu chuỗi ký tự (String)

DB2 cung cấp rất nhiều kiểu dữ liệu cho việc lưu trữ dữ liệu hoặc xâu ký tự, giống
như hình vẽ trên. Chọn một kiểu dữ liệu dựa vào kích cỡ của xâu ký tự bạn sẽ
chứa đựng và dữ liệu gì sẽ được chứa trong xâu ký tự.
Những kiểu dữ liệu dưới đây được sử dụng để chứa xâu các ký tự đơn (gồm từng
ký tự):

 CHAR hoặc CHARACTER được sử dụng để chứa chuỗi ký tự có độ dài cố
định lên tới 254 bytes. Ví dụ, một đặc tính sản xuất có thể được xác định
bởi một chuỗi 8 ký tự, và do vậy việc chứa chuỗi này trong cơ sở dữ liệu
như là một cột của CHAR(8).
 VARCHAR được sử dụng để chứa xâu ký tự có độ dài thay đổi. Ví dụ, đặc
tính sản xuất liên quan đến một số thành phần có độ dài khác nhau, và do
đó chứa những chuỗi này như là một cột của VARCHAR(100). Độ dài lớn
nhất của một cột VARCHAR là 32,672 bytes. Trong cơ sở dữ liệu, dữ liệu
VARCHAR chỉ chiếm đúng số bytes nó yêu cầu.
Những loại dữ liệu dưới đây được sử dụng để chứa xâu ký tự hai byte:
 GRAPHIC được sử dụng để chứa những xâu ký tự hai byte có độ dài cố
định. Độ dài lớn nhất của một cột GRAPHIC là 127 ký tự.
 VARGRAPHIC được sử dụng để chứa những xâu ký tự hai byte có độ dài
thay đổi. Độ dài lớn nhất của cột VARGRAPHIC là 16,336 ký tự
DB2 cũng cung cấp những kiểu dữ liệu để chứa những xâu ký tự rất dài. Tất cả
những kiểu dữ liệu này có cùng đặc tính. Thứ nhất, dữ liệu không được chứa về
mặt vật lý với hàng dữ liệu trong cơ sở dữ liệu, nó có nghĩa là việc xử lí thêm
được yêu cầu để truy nhập vào dữ liệu này. Những kiểu dữ liệu dài có thể được
định nghĩa độ dài lên tới 2 GB. Tuy nhiên, chỉ có không gian được yêu cầu là thực
sự được sử dụng. Những kiểu dữ liệu dài:
 LONG VARCHAR
 CLOB (character large object) - đối tượng ký tự lớn
 LONG VARGRAPHIC
 DBCLOB (double-byte character large object) - đối tượng ký tự lớn có hai
byte
 BLOB (binary large object) - đối tượng ký tự lớn kiểu nhị phân


Kiểu dữ liệu thời gian
DB2 cung cấp ba kiểu dữ liệu để lưu trữ ngày và giờ:

 DATE
 TIME
 TIMESTAMP
Những giá trị của những liệu dữ liệu này được lưu trữ trong cơ sở dữ liệu bằng
định dạng nội tại; Tuy nhiên, những ứng dụng có thể xử lí chúng như là những
chuỗi ký tự. Khi một trong số những kiểu dữ liệu này được lấy ra, nó được coi như
là một chuỗi ký tự. Chứa đựng giá trị trong dấu ngoặc kép khi cập nhật những liệu
dữ liệu này.
DB2 cung cấp những hàm có sẵn để xử lí những giá trị thời gian. Ví dụ, bạn có thể
xác định ngày của một tuần sử dụng DAYOFWEEK hoặc hàm DAYNAME. Việc
sử dụng hàm DAYS để tính toán khoảng cách giữa hai ngày. DB2 cũng cung cấp
những bản đăng ký đặc biệt để tạo ra ngày, giờ hiện tại hoặc dấu thời gian
(timestamp) dựa vào đồng hồ chỉ thời gian của ngày. Ví dụ, CURRENT DATE trả
về một chuỗi đại diện cho ngày hiện tại của hệ thống.
Định dạng của giá trị thời gian và ngày phụ thuộc vào mã từng quốc gia của cơ sở
dữ liệu, được đặc tả khi tạo ra cơ sở dữ liệu. Ở đây có nhiều định dạng có sẵn:
ISO, USA, EUR, và JIS. Ví dụ, nếu cơ sở dữ liệu của bạn sử dụng định dạng USA,
định dạng của ngày sẽ là mm/dd/yyyy. Bạn có thể thay đổi định dạng bằng việc sử
dụng DATETIME tùy chọn của câu lệnh BIND lệnh khi tạo ứng dụng.
Ở đây có một định dạng đơn cho kiểu dữ liệu TIMESTAMP. Định dạng này là
một chuỗi có dạng yyyy-mm-dd-hh.mm.ss.nnnnnn.


Kiểu dữ liệu XML
DB2 cung cấp kiểu dữ liệu XML để lưu trữ những tài liệu XML phổ biến.
Những giá trị trong những cột XML được lưu trữ trong một sự miêu tả nội tại khác
với những định dạng xâu ký tự. Để lưu trữ dữ liệu XML vào cột dữ liệu kiểu
XML, dùng hàm chuyển đổi dữ liệu XMLPARSE. Tất cả giá trị kiểu XML có thể
được chuyển đổi vào trong một chuỗi giá trị đã được phát ra đang miêu tả tài liệu
XML sử dụng hàm XMLSERIALIZE. DB2 cung cấp nhiều hàm sẵn có khác để xử

lí dữ liệu XML.


Kiểu dữ liệu người dùng định nghĩa
DB2 cho phép bạn định nghĩa kiểu dữ liệu phù hợp với ứng dụng của bạn. Ở đây
có ba kiểu dữ liệu người dùng định nghĩa:
 Kiểu người dùng định nghĩa riêng biệt: Định nghĩa một kiểu dữ liệu mới
dựa trên những kiểu sẵn có. Kiểu dữ liệu mới này có đặc tính tương tự như
những kiểu có sẵn, nhưng bạn có thể sử dụng nó để chắc chắn rằng chỉ các
giá trị cùng kiểu được so sánh với nhau. Ví dụ, bạn có thể định nghĩa ra một
kiểu đô la của Canada (CANDOL) và một kiểu đô la của Mỹ (USADOL)
cả hai đều dựa vào kiểu số thập phân DECIMAL(10,2). Cả hai kiểu dựa
vào cùng kiểu dữ liệu sẵn có, nhưng bạn sẽ không có khả năng so sánh
chúng trừ khi một hàm chuyển đổi được sử dụng. Câu lệnh dưới đây
CREATE TYPE tạo ra những kiểu dữ liệu CANDOL và USADOL:
CREATE DISTINCT TYPE CANDOL AS DECIMAL(10,2) WITH
COMPARISONS
CREATE DISTINCT TYPE USADOL AS DECIMAL(10,2) WITH
COMPARISONS

DB2 tự động tạo ra những hàm để thực hiện gộp giữa kiểu dữ liệu cơ bản
và kiểu riêng biệt, và toán tử so sánh để so sánh các thí dụ của kiểu riêng
biệt. Những câu lệnh dưới đây trình bày cách làm thế nào để tạo ra một
bảng với một cột là kiểu CANDOL và chèn dữ liệu vào bảng sử dụng hàm
gộp CANDOL:
CREATE TABLE ITEMs (ITEMID CHAR(5), PRICE CANDOL)
INSERT INTO ITEMs VALUES('ABC11',CANDOL(30.50))


 Kiểu cấu trúc người dùng định nghĩa: Tạo ra một kiểu chứa đựng nhiều cột

của những kiểu dữ liệu sẵn có. Sau đó, sử dụng cấu trúc này khi tạo bảng.
Ví dụ, bạn có thể tạo ra kiểu cấu trúc có tên là ADDRESS chứa dữ liệu về
số đường phố, tên đường phố, thành phố, Sau đó bạn có thể sử dụng kiểu
dữ liệu này khi định nghĩa những bảng khác, như là nhân viên hoặc nhà
cung cấp, bởi vì cả hai kiểu dữ liệu này đều cần. Những kiểu dữ liệu cấu
trúc cũng có thể chứa các kiểu cấu trúc con. Kiểu này cho phép bạn lưu trữ
những đối tượng mà phụ thuộc theo cấu trúc phân cấp trong cơ sở dữ liệu.
 Kiểu dữ liệu tham chiếu người dùng định nghĩa: Khi sử dụng kiểu dữ liệu
có cấu trúc, bạn có thể định nghĩa tham chiếu đến những hàng trong bảng
khác sử dụng kiểu tham chiếu. Những kiểu tham chiếu này dường như
tương tự với ép kiểu cho tham chiếu; Tuy nhiên, chúng không ép buộc mối
quan hệ giữa các bảng. Tham chiếu trong bảng cho phép bạn định rõ những
truy vấn bằng nhiều cách khác nhau.
Những kiểu dữ liệu tham chiếu và có cấu trúc do người dùng định nghĩa là đề tài
đầu tiên; thông tin hiện tại ở đây chỉ xem như một lời giới thiệu những kiểu dữ
liệu này.


Mở rộng DB2
Những phần mở rộng của DB2 hỗ trợ những kiểu dữ liệu mới, phức tạp. Chúng
được đóng gói riêng lẻ từ mã máy chủ DB2 và được cài trên máy chủ và trong mỗi
cơ sở dữ liệu sử dụng kiểu dữ liệu này.
Có nhiều phần mở rộng DB2 sẵn có của IBM và những nhà cung cấp phần mềm
độc lập. Bốn chức năng mở rộng đầu tiên cung cấp bởi IBM hỗ trợ việc lưu trữ âm
thanh, video, hình ảnh và dữ liệu văn bản. Ví dụ, sử dụng chức năng mở rộng hỗ
trợ hình ảnh của DB2 lưu trữ một ảnh của quyển sách và chức năng mở rộng hỗ
trợ văn bản để lưu trữ văn bản của một quyển sách. Hiện tại, có rất nhiều chức
năng mở rộng sẵn có khác. Chức năng mở rộng hỗ trợ không gian DB2 có thể sử
dụng để lưu trữ và phân tích dữ liệu không gian và chức năng mở rộng XML cho
việc quản lý dữ liệu XML.

Những chức năng mở rộng của DB2 được thực thi bằng việc sử dụng các đặc tính
kiểu những kiểu người dùng định nghĩa và các chức năng người dùng định nghĩa
(UDFs). Mỗi chức năng mở rộng có thể gồm một hay nhiều UDTs, UDFs được
thực thi trên các công cụ người dùng định nghĩa (UDT), các giao diện lập trình
ứng dụng (APIs), và cả những công cụ khác. Ví dụ, chức năng mở rộng hình ảnh
bao gồm:
 Kiểu DB2IMAGE do người dùng định nghĩa
 Những hàm do người dùng định nghĩa (UDFs) để chèn và lấy dữ liệu từ
một cột kiểu DB2IMAGE
 Giao diện lập trình ứng dụng (APIs) để tìm kiếm dựa trên những đặc tính
của hình ảnh
Trước khi sử dụng những loại dữ liệu này, cài đặt những hỗ trợ mở rộng vào cơ sở
dữ liệu. Tiến trình cài đặt cho từng chức năng mở rộng xác định những UDTs và
UDFs cần thiết vào cơ sở dữ liệu. Khi bạn thực hiện xong, bạn có thể sử dụng
UDTs khi định nghĩa bảng và sử dụng UDFs khi làm việc với dữ liệu. (Để hiểu
hơn về những phần mở rộng này, xem ở bài viết đầu tiên trong loạt bài này.)
Kiểu dữ liệu XML, là một đặc tính mới ở DB2 9, cung cấp những đặc tính nâng
cao cho việc xử lí những tài liệu XML. Những ứng dụng và dữ liệu sử dụng chức
năng mở rộng XML phải được chuyển hướng để sử dụng hỗ trợ XML nội tại trong
DB2.

Các bảng
Tất cả dữ liệu được chứa trong bảng trong cơ sở dữ liệu. Một bảng bao gồm một
hoặc nhiều cột của nhiều loại dữ liệu. Dữ liệu được chứa trong những hàng hoặc
bản ghi.
Bảng được định nghĩa sử dụng CREATE TABLE câu lệnh SQL. DB2 cũng cung
cấp một công cụ đồ họa (GUI tool), Trung tâm điều khiển DB2 (DB2 Control
Center), để tạo ra những bảng dựa trên những thông tin bạn mô tả. Nó cũng sinh ra
CREATE TABLE câu lệnh SQL, được sử dụng trong lập trình kịch bản và lập
trình ứng dụng sau này.

Một cơ sở dữ liệu có tập hợp các bảng, được gọi là bảng liệt kê hệ thống, lưu giữ
thông tin về tất cả những đối tượng trong cơ sở dữ liệu. DB2 cung cấp những
khung nhìn (views) cho bảng liệt kê hệ thống. Cửa sổ quan sát SYSCAT.TABLES
chứa một hàng cho mỗi bảng được định nghĩa trong cơ sở dữ liệu.
SYSCAT.COLUMNS chứa một hàng cho mỗi cột của mỗi bảng trong cơ sở dữ
liệu. Nhìn vào những khung nhìn sử dụng SELECT câu lệnh này, giống bất kì
bảng nào khác trong cơ sở dữ liệu; tuy nhiên, bạn không thể sửa đổi dữ liệu bằng
việc sử dụng những câu lệnh INSERT, UPDATE, hoặc DELETE. Những bảng
được cập nhật tự động như là kết quả của những câu lệnh định nghĩa dữ liệu
(DDL), giống như CREATE, và những thực thi khác, giống như RUNSTATS.
Tạo bảng
Sử dụng câu lệnh SQL CREATE TABLE để định nghĩa một bảng trong cơ sở dữ
liệu. Câu lệnh dưới tạo ra một bảng đơn giản tên là BOOKS chứa ba cột:
CREATE TABLE BOOKS ( BOOKID INTEGER,
BOOKNAME VARCHAR(100),
ISBN CHAR(10) )


Bạn có thể sử dụng câu lệnh SQL CREATE TABLE để tạo một bảng giống như
những bảng hoặc khung nhìn khác trong cơ sở dữ liệu:
CREATE TABLE MYBOOKS LIKE BOOKS

Câu lệnh này tạo ra một bảng có cùng số cột như bảng hoặc khung nhìn gốc.
Những cột của bảng mới có cùng tên, kiểu dữ liệu, và những thuộc tính có hiệu lực
như những cột trong bảng gốc. Bạn có thể xác định rõ những mệnh đề cho phép
sao chép những đặc tính, gồm các cột mặc định và các thuộc tính xác định.
Có rất nhiều tùy chọn sẵn có cho câu lệnh CREATE TABLE (chúng được miêu tả
trong những phần sau như là khái niệm mới). Chi tiết của câu lệnh SQL CREATE
TABLE có thể được tìm thấy trong tài liệu tham khảo SQL (xem tại Tài nguyên).
Khi bạn đã tạo xong một bảng, có rất nhiều cách để đưa dữ liệu vào bảng. Câu

lệnh INSERT cho phép bạn chèn một hoặc nhiều hàng của dữ liệu vào bảng. DB2
cũng cung cấp những tiện ích để chèn một lượng lớn dữ liệu từ tệp. Tiện ích
IMPORT chèn nhiều hàng sử dụng câu lệnh INSERT . Nó được thiết kế cho việc
đưa những lượng nhỏ dữ liệu vào cơ sở dữ liệu. Tiện ích LOAD, hướng tới việc
nạp lượng lớn dữ liệu, chèn những hàng trực tiếp trên trang dữ liệu vào cơ sở dữ
liệu và nhanh hơn nhiều tiện ích IMPORT.


Lưu trữ các bảng trong cơ sở dữ liệu
Bảng được chứa trong cơ sở dữ liệu trong tablespace (các không gian bảng). Các
không gian tên được cấp không gian vật lí để chứa chúng. Tạo không gian bảng
trước khi tạo bảng.
Khi bạn tạo ra một bảng, bạn có thể để DB2 mặc định đặt bảng vào trong một
không gian bảng mặc định hoặc xác định không gian bảng bạn miêu tả. Câu lệnh
sau CREATE TABLE đặt bảng BOOKS vào không gian bảng BOOKINFO:
CREATE TABLE BOOKS ( BOOKID INTEGER,
BOOKNAME VARCHAR(100),
ISBN CHAR(10) )
IN BOOKINFO

Mặc dù không gian bảng không được đề cập chi tiết ở đây, nhưng nó quan trọng
để hiểu được rằng việc định nghĩa không gian bảng thích hợp ảnh hưởng tới việc
thực thi và duy trì cơ sở dữ liệu. Để có thêm thông tin về không gian bảng, kiểm
tra bài viết thứ hai trong loạt bài viết này.


Thay đổi bảng
Sử dụng ALTER TABLE câu lệnh SQL để thay đổi đặc tính của bảng. Ví dụ, bạn
có thể thêm hoặc xóa:
 Một cột

 Một khóa chính
 Một hoặc nhiều ràng buộc duy nhất hay ràng buộc tham chiếu
 Một hoặc nhiều ràng buộc kiểm tra
Câu lệnh sau thêm một cột tên là BOOKTYPE tới bảng BOOK:
ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1)

Bạn có thể thay đổi các đặc tính của cột trong bảng:
 Những thuộc tính xác định của cột
 Độ dài của cột kiểu xâu ký tự
 Kiểu dữ liệu của cột
 Khả năng mang giá trị rộng của cột
 Ràng buộc của cột
Ở đây có một số giới hạn của việc thay đổi cột:
 Khi thay đổi độ dài của cột kiểu string, bạn có thể chỉ tăng độ dài của nó.
 Khi thay đổi kiểu dữ liệu của cột, kiểu mới phải phù hợp với những dữ liệu
đang tồn tại. Ví dụ, bạn có thể chuyển đổi cột kiểu CHAR thành cột kiểu
VARCHAR, nhưng không thể chuyển chúng thành GRAPHIC hoặc kiểu số
được. Những cột kiểu số có thể chuyển đổi thành bất kỳ loại kiểu số nào
miễn là kiểu dữ liệu mới đủ lớn để chứa giá trị. Ví dụ, chuyển đổi cột kiểu
INTEGER thành BIGINT, nhưng, một kiểu DECIMAL(10,2) không thể
chuyển thành kiểu SMALLINT.
 Những xâu có độ dài cố định có thể chuyển thành xâu có độ dài thay đổi và
những xâu có độ dài thay đổi có thể chuyển thành những xâu có độ dài cố
định. Ví dụ, CHAR(100) có thể chuyển thành VARCHAR(150). Những
hạn chế tương tự cũng được áp dụng cho xâu graphic.
Câu lệnh sau thay đổi kiểu dữ liệu (DATATYPE) của cột BOOKNAME từ
VARCHAR(100) thành VARCHAR(200) và thay đổi giá trị null của cột ISBN
thành giá trị khác null:
ALTER TABLE BOOKS ALTER BOOKNAME SET DATA TYPE
VARCHAR(200) ALTER ISBN SET NOT NULL


Một số đặc tính nhất định của bảng không thể được chuyển đổi. Ví dụ, bạn không
thể thay đổi không gian bảng chứa bảng đó, trật tự của cột, hoặc không thể thay
đổi kiểu của một vài cột. Để thay đổi những đặc tính này, lưu dữ liệu bảng, xóa
bảng, và tạo lại nó.


Xóa bảng
Câu lệnh DROP TABLE xóa bảng từ cơ sở dữ liệu, xóa dữ liệu và định nghĩa
bảng. Nếu có những chỉ số hoặc những ràng buộc được định nghĩa trên bảng,
chúng cũng được xóa luôn.
Câu lệnh dưới đây DROP TABLE xóa bảng BOOK từ cơ sở dữ liệu:
DROP TABLE BOOKS



Những tùy chọn của cột NOT NULL, DEFAULT, và GENERATED
Những cột của bảng được đặc tả trong câu lệnh CREATE TABLE bởi một cột tên
và kiểu dữ liệu. Những cột có thể có thêm những mệnh đề giới hạn dữ liệu trong
cột.
Mặc định, một cột cho phép giá trị null. Nếu bạn không muốn cho phép null, miêu
tả mệnh đề NOT NULL cho cột. Định rõ giá trị mặc định sử dụng mệnh đề WITH
DEFAULT và một giá trị mặc định. Câu lệnh dưới CREATE TABLE tạo ra một
bảng tên là BOOKS, trong đó cột BOOKID không cho phép null và giá trị mặc
định cho BOOKNAME là TBD:
CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL,
BOOKNAME VARCHAR(100) WITH DEFAULT
'TBD',
ISBN CHAR(10) )


Trong bảng BOOKS, BOOKID là một số duy nhất được gán cho mỗi quyển sách.
Tốt hơn cho ứng dụng phát ra mã nhận dạng, bạn có thể định rõ rằng DB2 phát ra
BOOKID sử dụng mệnh đề GENERATED ALWAYS AS IDENTITY:
CREATE TABLE BOOKS ( BOOKID INTEGER NOT NULL GENERATED
ALWAYS AS IDENTITY
(START WITH 1, INCREMENT BY 1),
BOOKNAME VARCHAR(100) WITH DEFAULT 'TBD',
ISBN CHAR(10) )

GENERATED ALWAYS AS IDENTITY tạo ra BOOKID cho mỗi bản ghi. Giá
trị được phát ra đầu tiên là 1 và tiếp theo được tăng thêm mỗi lần một đơn vị.
Cũng sử dụng tùy chọn GENERATED ALWAYS của DB2 để tính toán giá trị của
cột một cách tự động. Ví dụ bên dưới định nghĩa một bảng tên là AUTHORS, với
các cột FICTIONBOOKS và NONFICTIONBOOKS chứa số lượng sách viễn
tưởng và không viễn tưởng riêng biệt. Cột TOTALBOOKS được tính toán bằng
việc cộng cột FICTIONBOOKS và NONFICTIONBOOKS:
CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL
PRIMARY KEY,
LNAME VARCHAR(100),
FNAME VARCHAR(100),
FICTIONBOOKS INTEGER,
NONFICTIONBOOKS INTEGER,
TOTALBOOKS INTEGER GENERATED ALWAYS
AS (FICTIONBOOKS + NONFICTIONBOOKS)
)



Các ràng buộc
DB2 cung cấp nhiều cách để điều khiển cách dữ liệu được chứa trong cột. Những

đặc tính này được gọi là ràng buộc hoặc các luật cái mà người quản lý cơ sở dữ
liệu áp đặt trên cột hoặc tập các cột dữ liệu.
DB2 cung cấp ba kiểu ràng buộc: unique (duy nhất), referential integrity (toàn vẹn
tham chiếu), và table check (kiểm tra bảng).
Những đoạn dưới đây cung cấp sự miêu tả chi tiết mỗi kiểu ràng buộc.
Ràng buộc duy nhất (Unique constraints)
Ràng buộc duy nhất được sử dụng để đảm bảo rằng những giá trị trong cột là duy
nhất. Ràng buộc duy nhất có thể được định nghĩa dựa vào một hay nhiều cột. Mỗi
cột có ràng buộc duy nhất phải được định nghĩa NOT NULL.
Những ràng buộc duy nhất có thể được định nghĩa như là PRIMARY KEY (khóa
chính) hoặc UNIQUE (Duy nhất). Chúng được định nghĩa khi bảng được tạo như
là một phần của câu lệnh SQL CREATE TABLE hoặc add thêm sau khi bảng
được tạo ra bằng câu lệnh ALTER TABLE.
Khi nào bạn định nghĩa kiểu PRIMARY KEY, và khi nào bạn định nghĩa kiểu
UNIQUE? Nó còn phụ thuộc vào bản chất của dữ liệu. Trong ví dụ trước, bảng
BOOKS có cột BOOKID để nhận dạng duy nhất một cuốn sách. Giá trị này cũng
được sử dụng trong những bảng khác chứa thông tin liên quan tới cuốn sách đó.
Trong trường hợp này, bạn sẽ định nghĩa BOOKID như là khóa chính. DB2 chỉ
cho phép một khóa chính duy nhất được định nghĩa trên một bảng.
Cột số ISBN cần phải là duy nhất nhưng không phải là giá trị được tham chiếu
cách khác trong cơ sở dữ liệu. Trong trường hợp này, cột ISBN được định nghĩa là
UNIQUE:
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,
BOOKNAME VARCHAR(100),
ISBN CHAR(10) NOT NULL CONSTRAINT BOOKSISBN UNIQUE )


Từ khóa CONSTRAINT để bạn định rõ tên cho ràng buộc. Trong ví dụ này, tên
của ràng buộc duy nhất là BOOKSISBN. Sử dụng tên này trong câu lệnh ALTER
TABLE nếu bạn muốn xóa đặc tính ràng buộc.

DB2 để bạn định nghĩa một khóa chính duy nhất trên một bảng; tuy nhiên, bạn có
thể định nghĩa nhiều ràng buộc duy nhất.
Bất kỳ khi nào bạn định nghĩa một Khóa chính hoặc duy nhất ràng buộc trên một
cột, DB2 tạo ra một chỉ số duy nhất để áp đặt sự duy nhất trên cột. DB2 không để
bạn tạo nhiều hơn một chỉ số duy nhất trên những cột giống nhau. Do đó, bạn
không thể định nghĩa một khóa chính và một ràng buộc duy nhất trên những cột
giống nhau. Ví dụ, cả hai câu lệnh dưới đây là sai vì Khóa chính đã tồn tại:
ALTER TABLE BOOKS ADD CONSTRAINT UNIQUE (BOOKID)

CREATE UNIQUE INDEX IBOOKS ON BOOKS (BOOKID)



Ràng buộc toàn vẹn dữ liệu
Ràng buộc toàn vẹn dữ liệu được sử dụng để định nghĩa những mối quan hệ giữa
các bảng và đảm bảo rằng những mối quan hệ này vẫn còn được duy trì. Giả sử
bạn có một bảng AUTHORS lưu thông tin về tác giả và bảng BOOKS khác liệt kê
danh sách những quyển sách mà tác giả viết. Có một mối quan hệ giữa bảng
AUTHORS và bảng BOOKS mỗi cuốn sách có một tác giả và tác giả đó phải
tồn tại trong bảng AUTHORS. Mỗi tác giả có một id duy nhất được chứa trong cột
AUTHORID. AUTHORID được sử dụng trong bảng BOOKS để xác định tác giả
cho mỗi cuốn sách. Để định nghĩa mối quan hệ này, định nghĩa cột AUTHORID
của bảng AUTHORS như là khóa chính và sau đó định nghĩa khóa ngoại lai
(Foreign key) trên bảng BOOKS để thiết lập mối quan hệ với cột AUTHORID
trong bảng AUTHORS:
CREATE TABLE AUTHORS (AUTHORID INTEGER NOT NULL PRIMARY
KEY,
LNAME VARCHAR(100),
FNAME VARCHAR(100))
CREATE TABLE BOOKS (BOOKID INTEGER NOT NULL PRIMARY KEY,

BOOKNAME VARCHAR(100),
ISBN CHAR(10),
AUTHORID INTEGER REFERENCES AUTHORS)

Bảng chứa khóa chính có mối liên hệ với bảng khác ở đây là AUTHORS được
gọi là bảng cha. Bảng có mối quan hệ với bảng cha ở đây là BOOKS được gọi là
bảng phụ thuộc. Bạn có thể định nghĩa nhiều hơn một bảng phụ thuộc vào một
bảng cha.
Bạn cũng có thể định nghĩa các mối quan hệ giữa các hàng của cùng một bảng.
Trong trường hợp này, bảng cha và bảng phụ thuộc là cùng một bảng.
Khi bạn định nghĩa ràng buộc trên tập các bảng, DB2 áp đặt nguyên tắc toàn vẹn
trên những bảng này khi cập nhật thao tác được thực thi với chúng:
 DB2 đảm bảo rằng chỉ dữ liệu hợp lệ được chèn vào những cột nơi mà ràng
buộc toàn vẹn được định nghĩa. Điều đó có nghĩa rằng bạn phải có một
hàng trong bảng cha với giá trị của khóa bằng giá trị khóa ngoại trong hàng
cái bạn đang chèn vào bảng phụ thuộc. Ví dụ, nếu một cuốn sách được chèn
vào bảng BOOKS với AUTHORID là 437, sau đó trong bảng AUTHORS
cũng phải thực sự có AUTHORID là 437.
 DB2 cũng áp đặt những nguyên tắc khi những hàng có những hàng phụ
thuộc trong bảng phụ thuộc được xóa từ bảng cha. Hành động DB2 có thể
nắm giữ phụ thuộc vào quy tắc xóa được định nghĩa trên bảng. Ở đây có
bốn nguyên tắc được đặc tả: RESTRICT, NO ACTION, CASCADE và
SET NULL.
o Nếu RESTRICT hoặc NO ACTION được đặc tả, DB2 không cho
phép hàng cha bị xóa. Những hàng trong những bảng phụ thuộc phải
được xóa trước hàng ở trong bảng cha. Đây là nguyên tắc mặc định,
do đó nguyên tắc này áp dụng vào bảng AUTHORS và BOOKS như
đã được định nghĩa.
o Nếu CASCADE được định nghĩa, việc xóa một hàng từ bảng cha
cũng tự động xóa những hàng trong tất cả các bảng phụ thuộc.

o Nếu SET NULL được đặc tả, thì khi hàng trong bảng cha bị xóa, giá
trị của khóa ngoại lai trên bảng phụ thuộc được thiết lập là null (nếu
nó có thể null).
 Khi cập nhật giá trị trong bảng cha, có hai nguyên tắc có thể được đặc tả:
RESTRICT và NO ACTION. RESTRICT không cho phép giá trị khóa
được cập nhật nếu có những hàng phụ thuộc trong bảng phụ thuộc. NO
ACTION làm cho thao tác cập nhật dữ liệu trên khóa cha bị loại bỏ, tại cuối
của sự cập nhật, nếu có những hàng phụ thuộc trong bảng phụ thuộc mà
không có khóa cha trong bảng cha.


Ràng buộc kiểm tra bảng
Ràng buộc kiểm tra bảng được sử dụng để kiểm tra dữ liệu cột không xâm phạm
những nguyên tắc được định nghĩa cho cột và để giới hạn giá trị trong những cột
nhất định trong bảng. DB2 đảm bảo rằng ràng buộc này không bị xâm phạm trong
khi chèn và cập nhật.
Giả sử rằng bạn thêm thêm một cột tới bảng BOOKS cho kiểu sách, và những giá
trị bạn muốn cho phép là F (fiction) và N (nonfiction). Bạn có thể thêm một
BOOKTYPE với ràng buộc kiểm tra như dưới đây:
ALTER TABLE BOOKS ADD BOOKTYPE CHAR(1) CHECK
(BOOKTYPE IN ('F','N'))

Bạn có thể định nghĩa ràng buộc kiểm tra khi bạn tạo bảng hoặc thêm chúng sau
đó sử dụng câu lệnh SQLALTER TABLE. Bạn có thể chỉnh sửa ràng buộc kiểm
tra bằng việc xóa và sau đó tạo mới chúng sử dụng câu lệnh SQL ALTER
TABLE.

Các khung nhìn
Các khung nhìn cho phép những người sử dụng khác nhau hay những ứng dụng
quan sát dữ liệu giống như vậy trong những cách khác nhau. Đây không chỉ làm

cho dữ liệu đơn giản để truy nhập, tuy nhiên nó cũng có thể dùng để hạn chế
những hàng và cột người sử dụng khung nhìn hay cập nhật.
Ví dụ, giả sử một công ty có một bảng chứa đựng thông tin về những người làm
thuê cho nó. Một nhà quản lý cần thấy được địa chỉ, số điện thoại, và tiền lương
thông tin về những người làm thuê của nó, khi một ứng dụng thư mục cần thấy
được tất cả những người làm thuê trong công ty cùng với địa chỉ của họ và số điện
thoại, nhưng không cần thấy tiền lương. Bạn có thể tạo ra một khung nhìn mà hiển
thị tất cả thông tin về những người làm thuê trong một phần đặc biệt và những
người khác chỉ thấy được tên, địa chỉ, và số điện thoại của tất cả những người làm
thuê.
Về phía người sử dụng, khung nhìn trông như một bảng. Ngoại trừ sự định nghĩa
về khung nhìn, một khung nhìn không đề cập đến khoảng trống trong cơ sở dữ
liệu; dữ liệu được trình bày trong một khung nhìn được lấy nguồn từ các bảng
khác. Bạn có thể tạo ra một khung nhìn trên một bảng hiện tại (hoặc nhiều bảng),
trên những khung nhìn khác, hoặc một vài sự kết hợp của cả hai. Một khung nhìn
được định nghĩa trên một khung nhìn khác được gọi là một khung nhìn được lồng
vào
Bạn có thể định nghĩa một khung nhìn với những tên cột khác nhau so với những
tên cột tương ứng của bảng cơ sở. Bạn cũng có thể định nghĩa những khung nhìn
kiểm tra để nhìn nếu dữ liệu được chèn vào hoặc được cập nhật ở bên trong những
điều kiện của khung nhìn.
Danh sách những khung nhìn được định nghĩa trong cơ sở dữ liệu được lưu trữ
trong hệ thống danh mục bảng SYSIBM.SYSVIEWS, cho từng khung nhìn được

×