Các khái niệm cơ bản của DB2: Giới thiệu các bảng truy vấn cụ thể hóa

Định nghĩa bảng truy vấn cụ thể hóa (MQT) dựa trên kết quả của một truy vấn. MQT có thể cải thiện đáng kể hiệu suất của truy vấn. Bài viết này giới thiệu cho bạn các MQT, các bảng tóm tắt, và bảng phân tầng, và bằng các ví dụ đang làm việc, chỉ cho bạn cách để xây dựng và chạy các bảng truy vấn được cụ thể hóa.

Roman Melnyk, Phát triển thông tin DB2

Tiến sĩ Roman B. Melnyk là thành viên cao cấp của nhóm phát triển thông tin của DB2, chuyên về quản trị cơ sở dữ liệu, tiện ích của DB2 và SQL. Trong hơn mười năm làm việc tại IBM, Roman đã viết và biên tập nhiều sách, bài viết về DB2 và các tài liệu liên quan khác. Roman là đồng tác giả của DB2 phiên bản 8: Hướng dẫn chính thức (Sách tham khảo kỹ thuật chuyên nghiệp của nhà xuất bản Prentice Hall, 2003), DB2: Sách tham khảo đầy đủ (Nhà xuất bản Osborne/McGraw-Hill, 2001), Chứng chỉ cơ bản về DB2 cho những người chưa biết gì (Nhà xuất bản Hungry Minds, 2001) và DB2 cho những người chưa biết gì (Nhà xuất bản IDG Books, 2000).



22 04 2011

Bộ công cụ cho DB2 của IBM cho các chuyên gia về cơ sở dữ liệu

Hãy tìm hiểu cách dễ dàng để được đào tạo và được cấp giấy chứng nhận về DB2 cho Linux, UNIX, và Windows bằng bộ công cụ cho DB2 của IBM cho các chuyên gia về cơ sở dữ liệu. Hãy đăng ký ngay bây giờ và làm rộng kỹ năng của bạn, hoặc mở rộng khả năng hỗ trợ các nhà cung cấp hệ quản trị CSDL của bạn, tới cả DB2..

Bảng truy vấn cụ thể hóa (MQT) là một bảng được xác định dựa trên kết quả của một truy vấn. Các dữ liệu được chứa trong MQT có nguồn gốc từ một hoặc nhiều bảng mà dựa vào chúng, người ta cụ thể hoá định nghĩa của bảng truy vấn. Bảng Tóm tắt (hoặc bảng tóm tắt tự động, AST), quen thuộc với những người sử dụng cơ sở dữ liệu thông dụng DB2 (UDB) của IBM trong Linux, UNIX, và Windows (DB2 UDB), được coi là dạng đặc biệt của MQT. Việc chọn đầy đủ là một phần của định nghĩa của một bảng tóm tắt, chứa mệnh đề GROUP BY để tổng hợp dữ liệu từ các bảng được tham chiếu trong câu chọn này.

Bạn có thể nghĩ MQT như một loại khung nhìn cụ thể hóa. Cả khung nhìn lẫn các MQT được xác định dựa trên một truy vấn. Truy vấn mà trên đó khung nhìn dựa vào được chạy bất cứ khi nào một khung nhìn được tham chiếu; tuy nhiên, trên thực tế MQT lưu giữ các kết quả truy vấn làm dữ liệu, và bạn có thể làm việc với các dữ liệu ở trong MQT thay vì các dữ liệu ở trong các bảng nêu ra.

Các bảng truy vấn cụ thể hóa có thể cải thiện một cách đáng kể hiệu suất của các truy vấn, đặc biệt là các truy vấn phức tạp. Nếu như trình tối ưu xác định rằng một truy vấn hoặc một phần của một truy vấn có thể được giải bằng cách sử dụng một MQT, thì truy vấn có thể được viết lại để tận dụng lợi thế của MQT này.

Có thể xác định MQT ở thời gian tạo bảng vì được hệ thống hay người dùng duy trì. Các phần tiếp theo sẽ giới thiệu cho bạn hai loại MQT, cũng như bảng tóm tắt và bảng phân tầng. Các ví dụ sau đây yêu cầu kết nối tới cơ sở dữ liệu SAMPLE; nếu chưa có cơ sở dữ liệu SAMPLE trong hệ thống, thì bạn có thể tạo ra nó bằng cách nhập lệnh db2sampl từ bất kỳ dấu nhắc lệnh nào.

Các MQT được duy trì bởi hệ thống

Các dữ liệu trong loại này của bảng truy vấn cụ thể hóa được duy trì bởi hệ thống. Khi bạn tạo MQT loại này, thì bạn có thể xác định dữ liệu bảng sẽ là loại dữ liệu REFRESH IMMEDIATE (làm mới ngay) hoặc REFRESH DEFERRED (làm mới sau). Từ khóa REFRESH cho phép bạn xác định cách dữ liệu được được duy trì. Làm mới sau có nghĩa là các dữ liệu trong bảng có thể được làm mới bất kỳ lúc nào bằng cách sử dụng câu lệnh REFRESH TABLE. Các MQT, dù là làm mới ngay hoặc về sau, được hệ thống duy trì, cũng không cho phép các hoạt động chèn, cập nhật, hoặc xóa được thực hiện đối với chính chúng. Tuy nhiên, các MQT với REFRESH IMMEDIATE được hệ thống duy trì được cập nhật với các thay đổi trên bảng nêu ra như kết quả của các phép chèn, cập nhật, hoặc xóa.

Liệt kê 1 cho thấy ví dụ tạo ra một MQT REFRESH IMMEDIATE được hệ thống duy trì. Bảng có tên EMP dựa trên các bảng EMPLOYEE và DEPARTMENT kể ra trong cơ sở dữ liệu SAMPLE. Vì các MQT với REFRESH IMMEDIATE yêu cầu rằng ít nhất một khóa đơn từ mỗi bảng được tham chiếu trong truy vấn xuất hiện trong danh sách chọn, trước tiên ta xác định một ràng buộc đơn trên cột EMPNO trong bảng EMPLOYEE và trên cột DEPTNO trong bảng DEPARTMENT. Mệnh đề DATA INITIALLY DEFERRED đơn giản ngầm ý các dữ liệu sẽ không được chèn vào bảng như là một phần của câu lệnh CREATE TABLE. Sau khi được tạo, MQT ở trạng thái chờ kiểm tra (xem bảng Demystifying và các trạng thái của không gian bảng), và không thể được truy vấn cho đến khi câu lệnh SET INTEGRITY thực hiện đối với nó. Mệnh đề IMMEDIATE CHECKED quy định rằng dữ liệu được kiểm tra đối với truy vấn xác định của MQT và được làm mới; mệnh đề NOT INCREMENTAL định rằng việc kiểm tra tính toàn vẹn được thực hiện trên toàn bộ bảng. Một truy vấn được thực hiện đối với bảng truy vấn cụ thể hóa EMP cho thấy lúc này nó được điền đầy đủ dữ liệu.

Liệt kê 1. Tạo một MQT được hệ thống duy trì
connect to sample
...

alter table employee add unique (empno)
alter table department add unique (deptno)

create table emp as (select e.empno, e.firstnme, e.lastname, e.phoneno, d.deptno,
 substr(d.deptname, 1, 12) as department, d.mgrno from employee e, department d
  where e.workdept = d.deptno)
   data
     initially deferred refresh immediate set integrity for emp immediate checked not
     incremental

select * from emp

EMPNO  FIRSTNME     LASTNAME        PHONENO DEPTNO DEPARTMENT   MGRNO
------ ------------ --------------- ------- ------ ------------ ------
000010 CHRISTINE    HAAS            3978    A00    SPIFFY COMPU 000010
000020 MICHAEL      THOMPSON        3476    B01    PLANNING     000020
000030 SALLY        KWAN            4738    C01    INFORMATION  000030
000050 JOHN         GEYER           6789    E01    SUPPORT SERV 000050
000060 IRVING       STERN           6423    D11    MANUFACTURIN 000060
000070 EVA          PULASKI         7831    D21    ADMINISTRATI 000070
000090 EILEEN       HENDERSON       5498    E11    OPERATIONS   000090
000100 THEODORE     SPENSER         0972    E21    SOFTWARE SUP 000100
000110 VINCENZO     LUCCHESSI       3490    A00    SPIFFY COMPU 000010
000120 SEAN         O'CONNELL       2167    A00    SPIFFY COMPU 000010
000130 DOLORES      QUINTANA        4578    C01    INFORMATION  000030
...
000340 JASON        GOUNOT          5698    E21    SOFTWARE SUP 000100

  32 record(s) selected.

connect reset

Các MQT được duy trì bởi người dùng

Các dữ liệu trong loại này của bảng truy vấn cụ thể hóa được người dùng duy trì. Chỉ có bảng truy vấn cụ thể hóa REFRESH DEFERRED có thể được định nghĩa là MAINTAINED BY USER, được người dùng duy trì. Câu lệnh REFRESH TABLE (sử dụng cho các MQT do hệ thống duy trì) không thể dùng với các MQT do người sử dụng duy trì. Các MQT được người dùng duy trì cho phép thực hiện các hoạt động chèn, cập nhật, hoặc xóa với chúng.

Liệt kê 2 cho thấy ví dụ tạo ra một MQT với REFRESH DEFERRED do người sử dụng duy trì. Bảng tên là ONTARIO_1995_SALES_TEAM dựa trên các bảng EMPLOYEE và SALES trong cơ sở dữ liệu SAMPLE. Như trên, mệnh đề DATA INITIALLY DEFERRED ngầm ý dữ liệu sẽ không được chèn vào bảng như là một phần của câu lệnh CREATE TABLE. Sau khi được tạo, MQT ở trạng thái chờ kiểm tra (Xem bảng Demystifying và các tình trạng của không gian bảng), và không thể được truy vấn cho đến khi thực hiện câu lệnh SET INTEGRITY với nó. Mệnh đề MATERIALIZED QUERY IMMEDIATE UNCHECKED quy định bảng phải bật chức năng kiểm tra tính toàn vẹn, nhưng là để được đưa ra khỏi tình trạng chờ kiểm tra mà không bị kiểm tra việc vi phạm tính toàn vẹn.

Tiếp theo, để điền một số dữ liệu vào MQT, chúng ta sẽ đưa vào các dữ liệu được xuất từ các bảng EMPLOYEE và SALES. Truy vấn xuất phù hợp với truy vấn xác định cho MQT này. Sau đó chúng ta sẽ chèn bản ghi khác vào bảng ONTARIO_1995_SALES_TEAM.

Truy vấn thực hiện đối với bảng truy vấn cụ thể hóa ONTARIO_1995_SALES_TEAM cho thấy lúc này nó chưa được điền đầy đủ các dữ liệu nhập vào và đưa vào, chứng tỏ rằng các MQT được người sử dụng duy trì thực sự có thể được sửa đổi trực tiếp.

Liệt kê 2. Tạo một MQT do người sử dụng duy trì
connect to sample
...

create table ontario_1995_sales_team as (select distinct e.empno, e.firstnme,
 e.lastname, e.workdept, e.phoneno, 'Ontario' as region,
  year(s.sales_date) as year from employee e, sales s
   where e.lastname = s.sales_person and year(s.sales_date) = 1995
    and left(s.region, 3) = 'Ont')
     data
     initially deferred refresh deferred maintained by user set integrity for
     ontario_1995_sales_team materialized query immediate
     unchecked

export to ontario_1995_sales_team.del of del
 select distinct e.empno, e.firstnme, e.lastname, e.workdept, e.phoneno,
  'Ontario' as region, year(s.sales_date) as year from employee e, 
  sales s
   where e.lastname = s.sales_person and year(s.sales_date) = 1995
    and left(s.region, 3) = 'Ont'
...
Number of rows exported: 2

import from ontario_1995_sales_team.del of del insert into 
ontario_1995_sales_team
...
Number of rows committed    = 2

insert into ontario_1995_sales_team
 values ('006900', 'RUSS', 'DYERS', 'D44', '1234', 'Ontario', 1995)

select * from ontario_1995_sales_team

EMPNO  FIRSTNME     LASTNAME        WORKDEPT PHONENO REGION  YEAR
------ ------------ --------------- -------- ------- ------- -----------
000110 VINCENZO     LUCCHESSI       A00      3490    Ontario        1995
000330 WING         LEE             E21      2103    Ontario        1995
006900 RUSS         DYERS           D44      1234    Ontario        1995

  3 record(s) selected.

connect reset

Bảng tóm tắt

Bạn nhớ lại bảng tóm tắt là loại bảng MQT đặc biệt mà lựa chọn đầy đủ chứa mệnh đề GROUP BY nhằm tóm tắt các dữ liệu từ các bảng được tham chiếu bằng trong câu lựa chọn. Liệt kê 3 là một ví dụ đơn giản để tạo bảng tóm tắt. Bảng tên là SALES_SUMMARY dựa trên bảng SALES nêu ra trong cơ sở dữ liệu SAMPLE. Và mệnh đề DATA INITIALLY DEFERRED có nghĩa dữ liệu sẽ không được chèn vào bảng như là một phần của câu lệnh CREATE TABLE. Mệnh đề DATA INITIALLY DEFERRED ngầm định dữ liệu trong bảng có thể được làm mới bất kỳ lúc nào bằng cách sử dụng câu lệnh REFRESH TABLE. Một truy vấn cho MQT ngay sau khi nó được tạo, nhưng trước khi sử dụng câu REFRESH TABLE sẽ gây lỗi. Sau khi câu lệnh REFRESH TABLE thực hiện, truy vấn chạy thành công.

Hoạt động chèn sau đó vào bảng SALES, sau việc làm mới bảng tóm tắt và một truy vấn đối với các bảng tóm tắt, cho thấy thay đổi đối với bảng nêu ra được thể hiện trong bảng tóm tắt: tổng doanh số của nhân viên bán hàng Lee trong khu vực Nam Ontario đã tăng lên 100. Ta có thể thấy hành vi tương tự ứng với việc cập nhật hoặc xóa trong bảng SALES kể ra.

Ví dụ 3. Tạo một bảng tóm tắt
connect to sample
...

create table sales_summary as (select sales_person, region, sum(sales)
 as total_sales
 from sales group
     by sales_person, region)
  data initially deferred refresh
     deferred

select * from sales_summary

SALES_PERSON    REGION          TOTAL_SALES
--------------- --------------- -----------
SQL0668N  Operation not allowed for reason code "1" on table
"MELNYK.SALES_SUMMARY".  SQLSTATE=57016

refresh table sales_summary

select * from sales_summary

SALES_PERSON    REGION          TOTAL_SALES
--------------- --------------- -----------
GOUNOT          Manitoba                 15
GOUNOT          Ontario-North             1
GOUNOT          Ontario-South            10
GOUNOT          Quebec                   24
LEE             Manitoba                 23
LEE             Ontario-North             8
LEE             Ontario-South            34
LEE             Quebec                   26
LUCCHESSI       Manitoba                  3
LUCCHESSI       Ontario-South             8
LUCCHESSI       Quebec                    3

  11 record(s) selected.

insert
     into
     sales values ('06/28/2005', 'LEE', 'Ontario-South', 100)

refresh table sales_summary

select * from sales_summary

SALES_PERSON    REGION          TOTAL_SALES
--------------- --------------- -----------
...
LEE             Ontario-North             8
LEE             Ontario-South           134
LEE             Quebec                   26
...

  11 record(s) selected.

update
     sales set sales = 50 where sales_date = '06/28/2005' and 
sales_person = 'LEE'
 and region = 'Ontario-South'

refresh table sales_summary

select * from sales_summary

SALES_PERSON    REGION          TOTAL_SALES
--------------- --------------- -----------
...
LEE             Ontario-North             8
LEE             Ontario-South            84
LEE             Quebec                   26
...

  11 record(s) selected.

delete
     from
     sales where sales_date = '06/28/2005' and sales_person = 'LEE'
 and region = 'Ontario-South'

refresh table sales_summary

select * from sales_summary

SALES_PERSON    REGION          TOTAL_SALES
--------------- --------------- -----------
...
LEE             Ontario-North             8
LEE             Ontario-South            34
LEE             Quebec                   26
...

  11 record(s) selected.

connect reset

Các bảng phân tầng

Bạn có thể làm mới nhiều lên với MQT có REFRESH DEFERRED nếu nó có một bảng phân tầng gắn liền với nó. Bảng phân tầng thu thập những thay đổi cần được áp dụng để đồng bộ MQT với các bảng đi kèm. Bạn có thể tạo bảng phân tầng bằng cách sử dụng câu lệnh CREATE TABLE; rồi khi các bảng kể ra của MQT được sửa đổi, các thay đổi được truyền và ngay lập tức nối vào bảng phân tầng. Ý tưởng là sử dụng bảng phân tầng để từng bước làm mới MQT, hơn là tái tạo MQT từ đầu. Sự bảo trì gia tăng đảm bảo hiệu suất được cải thiện đáng kể. Bảng phân tầng được lược bớt đi khi các hoạt động làm mới hoàn tất.

Sau khi được tạo, bảng phân tầng ở trong trạng thái chờ (không bền); nó phải được đưa ra khỏi trạng thái này trước khi nó có thể bắt đầu thu thập các thay đổi trên các bảng nêu ra. Bạn có thể thực hiện điều này bằng cách sử dụng câu lệnh SET INTEGRITY.

Liệt kê 4 cho thấy ví dụ về cách sử dụng bảng phân tầng với bảng tóm tắt. Bảng tóm tắt tên là EMP_SUMMARY dựa trên bảng nêu ra EMPLOYEE trong cơ sở dữ liệu SAMPLE. Bạn sẽ nhớ lại rằng mệnh đề DATA INITIALLY DEFERRED có nghĩa là dữ liệu sẽ không được chèn vào bảng như là một phần của câu lệnh CREATE TABLE. Mệnh đề REFRESH DEFERRED với nghĩa các dữ liệu trong bảng có thể được làm mới bất kỳ lúc nào bằng cách sử dụng câu lệnh REFRESH TABLE. Bảng phân tầng tên là EMP_SUMMARY_S kết hợp với bảng tóm tắt EMP_SUMMARY. Mệnh đề PROPAGATE IMMEDIATE quy định rằng bất kỳ thay đổi nào đối với bảng nêu ra như phần của chèn, cập nhật, hoặc xóa sẽ được xếp tầng vào bảng phân tầng này. Câu lệnh SET INTEGRITY được dùng cho cả hai bảng để đưa chúng ra khỏi trạng thái chờ.

Không bất ngờ khi truy vấn đối với bảng tóm tắt tại lúc này không cho về dữ liệu nào. Câu lệnh REFRESH TABLE cho ra cảnh báo, nhắc rằng "tính toàn vẹn của dữ liệu không gia tăng vẫn chưa được xác minh." Đây không là điều bất ngờ. Một truy vấn khác đối với các bảng tóm tắt cũng không cho ra dữ liệu. Tuy nhiên, sau khi chúng ta chèn một hàng mới của dữ liệu vào bảng EMPLOYEE nêu ra, truy vấn đối với bảng phân tầng EMP_SUMMARY_S trả về một hàng, tương ứng với dữ liệu vừa mới được chèn vào. Bảng phân tầng cũng có ba cột giống như bảng tóm tắt bên dưới của nó, cộng thêm hai cột được hệ thống sử dụng: GLOBALTRANSID (ID của sự giao tác tổng thể đối với mỗi hàng được nhân lên) và GLOBALTRANSTIME (dấu thời gian của giao tác). Truy vấn khác đối với bảng tóm tắt không cho ra dữ liệu, nhưng sau khi câu lệnh REFRESH TABLE thực hiện lần này, thì truy vấn chạy thành công.

Liệt kê 4. Sử dụng bảng phân tầng với bảng tóm tắt
connect to sample
...

create table emp_summary as (select workdept, job, count(*) as count
 from employee group
     by workdept, job)
  data initially deferred refresh deferred create table emp_summary_s
     for emp_summary propagate immediate set integrity 
     for emp_summary materialized query immediate
     unchecked set integrity for emp_summary_s staging immediate unchecked

select * from emp_summary

WORKDEPT JOB      COUNT
-------- -------- -----------

  0 record(s) selected.

refresh table emp_summary
SQL1594W  Integrity of non-incremental data remains unverified by the 
database manager.  SQLSTATE=01636

select * from emp_summary

WORKDEPT JOB      COUNT
-------- -------- -----------

  0 record(s) selected.

insert into employee
 values ('006900', 'RUSS', 'L', 'DYERS', 'D44', '1234', '1960-05-05', 
 'FIELDREP', 5, 'M', '1940-04-02', 10000, 100, 1000)

select * from emp_summary_s

WORKDEPT JOB      COUNT       GLOBALTRANSID          GLOBALTRANSTIME
-------- -------- ----------- -------------------... -----------------------------...
D44      FIELDREP           1 x'00000000000000CD'    x'20050822201344536158000000'

  1 record(s) selected.

select * from emp_summary

WORKDEPT JOB      COUNT
-------- -------- -----------

  0 record(s) selected.

refresh table emp_summary
SQL1594W  Integrity of non-incremental data remains unverified by the database
manager.  SQLSTATE=01636

select * from emp_summary

WORKDEPT JOB      COUNT
-------- -------- -----------
D44      FIELDREP           1

  1 record(s) selected.

connect reset

Tóm tắt

Khung nhìn của danh mục hệ thống SYSCAT.TABDEP chứa một hàng đối với mỗi phụ thuộc mà bảng truy vấn cụ thể hóa có trên một vài đối tượng khác. Bạn có thể truy vấn khung nhìn này để có bản tóm tắt các phụ thuộc cho các MQT mà ta đã tạo (Liệt kê 5). Các MQT có giá trị DTYPE là 'S.' Cột TABNAME liệt kê tên của các MQT, và cột BNAME liệt kê tên của các đối tượng cơ sở dữ liệu mà trên đó các MQT tương ứng dựa vào. Cột BTYPE xác định các loại đối tượng: 'T' cho bảng, "I" cho chỉ mục và 'F' cho cá thể chức năng.

Liệt kê 5. Truy vấn khung nhìn của danh mục hệ thống SYSCAT.TABDEP để xem các phụ thuộc của MQT trên các đối tượng cơ sở dữ liệu khác.
connect to sample
...

select substr(tabname,1,24) as tabname, dtype, substr(bname,1,24) as bname, btype
 from syscat.tabdep where tabschema = 'MELNYK' and dtype = 'S'

TABNAME                  DTYPE BNAME                    BTYPE
------------------------ ----- ------------------------ -----
EMP                      S     DEPARTMENT               T
EMP                      S     EMPLOYEE                 T
EMP                      S     SQL050829104058970       I
EMP                      S     SQL050829104058800       I
EMP_SUMMARY              S     EMPLOYEE                 T
ONTARIO_1995_SALES_TEAM  S     LEFT1                    F
ONTARIO_1995_SALES_TEAM  S     SALES                    T
ONTARIO_1995_SALES_TEAM  S     EMPLOYEE                 T
SALES_SUMMARY            S     SALES                    T

  9 record(s) selected.

connect reset

Chúng ta đã thấy rằng bảng truy vấn cụ thể hoá, được xác định theo kết quả của một truy vấn, có thể được xem như là một loại khung nhìn cụ thể hóa. Các MQT rất quan trọng bởi vì chúng có thể làm giảm đáng kể thời gian cần cho các truy vấn phức tạp. Bài viết này đã giới thiệu cho bạn các khái niệm cơ bản về các MQT do hệ thống duy trì và các MQT được duy trì bởi người sử dụng, cũng như bảng tóm tắt và bảng phân tầng, và những khái niệm này được minh họa bằng cách ví dụ đang làm việc mà bạn có thể tự chạy được. Để tìm hiểu thêm về các bảng truy vấn cụ thể hóa hoặc để biết thêm thông tin chi tiết về bất cứ chủ đề nào được đề cập trong bài viết này, xin truy cập Trung tâm Thông tin của DB2.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

  • Bây giờ bạn có thể sử dụng DB2 miễn phí. Hãy tải về DB2 Express-C, một phiên bản miễn phí của DB2 Express Edition cho cộng đồng, nó cung cấp các cùng tính năng dữ liệu lõi như DB2 Express Edtion và cung cấp một cơ sở vững chắc để xây dựng và triển khai các ứng dụng.

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management
ArticleID=647621
ArticleTitle=Các khái niệm cơ bản của DB2: Giới thiệu các bảng truy vấn cụ thể hóa
publish-date=04222011