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>
    

    比如:我们创建一个表来存储“employee”的详细信息在“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)
    

    例如:要创建一个“customer”表中隐藏列“phone”]

    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>
    

    示例:[从数据库中删除customer表]

    db2 drop table professional.customers
    

    要删除表(包括触发器和关系),需要使用“drop table hierarchy”命令删除整个层次。

    语法:

    db2 drop table hierarchy <tab_name>
    

    示例:[要删除表'customer'的整个层次]

    db2 drop table hierarchy professional.customers
    

    下一节:db2 别名

    db2 教程

    相关文章