HANA 基础SQL和SQLScript

本文由一位前辈总结的sql语法  希望对大家有用

第一天:(sql)

1. DDL(定义),DML(操作),DCL(控制)
2. DATA TYPE 和操作符
3. DDL
·表名应尽量为大写字符,如需用到小写字符或者空格,要用双引号。
·字段定义描述 PRIMARY KEY(默认NOT NULL), DEFAULT , UNIQUE(唯一字段)。
·列操作:ALTER TABLE TN ADD/DROP/ALTER() 注意修改的时候列的精度只能扩大不能缩小。
·PRIMARY KEY修改:先删再加 ALTER TABLE TN DROP PRIMARY KEY; ALTER TABLE TN ADD…
·重命名 RENAME TABLE/COLUMN … TO … 
4. DML
·SELECT 可以人为增加列’CHINA’ as COUNTRY,对于数值字段可进行简单计算PRICE*0.9。
·UNION  ALL合并查询结果 SELECT …UNION ALL SELECT 不需要重复项去掉ALL。需要列数相同且数据类型兼容
·JOIN
  CROSS JOIN(交叉连接)表的笛卡尔积连接,没有WHERE/ON 加也只能加WHERE。
  CROSS JOIN…WHERE=JOIN…ON=INNER JOIN…ON
  INNER JOIN(内连接)也称作自然连接,表的最基本连接,后面跟ON。
  T1, T2 … WHERE=INNER JOIN…ON
  OUTER JOIN(外连接)根据LEFT/RIGHT外接另一个表,后面跟ON,主表未连接的列值为空
  FULL OUTER JOIN=LEFT+RINGT OUTER JOIN 这3种连接OUTER都可以省略(默认为OUTER)
·复杂SELECT语句
  后面可以跟一些optional参数
  SELECT [TOP NUMBER][ALL|DSTINCT] <SELECT_LIST> <FROM_CLAUSE> <WHERE/ON_CLAUSE>
  <GROUP BY_CLAUSE> <HAVING_CLAUSE> <ORDER BY_CLAUSE> <LIMIT_CLAUSE> 
<FOR UPDATE_CLAUSE> <TIME TRAVEL_CLAUSE>;
·函数部分
  常用函数如下,更多函数介绍请看《SAP HANA数据库 - SQL 参考手册》
   
 CASE WHEN…ELSE… END 可用来根据值重新增加一列或者用于值的分段
·DISTINCT 在没有主键存在的情况下可能会出现多个重复项,加DISTINCT过滤
·DESC/ASC 降/升序排列默认为升序
·TOP N 选着记录前面的N条
·WHERE过滤条件 跟比较符、between、like、in等。其中like匹配 _单个字符,%字符串。
·聚合函数
  Count计算行项目数量;Min/Max集合最小/大值;Sum求和;Avg平均值;Stddev标准差
·GROUP BY
  和聚合函数配合,对集合进行分组,其中having+条件 对分组后的 数据再次筛选。
·子查询 将一条SELECT语句作为集合范围 SELECT … WHERE IN/ANY/ALL/EXISTS (SELECT…)
  其中IN等价于=ANY。主查询和子查询有关系成为关联查询,否则为无关联查询
·增INSERT INTO TN VALUES(); 删DELETE FROM TN WHERE; 改UPDATE TN SET…WHERE; 
·视图操作 视图生成后可做为一个临时表进行操作
  增 CREATE VIEW VN AS…(AS后面不能跟括号); 删 DROP VIEW VN; 改 当一个表进行操作,有时需要加with check option以防止为满足视图条件的数据误更新。如果没有加with check option插入一条不满足条件的数据实际上是加入相应的数据表,视图上看不到此数据;删除一条不满足的数据,视图显示操作成功,但数据并没有从表中删去。


5. DCL
GRANT和REVOKE 对于不同粒度大小的对象,权限不同。
6.  NULL
未提供某列值且没有默认值,OUTER JOIN时可能会产生
例 SELECT A FROM T;(含空值) SELECT A FROM T WHERE A<=10 OR A>10;(不含空值)
7.表的复制
CREATE TABLE NEWTABLE LIKE OLDTABLE WITH DATA;这是连带表中记录复制,如果只是复制表结构,就不加WITH DATA。
8.表的清空
TRUNCATE TABLE TN;
第二天:(sql script)
1.  扩展内容:数据类型扩展(含Table type)、函数扩展(多IO及存储过程嵌套)、
规则扩展(规则程序执行、逻辑控制结构语句和数据更新)
2.  SAP HANA存储过程
1) 创建输出表
CREATE TYPE SCHEMA.NAME AS TBALE(列 属性,……)
2)创建存储过程主体
 
3.更新和删除语句
ALTER PROCEDURE <PROC_NAME> [DROP_OPTION]
DROP PROCEDURE <PROC_NAME> [WITH PLAN]
4.存储过程的调用
CALL <PROC_NAME>(<PARAM_LIST)[WITH OVERVIEW][IN DEBUG MODE]


将存储过程返回结果输入到表中WITH OVERVIEW
CALL <PROC_NAME>(IN…OUT…)WITHN OVERVIEW  OUT填目标表格(表格要存在且结构相似)
还有另一种方法,不用先建表,直接将结果生成一张视图(在column view节点可找到)
LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW VIEW_NAME AS…


第三天:(sql script技术要点)
1.变量和引用
变量的赋值都需要申明(即定义) AS后面可进行申明(可同时赋值)
数据表变量的赋值用”=” 标量变量的赋值用”:=” 
两者引用的时候都需要在前面加上”:”(相当于取值操作)
例:select B into A …(A被select赋值操作无需加:)  if A := 1(取A的值和1比较) 
下面是例子
 
2.逻辑控制
1) IF…THEN…[ELSE IF… THEN…][ELSE…] END IF;
2)WHILE…DO…END WHILE
3)FOR…IN… .. …DO…
3.游标
 
 

 


4.动态SQL
EXEC ‘SQL语句’.
5.计算引擎函数CE FUNTION。不会触发SQL PROCESSOR,使计算执行更高效。

  • 7
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值