SAP HANA 数据库基础知识

  • 1、基本规则
    • (1)注释
    • (2)标识符
    • (3)引号
    • (4)保留字
  • 2、数据类型
    • (1)日期时间类型
    • (2)数字类型
    • (3)字符串类型
    • (4)二进制类型
    • (5)大对象类型
  • 3、操作符
    • (1)一元和二元操作符
    • (2)算术操作符
    • (3)字符串操作符
    • (4)比较操作符
    • (5)逻辑操作符
    • (6)合并操作符
    • (7)操作符优先级
  • 4、表达式
    • (1)常量
    • (2)CASE表达式
    • (3)聚合函数

1、基本规则

(1)注释

添加注释,可以增加SQL语句的可读性和可维护性。

HANA SQL 中注释有以下两种方式:

方式 说明
–(双横线) 单行注释
/* */ 范围内多行注释
select current_date from dummy;  --(单行注释)获取系统当前日期
/*
(范围注释,多行注释)
current_date 用于获取系统当前日期
*/

(2)标识符

标识符表示各种数据库对象的名称,如数据库、SCHEMA、表、视图、字段、函数、存储过程、用户、角色名等。

HANA SQL 中标识符有以下两种形式:

形式 说明 举例
不加双引号 必须以字母开头,不能包含除数字和下划线以外的符号,HANA内部自动转为大写 newuser
加双引号 可以包含任何字符,包括特殊字符,空格,区分大小写 “@New#_User”

其他限制:
① “SYS”专门为数据库引擎保留,不能用于有些对象命名的前缀,如表名。
② 标识符最大长度为127个字符。

(3)引号

形式 说明 举例
单引号 表示字面量,使用两个单引号就可以代表单引号本身 ‘abc’
双引号 表示对象名,使用两个双引号可以代表双引号本身 “abc”
select 'abc' as "abc" from dummy;
/*说明:'abc',自定义字符串值,不转换大小写,保持双引号内的大小写;"abc",自定义字段别名,不转换大小写,保持双引号内的大小写。
*/
select carrid, "CARRNAME", 'abc' from "SAPHANADB"."SCARR" where mandt = 300;
/*说明:carrid,hana会自动转为CARRID,对应SCARR表里的字段;"CARRNAME",双引号内字母必须大写,否则无法对应SCARR表里的字段;'abc',自定义字符串值,不对应SCARR表里的字段,系统自送生成字段别名:'abc';"SAPHANADB"."SCARR",双引号内字母必须大写,否则无法对应SCHEMA及表对象。
*/


(4)保留字

保留字对于 SAP HANA 数据库的 SQL 解析器有着特殊含义,不能成为用户自定义的名字。保留字不能在 SQL 语句中使用为集合对象名。如果有必要,你可以使用双引号限定表或列名绕过这个限制。

SAP HANA 数据库的保留字
ALL、ALTER、AS、BEFORE、BEGIN、BOTH、CASE、CHAR、CONDITION、CONNECT、CROSS、CUBE、CURRENT_CONNECTION、CURRENT_DATE、 CURRENT_SCHEMA、CURRENT_TIME、CURRENT_TIMESTAMP、CURRENT_USER、CURRENT_UTCDATE、CURRENT_UTCTIME、CURRENT_UTCTIMESTAMP、CURRVAL、CURSOR、DECLARE、DISTINCT、ELSE、ELSEIF、ELSIF、END、EXCEPT、EXCEPTION、EXEC、FOR、FROM、FULL、GROUP、HAVING、IF、IN、INNER、INOUT、INTERSECT、INTO、IS、JOIN、LEADING、LEFT、LIMIT、LOOP、MINUS、NATURAL、NEXTVAL、NULL、ON、ORDER、OUT、PRIOR、RETURN、RETURNS、REVERSE、RIGHT、ROLLUP、ROWID、SELECT、SET、SQL、START、SYSDATE、SYSTIME、SYSTIMESTAMP、SYSUUID、TOP、TRAILING、UNION、USING、UTCDATE、UTCTIME、UTCTIMESTAMP、VALUES、WHEN、WHERE、WHILE、WITH。

2、数据类型

(1)日期时间类型

数据类型 说明 默认格式 值范围 其他
DATE 日期 YYYY-MM-DD 从 0001-01-01 至 9999-12-31 其他格式有:‘YYYY/MM/DD’、‘YYYY/MM-DD’、‘YYYY-MM/DD’、‘YYYYMMDD’(其中MM还可以有:MON三位月份英文缩写,MONTH月份英文全名,RM月份罗马数字)、‘YYYY-DDD’(其中DDD为一年中的第几天1-366)。
TIME 时间 HH24:MI:SS 从 00:00:01到 24:00:00 HH24 表示从 0 至 23 的小时数, MI 代表 0 至 59 的分钟值而 SS 表示 0 至 59的秒。
SECONDDATE 日期和时间 YYYY-MM-DD HH24:MI:SS 从 0001-01-01 00:00:01 至 9999-12-31 24:00:00 。
TIMESTAMP 时戳 YYYY-MM-DD HH24:MI:SS.FF7 从 0001-01-01 00:00:00.0000000 至 9999-12-31 23:59:59.9999999 FFn 代表含有小数的秒,其中 n 表示小数部分的数字位数,1-7位。

(2)数字类型

数据类型 说明 值范围 其他
TINYINT 8 位(1个字节)无符号整数 0 ~ 256(2^8 -1)
SMALLINT 16位(2个字节)位无符号整数 -32768(2^15) ~ 35767(2^15-1)
INTEGER 32位(4个字节)位有符号整数 -2,147,483,648 至 2,147,483,647
BIGINT 64位(8个字节)位有符号整数 -9,223,372,036,854,775,808,至 9, 223,372,036,854,775,807
DECIMAL (p, s) 精度为 p 小数位数为 s 的定点小数 p:1 - 34(默认),s 默认 0
SMALLDECIMAL 浮点十进制数 精度和小数位数可以在范围有所不同,根据存储的数值, 1-16 的精度以及-369-368的小数位数 SMALLDECIMAL 只支持列式存储。
REAL 32 位(4个字节)单精度浮点数
DOUBLE 64 位(8个字节)的双精度浮点数 最小值为-1.79769 x 10308,最大值为1.79769x10308, DOUBLE 最小的正数为 2.2207x10-308,最大的负数为-2.2207x10-308。
FLOAT( n ) 32 位或 64 位的实数 n 指定有效数字的个数,范围可以从 1 至53。如果 n 比 25 小,其会变成 32 位的实数类型;如果 n 大于等于 25,则会成为 64 的 DOUBLE 数据类型。如果 n 没有声明,默认变成 64 位的double 数据类型。

(3)字符串类型

字符类型用来存储包含字符串的值。 VARCHAR类型包含 ASCII字符串,而 NVARCHAR用来存储 Unicode字符串。

数据类型 说明 其他
CHAR (n) 不可变长度的 ASCII 字符串 n 表示最大长度,是一个 1 至5000的整数值
NCHAR (n) 不可变长度的 Unicode 字符串 n 表示最大长度,是一个1 至 5000的整数值
VARCHAR (n) 可变长度的 ASCII 字符串 n 表示最大长度,是一个 1 至5000的整数值
NVARCHAR (n) 可变长度的 Unicode 字符串 n 表示最大长度,是一个1 至 5000的整数值
ALPHANUM (n) 可变长度的包含字母数字的字符串 n 表示最大长度,是一个 1 至 127的整数值
SHORTTEXT (n) 可变长度的字符串 支持文本搜索和字符搜索功能。这不是一个标准的 SQL 类型。选择一列 SHORTTEXT (n) 列会生成一个 NVARCHAR (n)类型的列。

(4)二进制类型

数据类型 说明 其他
VARBINARY 二进制数据类型 以字节为单位, n 代表最大长度,是一个 1 至 5000的整数

(5)大对象类型

BLOB 数据类型用来存储大二进制数据
CLOB 数据类型用来存储大 ASCII 字符数据
NCLOB 数据类型用来存储大 Unicode 字符对象
TEXT 数据类型指定支持文本搜索功能,这不是一个独立的 SQL 类型。 选择一列 TEXT 列会生成一个 NCLOB 类型的列。

LOB(大对象)数据类型, CLOB, NCLOB 和 BLOB,用来存储大量的数据例如文本文件和图像。
一个 LOB 的最大大小为 2GB。
LOB 类型用于存储和检索大量的数据。
LOB 类型支持以下操作:

  • Length(n)以字节形式返回 LOB 的长度。
  • LIKE 可以用来搜索 LOB 列。

LOB 类型有如下限制:

  • LOB 列不能出现在 ORDER BY 或 GROUP BY 子句中。
  • LOB 列不能出现在 FROM 子句作为联接谓词。
  • 不能作为谓词出现在 WHERE 子句中,除了 LIKE, CONTAINS, =或<>。
  • LOB 列不能出现在 SELECT 子句作为一个聚合函数的参数。
  • LOB 列不能出现在 SELECT DISTINCT 语句中。
  • LOB 列不能用于集合操作,除了 EXCEPT, UNION ALL 是个例外。
  • LOB 列不能作为主键。
  • LOB 列不能使用 CREATE INDEX 语句。
  • LOB 列不能使用统计信息更新语句。

3、操作符

你可以在表达式中使用操作符进行算术运算。操作符可以用来计算、比较值或者赋值。

(1)一元和二元操作符

① 一元操作符适用于单个操作数或者单值表达式

名称 操作符 描述
+
- 对一个数取反
逻辑非 NOT 对一个逻辑取反

② 二元操作符适用于两个操作数或者两个值的表达式

名称 操作符 描述
乘除 *,/
加减 +,-
比较 =,!=,<,>,<=,>=
逻辑与或 AND,OR

(2)算术操作符

- + - * /
取反

(3)字符串操作符

|| 连接符

(4)比较操作符

= !=或<> < > <= >=
等于 不等于 小于 大于 小于等于 大于等于

(5)逻辑操作符

AND OR NOT

(6)合并操作符

操作符 说明
UNION 并集、去重
UNION ALL 并集,包括重复
INTERSECT 交集
EXCEPT 差集

(7)操作符优先级

一个表达式可以使用多个操作符。如果操作符大于一个,则 SAP HANA 数据库会根据操作符优先级评估它们。你可以通过使用括号改变顺序,因为在括号内的表达式会第一个评估。

如果没有使用括号,则操作符优先级将根据下表。请注意, SAP HANA 数据库对于优先级相同的操作符将从左至右评估操作符。

优先级由高到低:

优先级 名称 操作符 描述
括号 ()
正负 +,-
| 乘除 *,/
| 加减 +,-
| 级联 ||
| 比较、匹配 =,!=或<>,<,>,<=,>=,IS NULL,LIKE,BETWEEN
| 逻辑取反 NOT
逻辑与 AND
逻辑或 OR

4、表达式

(1)常量

常量类型 说明 示例
字符串常量(ASCII码) 字符串常量括在单引号中 如:‘Brian’,‘100’。
字符串常量(Unicode码) Unicode 字符串的格式与字符串相似,但前面有一个 N 标识符( N 代表 SQL-92 标准中的国际语言)。 N 字母前缀必须是大写 如:N’abc’"
数字常量 数字常量用没有括在单引号中的数字字符串表示。数字可能包含小数点或者科学计数 如:123,123.4,1.234e2
十六进制数字常量 十六进制数字常量是十六进制数的字符串,含有前缀 0x 如:0x0abc
二进制字符串常量 二进制字符串有前缀 X,是一个括在单引号中的十六进制数字字符串 如:X’00abcd’
日期、时间、时间戳常量 日期、时间、时间戳各自有前缀 如:date’2010-01-01’,time’11:00:00.001’, timestamp’2011-12-31 23:59:59’

(2)CASE表达式

select case field when value1 then result1 when value2 then result2 else result3 end as fieldalias
from dummy;

(3)聚合函数

函数 说明
count() 统计数量
sum() 求和
avg() 求平均
max() 求最大值
min() 求最小值

原创文章,转载请注明来源-X档案

【SAP Hana】X档案:SAP HANA 数据库基础知识相关推荐

  1. java学习与总结:MySQL和数据库基础知识

    文章目录 MySQL MySQL数据库索引数据结构 B树和B+树的区别 MySQL一条数据是怎么保存到数据库的 WAL : WRITE AHEAD LOG binlog 和 redo log 流程 M ...

  2. 1.0 MySQL数据库基础知识

    MySQL数据库基础知识 MYSQL介绍 MySQL分支版本的发展 MySQL. Oracle. SQLServer的市场区别 MYSQL数据库使用上的结构 MYSQL体系架构图 MYSQL体系架构- ...

  3. oracle数据库中基础知识,oracle数据库基础知识

    oracle数据库基础知识 -- End loop --1 declare pnum number(4):=0; begin while pnum < 10 loop dbms_output.p ...

  4. oracle数据库基础知识总结,oracle数据库基础知识学习笔记

    oracle数据库基础知识学习笔记 一.oracle数据库类型: Char:  字符型(最大长度2000,定长.不足时以空格补充) Varchar2:字符型 最大长度 4000,变长,实际长度由存储的 ...

  5. numeric比较大小 数据库_数据库基础知识个人整理版-强烈推荐

    <数据库基础知识个人整理版-强烈推荐>由会员分享,可在线阅读,更多相关<数据库基础知识个人整理版-强烈推荐(20页珍藏版)>请在人人文库网上搜索. 1.数据库知识要点总结第一章 ...

  6. 一幅长文细学GaussDB(二)——数据库基础知识

    文章目录 2 数据库基础知识 2.1 数据库管理简介 数据库管理 数据库管理工作范围 对象管理 制定数据库对象命名规范 备份和恢复 灾难恢复 备份方式 数据库安装 数据库卸载 数据库迁移 数据库扩容 ...

  7. Mysql数据库基础知识(五)之:视图、变量、存储过程、函数、流程控制结构

    第一部分:Mysql数据库基础知识(一)之 基础查询----分组查询 第二部分:Mysql数据库基础知识(二)之 连接查询----子查询-----分页查询------union联合查询 第三部分:My ...

  8. 软考 程序员教程-第三章 数据库基础知识

    软考 程序员教程-第三章 数据库基础知识 第三章 数据库基础知识 3.1 基本概念 数据库系统(DataBase System,DBS)由数据库(DataBase,DB).硬件.软件和人员4大部分组成 ...

  9. SQL数据库基础知识巩固

    SQL数据库基础知识 数据库,又称"电子化的文件柜",是"按照数据结构来组织.存储和管理数据的仓库",是一个长期存储在计算机内的.有组织的.可共享的.统一管理的 ...

最新文章

  1. 360的下一代SOC是这个样子的
  2. Funambol DM 安装过程
  3. 剑指offer 11.旋转数组的最小数字
  4. java数组排序冒泡排序_java数组常见的排序——选择排序和冒泡排序
  5. SQL Server 的本地时间和UTC时间
  6. Android查看支持硬编解码器(十五)
  7. VS2017编译SNMP库
  8. 基于微信小程序的图书馆管理系统.rar(论文+源码)
  9. 使用VBSCRIPT安装字体
  10. linux网卡驱动rtl8188cu,Realtek RTL8188CU芯片无线网卡的Linux驱动安装
  11. 创建华为云服务器实验报告,华为云正式发布云端实验室,真正实现云服务实验云上做...
  12. 基于 HTML5 + WebGL 的太阳系 3D 展示系统
  13. 盘点IT职场“最差”程序员,这7个特征尤为典型!
  14. JS中各种width和height的区别
  15. Java中关于空格遇到的一些问题
  16. Ionic + Vue3 + Capacitor 配置应用信(App 包名、应用名、应用图标、启动动画、版本信息)
  17. 指划王孔小兵:Testin云测助益亲子类APP实现年轻家庭和谐
  18. Linux 应急响应流程及实战演练
  19. 深度学习原理18——特征金字塔
  20. 马云抛出NASA计划搞“技术导弹”,掀起互联网技术军备竞赛?

热门文章

  1. WINDOWS开机11大进程
  2. 信安Note_day10
  3. 小米2s 用线刷,刷回MIUI V5了
  4. 如何在ubuntu中安装无线网卡驱动(迅捷FW150UH)
  5. 郭盛华:黑客破坏Okta的GitHub存储库,窃取源代码
  6. 也读《人类简史》:从动物到上帝的智人
  7. idea(水槽)代码左边栏显示代码行数、方法运行图标、折叠代码块,代码块缩进提示线,idea小技巧
  8. [转载]阿米巴经营中的人才培养
  9. ios上架被拒5.1.1
  10. ZZULIOJ-1198