HANA常用语法有哪些

76次阅读
没有评论

共计 3916 个字符,预计需要花费 10 分钟才能阅读完成。

HANA 常用语法有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

SQL

--1. 查看当前日期
SELECT CURRENT_DATE  DATE  FROM DUMMY; 
-- 查看当前日期零时零分
SELECT TO_TIMESTAMP(TO_CHAR(CURRENT_TIMESTAMP, YYYY-MM-DD)) FROM DUMMY;
SELECT CURRENT_DATE FROM DUMMY;
--2. 查找雇员的姓名及雇员的年薪。P1526659201 为 SCHEMA
SELECT ENAME,SAL*12 FROM P1526659201.EMP; 
--3. 像 ORACLE 一样任何含空值的数学表达式是空值:SELECT ENAME,SAL*12+COMM FROM P1526659201.EMP;
--4. 其中 || 相当于把 SAL 全部转换成字符串
SELECT ENAME||SAL FROM EMP; 
--5. 表示字符串的方法
SELECT ENAME||  ENAME  FROM EMP; 
--6. 如果字符串中包含有   用 替换它
SELECT ENAME||  ENAME  FROM EMP; 
--7. 取出 EMP 表的前 5 条记录
SELECT TOP 5 * FROM EMP; 
--8. 取出 EMP 表的全部记录
SELECT ALL * FROM EMP; 
--9. 去除两个字段重复的数据
SELECT DISTINCT DEPTNO,JOB FROM EMP;
--10. 取 ASCII 码
SELECT ASCII(ANT)  ASCII  FROM DUMMY;

SCHEMA

-- 创建 SCHEMA.
-- 语法:CREATE SCHEMA  SCHEMA_NAME  [OWNED BY  USER_NAME]
/*OWNED BY:指定 SCHEMA 的拥有者,如果省略。当前用户将是这个 SHEMA 的拥有者 */
CREATE SCHEMA MY_SCHEMA;
CREATE SCHEMA MY_SCHEMA OWNED BY SYSTEM.
-- 删除 SCHEMA:
-- 语法:DROP SCHEMA  SCHEMA_NAME  [DROP_OPTION]
DROP_OPTION: CASCADE | RESTRICT
/* 默认的 DROP_OPTION 为:RESTRICT(限制约束)
RESTRICT:直接删除没有依赖的对象, 如果对象有依赖关系,会抛出错误信息。CASCADE:直接删除所有对象。*/
CREATE SCHEMA MY_SCHEMA;
CREATE TABLE MY_SCHEMA.T (A INT);
DROP SCHEMA MY_SCHEMA CASCADE;
SELECT * FROM TABLES WHERE SCHEMA_NAME= P1526659201  -- 查询 SCHEMA:P1526659201 下的所有表 

TABLE

/* 行表适用于如下一些场景: *  一次处理一条记录的情况
 *  应用需要访问完整记录或记录的大部分(即一条记录中的所有字段或大多数字段) *  不需要压缩率
 *  没有或很少的聚集、分组等复杂操作
 *  表中的记录行数不是很多
-- 下面是创建行表的一些列子:CREATE TABLE ACCOUNTS
 ( ACT_NO CHAR(18),
 ACT_NAME NVARCHAR(100),
 BALANCE DECIMAL(15,2),
 PRIMARY KEY (ACT_NO)
 );
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;
/* 依据某个已经存在的表创建另外的新表。HANA SQL 提供了两类方法 */:-- 方法一:创建的表与源表数据类型、约束完全相同。例如:CREATE TABLE T_ACCOUNTS LIKE ACCOUNTS WITH NO DATA
-- 方法二:创建的表字段类型和 NULL/NOT NULL 属性相同
CREATE TABLE T_ACCOUNTS1 AS (SELECT * FROM ACCOUNTS) WITH DATA
/* 列表适用于如下一些场景: *  通常只是在一个或少量列上执行计算操作
 *  表在进行搜索时通常基于少量列上的值
 *  表有很多列
 *  表有很多行,并且通常进行的是列式操作(比如:聚集计算和 WHERE 中字段值查找) *  需要很高的压缩率。CREATE COLUMN TABLE TPCH.NATION
 (N_NATIONKEY INT NOT NULL,
 N_NAME CHAR(25),
 N_REGIONKEY INT,
 N_COMMENT VARCHAR(152),
 PRIMARY KEY(N_NATIONKEY)
 );
-- 例 2(分区,只适用于列表,分区键必须是主键的一部分)
CREATE COLUMN TABLE TPCH.LINEITEM
 (L_ORDERKEY INT NOT NULL,L_PARTKEY INT,
 L_SUPPKEY INT,L_LINENUMBER INT NOT NULL,
 L_QUANTITY DECIMAL(10,2),L_EXTENDEDPRICE DECIMAL(10,2),
 L_DISCOUNT DECIMAL(10,2),L_TAX DECIMAL(10,2),
 L_RETURNFLAG CHAR(1),L_LINESTATUS CHAR(1),
 L_SHIPDATE DATE,L_COMMITDATE DATE,L_RECEIPTDATE DATE,
 L_SHIPINSTRUCT CHAR(25),L_SHIPMODE CHAR(10),
 L_COMMENT VARCHAR(44),
 PRIMARY KEY INVERTED VALUE (L_ORDERKEY,L_LINENUMBER)
 )
 PARTITION BY HASH (L_ORDERKEY,L_LINENUMBER) PARTITIONS 4,
 RANGE (L_SHIPDATE) (
 PARTITION  2011/01/01 = VALUES  2011/04/01 ,
 PARTITION  2011/04/01 = VALUES  2011/07/01 ,
 PARTITION  2011/07/01 = VALUES  2011/10/01 ,
 PARTITION OTHERS);
--HANA 查看特定表的分区情况
SELECT * FROM SYS.M_CS_PARTITIONS WHERE TABLE_NAME =  TABLE_NAME 
--HANA 支持行表转换为列表,或者列表转换为行表。示例如下:ALTER TABLE ACCOUNTS COLUMN THREADS 10 BATCH 10000 -- 行转列
ALTER TABLE ACCOUNTS ROW THREADS 10 -- 列表转为行表 

INDEX

--SAP HANA 的索引都是保存在内存中。-- 创建索引:-- 语法:CREATE [UNIQUE] [BTREE | CPBTREE] INDEX  INDEX_NAME  ON  TABLE_NAME  (COLUMN_NAME_ORDER , ...) [ASC | DESC]
-- 创建测试表:CREATE ROW TABLE TEST_INDEX (ID INT,NAME NVARCHAR(10), REMARK NVARCHAR(10));
CREATE INDEX INDEXTEST1 ON TEST_INDEX(NAME);
CREATE CPBTREE INDEX INDEXTEST2 ON TEST_INDEX(ID, NAME DESC);
-- 创建唯一键索引:CREATE UNIQUE INDEX INDEXTEST4 ON TEST_INDEX(ID);
CREATE UNIQUE INDEX INDEXTEST3 ON TEST_INDEX(NAME,REMARK);
-- 删除索引:DROP INDEX  INDEX_NAME 
DROP INDEX INDEXTEST2;删除索引 INDEXTEST2
-- 查询索引:SELECT * FROM INDEXES WHERE TABLE_NAME = EMP  -- 查询员工表中使用的索引
SELECT * FROM INDEX_COLUMNS WHERE TABLE_NAME = EMP; -- 查询索引列
SELECT * FROM M_RS_INDEXES WHERE TABLE_NAME =  EMP  ;-- 查询索引的统计信息 (B-TREE AND CPB-TREE)
SELECT * FROM FULLTEXT_INDEXES WHERE TABLE_NAME =  EMP  -- 查询 FULLTEXT  索引
SELECT * FROM M_FULLTEXT_QUEUES; -- 查看 FULLTEXT  索引队列的状态 

关于 HANA 常用语法有哪些问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-17发表,共计3916字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)