1)create:可以创建一张表或视图。表名如果没有用双引号括起来,默认都会使用其对应的大写字母名字表示,括起来后跟括起来的值保持一致。如果创建的表已经存在,且其不是通过phoenix create语法创建的,则可以继续使用phoenix create创建同名表,不影响原有表数据,但会影响通过phoenix select结果值存在部分不需要的值。创建视图时,需要对应的表和列族已存在,不能对表中数据进行更新操作。建表语句中,还可以附加一些HBase表、列族配置选项,如VERSIONS、MAX_FILESIZE etc.
CREATETABLE IF NOT EXISTS test( id char(10) not null primary key, value integer);
2)alter:可添加或删除一列或更新表属性。被移除的列,其上数据会被删除。如果该列是主键,不能被移除,如果移除列的是一个视图,数据是不会受影响的。
ALTERTABLE testADD dept_name varchar(50)
3)drop:删除表或视图。如果删除表,表中数据也会被删除,如果是视图则不受影响。
DROPTABLE test
4)upsert:更新或插入数据。如果表中不存在该数据则插入,否则更新,所以可以看出phoenix没有单独定义insert 或update命令。列列表可以省略,但后面插入的值顺序需要与表schema定义顺序保持一致,也可自己定义插入哪些column对应值,顺序与之对应即可。目前还支持一种选择性upsert的方式,它将另外一个查询的结果作为值插入表中。如果auto commit开启的话,会在服务端就提交了,否则会缓存到客户端,等着显式提交的时候进行批量upsert,通过配置” phoenix.mutate.upsertBatchSize”指定大小,默认10000行/次。
UPSERTINTO TEST VALUES('foo','bar',3);
5)delete:删除指定行。如果auto commit开启,则会直接在服务端执行删除。
DELETE FROM TEST WHERE ID=123;
6)index:二级索引。在表或视图上创建二级索引,当前版本仅支持对具有IMMUTABLE_ROWS属性的表上添加二级索引。目前实现是在数据行插入后便插入了索引。当创建了索引后,其实也会在HBase中创建一张表,表名为该二级索引名,所以还可对该index指定创建表相关参数。同时还可删除索引和修改索引。
CREATEINDEX my_idx ON sales.opportunity(last_updated_date DESC)
7)explain:执行计划。提供一个很简单的方式查看执行给定命令所需的逻辑步骤。每个步骤局势以单行字符串进行输出表示。这个可以很容易定位查询的性能瓶颈,或者所建二级索引是否生效等。
explain select * from test where age>0;