2012-08-18 16:09 8129人阅读 评论(0) 收藏 举报
 分类:
SAP HANA(80) 

版权声明:本文为博主原创文章,未经博主允许不得转载。

创建 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的更多相关文章

  1. 【HANA系列】SAP HANA SQL IFNULL和NULLIF用法与区别

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL IFN ...

  2. 【HANA系列】SAP HANA SQL去除字符串空格

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL去除字符 ...

  3. 【HANA系列】SAP HANA SQL REPLACE替换字符串

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL REP ...

  4. 【HANA系列】SAP HANA SQL获取某字符串的位置

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取某字 ...

  5. 【HANA系列】SAP HANA SQL获取字符串长度

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL获取字符 ...

  6. 【HANA系列】SAP HANA SQL从给定日期中获取月份

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL从给定日 ...

  7. 【HANA系列】SAP HANA SQL从给定日期中获取分钟

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL从给定日 ...

  8. 【HANA系列】SAP HANA SQL查找字符串位置

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL查找字符 ...

  9. 【HANA系列】SAP HANA SQL截取字符串

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA SQL截取字符 ...

随机推荐

  1. PowerDesigner16 基本使用教程

    一.基本概念 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充. 它从用户的观点出发对信息进行建模,主要用于数据库的概念 ...

  2. 轻量的、可自定义 CSS 的 Lightbox 相册插件

    jQuery LightGallery是一个轻量级的,可定制的,模块化的,响应式的 jQuery 相册插件.它采用 CSS 来实现图像和视频的大小调整.因此,这将是非常灵活的,并且比使用 JavaSc ...

  3. Gulp如何编译sass

    Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 1.搭建web服务器 2.文件保存时自动重载浏览器 3.使用预处理器如Sass.LESS 4.优化资源,比如压缩CSS.JavaScr ...

  4. iOS之自动调节输入文本框的高度

    //自动调节输入文本框的高度 - (void)textViewDidChange:(UITableView *)textView{ float height; if ([[[UIDevice curr ...

  5. Android Fragment使用(三) Activity, Fragment, WebView的状态保存和恢复

    Android中的状态保存和恢复 Android中的状态保存和恢复, 包括Activity和Fragment以及其中View的状态处理. Activity的状态除了其中的View和Fragment的状 ...

  6. Material Design Animation

    Material Design Animation Authentic motion 真实的运动 运动以一种优美流动的形式描述了空间关系,功能和目的. Mass and weight: 质量和重量 在 ...

  7. 用UILocalNotification实现一个闹钟(Swift)

    之前项目需求要实现一个闹钟,github上找了半天发现都是很旧的代码了,所以就准备自己写一个,刚好最近在学习Swift,就用Swift写了一个demo放在这里:https://github.com/P ...

  8. 关于UIScollView 中的contentOffset 的理解

    大家对UIScollView 中的contentOffset 一直有疑问, 虽然看是一个简单的问题, 实际上并不简单. 当时我也有好多疑问, 后来在网上找了一下资料, 发现没有找到合理的解释, 因此自 ...

  9. iOS开发之功能模块--用runtime给UIView类别拓展PressMenu工具

    这是个很有用的列别工具类,在聊天对话框添加和QQ一样的"复制.粘贴.取消"等选项,而且使用起来很方便,只要找到聊天泡泡内部的某个View,比如Label或者背景冒泡的UIImage ...

  10. 敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)

      邀请函: 尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实 ...