返回首页

gbase数据、南大通用产品文档:GBase8s总结

更新日期:2024年09月11日

本章介绍了用于查询关系数据库的基本 SELECT 语句类型的语法示例和结果。单个表的
SELECT 语句一节显示了如何执行以下操作:

使用 Projection 和 FROM 子句从表中选择列和行

使用 Projection 、FROM 和 WHERE 子句从表中选择行

在 Projection 子句中使用 DISTINCT 或 UNIQUE 关键字来消除查询结果中重复
的行

使用 ORDER BY 子句和 DESC 关键字来排序检索的数据

选择包含非英语字符的数据值并对其排序

在 WHERE 子句中使用 BETWEEN 、IN 、MATCHES 和 LIKE 关键字以及各
种关系运算符来创建比较条件

创建包括值、排除值、查找一定范围内的值(使用关键字、关系运算符和下标)查
找值的子集的比较条件

使用精确文本比较、变长通配符和受限及非受限通配符来执行变量文本搜索

使用逻辑运算符 AND 、OR 和 NOT 来在 WHERE 子句中连接搜索条件或
Boolean 表达式

使用 ESCAPE 关键字来保护查询中的特殊字符

在 WHERE 子句中使用 IS NULL 和 IS NOT NULL 关键字来搜素 NULL 值

使用 FIRST 子句指定查询只返回符合 SELECT 语句的条件的指定书目的行

在 Projection 子句中使用算术运算符对数字字段执行计算并显示派生数据

将显示标签指定个计算列作为用于报告的格式化工具
本章还介绍了简单连接条件,使您能够从两个或多个表中选择和显示数据。多表 SELECT
语句一节描述了如何执行下列操作:

创建笛卡尔积

创建 CROSS JOIN,它创建笛卡尔积

在查询中将 WHERE 子句与有效连接条件包括在一起以抑制笛卡尔积

定义和创建自然连接和等值连接

GBase 8s SQL 指南:教程
南大通用数据技术股份有限公司 - 70 -


在一列或多列上连接两个或多个表

在多表查询中使用别名作为快捷方式

使用 INTO TEMP 子句将选择的数据检索到独立的临时表中,
以便在数据库外部执
行计算

4 从复杂类型选择数据
本章描述如何查询复杂数据类型。复杂数据类型是使用 SQL 类型构造函数从其他数据类
型的组合构建的。SQL 语句可以访问复杂数据类型中的个别组件。复杂数据类型是行类型
或集合类型。
ROW 类型具有组合一个或多个相关数据字段的实例。这两种 ROW 类型是已命名和未命
名。
集合类型具有这样的实例:在其中,每种集合值包含具有相同数据类型的一组元素,这些
数据类型可以是任何基本或复杂数据类型。集合可以由 LIST 、SET 或 MULTISET 数据
类型组成。
重要: 对于复杂数据类型没有跨数据库的支持。只能在本地数据库中对它们进行操作。
有关数据库服务器支持的数据类型的更完整描述,请参阅《GBase 8s SQL 参考指南》中的
数据类型一章。
有关如何创建使用复杂类型的信息,
请参阅
《GBase 8s 数据库设计和实现指南 》

《GBase
8s SQL 参考指南》和《GBase 8s SQL 指南:语法》 。

功能描述
定义或修改一个对象的注释。
注意事项

每个对象只存储一条注释,因此要修改一个注释,对同一个对象发出一条新的
COMMENT 命令即可。要删除注释,在文本字符串的位置写上NULL 即可。当删除对
象时,注释自动被删除掉。

目前注释浏览没有安全机制:
任何连接到某数据库上的用户都可以看到所有该数据库对
象的注释。共享对象(比如数据库、角色、表空间)的注释是全局存储的,连接到任何
数据库的任何用户都可以看到它们。因此,不要在注释里存放与安全有关的敏感信息。

对大多数对象,只有对象的所有者或者被授予了对象COMMENT 权限的用户可以设置
注释,系统管理员默认拥有该权限。

角色没有所有者,所以COMMENT ON ROLE 命令仅可以由系统管理员对系统管理员
角色执行,
有CREATEROLE 权限的角色也可以为非系统管理员角色设置注释。
系统管
理员可以对所有对象进行注释。
语法格式
COMMENT ON
{
AGGREGATE agg_name (agg_type [, ...] ) |
CAST (source_type AS target_type) |
COLLATION object_name |
COLUMN { table_name.column_name | view_name.column_name } |
CONSTRAINT constraint_name ON table_name |
CONVERSION object_name |
DATABASE object_name |
DOMAIN object_name |

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
817
EXTENSION object_name |
FOREIGN DATA WRAPPER object_name |
FOREIGN TABLE object_name |
FUNCTION function_name ( [ {[ argmode ] [ argname ] argtype} [, ...] ] ) |
INDEX object_name |
LARGE OBJECT large_object_oid |
OPERATOR operator_name (left_type, right_type) |
OPERATOR CLASS object_name USING index_method |
OPERATOR FAMILY object_name USING index_method |
[ PROCEDURAL ] LANGUAGE object_name |
ROLE object_name |
RULE rule_name ON table_name |
SCHEMA object_name |
SERVER object_name |
TABLE object_name |
TABLESPACE object_name |
TEXT SEARCH CONFIGURATION object_name |
TEXT SEARCH DICTIONARY object_name |
TEXT SEARCH PARSER object_name |
TEXT SEARCH TEMPLATE object_name |
TYPE object_name |
VIEW object_name
}
IS 'text';
参数说明

agg_name
聚集函数的名称。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
818

agg_type
聚集函数参数的类型。

source_type
类型转换的源数据类型。

target_type
类型转换的目标数据类型。

object_name
对象名。

table_name.column_name
view_name.column_name
定义/修改注释的列名称。前缀可加表名称或者视图名称。

constraint_name
定义/修改注释的表约束的名称。

table_name
表的名称。

function_name
定义/修改注释的函数名称。

argname,argmode,argtype
函数参数的模式、名称、类型。

large_object_oid
定义/修改注释的大对象的OID 值。

operator_name

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
819
操作符名称。

left_type,right_type
操作参数的数据类型(可以用模式修饰)
。当前置或者后置操作符不存在时,可以增加
NONE 选项。

trigger_name
触发器名称。

text
注释。
示例
gbase=#CREATE TABLE tpcds.customer_demographics_t2
(
CD_DEMO_SK
INTEGER
NOT NULL,
CD_GENDER
CHAR(1)
,
CD_MARITAL_STATUS
CHAR(1)
,
CD_EDUCATION_STATUS
CHAR(20)
,
CD_PURCHASE_ESTIMATE
INTEGER
,
CD_CREDIT_RATING
CHAR(10)
,
CD_DEP_COUNT
INTEGER
,
CD_DEP_EMPLOYED_COUNT
INTEGER
,
CD_DEP_COLLEGE_COUNT
INTEGER
)
WITH (ORIENTATION = COLUMN,COMPRESSION=MIDDLE)
;
-- 为tpcds.customer_demographics_t2.cd_demo_sk 列加注释。

GBase 8c SQL 参考手册
南大通用数据技术股份有限公司
820
gbase=#COMMENT ON COLUMN tpcds.customer_demographics_t2.cd_demo_sk IS 'Primary
key of customer demographics table.';
--创建一个由c_customer_sk 小于150 的内容组成的视图。
gbase=#CREATE VIEW tpcds.customer_details_view_v2 AS
SELECT *
FROM tpcds.customer
WHERE c_customer_sk < 150;
-- 为tpcds.customer_details_view_v2 视图加注释。
gbase=#COMMENT ON VIEW tpcds.customer_details_view_v2 IS 'View of customer detail';
-- 删除view。
gbase=#DROP VIEW tpcds.customer_details_view_v2;
-- 删除tpcds.customer_demographics_t2。
gbase=#DROP TABLE tpcds.customer_demographics_t2;

commit_delay
参数说明:表示一个已经提交的数据在WAL 缓冲区中存放的时间。
该参数属于USERSET 类型参数,请参考表15-1 中对应设置方法进行设置。
须知:
- 设置为非0 值时事务执行commit 后不会立即写入WAL 中,而仍存放在WAL 缓冲

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
1201
区中,等待WalWriter 进程周期性写入磁盘。
如果系统负载很高,在延迟时间内,
其他事务可能已经准备好提交。
但如果没有事务准
备提交,这个延迟就是在浪费时间。
取值范围:整型,0~100000,单位为微秒,其中0 表示无延迟。
默认值:0