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 <tab_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