数据库和表的语法
数据库

![]()
表


oracle,高斯, hive的默认存储方式都是列式存储
存储方式
高斯数据库(GaussDB)支持列式存储和行式存储


 

OLTP 与 OLAP

OLTP(联机事务处理,Online Transaction Processing)是一种用于管理面向事务的应用的数据处理方式。它主要用于处理大量短小、频繁的事务,通常涉及数据的插入、更新和删除操作。OLTP 系统旨在确保数据的一致性和完整性,同时支持高并发和快速响应时间。

OLAP(Online Analytical Processing,在线分析处理)是一种软件技术,它允许用户对多维数据集进行快速、复杂、多角度的分析。OLAP技术主要用于数据仓库系统,支持复杂的查询和分析,以便从大量历史数据中提取有用的信息,帮助企业做出决策
系统时间
 
高斯获取系统时间的函数: current_timestamp、now() 和 current_date 

示例
![]()
oracle获取系统时间的函数:
SYSDATE(返回当前的系统日期和时间)
CURRENT_TIMESTAMP(返回当前日期和时间)
示例


:: 是 PostgreSQL 及其兼容数据库(包括高斯数据库)中用于类型转换的操作符。这里将字符串 '2024-11-14 15:23:04' 转换为 timestamp 类型
数组
数组是一种数据类型,它可以存储一个固定大小的相同数据类型的值的集合。

数组的元素下标是从1开始的 (高斯和oracle都是)
一维数组
示例



多维数组


int_array2[2][3] 表示 int_array2 二维数组中第2个一维数组(从1开始计数)的第3个元素(同样从1开始计数)。根据插入的数据,第2个一维数组是 {400, 500, 600},所以第3个元素是 600
int_array2[2:4] 表示从 int_array2 二维数组中的第2个一维数组开始到第4个一维数组结束的切片。由于 int_array2 只有三个一维数组,所以这个切片实际上只包含第2个和第3个一维数组:
-  
第2个一维数组是
{400, 500, 600} -  
第3个一维数组是
{700, 800, 900} 
 
limit
使用LIMIT子句可以限制查询结果的行数


分页查询 limit n,m
LIMIT n, m 语法用于实现分页查询,其中 n 是起始行号(从哪一行开始取数据),m 是要取的行数
第一个参数是偏移量(offset),表示从结果集中跳过的行数;第二个参数是要返回的行数(limit)

分组group by
普通分组


属于多维分组


grouping set


rollup
ROLLUP 是一种用于生成多层次聚合结果的扩展分组操作。它允许你在一个查询中生成多个层次的小计和总计。ROLLUP 是 GROUP BY 子句的扩展,通常用于生成多维数据的汇总报告。 
 
rollup (item, year)
首先按item和year分组,提供每个产品每年的销售量
然后按item分组,提供每个产品的总销售量(汇总所有年份)
最终汇总,提供总销售量(汇总所有产品和年份)
遵循最左原则: 没有按year分组,提供每个年度的总销售量(汇总所有产品)