![](https://img-blog.csdnimg.cn/d1f6acc0dfe347309bf6443855aaaf62.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
LightDB数据库
文章平均质量分 52
LightDB, Postgresql,Greenplum学习
chirpyli
数据库内核开发工程师
展开
-
LightDB兼容Oracle存储过程%TYPE
如果要声明一个变量,其类型与某个之前声明的变量的数据类型相同,或者与数据库表中某个列的数据类型一致,则可以利用%TYPE来实现,此时不需要知道参照变量或列的数据类型。也就是利用%TYPE属性可以返回被引用对象的数据类型。这里可以不但可以参照表中列的数据类型还可以参照包中的变量类型。LightDB不断提高对Oracle存储过程的兼容性。原创 2023-05-15 14:28:32 · 263 阅读 · 1 评论 -
LightDB支持INSERT ALL语法
Oracle中支持INSERT ALL语法,可进行多表插入与条件插入,对此,LightDB对该语法实现了兼容。原创 2023-05-12 17:17:21 · 187 阅读 · 0 评论 -
LightDB兼容MySQL除法
针对这种情况,我们LightDB对MySQL除法做了兼容,以方便MySQL迁移到LightDB中。在LightDB-23.1版本后将会予以支持。其除法兼容MySQL除法语义。还有一点需要注意,除0的问题,在PostgreSQL中,除0直接报错,在mysql中返回null值,在lightdb中返回null值,并报告一个警告日志。需求特别注意,除以null会返回null。原创 2023-03-07 16:00:16 · 235 阅读 · 0 评论 -
LightDB兼容Mysql函数str_to_date
在LightDB中,如果lightdb_sql_mode没有设置no_zero_date时,返回的结果与mysql不同,因为LightDB不会返回一个类似1999-0-0这样不存在的非法日期,会默认返回一个合法日期。另外,在Mysql中支持sql_mode,在no_zero_date下,不允许出现日期为zero,对此,在LightDB中,支持lightdb_sql_mode参数,在LightDB中,可设置。在LightDB中,不支持str_to_date函数应用绑定变量,从用户使用的角度也不推荐这么用。原创 2023-02-21 10:03:52 · 458 阅读 · 0 评论 -
LightDB中的版本号
表示当前LightDB的PostgreSQL数据库内核版本号为13.8,LightDB版本号为22.4,表示为22年发布的第4个版本。LightDB基于PostgreSQL内核开发,其版本命名方式为PG_VERSION-LIGHTDB_VERSION的方式,比如。LightDB还支持lightdb_server_version_num ,表示版本号数值,其计算方式为。原创 2023-02-01 17:29:38 · 161 阅读 · 0 评论 -
LightDB支持自定义操作符
定义一个新的操作符 name。定义操作符 的用户会成为该操作符的拥有者。如果给出一个模式名,该操作符将被创建 在指定的模式中。否则它会被创建在当前模式中。原创 2023-01-11 11:23:27 · 115 阅读 · 0 评论 -
LightDB中的插件介绍——system_stats
system_stats是postgresql的一个开源插件,github:https://github.com/EnterpriseDB/system_stats。可以用于监控系统的cpu、磁盘、IO、内存、网络、进程、操作系统信息。该插件同样可用于LightDB数据库中。原创 2023-01-06 14:01:32 · 192 阅读 · 0 评论 -
LightDB中CREATE DOMAIN详解
域主要被用于把字段上的常用约束抽象到一个单一的位置以便维护。例如, 几个表可能都包含电子邮件地址列,而且都要求相同的 CHECK 约束来验证 地址的语法。可以为此定义一个域,而不是在每个表上都单独设置一个约束。域本质上是一种带有可选约束(在允许的值集合上的限制)的数据类型。定义一个域的用户将成为它的拥有者。),那么域将被创建在该指定的模式中。域的名称在其模式中的类型和域之间必须保持唯一。当一个域有多个CHECK约束,将按照其名字的 字母顺序测试它们。要创建一个域,你必须在其底层类型上拥有USAGE特权。原创 2023-01-06 13:38:30 · 444 阅读 · 0 评论 -
LightDB支持百分号通配show查询
LightDB扩展了PostgreSQL中的SHOW功能,可通过通配符进行查询,可以展示多个配置信息。原创 2023-01-05 15:17:35 · 138 阅读 · 0 评论 -
LightDB兼容MySQL部分函数
可加载LightDB中的myfce插件,即可使用。下面我们看一下MySQL中这4个函数的用法。原创 2023-01-05 14:33:09 · 266 阅读 · 0 评论 -
LightDB中Limit使用详解
另外LightDB除了支持PostgreSQL中的Limit语法,还支持MySQL中的Limit语法。我们先看一下MySQL中的Limit语法,与PostgreSQL语法相近,只不过是limit m,n的形式,表示含义与PostgreSQL中limit n offset m相同。我们先看一下PostgreSQL中Limit语法的使用,在PostgreSQL中Limit的文档。LightDB支持Limit语法,同时支持PostgreSQL和MySQL中的Limit语法。更多可参考LightDB官网。原创 2023-01-05 09:48:35 · 116 阅读 · 0 评论 -
LightDB支持sysdate
更多可参考LightDB官网:https://www.hs.net/lightdb。对此,在PostgreSQL、LightDB中有类似的函数实现。在Oracle中有个函数sysdate,可获取当前系统时间。原创 2023-01-04 15:43:47 · 106 阅读 · 0 评论 -
LightDB兼容Oracle数据类型
不同数据库支持的数据类型是不同的,其中PostgreSQL支持的数据类型尤其丰富。其实,很多情况下,不同数据库中最常用的数据类型都差不太多,很多只是名字不一样,比如PostgreSQL中的numeric与Oracle中的number,PostgreSQL中的timestamp与Oracle中的datetime等,因此在实际开发中,可以直接应用LightDB中相近的数据类型或者直接应用Oracle数据类型亦可。LightDB官网: https://www.hs.net/lightdb。原创 2023-01-04 14:15:15 · 139 阅读 · 0 评论 -
LightDB兼容Oracle字符串连接||
LightDB以及Oracle都支持字符串连接||,但是语法细节有所不同,Oracle支持的连接类型更多,不但支持字符串和字符串的连接还支持非字符串的连接。在PostgreSQL中,不支持整型与整型的拼接,对此,LightDB做了兼容,增加了这一功能。支持的详细情况,可查看。更多请参考官方文档。原创 2023-01-04 11:03:17 · 139 阅读 · 0 评论 -
LightDB分区表语法
LightDB支持声明式分区语法,所谓声明式分区就是PostgreSQL提供了相应的DDL语句来创建分区表。LightDB支持三种方式的分区:Range范围分区,List列表分区,Hash哈希分区。实际上,在对SQL进行优化时,其中一点就是对大表进行分区,那么多大数据合适使用分区表呢?一般取决于具体的应用,不过也有个简单的基本规则,即表的大小超过了数据库服务器的物理内存大小时使用。LightDB支持分区表,分区表是一个非常有用的功能。原创 2023-01-03 14:07:04 · 181 阅读 · 0 评论 -
LightDB中的WITH查询
WITH提供了一种方式来书写在一个大型查询中使用的辅助语句。这些语句通常被称为公共表表达式或CTE,他们可以被看成是定义只在一个查询中存在的临时表。在WITH子句中的每一个辅助语句可以是一个SELECT、INSERT、UPDATE或DELETE,并且WITH子句本身也可以被附加到一个主语句,主语句也可以是SELECT、INSERT、UPDATE或DELETE。首先是WITH中的SELECT用法,WITH中SELECT的基本价值是将复杂的查询分解称为简单的部分。我们将具体举一些例子进行说明,下面先造数据。原创 2022-12-26 22:29:55 · 128 阅读 · 0 评论 -
LightDB支持AUTO_INCREMENT
在使用数据库系统的业务设计开发中,有大量场景需要唯一 ID 作为某种业务对象的标识,例如用户身份的唯一 ID、业务订单的唯一 ID 等,并且将定义成唯一 ID 的列作为数据库中表的主键进行约束。以 MySQL 为例,在列定义中提供了AUTO_INCREMENT 属性来生成唯一 ID,在插入数据时,通过 AUTO_INCREMENT 列,能够高性能地为新纪录行自动生成唯一、自增、连续的 ID,满足单库单表上的业务需求。除此之外,LightDB还支持identity功能,也可实现自增列功能。原创 2022-12-22 12:09:23 · 237 阅读 · 1 评论 -
LightDB支持层次查询CONNECT BY
LightDB支持层次查询,兼容Oracle中的CONNECT BY语法。什么是层次查询呢?在关系数据库中,表中的记录之间有时是有层次关系的,例如员工分为管理者与被管理者,机构分为上级与下级,家族成员分为长辈与晚辈等。其中最顶层的节点称为根节点,即层次级别为1的节点,除了根节点,其他节点都是子节点。对此,LightDB数据库提供了一种层次查询方法,又称树形查询,能够将一个表中的数据按照记录之间的关系以树状结构的形式显示。原创 2022-12-15 17:15:57 · 168 阅读 · 0 评论 -
LightDB支持WITH PRIMARY KEY
更多请参考LightDB官网:https://www.hs.net/lightdb。LightDB数据库支持建表时指定。语法,表示创建一个表,含有。原创 2022-12-15 09:51:48 · 156 阅读 · 0 评论 -
LightDB支持WITH UPDATE CURRENT_TIMESTAMP
为MySQL语法,Oralce与PostgreSQL都不支持,LightDB对此功能做了兼容。不能同时使用,很容易理解,同时使用对业务没有什么实际意义。具体的为在建表时可以指定。,为自动更新时间戳属性。原创 2022-12-15 09:35:43 · 181 阅读 · 0 评论 -
LightDB支持ON UPDATE CURRENT_TIMESTAMP
熟悉Mysql的知道Mysql是支持ON UPDATE CURRENT_TIMESTAMP自动更新时间戳功能的,对此LightDB也实现了该功能。原创 2022-12-14 14:18:28 · 102 阅读 · 0 评论 -
LightDB中视图以及物化视图的使用
视图是非常常用的一个功能,数据库本身就含有非常多的系统视图,用户也会在应用中大量使用视图,所以这里我们看一下LightDB中视图以及物化视图的使用。原创 2022-12-13 11:08:39 · 109 阅读 · 0 评论 -
LightDB中的插件介绍之lt_hint_plan
熟悉PostgreSQL的都知道有一个pg_hint_plan插件,可以通过该插件让用户自己指定生成定制的执行计划,而不是完全让优化器自己生成。这样的好处是让优化器不能生成最优的执行计划时,用户可以自己指定生成最优的执行计划,从而使性能大幅提高。具体的就是可以使用pg_hint_plan插件以特殊的注释形式来提示SQL语句应该如何执行。在LightDB中,lt_hint_plan功能用法与之类似。原创 2022-12-12 13:39:11 · 333 阅读 · 0 评论 -
LightDB中的绑定变量使用
LightDB支持绑定变量,绑定变量在应用开发中是十分有用的,不但可以提高性能而且可以使应用更安全,避免SQL注入攻击问题。下面我们就看一下LightDB中如何使用绑定变量。LightDB中绑定变量的使用主要通过:PREPARE、EXECUTE、DEALLOCAT三者实现。分别为预备语句,执行,删除功能。更多可参考恒生LightDB官网。原创 2022-12-09 10:48:18 · 105 阅读 · 0 评论 -
LightDB中的MERGE语句使用介绍
将源表中的数据分别与目标表中的数据根据指定条件进行比较,如果匹配,则利用源表中的记录更新目标表中的记录,如果不匹配,则将源表中的记录插入目标表中。使用MERGE语句操作时,可以将UPDATE、INSERT、DELETE操作融为一体,用户需要具有源表的SELECT对象操作权限以及目标表的INSERT、UPDATE对象权限。MERGE语句在OLAP系统中应用比较广,在AP系统中,经常需要同时读取多个数据源,而其中的很多数据是重复的,所以可以使用MERGE语句有条件地进行积累的添加或修改。原创 2022-12-08 16:06:03 · 113 阅读 · 0 评论 -
LightDB兼容Oracle table_exists_action功能
为了持续提高对Oracle的兼容性,LightDB的下一版本将支持类似Oracle impdp中的table_exists_action功能。主要目的在于给予用户更多的选择权,即当将要导入的表在库中已存在时,如何处理。LightDB是恒生电子推出的同时支持在线事务处理与在线分析处理的融合型分布式数据库产品,具备SQL兼容性高、容量弹性伸缩、金融级高可用、现代硬件融合、纯内存计算等核心特性,主要适用于对可用性、一致性要求较高的系统。可以看到lt_restore已经支持。原创 2022-11-11 13:53:24 · 518 阅读 · 0 评论 -
LightDB支持表函数
表函数是用户自定义的返回集合(嵌套表或可变数组,当前仅支持嵌套表)的PL/SQL函数。通过在SELECT语句的TABLE短语中调用表函数,可以像查询数据库表一样从表函数的返回集合中查询数据。res nt;end;end;end;原创 2022-09-16 10:46:43 · 216 阅读 · 0 评论 -
LightDB中的Oracle兼容之ROWNUM
LightDB兼容部分oracle特性,并在持续提高oracle的兼容性。本文主要讲解oracle中的典型语法rownum在lightdb中的兼容。LightDB对rownum的兼容性非常之高,支持在SELECT、UPDATE、DELETE中使用rownum,支持分区表中使用ROWNUM。另外,我们还对rownum性能实现了优化,实现了oracle中的count stop key。大幅提升了rownum的性能。我们做一个测试,通过ltbench创建大表。100万行数据,用时不到2ms。原创 2022-08-23 14:44:39 · 216 阅读 · 0 评论 -
LightDB分布式版本执行计划显示设置
LightDB支持分布式版本,通过安装插件canopy实现分布式功能。用法,创建CN节点,创建多个worker节点。,添加worker节点,添加好后,创建分布表。原创 2022-08-19 10:32:53 · 174 阅读 · 0 评论 -
LightDB中的lt_dump
我们知道Postgres中可通过pg_dump、pg_dumpall命令进行数据库的逻辑备份。类似的在lightdb中,可通过lt_dump、lt_dumpall命令进行数据库的逻辑备份,用法相同。原创 2022-08-12 15:12:35 · 156 阅读 · 0 评论 -
LightDB中的表
本文学习一下LightDB中的表,涉及建表语句,临时表等,分布式表等内容见。原创 2022-08-08 14:25:44 · 260 阅读 · 0 评论 -
LightDB中SELECT字段取别名的两种方法
方法二: 不用as,直接在字段名称后面加上别名,中间用空格隔开。方法一: as 别名。原创 2022-08-04 15:28:32 · 383 阅读 · 0 评论 -
LightDB中的存储过程(十)—— 批绑定
LightDB支持存储过程,除了支持Postgres的plpgsql存储过程,还兼容Oracle的存储过程,新增了plorasql过程语言。中我们介绍了存储过程中的游标,这一篇主要讲述存储过程中的批绑定。批绑定是PL/SQL中引入的提高程序运行性能的重要技术,可以实现SQL引擎和PL/SQL引擎之间数据的批量传递。我们下面进行详细的学习。...原创 2022-08-04 10:15:40 · 110 阅读 · 0 评论 -
LightDB中的存储过程(九)—— 游标
LightDB支持存储过程,除了支持Postgres的plpgsql存储过程,还兼容Oracle的存储过程,新增了plorasql过程语言。中我们介绍了存储过程中的包,这一篇主要讲述存储过程中的游标。原创 2022-08-02 20:24:45 · 139 阅读 · 0 评论 -
LightDB中的存储过程(八)—— 包
包用于将相关的PL/SQL元素(过程、函数、变量、常量、自定义数据类型、游标等)组织在一起,作为一个完整的逻辑单元,编译后存储在数据库服务器中,作为一种全局的模式对象,供应用程序共享。包由包规范和包体两部分组成,在数据库中独立存储。其中包规范声明了包中的所有公共元素,这些公共元素可以在包的外部被引用。如果包规范中声明了存储过程,则需要在包体中实现。在包体中,还可以定义私有元素,这些私有元素只能在包内部引用,而不能在包的外部引用。官网去查看。而用户包就是用户自己创建的包。.........原创 2022-08-02 14:55:39 · 197 阅读 · 0 评论 -
LightDB中的存储过程(七)—— 子程序
LightDB支持存储过程,除了支持Postgres的plpgsql存储过程,还兼容Oracle的存储过程,新增了plorasql过程语言。上一篇中我们介绍了存储过程中的集合类型,这一篇主要讲述存储过程中的子程序。原创 2022-08-02 13:28:52 · 193 阅读 · 0 评论 -
LightDB中的存储过程(六)—— 集合类型
前面我们讲过,PL/SQL支持两种复合数据类型集合类型和记录类型。他们的区别是集合类型中所有内部组件具有相同的数据类型,而记录类型内部组件可以具有不同的数据类型。关于记录类型,可参考文章LightDB中的存储过程(五),本文重点讲述集合类型。集合类型类似于其他高级语言中的数组,是相同类型元素的集合。PL/SQL中的集合类型分为联合数组类型(AssociativeArray)、嵌套表类型(NestedTable)和可变数组类型(Variable-SizeArray)三种。联合数组。......原创 2022-08-02 11:06:04 · 111 阅读 · 0 评论 -
LightDB中的存储过程(五)—— 记录类型
记录类型时PL/SQL中的复合类型,内部组件可以具有不同的数据类型。可以简单理解为是C语言中的结构体。因此记录类型有着广泛的应用。复合数据类型时指包含内部组件的数据类型,可以参考LightDB中的复合类型这篇文章。PL/SQL支持两种复合数据类型集合类型和记录类型。他们的区别是集合类型中所有内部组件具有相同的数据类型,而记录类型内部组件可以具有不同的数据类型。集合类型后续文章会讲,本文主要讲述记录类型。......原创 2022-08-02 09:58:57 · 146 阅读 · 0 评论 -
LightDB中的存储过程(四)—— 动态SQL
PL/SQL中的静态SQL语句是指可以直接在PL/SQL中使用的SQL语句,其语法与标准的SQL语义完全一致。而动态SQL语句是指在执行时进行解析的SQL语句,通常PL/SQL程序中只可以执行静态的SQL语句,为了支持PL/SQL中动态SQL语句的执行,LightDB提供了本地动态SQL技术。由于PL/SQL程序执行时采用早期绑定,即在编译阶段对变量进行绑定,识别程序中标识符的位置,检查用户权限、数据库对象等信息,因此在PL/SQL中可以直接执行静态SQL语句。endif;end;......原创 2022-08-01 20:57:51 · 147 阅读 · 0 评论 -
LightDB中的存储过程(三)—— 静态SQL
PL/SQL中的静态SQL语句是指可以直接在PL/SQL中使用的SQL语句,其语法与标准的SQL语义完全一致。由于PL/SQL程序执行时采用早期绑定,即在编译阶段对变量进行绑定,识别程序中标识符的位置,检查用户权限、数据库对象等信息,因此在PL/SQL中并不是所有语句就可以出现的,下列类型的SQL语句是可以出现的,因为它们不会修改数据库模式对象及其权限。查询语句SELECTDML语句INSERT、UPATE、DELETE、MERGE(其中MERGE为lightdb22.1版本新增特性)......原创 2022-08-01 19:50:56 · 161 阅读 · 0 评论