随笔分类 - SQL
摘要:什么是SQL函数? SQL函数包体是一些可执行的SQL语言。同时包含1条以上的查询,但是函数只返回最后一个查询(必须是SELECT)的结果。 除非SQL函数声明为返回void,否则最后一条语句必须是SELECT语句。 在简单情况下,返回最后一条查询结果的第一行。 如果最后一个查询不返回任何行,那么该
阅读全文
摘要:truncate命令在KingbaseES中本质上区别于oracle。因为oracle中,数据文件datafile可以被表所共享,每张表被分配各自的连续的extents。而在KingbaseES中,数据文件是独立的,不同表不存在共享数据文件的说法。 下面我们看一下KingbaseES数据库在内部怎么
阅读全文
摘要:Kingbase create type类型创建语句 说明: KingbaseES 数据库中,可以通过CREATE TYPE语句定义一种新的数据类型。 有八种形式的CREATE TYPE。它们分别创建组合类型、枚举类型、 范围类型、基础类型、shell 类型、嵌套表类型、可变数组类型和对象类型。下文
阅读全文
摘要:针对数据写入时有主键冲突的情况,INSERT ON CONFLICT语法可以将冲突主键的INSERT行为转换为UPDATE行为,从而实现冲突主键的覆盖写入。该特性又称UPSERT覆盖写,与MySQL的REPLACE INTO类似。 语法 [ WITH [ RECURSIVE ] with_query
阅读全文
摘要:json类型以文本方式存储json对象,把输入的数据原封不动的存放到数据库中,会保留多余的空格,保留重复的Key,保留Key的顺序。 jsonb类型转换文本格式json对象为二进制格式,不保留多余的空格,不保留重复的Key,不保留Key的顺序,同时支持索引。 jsonb类型除了支持json类型的操作
阅读全文
摘要:背景 前端在客户现场遇到一个问题,模糊查询报错:error:invalid multibyte charactor for locale pg the server LC_TYPE locale is probably incompatible with the database encoding
阅读全文
摘要:背景 演示唯一约束怎样创建、删除、禁用和使用唯一性约束,已经多种数据库的差异。 什么是唯一约束 唯一性约束指表中一个字段或者多个字段联合起来可以唯一标识一条记录的约束, 字段中,可以包括空值。 唯一性约束能够在创建表时或使用ALTER TABLE语句创建。 唯一约束与唯一索引的区别 唯一约束和唯一索
阅读全文
摘要:下表列出了常用的json数据类型操作符: | 操作符 | 操作符右侧数据类型 | 返回类型 | 描述 | | | | | | | -> | int | json or jsonb | 获得 JSON 数组元素(索引从 0 开始,负整数从末尾开始计) | | -> | text | json or j
阅读全文
摘要:一、数据准备: create table student( id int , s_name varchar(20), t_id int ); create table teacher( id int , t_name varchar(20) ); insert into student values
阅读全文
摘要:判断字符串包含的几种方法: 1. position test=# select position('aa' in 'abcd'); position 0 (1 行记录) test=# select position('ab' in 'abcd'); position 1 (1 行记录) test=#
阅读全文
摘要:一个列要不要建立btree索引,判断条件是其键值分布是否够离散,比如主键、唯一键,可以建立索引。如果这个列有大量重复的值,则建立索引没有意义。 在生产环境中常会碰到键值分布不均匀的列,如表t1有一个名为FLAG的列,有0,1,2三个值,其中值为0的记录占95%,值为1的占3%,2占2%。在FLAG上
阅读全文
摘要:会话出现了锁等待,想要快速查询到堵塞的会话,可以使用 sys_blocking_pids 函数来实现这一目的。 sys_blocking_pids:获取哪些会话阻塞了某个会话(输入参数). sys_backend_pid:返回当前会话的pid 示例: 会话1: test=# select sys_b
阅读全文
摘要:mysql中两个函数的说明: TO_DAYS(date)给出一个日期date,返回一个天数。 FROM_DAYS(N)给出一个天数N,返回一个DATE值。 两个函数比较计算的日期都是 0000-01-01。 在了解了函数的原理后可以通过KingbaseES时间加减的方式构建出这2个函数: creat
阅读全文
摘要:临时表概述 临时表用于存放只存在于事务或会话期间的数据。临时表中的数据对会话是私有的,每个会话只能看到和修改自己会话的数据。 您可以创建全局(global)临时表或本地(locall)临时表。 下表列举了它们之间的区别: | | 全局 | 本地 | | | | | | 定义 | CREATE GLO
阅读全文
摘要:KingbaseES提供了多种的时间函数,这些函数在使用过程中存在哪些不同? **同一事务** test=# begin test-# for i in 1.. 10 loop test-# raise notice 'time1:%,time2:%,time3:%,time4:%,time5:%'
阅读全文
摘要:如果以交叉表格式显示,则商业智能查询返回的数据通常是最有用的。SELECT语句的pivot_。数据透视是数据仓库中的一项关键技术。在其中,您可以将多行输入转换为数据仓库中较少且通常较宽的行。进行数据透视时,将为数据透视列值列表中的每个项应用聚合运算符。透视列不能包含任意表达式。如果需要对表达式进行透
阅读全文
摘要:垃圾回收影响因素 影响垃圾回收的因素有很多,垃圾回收不及时,最直接导致表膨胀,详情查看文档《KingbaseESV8R6 垃圾回收原理以及如何预防膨胀》。 vacuum回收垃圾的tuple时,判断哪些dead tuple可以被回收的规则是判断当前数据库中backend_xid和backend_xmi
阅读全文
摘要:《ODBC指南》中只介绍了window环境如何配置odbc数据源,但是没有介绍如何导入数据源驱动,这里做个补充。 在没有导入数据源驱动之前,按照文档操作是查不到kingbaseES的odbc数据源的: 通过安装目录下的 \Interface\odbc 中的注册表文件来导入源驱动 双击操作系统版本对应
阅读全文
摘要:一、KingbaseES 对于空值的默认排序规则 KingbaseES 对于 null 值的排序默认是最大的,也就是比任何值都大。具体见以下例子: test=# create table test(id integer,name text); test=# insert into test valu
阅读全文
摘要:背景 客户遇到一个现象order by 列是null的时候,最后一行总是显示相同的值。不要问我为什么对空值排序,意义何在?客户代码如此,客户不愿意改代码,作为dba大家都懂的。客户认为即使对null排序也能实现普通列的效果。要么定位为bug,要不给出合理解释。 分析 下面我们看一下测试过程,可以得出
阅读全文