
# Sqlline接口介绍
可以直接使用sqlline.py在服务端对HBase进行SQL操作。Phoenix的sqlline接口与开源社区保持一致，请参见<https://phoenix.apache.org/>。
Sqlline常用语法见[表1]，常用函数见[表2]，命令行使用可以参考[Phoenix命令行操作介绍](https://support.huaweicloud.com/devg3-mrs/mrs_07_290069.html)章节。
 表1Sqlline常用语法 
| 命令                     | 描述          | 示例                                                                   |
|:---|:---|:---|
| **CREATE TABLE**       | 创建表。        | CREATE TABLE MY_TABLE(id BIGINT not null primary key, name VARCHAR); |
| **ALTER**              | 修改表/视图。     | ALTER TABLE MY_TABLE DROP COLUMN name;                               |
| **DROP TABLE**         | 删除表。        | DROP TABLE MY_TABLE;                                                 |
| **UPSERT VALUES**      | 插入/修改数据。    | UPSERT INTO MY_TABLE VALUES(1,'abc');                                |
| **SELECT**             | 查询数据。       | SELECT \* FROM MY_TABLE;                                             |
| **CREATE INDEX**       | 创建全局索引。     | CREATE INDEX MY_IDX ON MY_TABLE(name);                               |
| **CREATE LOCAL INDEX** | 创建局部索引。     | CREATE LOCAL INDEX MY_LOCAL_IDX ON MY_TABLE(id,name);                |
| **ALTER INDEX**        | 修改索引状态。     | ALTER INDEX MY_IDX ON MY_TABLE DISABLE;                              |
| **DROP INDEX**         | 删除索引。       | DROP INDEX MY_IDX ON MY_TABLE;                                       |
| **EXPLAIN**            | 显示执行计划。     | EXPLAIN SELECT name FROM MY_TABLE;                                   |
| **CREATE SEQUENCE**    | 创建序列。       | CREATE SEQUENCE MY_SEQUENCE;                                         |
| **DROP SEQUENCE**      | 删除序列。       | DROP SEQUENCE MY_SEQUENCE;                                           |
| **CREATE VIEW**        | 创建视图。       | CREATE VIEW MY_VIEW AS SELECT \* FROM MY_TABLE;                      |
| **DROP VIEW**          | 删除视图。       | DROP VIEW MY_VIEW;                                                   |
| **CREATE SCHEMA**      | 创建SCHEMA。   | CREATE SCHEMA MY_SCHEMA;                                             |
| **USE**                | 修改默认SCHEMA。 | USE MY_SCHEMA;                                                       |
| **DROP SCHEMA**        | 删除SCHEMA。   | DROP SCHEMA MY_SCHEMA;                                               |
   
 表2Sqlline常用函数 
| 函数类型 | 函数                    | 描述                                                                                                                                        | 示例                                                       |
|:---|:---|:---|:---|
| 字符串  | **SUBSTR**            | 字符串截取。                                                                                                                                    | SUBSTR('\[Hello\]', 2, 5)                                |
| 字符串  | **INSTR**             | 查询子串位置。                                                                                                                                   | INSTR('Hello World', 'World')                            |
| 字符串  | **TRIM**              | 去除前后空格。                                                                                                                                   | TRIM(' Hello ')                                          |
| 字符串  | **LTRIM**             | 去除左空格。                                                                                                                                    | LTRIM(' Hello')                                          |
| 字符串  | **RTRIM**             | 去除右空格。                                                                                                                                    | RTRIM('Hello ')                                          |
| 字符串  | **LPAD**              | 字符串左侧填充。                                                                                                                                  | LPAD('John',30,'\*')                                     |
| 字符串  | **LENGTH**            | 获取字符串长度。                                                                                                                                  | LENGTH('Hello')                                          |
| 字符串  | **UPPER**             | 字符串转大写。                                                                                                                                   | UPPER('Hello')                                           |
| 字符串  | **LOWER**             | 字符串转小写。                                                                                                                                   | LOWER('HELLO')                                           |
| 字符串  | **REVERSE**           | 字符串反转。                                                                                                                                    | REVERSE('Hello')                                         |
| 字符串  | **REGEXP_SPLIT**      | 字符串分割。                                                                                                                                    | REGEXP_SPLIT('ONE,TWO,THREE', ',')                       |
| 字符串  | **REGEXP_REPLACE**    | 字符串替换。                                                                                                                                    | REGEXP_REPLACE('abc123ABC', '\[0-9\]+', '#')             |
| 字符串  | **REGEXP_SUBSTR**     | 获取正则子串。                                                                                                                                   | REGEXP_SUBSTR('na1-appsrv35-sj35', '\[\^-\]+')           |
| 聚合   | **AVG**               | 获取平均数。                                                                                                                                    | AVG(X)                                                   |
| 聚合   | **COUNT**             | 获取数据条数。                                                                                                                                   | COUNT(\*)                                                |
| 聚合   | **MAX**               | 获取最大值。                                                                                                                                    | MAX(NAME)                                                |
| 聚合   | **MIN**               | 获取最小值。                                                                                                                                    | MIN(NAME)                                                |
| 聚合   | **SUM**               | 数字求合。                                                                                                                                     | SUM(X)                                                   |
| 聚合   | **STDDEV_POP**        | 标准差。                                                                                                                                      | STDDEV_POP( X )                                          |
| 聚合   | **STDDEV_SAMP**       | 样板标准差。                                                                                                                                    | STDDEV_SAMP( X )                                         |
| 聚合   | **NTH_VALUE**         | 分组后的第几个值。                                                                                                                                 | NTH_VALUE( name, 2 ) WITHIN GROUP (ORDER BY salary DESC) |
| 时间   | **NOW**               | 获取当前时间(DATE类型)。                                                                                                                           | NOW()                                                    |
| 时间   | **CURRENT_TIME**      | 获取当前时间(TIME类型)。                                                                                                                           | CURRENT_TIME()                                           |
| 时间   | **CURRENT_** **DATE** | 获取当前时间(DATE类型)。                                                                                                                           | CURRENT_DATE()                                           |
| 时间   | **TO_DATE**           | 字符串转DATE类型。                                                                                                                               | TO_DATE('1970-01-01', 'yyyy-MM-dd', 'GMT+1')             |
| 时间   | **TO_TIME**           | 字符串转TIME类型。                                                                                                                               | TO_TIME('1970-01-01', 'yyyy-MM-dd', 'GMT+1')             |
| 时间   | **TO_TIMESTAMP**      | 字符串转TIMESTAMP类型。                                                                                                                          | TO_TIMESTAMP('1970-01-01', 'yyyy-MM-dd', 'GMT+1')        |
| 时间   | **YEAR**              | 获取年。                                                                                                                                      | YEAR(TO_DATE('2015-6-05'))                               |
| 时间   | **MONTH**             | 获取月。                                                                                                                                      | MONTH(TO_TIMESTAMP('2015-6-05'))                         |
| 时间   | **WEEK**              | 获取星期。                                                                                                                                     | WEEK(TO_TIME('2010-6-15'))                               |
| 时间   | **HOUR**              | 获取小时。                                                                                                                                     | HOUR(TO_TIMESTAMP('2015-6-05'))                          |
| 时间   | **MINUTE**            | 获取分钟。                                                                                                                                     | MINUTE(TO_TIME('2015-6-05'))                             |
| 时间   | **SECOND**            | 获取秒。                                                                                                                                      | SECOND(TO_DATE('2015-6-05'))                             |
| 数字   | **ROUND**             | 四舍五入（也可用于时间）。                                                                                                                             | ROUND(2.56)                                              |
| 数字   | **CEIL**              | 向上取整。                                                                                                                                     | CEIL(2.34)                                               |
| 数字   | **FLOOR**             | 向下取整。                                                                                                                                     | FLOOR(2.34)                                              |
| 数字   | **TRUNC**             | 向下取整（与**FLOOR**相同）。                                                                                                                       | TRUNC(2.34)                                              |
| 数字   | **TO_NUMBER**         | 字符串转数字。                                                                                                                                   | TO_NUMBER('-123.33')                                     |
| 数字   | **RAND**              | 获取随机数。                                                                                                                                    | RAND()                                                   |
| 数学   | **ABS**               | 求绝对值。                                                                                                                                     | ABS(-1)                                                  |
| 数学   | **SQRT**              | 公式： ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_formulaimage_0000001350502857.png) | SQRT(1.1)                                                |
| 数学   | **EXP**               | 公式： ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_formulaimage_0000001350582641.png)  | EXP(-1)                                                  |
| 数学   | **POWER**             | 公式： ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_formulaimage_0000001297583044.png)  | POWER(2, 3)                                              |
| 数学   | **LN**                | 公式： ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_formulaimage_0000001350582673.png) | LN(3)                                                    |
| 数学   | **LOG**               | 公式： ![](https://support.huaweicloud.com/devg3-mrs/zh-cn_formulaimage_0000001297743016.png)  | LOG(2, 3)                                                |
| 数组   | **ARRAY_ELEM**        | 通过下标访问数组。                                                                                                                                 | ARRAY_ELEM(ARRAY\[1,2,3\], 1)                            |
| 数组   | **ARRAY_PREPEND**     | 指定位置插入数据到数组。                                                                                                                              | ARRAY_APPEND(ARRAY\[1,2,3\], 4)                          |
| 数组   | **ARRAY_CAT**         | 连接数组。                                                                                                                                     | ARRAY_CAT(ARRAY\[1,2\], ARRAY\[3,4\])                    |
| 数组   | **ARRAY_FILL**        | 数组填充。                                                                                                                                     | ARRAY_FILL(1, 3)                                         |
| 数组   | **ARRAY_TO_STRING**   | 数组转字符串。                                                                                                                                   | ARRAY_TO_STRING(ARRAY\['a','b','c'\], ',')               |
| 数组   | **ANY**               | 数组任意值满足条件。                                                                                                                                | 10 \> ANY(my_array)                                      |
| 数组   | **ALL**               | 数组所有值满足条件。                                                                                                                                | 10 \> ALL(my_array)                                      |
| 其他   | **MD5**               | 获取MD5码。                                                                                                                                   | MD5(my_column)                                           |
| 其他   | **ENCODE**            | 编码字符串。                                                                                                                                    | ENCODE(myNumber, 'BASE62')                               |
| 其他   | **DECODE**            | 解码字符串。                                                                                                                                    | DECODE('000000008512af277ffffff8', 'HEX')                |
   
