- DB2 教程
- 主页
- DB2 - 简介
- DB2 - 服务器安装
- DB2 - 实例
- DB2 - 数据库
- DB2 - 缓冲池
- DB2 - 表空间
- DB2 - 存储组
- DB2 - 模式
- DB2 - 数据类型
- DB2 - 表
- DB2 - 别名
- DB2 - 约束
- DB2 - 索引
- DB2 - 触发器
- DB2 - 序列
- DB2 - 视图
- DB2 与 XML
- DB2 - 备份和恢复
- DB2 - 数据库安全
- DB2 - 角色
- DB2 - LDAP
- DB2 有用资源
- DB2 - 问答
- DB2 - 快速指南
- DB2 - 有用资源
- DB2 - 讨论
DB2 - 表
表是由数据库管理器维护的逻辑结构。在表中,每个垂直块称为列(元组),每个水平块称为行(实体)。以列和行的形式存储的数据集合称为表。在表中,每一列都有不同的数据类型。表用于存储持久性数据。
表类型
- 基本表:它们保存持久性数据。基本表有不同种类,包括
- 常规表:通用表,带索引的常用表是通用表。
- 多维聚簇表 (MDC):这种类型的表在多个键上进行物理聚簇,用于维护大型数据库环境。DB2 pureScale 不支持此类表。
- 插入时间聚簇表 (ITC):类似于 MDC 表,行按插入表中的时间进行聚簇。它们可以是分区表。它们也不支持 pureScale 环境。
- 范围聚簇表 (RCT):这种类型的表提供快速直接的数据访问。这些表实现为顺序聚簇。表中的每个记录都有一个记录 ID。此类表用于数据与表中的一列或多列紧密聚簇的情况。此类表也不支持 DB2 pureScale。
- 分区表:这种类型的表用于数据组织模式,其中表数据被分成多个存储对象。可以向分区表添加、附加和分离数据分区。您可以将来自一个表的多数据分区存储在一个表空间中。
- 时间表:数据库中表的历史记录存储在时间表中,例如以前进行的修改的详细信息。
- 临时表:对于不同的数据库操作的临时工作,您需要使用临时表。临时表 (DGTTs) 不会出现在系统目录中,XML 列不能用于创建的临时表。
- 物化查询表:MQT 可用于提高查询性能。这些类型的表由一个查询定义,该查询用于确定表中的数据。
创建表
以下语法创建表
语法:[创建新表]
db2 create table <schema_name>.<table_name> (column_name column_type....) in <tablespace_name>
示例:我们在“professional”模式下创建一个表来存储“员工”详细信息。该表具有“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>
示例:[将“employee”表的“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>
示例:[从数据库中删除customer表]
db2 drop table professional.customers
要删除表的整个层次结构(包括触发器和关系),您需要使用“DROP TABLE HIERARCHY”命令。
语法:
db2 drop table hierarchy <tab_name>
示例:[删除表“customer”的整个层次结构]
db2 drop table hierarchy professional.customers