SQL 手册-实用 SQL 语句-跨Schema

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: PolarDB-X 1.0实例中通常有多个Schema,PolarDB-X 1.0支持通过SQL语法进行跨Schema的查询,效果与MySQL的跨Schema查询类似。

PolarDB-X 1.0实例中通常有多个Schema,PolarDB-X 1.0支持通过SQL语法进行跨Schema的查询,效果与MySQL的跨Schema查询类似。

注意事项

  • 若要使用跨Schema的查询语法,需要在写SQL语句时为具体的TableName增加其对应的SchemaName的前缀(如xxx_tbl -> yyy_db.xxx_tbl),从而指定表xxx_tbl所属的Schema。这与MySQL的跨Schema查询的语法完全兼容。
  • 不支持CREATE、ALTER、DROP SEQUENCE语句的跨Schema用法。
  • PolarDB-X 1.0实例需为5.3.8-15517870或以上版本。
  • 使用跨Schema查询前,请先完成Schema的访问授权,授权相关的语法请参见账号和权限系统

基本概念

  • Schema:PolarDB-X 1.0实例中的一个数据库,它可能是一个带水平拆分的库,也可能是没做水平拆分的库。
  • SchemaName:PolarDB-X 1.0数据库库名,同一个实例内的数据库库名具有唯一性。
  • Table: PolarDB-X 1.0数据库中的一张表,它可能是一张带水平拆分的表,也可能是没做水平拆分的表。
  • TableName: PolarDB-X 1.0数据库中一张表的表名,同一个数据库内的表名具有唯一性。

使用示例

假设在某一PolarDB-X 1.0实例中,您创建了3个不同的数据库,每个数据库内分别有一张表,且每张表均有各自对应的Sequence,各个数据库、表和Sequence的详情如下所示:

SchemaName TableName Sequence
new_db new_tbl AUTO_SEQ_new_tbl
trade_db trade_tbl AUTO_SEQ_trade_tbl
user_db user_tbl AUTO_SEQ_user_tbl

假设您当前登录控制台使用的SchemaName为trade_db,则您可以使用如下SQL语句进行跨Schema查询:

  • 跨Schema的使用示例(SELECT)您可以使用如下SQL在 trade_tbluser_tbl数据库间进行跨Schema关联聚合查询:
SELECT COUNT(DISTINCT u.user_id)
FROM `trade_tbl` AS t 
INNER JOIN `user_db`.`user_tbl` AS u ON t.user_id=u.user_id
WHERE u.user_id >= 10000
GROUP BY t.title
  • 跨Schema的使用示例(INSERT)您可以使用如下SQL语句,将数据插入到new_db库中new_tbl表中:
INSERT INTO `new_db`.`new_tbl` (user_id, title) VALUES ( null, 'test' );
  • 跨Schema的使用示例3(分布式事务)在分布式事务中,您可以使用如下SQL语句,分别对表new_tbl与表user_tbl进行更新或删除,并合并提交:
SET AUTOCOMMIT=off;
    SET drds_transaction_policy = 'XA';
    UPDATE `new_db`.`new_tbl` SET name='abc' WHERE use_id=1;
    DELETE FROM `user_db`.`user_tbl` WHERE user_id=2;
    COMMIT;
  • 跨Schema的使用示例(SEQUENCE)若要显式使用Sequence进行跨Schema的INSERT操作,则您需要先在显式Sequence名字前加上SchemaName的前缀(如xxx_seq -> yyy_db.xxx_seq
/* 该 SQL将使用`new_db`库的`AUTO_SEQ_new_tbl`作为Sequence并进行插入操作 */
INSERT INTO `new_db`.`new_tbl` (id, name) values ( null, 'test_seq' );

/* 该 SQL将使用`new_db`库的`AUTO_SEQ_new_tbl`作为Sequence进行插入操作,注意这里的Sequence指定了SchemaName */
INSERT INTO `new_db`.`new_tbl` (id, name) values ( `new_db`.AUTO_SEQ_new_tbl.nextval, 'test_seq' );
  • 跨Schema的使用示例(SHOW CREATE TABLE)您可以使用如下SQL语句在当前Schema中去查询其它Schema(如new_db
SHOW CREATE TABLE `new_db`.`new_tbl`;

支持跨Schema查询的SQL类型

相关文章
|
SQL 存储 大数据
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
【大数据技术Hadoop+Spark】Hive基础SQL语法DDL、DML、DQL讲解及演示(附SQL语句)
593 0
|
SQL 关系型数据库 MySQL
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
MySQL技能完整学习列表3、SQL语言基础——1、SQL(Structured Query Language)简介——2、基本SQL语句:SELECT、INSERT、UPDATE、DELETE
283 0
|
10月前
|
SQL Java 数据库连接
如何在 Java 代码中使用 JSqlParser 解析复杂的 SQL 语句?
大家好,我是 V 哥。JSqlParser 是一个用于解析 SQL 语句的 Java 库,可将 SQL 解析为 Java 对象树,支持多种 SQL 类型(如 `SELECT`、`INSERT` 等)。它适用于 SQL 分析、修改、生成和验证等场景。通过 Maven 或 Gradle 安装后,可以方便地在 Java 代码中使用。
3206 11
|
SQL 存储 关系型数据库
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
SQL的基本语法以及SQL语句的关键字的使用,SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP等。
|
12月前
|
SQL 存储 BI
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
gbase 8a 数据库 SQL合并类优化——不同数据统计周期合并为一条SQL语句
|
SQL 监控 关系型数据库
SQL语句当前及历史信息查询-performance schema的使用
本文介绍了如何使用MySQL的Performance Schema来获取SQL语句的当前和历史执行信息。Performance Schema默认在MySQL 8.0中启用,可以通过查询相关表来获取详细的SQL执行信息,包括当前执行的SQL、历史执行记录和统计汇总信息,从而快速定位和解决性能瓶颈。
623 1
|
SQL 关系型数据库 MySQL
详解 pypika 模块:SQL 语句生成器,让你再也不用为拼接 SQL 语句而发愁
详解 pypika 模块:SQL 语句生成器,让你再也不用为拼接 SQL 语句而发愁
801 4
|
SQL 运维 监控
SQL Server 运维常用sql语句(二)
SQL Server 运维常用sql语句(二)
142 3
|
SQL XML 运维
SQL Server 运维常用sql语句(三)
SQL Server 运维常用sql语句(三)
183 1
|
SQL 关系型数据库 MySQL
(十七)SQL优化篇:如何成为一位写优质SQL语句的绝顶高手!
(Structured Query Language)标准结构化查询语言简称SQL,编写SQL语句是每位后端开发日常职责中,接触最多的一项工作,SQL是关系型数据库诞生的产物,无论是什么数据库,MySQL、Oracle、SQL Server、DB2、PgSQL....,只要还处于关系型数据库这个范畴,都会遵循统一的SQL标准,这句话简单来说也就是:无论什么关系型数据库,本质上SQL的语法都是相同的,因为它们都实现了相同的SQL标准,不同数据库之间仅支持的特性不同而已。
628 8