HANA常用语法
程序员文章站
2022-05-02 23:40:05
SQL语句
--1.查看当前日期
select current_date "date" from dummy;
--查看当前日期零时零分
se...
SQL语句
--1.查看当前日期 select current_date "date" from dummy; --查看当前日期零时零分 select to_timestamp(to_char(CURRENT_TIMESTAMP,'yyyy-mm-dd')) from dummy; select CURRENT_DATE from dummy; --2.查找雇员的姓名及雇员的年薪。P1526659201为schema select ename,sal*12 from P1526659201.emp; --3.像oracle一样任何含空值的数学表达式是空值: select ename,sal*12+comm from P1526659201.emp; --4.其中||相当于把sal全部转换成字符串 select ename||sal from emp; --5.表示字符串的方法 select ename||' ename' from emp; --6.如果字符串中包含有' 用''替换它 select ename||''' ename' from emp; --7.取出emp表的前5条记录 select top 5 * from emp; --8.取出emp表的全部记录 select all * from emp; --9.去除两个字段重复的数据 select distinct deptno,job from emp; --10.取ASCII码 SELECT ASCII('Ant') "ascii" FROM DUMMY;
表
/*行表适用于如下一些场景: * 一次处理一条记录的情况 * 应用需要访问完整记录或记录的大部分(即一条记录中的所有字段或大多数字段) * 不需要压缩率 * 没有或很少的聚集、分组等复杂操作 * 表中的记录行数不是很多 */ --下面是创建行表的一些列子: --例1 CREATE TABLE accounts ( act_no CHAR(18), act_name NVARCHAR(100), balance DECIMAL(15,2), PRIMARY KEY (act_no) ) --例2 CREATE TABLE R (A INT PRIMARY KEY, B NVARCHAR(10) ); CREATE TABLE F (FK INT, B NVARCHAR(10), UNIQUE (FK, B), FOREIGN KEY(FK) REFERENCES R ON UPDATE CASCADE ) NO LOGGING; /*依据某个已经存在的表创建另外的新表。HANA SQL提供了两类方法*/: --方法一:创建的表与源表数据类型、约束完全相同。例如: CREATE TABLE T_ACCOUNTS LIKE ACCOUNTS WITH NO DATA --方法二:创建的表字段类型和NULL/NOT NULL属性相同 CREATE TABLE T_ACCOUNTS1 AS (SELECT * FROM ACCOUNTS) WITH DATA /*列表适用于如下一些场景: * 通常只是在一个或少量列上执行计算操作 * 表在进行搜索时通常基于少量列上的值 * 表有很多列 * 表有很多行,并且通常进行的是列式操作(比如:聚集计算和where中字段值查找) * 需要很高的压缩率。 */ --例1 CREATE COLUMN TABLE tpch.nation (n_nationkey INT NOT NULL, n_name CHAR(25), n_regionkey INT, n_comment VARCHAR(152), PRIMARY KEY(n_nationkey) ) --例2(分区,只适用于列表,分区键必须是主键的一部分) CREATE COLUMN TABLE tpch.lineitem (l_orderkey INT NOT NULL,l_partkey INT, l_suppkey INT,l_linenumber INT NOT NULL, l_quantity DECIMAL(10,2),l_extendedprice DECIMAL(10,2), l_discount DECIMAL(10,2),l_tax DECIMAL(10,2), l_returnflag CHAR(1),l_linestatus CHAR(1), l_shipdate DATE,l_commitdate DATE,l_receiptdate DATE, l_shipinstruct CHAR(25),l_shipmode CHAR(10), l_comment VARCHAR(44), PRIMARY KEY INVERTED VALUE (l_orderkey,l_linenumber) ) PARTITION BY HASH (l_orderkey,l_linenumber) PARTITIONS 4, RANGE (l_shipdate) ( PARTITION '2011/01/01'<= VALUES <'2011/04/01', PARTITION '2011/04/01'<= VALUES <'2011/07/01', PARTITION '2011/07/01'<= VALUES <'2011/10/01', PARTITION OTHERS) --HANA支持行表转换为列表,或者列表转换为行表。示例如下: ALTER TABLE accounts COLUMN THREADS 10 BATCH 10000 --行转列 ALTER TABLE accounts ROW THREADS 10 --列表转为行表
索引
--SAP HANA的索引都是保存在内存中。 --创建索引: --语法:CREATE [UNIQUE] [BTREE | CPBTREE] INDEX ON (, ...) [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 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 [OWNED BY ] /*OWNED BY:指定schema的拥有者,如果省略。当前用户将是这个shema的拥有者*/ create schema my_schema; create schema my_schema OWNED BY system. --删除schema: --语法: DROP SCHEMA [] 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下的所有表
上一篇: 上和下
下一篇: SQL数据库面试题以及答案(50例题)