📜  DB2-表

📅  最后修改于: 2020-11-28 13:22:47             🧑  作者: Mango


表是数据库管理器维护的逻辑结构。在表中,每个垂直块称为列(元组),每个水平块称为行(实体)。以列和行的形式存储的数据集合称为表。在表中,每一列都有不同的数据类型。表用于存储持久性数据。

桌子类型

  • 基表:它们保存持久数据。有不同种类的基表,包括:
    • 常规表:通用表,带索引的通用表是通用表。
    • 多维群集表(MDC) :这种类型的表物理上群集在多个键上,用于维护大型数据库环境。 DB2 pureScale不支持这些类型的表。
    • 插入时间聚类表(ITC) :与MDC表类似,行按插入到表中的时间聚类。它们可以是分区表。他们也是,不支持pureScale环境。
    • 范围集群表表(RCT) :这些类型的表提供快速直接的数据访问。这些被实现为顺序集群。表中的每个记录都有一个记录ID。这些类型的表用于将数据紧密聚集在表中的一列或多列中的情况。这种类型的表在DB2 pureScale中也不支持。
    • 分区表:这些类型的表用于数据组织架构,其中表数据分为多个存储对象。可以将数据分区添加到分区表,附加到分区表或从分区表分离。您可以将一个表中的多个数据分区存储在一个表空间中。
    • 临时表:数据库中表的历史记录存储在临时表中,例如先前所做的修改的详细信息。
  • 临时表:对于不同数据库操作的临时工作,您需要使用临时表。临时表(DGTT)不会出现在系统目录中,XML列不能在创建的临时表中使用。
  • 物化查询表:MQT可用于提高查询性能。这些类型的表由查询定义,该查询用于确定表中的数据。

创建表

以下语法创建表:

语法:[创建新表]

db2 create table .
(column_name column_type....) in    

示例:我们创建一个表以“专业”模式存储“员工”详细信息。该表具有“ 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     

示例:[查看表’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  (col1 datatype,col2 datatype 
implicitly hidden)    

示例:[使用隐藏列“ phone”创建“客户”表]

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

在表格中插入数据值

以下语法在表中插入值:

语法:[将值插入表中]

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

示例:[在“客户”表中插入值]

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>    

示例:[从“客户”表中检索值]

db2 select * from professional.customer 

输出:

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

从包含隐藏列的表中检索值

以下语法从选定的列中检索值:

语法:[要从表中检索选定的隐藏列值]

db2 select col1,col2,col3 from     

示例:[要从表中检索选定的列值]

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  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  alter column  set 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  rename column  to      

示例: [将“客户”表中的列名从“全名”修改为“客户名”。]

db2 alter table professional.customer rename column fullname to custname       

放下桌子

要删除任何表,需要使用“ DROP”命令,如下所示:

语法

db2 drop table      

示例: [删除客户表表单数据库]

db2 drop table professional.customers       

要删除表的整个层次结构(包括触发器和关系),您需要使用“ DROP TABLE HIERARCHY”命令。

语法

db2 drop table hierarchy 

示例: [删除表’customer’的整个层次结构]

db2 drop table hierarchy professional.customers