学习SAP HANA SQL
![](http://static.blog.csdn.net/images/category_icon.jpg)
![](http://static.blog.csdn.net/images/arrow_triangle%20_down.jpg)
版权声明:本文为博主原创文章,未经博主允许不得转载。
创建 EMP,DEPT,BONUS 和 SALGRADE测试表:
第一部分:创建基于行存储的EMP,DEPT,BONUS 和 SALGRADE测试表
创建表时候使用CREATE tablename默认是ROW存储
部门表:DEPTNO部门编号唯一编号 DNAME部门名称 LOC部门位置
CREATE TABLE DEPT
(
DEPTNO smallint PRIMARY KEY,
DNAME VARCHAR(14) ,
LOC VARCHAR(13) ) ;
雇员表:
EMPNO 表示雇员编号 ENAME表示雇员姓名 JOB表示工作职位 MGR员领导编号 HIREDATE雇佣日期 SAL工资月薪 COMM表示奖金佣金 DEPTNO 部门编号
CREATE TABLE EMP(
EMPNO INT PRIMARY KEY,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR INT,
HIREDATE DATE,
SAL INT,
COMM INT,
DEPTNO INT);
奖金表:ENAME雇员姓名 JOB雇员工作 SAL雇员工资 COMM雇员奖金
CREATE TABLE BONUS
(
ENAME VARCHAR(10) ,
JOB VARCHAR(9) ,
SAL INT,
COMM INT
) ;
工资等级表: GRADE等级名称 LOSAL此等级的最低工资 HISAL 此等级的最高工资
CREATE TABLE SALGRADE
( GRADE INT,
LOSAL INT,
HISAL INT);
INSERT INTO DEPT VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES (40,'OPERATIONS','BOSTON');
INSERT INTO EMP VALUES (7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO EMP VALUES (7499,'ALLEN','SALESMAN',7698,'1981-2-20',1600,300,30);
INSERT INTO EMP VALUES (7521,'WARD','SALESMAN',7698,'1981-2-22',1250,500,30);
INSERT INTO EMP VALUES (7566,'JONES','MANAGER',7839,'1981-4-2',2975,NULL,20);
INSERT INTO EMP VALUES (7654,'MARTIN','SALESMAN',7698,'1981-9-28',1250,1400,30);
INSERT INTO EMP VALUES (7698,'BLAKE','MANAGER',7839,'1981-5-1',2850,NULL,30);
INSERT INTO EMP VALUES (7782,'CLARK','MANAGER',7839,'1981-6-9',2450,NULL,10);
INSERT INTO EMP VALUES (7788,'SCOTT','ANALYST',7566,'87-7-13',3000,NULL,20);
INSERT INTO EMP VALUES (7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO EMP VALUES (7844,'TURNER','SALESMAN',7698,'1981-9-8',1500,0,30);
INSERT INTO EMP VALUES (7876,'ADAMS','CLERK',7788,'87-7-13',1100,NULL,20);
INSERT INTO EMP VALUES (7900,'JAMES','CLERK',7698,'1981-12-3',950,NULL,30);
INSERT INTO EMP VALUES (7902,'FORD','ANALYST',7566,'1981-12-3',3000,NULL,20);
INSERT INTO EMP VALUES (7934,'MILLER','CLERK',7782,'1982-1-23',1300,NULL,10);
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
SQL 语句:
dummy是系统的一个空表,类似Oracle的dual
1. select current_date "date" from dummy; 查看当前日期。
2.select ename,sal*12 from P1526659201.emp; 查找雇员的姓名及雇员的年薪。P1526659201为schema
3.像oracle一样任何含空值的数学表达式是空值:select ename,sal*12+comm from P1526659201.emp;
4.select ename||sal from emp; 其中||相当于把sal全部转换成字符串。
5.select ename||' ename' from emp; 表示字符串的方法。
6.select ename||''' ename' from emp; 如果字符串中包含有' 用''替换它。
7.select distinct deptno from emp; 去除部门中重复的数据。关键字distinct
8.select distinct deptno,job from emp;去除两个字段重复的数据。
9.select * from emp where deptno <> 10; 查出部门编号部位10的雇员。
10.select * from emp where sal>=800 and sal <=1500; 查出薪水在800到1500之间的雇员。
11.select * from emp where comm is null;查询空值
12.select * from emp where comm is not null;查询非空值
13.select * from emp where sal in(800,1500,1200);关键字 in
14.查询符合条件的日期:
select ename,sal,hiredate from emp where hiredate > '1981-12-17'
select ename,sal,hiredate from emp where hiredate < '1981-12-17'
select ename,sal,hiredate from emp where hiredate = '1980-12-17'
select ename,sal,hiredate from emp where hiredate > '1980-12-17' and hiredate < '1981-11-17'
select ename,sal,hiredate from emp where hiredate <> '1980-12-17'
15.select top 5 * from emp; 取出emp表的前5条记录。
select all * from emp; 取出emp表的全部记录
16.select *from dept order by deptno 按照部门信息,编号进行排序,默认为升序排序
select *from dept order by deptno desc 用desc按照降序进行排序。
select ename,sal from emp where sal <>1000 order by sal desc
17. .select avg(sal) from emp where sal>2000 group by deptno having avg(sal)>1500 order by avg(sal) desc;
14. SELECT SUBSTRING ('1234567890',4,2) "substring" FROM DUMMY; 第四个字符开始截取2个字符。 ---> 结果 45
15. SELECT SUBSTR_BEFORE ('Hello My Friend','My') "substr before" FROM DUMMY; 截取"My “字符串之前的字符串 ---->结果 Hello
16,SELECT SUBSTR_AFTER ('Hello My Friend','My ') "substr after" FROM DUMMY; 截取"My “字符串之后的字符串 ---->结果 Friend
17.select round(2.3456,3) from dummy; 四舍五入小数点后三位--->结果 2.346
18.select round(2.3456) from dummy; 四舍五入--->结果2
19.SELECT ASCII('Ant') "ascii" FROM DUMMY; 取ASCII码
索引:
SAP HANA的索引都是保存在内存中。
创建索引:
语法:CREATE [UNIQUE] [BTREE | CPBTREE] INDEX <index_name> ON <table_name> (<column_name_order>, ...) [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 <index_name>
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 索引队列的状态。
Schema:
创建schema.
语法:CREATE SCHEMA <schema_name> [OWNED BY <user_name>]
OWNED BY:指定schema的拥有者,如果省略。当前用户将是这个shema的拥有者
create schema my_schema;
create schema my_schema OWNED BY system.
删除schema:
语法:DROP SCHEMA <schema_name> [<drop_option>]
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下的所有表
第二部分:创建基于列存储的EMP_COLUMN,DEPT_COLUMN,BONUS_COLUMN 和 SALGRADE_COLUMN测试表
CREATE COLUMN TABLE DEPT_COLUMN
(
DEPTNO smallint PRIMARY KEY,
DNAME VARCHAR(14) ,
LOC VARCHAR(13)
) ;
CREATE COLUMN TABLE EMP_COLUMN
(
EMPNO INT PRIMARY KEY,
ENAME VARCHAR(10),
JOB VARCHAR(9),
MGR INT,
HIREDATE DATE,
SAL INT,
COMM INT,
DEPTNO INt
);
CREATE COLUMN TABLE BONUS_COLUMN
(
ENAME VARCHAR(10) ,
JOB VARCHAR(9) ,
SAL INT,
COMM INT
) ;
CREATE COLUMN TABLE SALGRADE_COLUMN
(
GRADE INT,
LOSAL INT,
HISAL INT
);
学习SAP HANA SQL的更多相关文章
- 【HANA系列】SAP HANA SQL IFNULL和NULLIF用法与区别
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL IFN ...
- 【HANA系列】SAP HANA SQL去除字符串空格
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL去除字符 ...
- 【HANA系列】SAP HANA SQL REPLACE替换字符串
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL REP ...
- 【HANA系列】SAP HANA SQL获取某字符串的位置
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取某字 ...
- 【HANA系列】SAP HANA SQL获取字符串长度
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取字符 ...
- 【HANA系列】SAP HANA SQL从给定日期中获取月份
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL从给定日 ...
- 【HANA系列】SAP HANA SQL从给定日期中获取分钟
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL从给定日 ...
- 【HANA系列】SAP HANA SQL查找字符串位置
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL查找字符 ...
- 【HANA系列】SAP HANA SQL截取字符串
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL截取字符 ...
随机推荐
- javascript封装与多态的体现
封装是实现面向对象程序设计的第一步,封装就是将数据与函数等集合在一个个的单元中(我们称之为类).被封装的对象通常被称为抽象数据类型. 在传统的面向对象语言中有访问修饰符,如Private:只有类本身能 ...
- RequireJS 模块的定义与加载
模块不同于传统的脚本文件,它良好地定义了一个作用域来避免全局名称空间污染.它可以显式地列出其依赖关系,并以函数(定义此模块的那个函数)参数的形式将这些依赖进行注入,而无需引用全局变量.RequireJ ...
- javascript的函数(二)
1. 函数的作用域 作用域是指变量的存在的范围.javascript中有两种作用域,一种是全局作用域,变量在整个程序中一直存在,另一种是函数作用域,变量只存在于函数体内部.在函数体外部声明的变量就是全 ...
- hyperv 创建虚拟以太网交换机失败
问题: hyperv 创建虚拟以太网交换机失败 解决办法: 取消无线共享,重新创建虚拟以太网交换机即可
- iOS之处理不等高TableViewCell的几种方法
课题一:如何计算Cell高度 方案一:直接法(面向对象) 直接法,就是把数据布局到Cell上,然后拿到Cell最底部控件的MaxY值. 第一步:创建Cell并正确设置约束,使文字区域高度能够根据文字内 ...
- 基本bash命令
bash手册 输入man命令可以访问存储在linux系统上的手册页面.  如果不记得命令名,可以使用关键字搜索手册.语法是man -k 关键字.  手册被分为了不同的内容区域.man工具提供的是命 ...
- iOS开发-UI 从入门到精通(一)
一.UI概述 (1)UI(User Interface)用户界面,用户能看到的各种各样的页面元素: (2)iOS App = 各种各样的UI控件+业务逻辑和算法: (3)想要开发出一款精美的应用程序, ...
- iOS之UIApplication详解
UIApplication对象特点: 特点1: UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序,而且是单例的.(用来封装整个应用程序的一个对象, ...
- Windows平台分布式架构实践 - 负载均衡 上
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- Android Fragment生命周期
Fragment与Activity的生命周期关系: 刚打开Activity:Fragment onAttach > Fragment onCreate > Fragment onCreat ...