千家信息网

HANA常用语法有哪些

发表于:2024-12-02 作者:千家信息网编辑
千家信息网最后更新 2024年12月02日,HANA常用语法有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。SQL--1.查看当前日期SELECT CURRENT_DATE
千家信息网最后更新 2024年12月02日HANA常用语法有哪些

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为SCHEMASELECT 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  [OWNED BY ]/*OWNED BY:指定SCHEMA的拥有者,如果省略。当前用户将是这个SHEMA的拥有者*/CREATE SCHEMA MY_SCHEMA;CREATE SCHEMA MY_SCHEMA OWNED BY SYSTEM.--删除SCHEMA:--语法:DROP SCHEMA  []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
/*行表适用于如下一些场景:     * 一次处理一条记录的情况     * 应用需要访问完整记录或记录的大部分(即一条记录中的所有字段或大多数字段)     * 不需要压缩率     * 没有或很少的聚集、分组等复杂操作     * 表中的记录行数不是很多*/--下面是创建行表的一些列子:--例1CREATE TABLE ACCOUNTS    ( ACT_NO CHAR(18),      ACT_NAME NVARCHAR(100),      BALANCE DECIMAL(15,2),      PRIMARY KEY (ACT_NO)    );--例2CREATE 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中字段值查找)    * 需要很高的压缩率。*/--例1CREATE 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  ON  (, ...) [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 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常用语法有哪些问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0