DB2 - 表
表是由数据库管理器维护的逻辑结构。 在表中,每个垂直块称为列(元组),每个水平块称为行(实体)。 以列和行形式存储的数据集合称为表。 在表中,每一列都有不同的数据类型。 表用于存储持久数据。
表格类型
- 基表:它们保存持久数据。 有不同类型的基表,包括:
- 常规表:通用表,带索引的普通表为通用表。
- 多维集群表(MDC):这种类型的表在物理上聚集在多个键上,用于维护大型数据库环境。 DB2 pureScale 不支持这些类型的表。
- 插入时间聚类表 (ITC):与 MDC 表类似,行按照插入表的时间进行聚类。 它们可以是分区表。 他们也不支持 pureScale 环境。
- 范围聚集表 (RCT):这些类型的表提供快速、直接的数据访问。 它们被实现为顺序集群。 表中的每条记录都有一个记录 ID。 这些类型的表用于数据与表中的一列或多列紧密聚集的情况。 DB2 pureScale 也不支持此类表。
- 分区表:此类表用于数据组织架构,其中表数据被划分为多个存储对象。 数据分区可以添加到分区表、附加到分区表以及从分区表分离。 您可以在一个表空间中存储一张表的多个数据分区。
- 时态表:数据库中表的历史记录存储在时态表中,例如之前所做修改的详细信息。
- 临时表:对于不同数据库操作的临时工作,需要使用临时表。 临时表 (DGTT) 不会出现在系统目录中,XML 列不能在创建的临时表中使用。
- 物化查询表:MQT 可用于提高查询性能。 这些类型的表由查询定义,该查询用于确定表中的数据。
创建表
以下语法创建表:
语法:[创建新表]
db2 create table <schema_name>.<table_name> (column_name column_type....) in <tablespace_name>
示例:我们创建一个表来在"professional"模式中存储"employee"详细信息。 该表具有"id、name、jobrole、joindate、salary"字段,该表数据将存储在表空间"ts1"中。
db2 create table professional.employee(id int, name varchar(50),jobrole varchar(30),joindate date, salary double) in ts1
输出:
DB20000I The SQL command completed successfully.
列出表格详细信息
以下语法用于列出表详细信息:
语法:[查看使用架构创建的表的列表]
db2 select tabname, tabschema, tbspace from syscat.tables
示例:[查看当前数据库中的表列表]
db2 select tabname, tabschema, tbspace from syscat.tables
输出:
TABNAME TABSCHEMA TBSPACE ------------ ------------- -------- EMPLOYEE PROFESSIONAL TS1 1 record(s) selected.
列出表中的列
以下语法列出表中的列:
语法:[查看表的列和数据类型]
db2 describe table <table_name>
示例:[查看表"employee"的列和数据类型]
db2 describe table professional.employee
输出:
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.
隐藏列
您可以隐藏表格的整列。 如果您调用"select * from"查询,隐藏列不会在结果表中返回。 当您将数据插入表中时,没有列列表的"INSERT"语句不需要任何隐式隐藏列的值。 这些类型的列在具体化查询表中被高度引用。 这些类型的列不支持创建临时表。
创建带有隐藏列的表格
以下语法创建带有隐藏列的表:
语法:[创建包含隐藏列的表格]
db2 create table <tab_name> (col1 datatype,col2 datatype implicitly hidden)
示例:[创建包含隐藏列"phone"的"customer"表]
db2 create table professional.customer(custid integer not null, fullname varchar(100), phone char(10) implicitly hidden)
在表中插入数据值
以下语法在表中插入值:
语法:[将值插入表]
db2 insert into <tab_name>(col1,col2,...) values(val1,val2,..)
示例:[在'customer'表中插入值]
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')
输出:
DB20000I The SQL command completed successfully.
从表中检索值
以下语法从表中检索值:
语法:[从表中检索值]
db2 select * from <tab_name>
示例:[从'customer'表检索值]
db2 select * from professional.customer
输出:
CUSTID FULLNAME ----------- ------------------------ 100 ravi 101 krathi 102 gopal 3 record(s) selected.
从包含隐藏列的表中检索值
以下语法从选定的列中检索值:
语法:[从表中检索选定的隐藏列值]
db2 select col1,col2,col3 from <tab_name>
示例:[从表中检索选定列的值结果]
db2 select custid,fullname,phone from professional.customer
输出:
CUSTID FULLNAME PHONE ------- --------- ------------ 100 ravi 9898989 101 krathi 87996659 102 gopal 768678687 3 record(s) selected.
如果要查看隐藏列中的数据,需要执行"DESCRIBE"命令。
语法:
db2 describe table <table_name> show detail
示例:
db2 describe table professional.customer show detail
输出:
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.
更改表格列的类型
您可以使用"alter"命令修改我们的表结构,如下所示:
语法:
db2 alter table <tab_name> alter column <col_name> set data type <data_type>
示例: [将员工表的"id"列的数据类型从"int"修改为"bigint"]
db2 alter table professional.employee alter column id set data type bigint
输出::
DB20000I The SQL command completed successfully.
更改列名称
您可以更改列名称,如下所示:
语法:[将表的列名从旧名称修改为新名称]
db2 alter table <tab_name> rename column <old_name> to <new_name>
示例: [将"customers"表中的列名从"fullname"修改为"custname"。]
db2 alter table professional.customer rename column fullname to custname
删除表格
要删除任何表,您需要使用"DROP"命令,如下所示:
语法:
db2 drop table <tab_name>
示例: [删除客户表表单数据库]
db2 drop table professional.customers
要删除表的整个层次结构(包括触发器和关系),需要使用"DROP TABLE HIERARCHY"命令。
语法:
db2 drop table hierarchy <tab_name>
示例: [删除表"customer"的整个层次结构]
db2 drop table hierarchy professional.customers