-
多表查询中on条件和where条件的区别 从上面各种连接语法中可见,除自然连接和交叉连接外,其他都需要有on条件(using在查询解析过程中会被转为on条件)来限制两表连接的结果。通常在查询的语句中也都会有where条件限制查询结果。这里说的on连接条件和where过滤条件是指不含可以下推到表上的过滤条件。on和where的区别是: on条件是两表连接的约束条件。 where是对两表连接后产生的结果集再次进行过滤。 简单总结就是:on条件优先于where条件,在两表进行连接时被应用;生成两表连接结果集后,再应用where条件。
-
连接类型介绍 通过SQL完成各种复杂的查询,多表之间的连接是必不可少的。连接分为:内连接和外连接两大类,每大类中还可进行细分。 内连接:标准内连接(INNER JOIN),交叉连接(CROSS JOIN)和自然连接(NATURAL JOIN)。 外连接:左外连接(LEFT OUTER JOIN),右外连接(RIGHT OUTER JOIN)和全外连接(FULL JOIN)。 为了能更好的说明各种连接之间的区别,下面通过具体示例进行详细的阐述。 创建示例表student和math_score,并插入数据,设置enable_fast_query_shipping为off(默认为on)即查询优化器使用分布式框架;参数explain_perf_mode为pretty(默认值为pretty)指定explain的显示格式。 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 CREATE EXTERNAL TABLE student(
id INTEGER,
name varchar(50)
)
STORE AS orc;
CREATE EXTERNAL TABLE math_score(
id INTEGER,
score INTEGER
)
STORE AS orc;
INSERT INTO student VALUES(1, 'Tom');
INSERT INTO student VALUES(2, 'Lily');
INSERT INTO student VALUES(3, 'Tina');
INSERT INTO student VALUES(4, 'Perry');
INSERT INTO math_score VALUES(1, 80);
INSERT INTO math_score VALUES(2, 75);
INSERT INTO math_score VALUES(4, 95);
INSERT INTO math_score VALUES(6, NULL);
SET enable_fast_query_shipping = off;
SET explain_perf_mode = pretty;
-
URI GET /mysql/v3/{project_id}/flavors/{database_name} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 租户在某一region下的project ID。 获取方法请参见获取项目ID。 database_name 是 String 数据库引擎名称。 表2 Query参数 参数 是否必选 参数类型 描述 version_name 否 String 数据库版本号,目前仅支持兼容MySQL 8.0。 availability_zone_mode 是 String 规格的可用区模式,现在仅支持"single"、"multi",不区分大小写。 spec_code 否 String 规格编码。
-
响应示例 状态码: 200 Success. { "flavors" : [ { "type" : "x86", "vcpus" : "1", "ram" : "4", "id" : "3169caaf-6c2f-41d5-aadd-c8fc3d83597e", "spec_code" : "gaussdb.mysql.xlarge.x86.4", "instance_mode" : "Cluster", "version_name" : "8.0", "az_status" : { "cn-north-4a" : "normal", "cn-north-4b" : "normal" } } ]}
-
响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 datastores Array of MysqlEngineVersionInfo objects 数据库版本信息列表 表4 MysqlEngineVersionInfo 参数 参数类型 描述 id String 数据库版本ID,该字段不会有重复。 name String 数据库版本号,只返回两位数的大版本号。 kernel_version String 数据库内核版本号,返回完整的四位版本号。 version String 兼容的开源数据库版本号,返回三位开源版本号。 状态码: 400 表5 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误消息。 状态码: 500 表6 响应Body参数 参数 参数类型 描述 error_code String 错误码。 error_msg String 错误消息。