hana语法

建表

CREATE TABLE Persons(Id  int , LastName varchar(255)) 

插入

INSERT INTO Table VALUES (Value,Value,Value);
INSERT INTO Table (Column,Column) VALUES (Value,Value);
INSERT INTO Table SELECT ... FROM ... WHERE ...;(从另外的表中直接插入)

更新

UPDATE Table SET Column = Value, Column = Value, Column = Value WHERE condition;

删除

DELETE FROM Table WHERE Condition;
truncate table 表名称
drop table 表名称  (删掉表)

查询

Select * fom 表名称
基本模式
SELECT Column, Column, Count(*)
FROM Table [AS] T
WHERE Condition
GROUP BY Column, Column
HAVING Group Condition
ORDER BY Column ASC[默认], Column DESC;

添加删除主键

ALTER TABLE PERSONS ADD PRIMARY KEY ( id );
ALTER TABLE PERSONS DELETE PRIMARY KEY 

触发器

ALTER TRIGGER TEST4HANA.MyTrigger after Insert ON TEST4HANA.TEST01  
BEGIN 
DECLARE
insert into "TEST4HANA"."OAS_Student" values(5,'23',23,'r34');
END

只读型存储过程

CREATE PROCEDURE {schema.}name {({IN|OUT|INOUT} 
                                 param_name data_type {,...})} 
      {LANGUAGE <LANG>} {SQL SECURITY <MODE>} 
      {READS SQL DATA {WITH RESULT VIEW <view_name>}} AS 
BEGIN 
  ... 
END

删除:
语法:DROP PROCEDURE {schema.}name {CASCADE}
修改:
ALTER PROCEDURE {schema.}name RECOMPILE {WITH PLAN}

sample:
CREATE PROCEDURE ProcWithResultView(IN id INT, OUT o1 CUSTOMER) 
    LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView AS 
    BEGIN 
        o1 = SELECT * FROM CUSTOMER WHERE CUST_ID = :id; 
    END;

循环插入存储过程

CREATE  procedure "SYSTEM"."TEST_INSERT"
(in I integer,in J integer)
as begin
declare X integer := I;
while X < :J do
X := :X + 1;
insert into SYSTEM.TEST("ID","NAME","COL1","COL2","COL3","COL4","COL5","COL6","COL7","COL8","COL21","COL22","COL23","COL24","COL25","COL26","COL51","COL52","COL53","COL54") values (X, 'A', 101 , 102, 103, 104, 105, 106, 107, 108, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16,'a','b','c','d');
if MOD (X, 100)=0
then
commit;
end if;
end while;
end;

调用存储过程
call 存储过程名(参数)

例:call WHILE_LOO·P_FACTORIAL_PROCEDURE(10)

删除存储过程

DROP PROCEDURE <proc_name> [<drop_option>]
Example:
DROP PROCEDURE my_proc;

修改存储过程

Synatx:
  ALTER PROCEDURE <proc_name> RECOMPILE [WITH PLAN]
Example:
ALTER PROCEDURE my_proc RECOMPILE WITH PLAN;
建议:一般项目中对存储过程进修改的话 是对其drop 然后在create 然后在create中修改相应的部位

新建table function

create function scale(val int)
returns table(a int , b int) language sqlscript as
begin 
	return select a , :val * b as b from mytab02 ;
end;
调用table function
select * from scale(10);
select * from scale(10) as a, scale(10) as b from mytab;

查看函数、存储过程等文本

call get_object_definition('A_SCHEMA_NAME','A_TABLE_NAME');
例:call get_object_definition('SYSTEM','AFLPM_CREATOR'); 

查找所有表

select * from tables  where schema_name='ORAPS';

查看表结构

SELECT * FROM TABLE_COLUMNS WHERE SCHEMA_NAME='ORAPS' AND TABLE_NAME = 'TEST'

查看主键

select * from "CONSTRAINTS" where SCHEMA_NAME='ORAPS'

查找所有存储过程

select * from sys.procedures where SCHEMA_NAME='ORAPS'
select * from "PROCEDURE_PARAMETERS"  where SCHEMA_NAME='ORAPS'

字母,数字带单引号,双引号等区别

SELECT a, 'b', "c", 1, '2', "3" FROM "4"

在这里插入图片描述

hana数据类型
数字(Numeric)
TinyINT - 存储8位无符号整数。最小值:0,最大值:255
SMALLINT - 存储16位有符号整数。最小值:-32,768,最大值:32,767
INTEGER - 存储32位有符号整数。最小值:-2,147,483,648,最大值:2,147,483,648
BIGINT - 存储64位有符号整数。最小值:-9,223,372,036,854,775,808,最大值:9,223,372,036,854,775,808
SMALL - 十进制和十进制。最小值:-1038+1和最大值:1038-1
REAL - 最小值:-3.40E + 38,最大值:3.40E + 38
DOUBLE - 存储64位浮点数。最小值:-1.7976931348623157E308,最大值:1.7976931348623157E308

字符/字符串(Character/ String)
Varchar - 最多8000个字符。
Nvarchar - 最大长度为4000个字符。
ALPHANUM - 存储字母数字字符。整数的值介于1到127之间。
SHORTTEXT - 存储支持文本搜索功能和字符串搜索功能的可变长度字符串。

二进制(Binary)
二进制类型用于存储二进制数据的字节。
VARBINARY - 以字节存储二进制数据。最大整数长度在1到5000之间。

布尔值(Boolean)
布尔数据类型存储布尔值,它们为TRUE,FALSE

日期时间(Date Time)
这些数据类型用于在HANA数据库的表中存储日期和时间。
DATE - 数据类型由年,月和日信息组成,以表示列中的日期值。日期数据类型的默认格式是YYYY-MM-DD。
TIME - 数据类型由HANA数据库的表中的小时,分钟和秒值组成。时间数据类型的默认格式为HH:MI:SS。
SECOND DATE - 数据类型由HANA数据库的表中的年,月,日,时,分,秒值组成。SECONDDATE数据类型的默认格式是YYYY-MM-DD HH:MM:SS。
TIMESTAMP - 数据类型由HANA数据库的表中的日期和时间信息组成。TIMESTAMP数据类型的默认格式为YYYY-MM-DD HH:MM:SS:FFn,其中FFn表示秒的分数。

大型对象(Large Objects)
LARGEOBJECTS用于存储大量数据,如文本文档和图像。
NCLOB - 存储大型的UNICODE字符对象。
BLOB - 存储大量的二进制数据。
CLOB - 存储大量的ASCII字符数据。
TEXT - 它启用文本搜索功能。这种数据类型只能为列存储表定义,而不能为行存储表定义。
BINTEXT - 支持文本搜索功能,但可以插入二进制数据。

多值(Multi-Valued)
多值数据类型用于存储具有相同数据类型的值的集合。

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HANA语法中,按列进行GROUP BY操作是指将查询结果按照指定的列进行分组,并对每个组进行聚合操作。这样可以在查询结果中按照指定的列值进行分类和统计。 在HANA中,按列进行GROUP BY的语法格式如下: SELECT column1, column2, ..., aggregate_function(column) FROM table_name WHERE condition GROUP BY column1, column2, ... HAVING group_condition ORDER BY column1 ASC[默认], column2 DESC; 其中,column1, column2, ... 表示需要按照哪些列进行分组,aggregate_function(column)表示对某些列进行聚合操作(比如COUNT、SUM等),table_name表示需要进行查询的表名,condition表示查询的条件,group_condition表示对分组后的结果进行筛选的条件。 需要注意的是,在GROUP BY子句中,需要将所有出现在SELECT列表中的字段都包含进来,以满足HANA语法规定。否则,在执行该查询时,会报错提示"not a GROUP BY expression",就像你在引用中遇到的那样。 举个例子来解释一下,假设我们有一个表EMPLOYEE,其中包含员工的姓名、部门和薪水信息。如果我们想要按照部门对员工进行分组,并计算每个部门的平均薪水,可以使用如下语句: SELECT department, AVG(salary) FROM EMPLOYEE GROUP BY department; 这样,就会得到按照部门分组后的平均薪水结果。 总结起来,在HANA语法中,按列进行GROUP BY可以通过在GROUP BY子句中指定需要分组的列来实现,并确保在SELECT列表中的字段都出现在GROUP BY子句中或者进行了聚合操作,以满足HANA语法规定。这样可以按照指定的列进行分组并对每个组进行聚合操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值