DB2 - Bảng

Các bảng có cấu trúc logic được duy trì bởi trình quản lý Cơ sở dữ liệu. Trong một bảng, mỗi khối dọc được gọi là cột (Tuple) và mỗi khối ngang được gọi là hàng (Thực thể). Tập hợp dữ liệu được lưu trữ dưới dạng cột và hàng được gọi là bảng. Trong các bảng, mỗi cột có kiểu dữ liệu khác nhau. Các bảng được sử dụng để lưu trữ dữ liệu liên tục.

Loại bảng

  • Base Tables: Chúng giữ dữ liệu liên tục. Có nhiều loại bảng cơ sở khác nhau, bao gồm:
    • Regular Tables: Bảng mục đích chung, Bảng thông thường có chỉ mục là bảng mục đích chung.
    • Multidimensional Clustering Table (MDC): Loại bảng này được nhóm vật lý trên nhiều khóa và nó được sử dụng để duy trì các môi trường cơ sở dữ liệu lớn. Loại bảng này không được hỗ trợ trong DB2 pureScale.
    • Insert time clustering Table (ITC): Tương tự như bảng MDC, các hàng được nhóm lại theo thời gian chúng được chèn vào bảng. Chúng có thể là các bảng được phân vùng. Chúng cũng không hỗ trợ môi trường pureScale.
    • Range-Clustered tables Table (RCT): Loại bảng này cung cấp khả năng truy cập dữ liệu trực tiếp và nhanh chóng. Chúng được thực hiện dưới dạng các cụm tuần tự. Mỗi bản ghi trong bảng có một ID bản ghi. Loại bảng này được sử dụng khi dữ liệu được nhóm chặt chẽ với một hoặc nhiều cột trong bảng. Loại bảng này cũng không hỗ trợ trong DB2 pureScale.
    • Partitioned Tables: Loại bảng này được sử dụng trong lược đồ tổ chức dữ liệu, trong đó dữ liệu bảng được chia thành nhiều đối tượng lưu trữ. Các phân vùng dữ liệu có thể được thêm vào, gắn vào và tách ra khỏi bảng đã phân vùng. Bạn có thể lưu trữ nhiều phân vùng dữ liệu từ một bảng trong một vùng bảng.
    • Temporal Tables: Lịch sử của một bảng trong cơ sở dữ liệu được lưu trữ trong các bảng tạm thời chẳng hạn như chi tiết về các sửa đổi đã thực hiện trước đó.
  • Temporary Tables: Đối với công việc tạm thời của các hoạt động cơ sở dữ liệu khác nhau, bạn cần sử dụng các bảng tạm thời. Các bảng tạm thời (DGTT) không xuất hiện trong danh mục hệ thống, không thể sử dụng các cột XML trong các bảng tạm thời đã tạo.
  • Materialized Query Tables: MQT có thể được sử dụng để cải thiện hiệu suất của các truy vấn. Các loại bảng này được xác định bởi một truy vấn, được sử dụng để xác định dữ liệu trong bảng.

Tạo bảng

Cú pháp sau tạo bảng:

Syntax: [Để tạo một bảng mới]

db2 create table <schema_name>.<table_name>
(column_name column_type....) in <tablespace_name>

Example: Chúng tôi tạo một bảng để lưu trữ thông tin chi tiết về “nhân viên” trong lược đồ “chuyên nghiệp”. Bảng này có các trường "id, name, jobrole, joindate, lương" và dữ liệu bảng này sẽ được lưu trữ trong vùng bảng "ts1".

db2 create table professional.employee(id int, name 
varchar(50),jobrole varchar(30),joindate date, 
salary double) in ts1

Output:

DB20000I The SQL command completed successfully.

Bảng liệt kê chi tiết

Cú pháp sau được sử dụng để liệt kê chi tiết bảng:

Syntax: [Để xem danh sách các bảng được tạo bằng lược đồ]

db2 select tabname, tabschema, tbspace from syscat.tables

Example: [Để xem danh sách các bảng trong cơ sở dữ liệu hiện tại]

db2 select tabname, tabschema, tbspace from syscat.tables

Output:

TABNAME      TABSCHEMA     TBSPACE 
------------ ------------- -------- 
EMPLOYEE     PROFESSIONAL    TS1  


 1 record(s) selected.

Liệt kê các cột trong một bảng

Cú pháp sau liệt kê các cột trong bảng:

Syntax: [Để xem các cột và kiểu dữ liệu của bảng]

db2 describe table <table_name>

Example: [Để xem các cột và kiểu dữ liệu của bảng 'nhân viên']

db2 describe table professional.employee

Output:

Data type                   Column 
Column name  schema    Data type name    Length    Scale Nulls 
------ ----- --------- ----------------- --------- ----- ------ 
ID           SYSIBM    INTEGER             4         0     Yes 
NAME         SYSIBM    VARCHAR             50        0     Yes 
JOBROLE      SYSIBM    VARCHAR             30        0     Yes 
JOINDATE     SYSIBM    DATE                4         0     Yes 
SALARY       SYSIBM    DOUBLE              8         0     Yes  

  5 record(s) selected.

Cột ẩn

Bạn có thể ẩn toàn bộ cột của bảng. Nếu bạn gọi truy vấn “select * from”, các cột ẩn sẽ không được trả về trong bảng kết quả. Khi bạn chèn dữ liệu vào bảng, câu lệnh “INSERT” không có danh sách cột sẽ không mong đợi giá trị cho bất kỳ cột nào được ẩn hoàn toàn. Loại cột này được tham chiếu nhiều trong các bảng truy vấn cụ thể hóa. Loại cột này không hỗ trợ tạo bảng tạm thời.

Tạo bảng với cột ẩn

Cú pháp sau tạo bảng với các cột ẩn:

Syntax: [Để tạo một bảng có các cột ẩn]

db2 create table <tab_name> (col1 datatype,col2 datatype 
implicitly hidden)

Example: [Để tạo bảng 'khách hàng' với các cột ẩn 'điện thoại']

db2 create table professional.customer(custid integer not 
null, fullname varchar(100), phone char(10) 
implicitly hidden)

Chèn các giá trị dữ liệu trong bảng

Cú pháp sau đây chèn các giá trị trong bảng:

Syntax: [Để chèn giá trị vào bảng]

db2 insert into <tab_name>(col1,col2,...)
 values(val1,val2,..)

Example: [Để chèn giá trị vào bảng 'khách hàng']

db2 insert into professional.customer(custid, fullname, phone) 
values(100,'ravi','9898989')


db2 insert into professional.customer(custid, fullname, phone) 
values(101,'krathi','87996659')


db2 insert into professional.customer(custid, fullname, phone) 
values(102,'gopal','768678687')

Output:

DB20000I  The SQL command completed successfully.

Lấy giá trị từ bảng

Cú pháp sau lấy các giá trị từ bảng:

Syntax: [Để truy xuất các giá trị tạo thành một bảng]

db2 select * from &lttab_name>

Example: [Để truy xuất các giá trị từ bảng 'khách hàng']

db2 select * from professional.customer

Output:

CUSTID      FULLNAME 
----------- ------------------------ 
        100 ravi
		
        101 krathi
		
        102 gopal  
		
  3 record(s) selected.

Lấy giá trị từ bảng bao gồm các cột ẩn

Cú pháp sau lấy giá trị từ các cột đã chọn:

Syntax: [Để truy xuất các giá trị cột ẩn đã chọn từ bảng]

db2 select col1,col2,col3 from <tab_name>

Example: [Để truy xuất kết quả các giá trị cột đã chọn từ một bảng]

db2 select custid,fullname,phone from professional.customer

Output:

CUSTID  FULLNAME    PHONE 
------- ---------   ------------ 
100     ravi        9898989
 
101     krathi      87996659 

102     gopal       768678687 

  3 record(s) selected.

Nếu bạn muốn xem dữ liệu trong các cột ẩn, bạn cần thực hiện lệnh “DESCRIBE”.

Syntax:

db2 describe table <table_name> show detail

Example:

db2 describe table professional.customer show detail

Output:

Column name     Data type schema     Data type name  Column
           column    Partitionkey  code 
                                       Length   Scale    Nulls     
number     sequence      page     Hidden      Default 
--------------- -------------------- --------------- -------- ----
---- -------- ---------- ------------- -------- ----------- ------ 
---  
CUSTID          SYSIBM               INTEGER         4        0 
No       0          0         0        No 
FULLNAME        SYSIBM               VARCHAR         100      0
Yes      1          0        1208     No     

PHONE           SYSIBM               CHARACTER       10       0     
Yes      2          0             1208     Implicitly  
  
3 record(s) selected.

Thay đổi loại cột trong bảng

Bạn có thể sửa đổi cấu trúc bảng của chúng tôi bằng cách sử dụng lệnh "thay đổi" này như sau:

Syntax:

db2 alter table <tab_name> alter column <col_name> set data type <data_type>

Example: [Để sửa đổi kiểu dữ liệu cho cột “id” từ “int” thành “bigint” cho bảng nhân viên]

db2 alter table professional.employee alter column id set data type bigint

Output::

DB20000I The SQL command completed successfully.

Thay đổi tên cột

Bạn có thể thay đổi tên cột như hình dưới đây:

Syntax: [Để sửa đổi tên cột từ tên cũ thành tên mới của bảng]

db2 alter table <tab_name> rename column <old_name> to <new_name>

Example: [Để sửa đổi tên cột từ “fullname” thành “custname” trong bảng “customer”.]

db2 alter table professional.customer rename column fullname to custname

Bỏ bảng

Để xóa bất kỳ bảng nào, bạn cần sử dụng lệnh “DROP” như sau:

Syntax:

db2 drop table <tab_name>

Example: [Để thả cơ sở dữ liệu biểu mẫu bảng khách hàng]

db2 drop table professional.customers

Để xóa toàn bộ hệ thống phân cấp của bảng (bao gồm các trình kích hoạt và quan hệ), bạn cần sử dụng lệnh “DROP TABLE HIERARCHY”.

Syntax:

db2 drop table hierarchy <tab_name>

Example: [Để loại bỏ toàn bộ thứ bậc của bảng 'khách hàng']

db2 drop table hierarchy professional.customers