GBase 8c 兼容模式使用说明

144 阅读3分钟

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

    为应对同构/异构数据库迁移通常面临的挑战,GBase 8c从数据库自身兼容性、配套工具兼容性等多方面进行设计优化,在内核本身的适配能力和性能基础上,兼容Oracle,PostgreSQL,MySQL,Teradata等多种关系型数据库,并且提供完善的SQL支持和丰富的函数库。下面以常用关系型数据库的相关语法做简单介绍

库级兼容性:

  • DBCOMPATIBILITY [ = ] compatibility_type

    指定兼容的数据库的类型,默认兼容O。

    取值范围:A、B、C、PG。分别表示兼容O、MY、TD和POSTGRES。

       注意:

                1.该参数只能建库时确定好,后期无法直接通过sql语句修改兼容性;

                2.A模式下,数据库将空字符串作为NULL处理,数据类型DATE会被替换为TIMESTAMP(0) WITHOUT TIME ZONE。

示例:

CREATE DATABASE 数据库名 WITH  ENCODING = 'UTF8' DBCOMPATIBILITY = 'A' OWNER 用户名;

1.兼容Oracle

CREATE DATABASE oracle WITH  ENCODING = 'UTF8' DBCOMPATIBILITY = 'A' OWNER test;

CREATE TABLE users (
id NUMBER PRIMARY KEY,
username VARCHAR2(50) NOT NULL,
email VARCHAR2(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE UNIQUE INDEX idx_users_username ON users(username);

insert into users values(1,'张三','11111@qq.com');
select * from users;

2.兼容PostgreSQL

       注意:

                1.PG模式下,CHAR和VARCHAR以字符为计数单位,其它兼容性以字节为计数单位。例如,对于UTF-8字符集,CHAR(3)在PG兼容性下能存放3个中文字符,而在其它兼容性下只能存放1个中文字符。

CREATE DATABASE pg WITH  ENCODING = 'UTF8' DBCOMPATIBILITY = 'PG' OWNER test;

CREATE TABLE postgres (
id INT PRIMARY KEY,
data VARCHAR(100)
;

CREATE SEQUENCE postgres_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1;
ALTER TABLE postgres ALTER COLUMN id SET DEFAULT nextval('postgres_id_seq');

pg=# select nextval('postgres_id_seq');
nextval

      1
(1 row)

pg=# select nextval('postgres_id_seq');
nextval

      2
(1 row)

insert into postgres(data) values('11acb'),('222ABC');
select * from postgres;

3.兼容MySQL

       注意:

                1.将字符串转换成整数类型时,如果输入不合法,B兼容性会将输入转换为0,而其它兼容性则会报错。

CREATE DATABASE mysql WITH  ENCODING = 'UTF8' DBCOMPATIBILITY = 'B' OWNER test;
\c mysql

CREATE TABLE mytable (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100)
;

INSERT INTO mytable (name) VALUES ('John');
SELECT LAST_INSERT_ID();
last_insert_id

             1
(1 row)

SELECT * from  mytable;
id | name
----+------
1 | John

另外呢,GBase 8c在mysql兼容模式下,也支持mysql内置函数

LEAST(expr1, expr2, expr3, …) 返回列表中的最小值 

LOG(x) 返回自然对数(以 e 为底的对数)

POW(x,y)/POWER(x,y)返回 x 的 y 次方

CONCAT(s1,s2…sn)字符串 s1,s2 等多个字符串合并为一个字符串

FIND_IN_SET  回在字符串s2中与s1匹配的字符串的位置

FORMAT(x,n)函数可以将数字 x 进行格式化 “#,###.##”, 将 x 保留到小数点后 n 位,最后一位四舍五入

原文链接:www.gbase.cn/community/p…
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。