postgres

postgres

查看版本

SELECT version();
SHOW server_version;

SQL语言

-- 窗口函数
SELECT salary, sum(salary) OVER (ORDER BY salary) FROM empsalary;
SELECT sum(salary) OVER w, avg(salary) OVER w
  FROM empsalary
  WINDOW w AS (PARTITION BY depname ORDER BY salary DESC);

-- 事务
BEGIN;
SAVEPOINT my_savepoint;
ROLLBACK TO my_savepoint;
COMMIT;

-- 继承目前还不支持约束和外键
CREATE TABLE capitals (
  state      char(2) UNIQUE NOT NULL
) INHERITS (cities);

SELECT name, elevation FROM ONLY cities

SQL语法

词法结构

标识符
  • 引用标识符:“my_table”(支持空格和双引号)
  • 未引用标识符总是折叠成小写
常量
字符串常量
SELECT 'a''s';  --单引号
SELECT 'a' 's';  --错误
SELECT 'a'
's';  --被连接在一起

--美元引用字符串中,单引号可以在不被转义的情况下使用
$$Dianne's horse$$
$SomeTag$Dianne's horse$SomeTag$
位串常量
  • B’1001’ X’1FF’
数字常量
  • integer->bigint->numeric
其他类型常量

type ‘string’ --无法转换数组类型
‘string’::type
CAST ( ‘string’ AS type )

值表达式

  • 位置参数$number
聚合表达式
  • 只能出现在SELECT或HAVING中
  • SELECT string_agg(ALL a,‘,’);–默认ALL
  • SELECT string_agg(DISTINCT a,‘,’);
  • SELECT count(*);
  • 大部分聚合函数忽略空值
CREATE TABLE t AS SELECT generate_series(1,20);
SELECT percentile_disc(ARRAY[0.5,1]) WITHIN GROUP (ORDER BY val) FROM t
  • [ FILTER ( WHERE filter_clause ) ]
SELECT
    count(*) AS unfiltered,
    count(*) FILTER (WHERE i < 5) AS filtered
FROM generate_series(1,10) AS s(i);
窗口函数
  • 只能出现在SELECT或ORDER BY中
类型转换
  • CAST ( expression AS type )
  • expression::type
  • typename ( expression ) – 不建议使用
排序规则
  • COLLATE 重载一个表达式的排序规则
标量子查询
  • 返回一行一列,可以从周围的查询中引用变量,这些变量将在子查询中视作常量
  • SELECT name, (SELECT max(pop) FROM cities WHERE cities.state = states.name) FROM states;
数组构造器
  • SELECT ARRAY[1,2,3];
  • SELECT ARRAY(SELECT val FROM t);
  • 数组的每个成员必须拥有相同数据类型
  • 多维数组维度必须相同
行构造器
  • SELECT ROW(1,2.5,‘this is a test’);
  • ROW是可选的
  • 可以使用t.*的语法
  • 可以比较两个行值,也可以使用IS NULL,IS NOT NULL测试行是否为空
表达式计算规则
  • 没有任何固定顺序
  • 换成CASE语句,也无法阻止常量子表达式的提早计算,无法阻止聚合函数的计算
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值