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

SQL

--1.查看当前日期SELECTCURRENT_DATE"DATE"FROMDUMMY;--查看当前日期零时零分SELECTTO_TIMESTAMP(TO_CHAR(CURRENT_TIMESTAMP,'YYYY-MM-DD'))FROMDUMMY;SELECTCURRENT_DATEFROMDUMMY;--2.查找雇员的姓名及雇员的年薪。P1526659201为SCHEMASELECTENAME,SAL*12FROMP1526659201.EMP;--3.像ORACLE一样任何含空值的数学表达式是空值:SELECTENAME,SAL*12+COMMFROMP1526659201.EMP;--4.其中||相当于把SAL全部转换成字符串SELECTENAME||SALFROMEMP;--5.表示字符串的方法SELECTENAME||'ENAME'FROMEMP;--6.如果字符串中包含有'用''替换它SELECTENAME||'''ENAME'FROMEMP;--7.取出EMP表的前5条记录SELECTTOP5*FROMEMP;--8.取出EMP表的全部记录SELECTALL*FROMEMP;--9.去除两个字段重复的数据SELECTDISTINCTDEPTNO,JOBFROMEMP;--10.取ASCII码SELECTASCII('ANT')"ASCII"FROMDUMMY;SCHEMA

--创建SCHEMA.--语法:CREATESCHEMA<SCHEMA_NAME>[OWNEDBY<USER_NAME>]/*OWNEDBY:指定SCHEMA的拥有者,如果省略。当前用户将是这个SHEMA的拥有者*/CREATESCHEMAMY_SCHEMA;CREATESCHEMAMY_SCHEMAOWNEDBYSYSTEM.--删除SCHEMA:--语法:DROPSCHEMA<SCHEMA_NAME>[<DROP_OPTION>]DROP_OPTION:CASCADE|RESTRICT/*默认的DROP_OPTION为:RESTRICT(限制约束)RESTRICT:直接删除没有依赖的对象,如果对象有依赖关系,会抛出错误信息。CASCADE:直接删除所有对象。*/CREATESCHEMAMY_SCHEMA;CREATETABLEMY_SCHEMA.T(AINT);DROPSCHEMAMY_SCHEMACASCADE;SELECT*FROMTABLESWHERESCHEMA_NAME='P1526659201'--查询SCHEMA:P1526659201下的所有表TABLE

/*行表适用于如下一些场景:*一次处理一条记录的情况*应用需要访问完整记录或记录的大部分(即一条记录中的所有字段或大多数字段)*不需要压缩率*没有或很少的聚集、分组等复杂操作*表中的记录行数不是很多*/--下面是创建行表的一些列子:--例1CREATETABLEACCOUNTS(ACT_NOCHAR(18),ACT_NAMENVARCHAR(100),BALANCEDECIMAL(15,2),PRIMARYKEY(ACT_NO));--例2CREATETABLER(AINTPRIMARYKEY,BNVARCHAR(10));CREATETABLEF(FKINT,BNVARCHAR(10),UNIQUE(FK,B),FOREIGNKEY(FK)REFERENCESRONUPDATECASCADE)NOLOGGING;/*依据某个已经存在的表创建另外的新表。HANASQL提供了两类方法*/:--方法一:创建的表与源表数据类型、约束完全相同。例如:CREATETABLET_ACCOUNTSLIKEACCOUNTSWITHNODATA--方法二:创建的表字段类型和NULL/NOTNULL属性相同CREATETABLET_ACCOUNTS1AS(SELECT*FROMACCOUNTS)WITHDATA/*列表适用于如下一些场景:*通常只是在一个或少量列上执行计算操作*表在进行搜索时通常基于少量列上的值*表有很多列*表有很多行,并且通常进行的是列式操作(比如:聚集计算和WHERE中字段值查找)*需要很高的压缩率。*/--例1CREATECOLUMNTABLETPCH.NATION(N_NATIONKEYINTNOTNULL,N_NAMECHAR(25),N_REGIONKEYINT,N_COMMENTVARCHAR(152),PRIMARYKEY(N_NATIONKEY));--例2(分区,只适用于列表,分区键必须是主键的一部分)CREATECOLUMNTABLETPCH.LINEITEM(L_ORDERKEYINTNOTNULL,L_PARTKEYINT,L_SUPPKEYINT,L_LINENUMBERINTNOTNULL,L_QUANTITYDECIMAL(10,2),L_EXTENDEDPRICEDECIMAL(10,2),L_DISCOUNTDECIMAL(10,2),L_TAXDECIMAL(10,2),L_RETURNFLAGCHAR(1),L_LINESTATUSCHAR(1),L_SHIPDATEDATE,L_COMMITDATEDATE,L_RECEIPTDATEDATE,L_SHIPINSTRUCTCHAR(25),L_SHIPMODECHAR(10),L_COMMENTVARCHAR(44),PRIMARYKEYINVERTEDVALUE(L_ORDERKEY,L_LINENUMBER))PARTITIONBYHASH(L_ORDERKEY,L_LINENUMBER)PARTITIONS4,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',PARTITIONOTHERS);--HANA查看特定表的分区情况SELECT*FROMSYS.M_CS_PARTITIONSWHERETABLE_NAME='TABLE_NAME';--HANA支持行表转换为列表,或者列表转换为行表。示例如下:ALTERTABLEACCOUNTSCOLUMNTHREADS10BATCH10000--行转列ALTERTABLEACCOUNTSROWTHREADS10--列表转为行表INDEX

--SAPHANA的索引都是保存在内存中。--创建索引:--语法:CREATE[UNIQUE][BTREE|CPBTREE]INDEX<INDEX_NAME>ON<TABLE_NAME>(<COLUMN_NAME_ORDER>,...)[ASC|DESC]--创建测试表:CREATEROWTABLETEST_INDEX(IDINT,NAMENVARCHAR(10),REMARKNVARCHAR(10));CREATEINDEXINDEXTEST1ONTEST_INDEX(NAME);CREATECPBTREEINDEXINDEXTEST2ONTEST_INDEX(ID,NAMEDESC);--创建唯一键索引:CREATEUNIQUEINDEXINDEXTEST4ONTEST_INDEX(ID);CREATEUNIQUEINDEXINDEXTEST3ONTEST_INDEX(NAME,REMARK);--删除索引:DROPINDEX<INDEX_NAME>DROPINDEXINDEXTEST2;删除索引INDEXTEST2--查询索引:SELECT*FROMINDEXESWHERETABLE_NAME='EMP';--查询员工表中使用的索引SELECT*FROMINDEX_COLUMNSWHERETABLE_NAME='EMP';--查询索引列SELECT*FROMM_RS_INDEXESWHERETABLE_NAME='EMP';--查询索引的统计信息(B-TREEANDCPB-TREE)SELECT*FROMFULLTEXT_INDEXESWHERETABLE_NAME='EMP';--查询FULLTEXT索引SELECT*FROMM_FULLTEXT_QUEUES;--查看FULLTEXT索引队列的状态

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