Skip to content

DDL操作

jaywong edited this page Aug 5, 2013 · 5 revisions

shell操作或者客户端操作。请先移步https://github.com/alibaba/wasp/wiki/%E5%AE%A2%E6%88%B7%E7%AB%AFAPI%EF%BC%9A%E7%AE%A1%E7%90%86%E5%8A%9F%E8%83%BD 查看相关操作教程

重要:DDL操作前均需要disable表。DDL操作之后再enable表

CREATE TABLE

   CREATE TABLE user {REQUIRED INT64 user_id; 
                      REQUIRED STRING name; } //以根表的形式构建一张表,表名叫user
                      PRIMARY KEY(user_id), 
                      ENTITY GROUP ROOT,
                      ENTITY GROUP KEY(user_id);
   //必须指定entityGroup key(简称egk),这个字段是表的均衡字段,表的分区就依赖这个字段的字典序排序然后切割
   CREATE TABLE Photo{REQUIRED INT64 user_id columnfamily cf comment 'aaa';  // columnfamily used to specify the ColumnFamily in hbase when storing
                      REQUIRED INT64 photo_id comment 'child primary key';   // the comment used to specify the comment
                      REQUIRED INT64 time; 
                      REQUIRED STRING full_url;// the ';' can replace by ',' 
                      OPTIONAL STRING thumbnail_url;
                      REPEATED STRING tag; } 
                      PRIMARY KEY(user_id,photo_id),
                      IN TABLE user,
                      ENTITY GROUP KEY(user_id) REFERENCES user;
   //photo表以user表的子表形式创建,每张根表也就是父表下面可以创建若干个子表,但一个子表只能属于一个父表。子表会使用父表的egk来作为均衡字段,
     并且这个是强制指定的,用户不需要在创建子表的时候输入,如果用户需要对子表指定,也必须要跟父表一致,这里默认强制使用父表的egk,同时子表必
     须在创建的字段中引入父表的pk字段,egk字段。如果不按照这个规则创建子表,则会报错。
   CREATE TABLE user {REQUIRED INT64 user_id;
                      REQUIRED STRING name; } //以预分区的形式建表
                      PRIMARY KEY(user_id), 
                      ENTITY GROUP ROOT,
                      ENTITY GROUP KEY(user_id),
                      PARTITION BY RANGE('aaa', 'zzz', 10);
   //把均衡字段的aaa到zzz范围内的切成10个分区(均衡字段是字典序)。
   // Required Int64 user_id; 按照这三个的顺序来写字段定义,后面加上columnfamily可以指定存储时的CF,加上comment指定字段的注释             
   // Partition by only support by root table. Because child table share Entity Group with Root table.
   // 子表创建时不可以指定分区,因为直接沿用父表的分区。

DROP TABLE

   DROP TABLE Photo;
   DROP TABLE IF EXISTS Photo, User;

ALTER TABLE

   ALTER TABLE Photo ADD COLUMN DateOfBirth string; // table 添加列到最后面
   ALTER TABLE Photo ADD COLUMN DateOfBirth string columnfamily cf comment 'aaa'; // table 添加列到最后面,指定columnfamily是cf ,指定注释是'aaa'
   ALTER TABLE Photo ADD COLUMN dummy2 int32 AFTER thumbnail_url; // 添加列dummy2到thumbnail_url后面,类型是INT32
   ALTER TABLE Photo ADD COLUMN dummy1 int32 FIRST thumbnail_url; // 添加列dummy1到thumbnail_url前面,类型是INT32
   ALTER TABLE Photo CHANGE COLUMN thumbnail_url thumbnail_url INT32; //修改列thumbnail_url的类型为INT32
   ALTER TABLE Photo CHANGE thumbnail_url thumbnail_url INT32; // 同上
   ALTER TABLE Photo CHANGE thumbnail_url rename_url INT64;  // 修改列thumbnail_url,重命名为rename_url,类型为INT64
   ALTER TABLE Photo DROP COLUMN full_url, DROP COLUMN thumbnail_url; //drop两个列full_url和thumbnail_url
 默认列簇是default.

SHOW TABLES

   SHOW TABLES;
   SHOW TABLES LIKE 'pattern';
   SHOW CREATE TABLE tablename;    

DESCRIBE TABLE

   DESCRIBE user;
Clone this wiki locally