Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos

    先前的几篇文章主要介绍了HANA SQL语句的分类、HANA数据库标识符规则、HANA数据库的一些技术指标以及HANA SQL数据类型。从这篇文章开始将进入实际内容,首先在这篇文章向大家介绍如何在HANA数据库中创建表和索引。

    HANA支持6种表类型:ROW  TABLE、COLUMN TABLE、HISTORY COLUMN TABLE、VIRTUAL TABLE、GLOBAL TEMPORARY TABLE、LOCAL TEMPORARY TABLE

    在这里向大家介绍 "行表(ROW TABLE)" 和 "列表(COLUMN TABLE)" ,对于VIRTUAL TABLE的介绍请网友们参见本人的其它两篇博文。另外其它三种表,可以参看HANA SQL参考手册。

   1.  SCHEMA

   SCHEMA用于存放用户创建的数据库对象,类似于WIN操作系统的文件夹。在HANA中,创建一个新用户时会自动创建一个同名的SCHEMA。这个SCHEMA会作为用户当前缺省的SCHEMA,

用户在访问当前SCHEMA中的数据库对象时不用加schema名。

    用户也可以创建其它SCHEMAs,例如

          CREATE SCHEMA tpch

    注意:用户需要有相应的权限才能创建其它SCHEMAs。数据库管理员需要使用如下命令授权:

          GRANT CREATE SCHEMA TO username 

    使用如下语句可以查看用户当前的SCHEMA:

          SELECT CURRENT_SCHEMA FROM DUMMY

    使用如下语句可以改变用户当前的SCHEMA:

          SET SCHEMA tpch

   2.  创建行表和索引

   行表适用于如下一些场景:

     * 一次处理一条记录的情况

     * 应用需要访问完整记录或记录的大部分(即一条记录中的所有字段或大多数字段)

     * 不需要压缩率

     * 没有或很少的聚集、分组等复杂操作

     * 表中的记录行数不是很多

     下面是创建行表的一些列子:

    

    --例1

    CREATE   TABLE  accounts

    ( act_no CHAR(18),

      act_name NVARCHAR(100),

      balance DECIMAL(15,2),

      PRIMARY KEY (act_no)

    )

   --例2
    CREATE TABLE R
    (A INT PRIMARY KEY,
     B NVARCHAR(10)
    );
    CREATE TABLE F
    (FK INT, B NVARCHAR(10),
     UNIQUE (FK, B), 
     FOREIGN KEY(FK) REFERENCES R ON UPDATE CASCADE
    )  NO LOGGING;


   在上面的创建行表示例中指定的“UNIQUE”或“PRIMARY KEY”约束,HANA会自动创建相应的索引。
   HANA数据库的行表创建的索引分为两种类型 (仅用于行表):
      * BTREE      是B+-Tree索引
      * CPBTREE  是一种"Compressed Prefix B+-Tree" 索引,即压缩前缀索引。这种索引对于索引键(单字段或多字段)比较长的情况有比较好的性能。
  如果不指定索引的类型,HANA会根据索引键字段的类型、索引字段的个数自动选择(建议大家使用这种自动选择的方法):
      * 如果是字符串、binary、decimal、多字段UNIQUE或多字段主键,使用CPBTREE;其他情况使用BTREE
      * 如果显示指定,也要遵循上面的规则。显示指定的基本语法如下:
         UNIQUE [ BTREE | CPBTREE ] 或 PRIMARY KEY [ BTREE | CPBTREE]


   使用如下语句可以查询表上已有索引的类型:
      SELECT SCHEMA_NAME,
           INDEX_NAME,
           INDEX_TYPE,
           CONSTRAINT
      FROM INDEXES
      WHERE TABLE_NAME = ‘ACCOUNTS’

   创建表与源表相同的表
   有时我们需要依据某个已经存在的表创建另外的新表。HANA SQL提供了两类方法:
       *  创建的表与源表数据类型、约束完全相同。例如:
                CREATE TABLE T_ACCOUNTS LIKE ACCOUNTS WITH NO DATA     
       *  创建的表字段类型和NULL/NOT NULL属性相同
                CREATE TABLE T_ACCOUNTS1 AS (SELECT * FROM  ACCOUNTS) WITH DATA


  创建行表索引
  创建行表索引的基本语法如下:
       CREATE [UNIQUE] [BTREE | CPBTREE] INDEX <index_name> ON <table_name> (….) ….
  下面是几个示例:
      CREATE INDEX idx1 ON t(b);
      CREATE INDEX idx2 ON t(a, b desc);
      CREATE INDEX idx3 ON t(a, c) desc;
      CREATE  UNIQUE INDEX idx24ON t(b, c );

   有关BTREE和CPBTREE的说明,参见前面的内容。

   上一篇: HANA SQL 数据类型

http://scn.sap.com/community/chinese/hana/blog/2014/01/03/sap-hana-%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88...

   下一篇:创建SCHMA、表和索引 (2)

http://scn.sap.com/community/chinese/hana/blog/2014/01/03/sap-hana-%E5%AD%A6%E4%B9%A0%E7%B3%BB%E5%88...

Labels in this area