数据库和表的语法
数据库
表
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
分组,提供每个年度的总销售量(汇总所有产品)