暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

20240814kingbase部分记录

手机用户2051 2024-08-14
38

1.1. 词法结构

SQL输入由一个命令序列组成。一个命令由一个记号的序列构成,并由一个分号(";")终结。输入流的末端也会标志一个命令的结束。具体哪些记号是合法的与具体命令的语法有关。

一个记号可以是一个关键词、一个标识符、一个带引号的标识符、一个literal(或常量)或者一个特殊字符符号。记号通常以空白(空格、制表符、新行)来分隔,但在无歧义时并不强制要求如此(唯一的例子是一个特殊字符紧挨着其他记号)。

例如,下面是一个(语法上)合法的SQL输入:

CREATE TABLE MY_TABLE(A INT, B TEXT);
SELECT * FROM MY_TABLE;
UPDATE MY_TABLE SET A = 5;
INSERT INTO MY_TABLE VALUES (3, 'hi there');
复制

这是一个由三个命令组成的序列,每一行一个命令(尽管这不是必须地,在同一行中可以有超过一个命令,而且命令还可以被跨行分割)。

另外,注释也可以出现在SQL输入中。它们不是记号,它们和空白完全一样。

2.1. 表基础

关系型数据库中的一个表非常像纸上的一张表:它由行和列组成。列的数量和顺序是固定的,并且每一列拥有一个名字。行的数目是变化的,它反映了在一个给定时刻表中存储的数据量。SQL并不保证表中行的顺序。当一个表被读取时,表中的行将以非特定顺序出现,除非明确地指定需要排序。这些将在第 4 章介绍。此外,SQL不会为行分配唯一的标识符,因此在一个表中可能会存在一些完全相同的行。这是SQL之下的数学模型导致的结果,但并不是所期望的。稍后在本章中我们将看到如何处理这种问题。

每一列都有一个数据类型。数据类型约束着一组可以分配给列的可能值,并且它为列中存储的数据赋予了语义,这样它可以用于计算。例如,一个被声明为数值类型的列将不会接受任何文本串,而存储在这样一列中的数据可以用来进行数学计算。反过来,一个被声明为字符串类型的列将接受几乎任何一种的数据,它可以进行如字符串连接的操作但不允许进行数学计算。

KingbaseES包括了相当多的内建数据类型,可以适用于很多应用。用户也可以定义他们自己的数据类型。大部分内建数据类型有着显而易见的名称和语义,所以我们将它们的详细解释放在第 5 章中。一些常用的数据类型是:用于整数的integer;可以用于分数的numeric;用于字符串的text,用于日期的date,用于一天内时间的time以及可以同时包含日期和时间的timestamp

I. SQL 命令

这部分包含KingbaseES支持的SQL命令的参考信息。每条命令的标准符合和兼容的信息可以在相关的附件页中找到。

目录
ABORT -- 中止当前事务
ALTER AGGREGATE -- 更改一个聚集函数的定义
ALTER COLLATION -- 更改一个排序规则的定义
ALTER CONVERSION -- 改变一个转换的定义
ALTER DATABASE -- 更改一个数据库
ALTER DEFAULT PRIVILEGES -- 定义默认访问特权
ALTER DOMAIN --  更改一个域的定义
ALTER EVENT TRIGGER -- 更改一个事件触发器的定义
ALTER EXTENSION --  更改一个扩展的定义
ALTER FOREIGN DATA WRAPPER -- 更改一个外部数据包装器的定义
ALTER FOREIGN TABLE -- 更改一个外部表的定义
ALTER FUNCTION -- 更改一个函数的定义
ALTER GROUP -- 更改角色名称或者成员关系
ALTER INDEX -- 更改一个索引的定义
ALTER LANGUAGE -- 更改一种过程语言的定义
ALTER LARGE OBJECT -- 更改一个大对象的定义
ALTER MATERIALIZED VIEW -- 更改一个物化视图的定义
ALTER OPERATOR -- 更改一个操作符的定义
ALTER OPERATOR CLASS -- 更改一个操作符类的定义
ALTER OPERATOR FAMILY -- 更改一个操作符族的定义
ALTER POLICY -- 更改一条行级安全性策略的定义
ALTER PROCEDURE -- 重命名一个存储过程
ALTER ROLE -- 更改一个数据库角色
ALTER RULE -- 更改一个规则定义
ALTER SCHEMA -- 更改一个模式的定义
ALTER SEQUENCE --  更改一个序列发生器的定义
ALTER SERVER -- 更改一个外部服务器的定义
ALTER SYSTEM -- 更改一个服务器配置参数
ALTER TABLE -- 更改一个表的定义
ALTER TABLESPACE -- 更改一个表空间的定义
ALTER TEXT SEARCH CONFIGURATION -- 更改一个文本搜索配置的定义
ALTER TEXT SEARCH DICTIONARY -- 更改一个文本搜索字典的定义
ALTER TEXT SEARCH PARSER -- 更改一个文本搜索解析器的定义
ALTER TEXT SEARCH TEMPLATE -- 更改一个文本搜索模板的定义
ALTER TRIGGER -- 更改一个触发器的定义
ALTER TYPE --  更改一个类型的定义
ALTER USER -- 更改一个数据库角色
ALTER USER MAPPING -- 更改一个用户映射的定义
ALTER VIEW -- 更改一个视图的定义
ANALYZE -- 收集有关一个数据库的统计信息
BEGIN -- 开始一个事务块
CHECKPOINT -- 强制一个事务日志检查点
CLOSE -- 关闭一个游标
CLUSTER -- 根据一个索引聚簇一个表
COMMENT -- 定义或者更改一个对象的注释
COMMIT -- 提交当前事务
COMMIT PREPARED -- 提交一个早前为两阶段提交预备的事务
COPY -- 在一个文件和一个表之间复制数据
CREATE ACCESS METHOD -- 定义一种新的访问方法
CREATE AGGREGATE -- 定义一个新的聚集函数
CREATE CAST -- 定义一种新的转换
CREATE COLLATION -- 定义一种新排序规则
CREATE CONVERSION -- 定义一种新的编码转换
CREATE DATABASE -- 创建一个新数据库
CREATE DOMAIN -- 定义一个新的域
CREATE EVENT TRIGGER -- 定义一个新的事件触发器
CREATE EXTENSION -- 安装一个扩展
CREATE FOREIGN DATA WRAPPER -- 定义一个新的外部数据包装器
CREATE FOREIGN TABLE -- 定义一个新的外部表
CREATE FUNCTION -- 定义一个新函数
CREATE GROUP -- 定义一个新的数据库角色
CREATE INDEX -- 定义一个新索引
CREATE LANGUAGE -- 定义一种新的过程语言
CREATE MATERIALIZED VIEW -- 定义一个新的物化视图
CREATE OPERATOR -- 定义一个新的操作符
CREATE OPERATOR CLASS -- 定义一个新的操作符类
CREATE OPERATOR FAMILY -- 定义一个新的操作符族
CREATE POLICY -- 为一个表定义一条新的行级安全性策略
CREATE PROCEDURE -- 创建一个存储过程
CREATE ROLE -- 定义一个新的数据库角色
CREATE RULE -- 定义一条新的重写规则
CREATE SCHEMA -- 定义一个新模式
CREATE SEQUENCE -- 定义一个新的序列发生器
CREATE SERVER -- 定义一个新的外部服务器
CREATE TABLE -- 定义一个新表
CREATE TABLE AS -- 从一个查询的结果创建一个新表
CREATE TABLESPACE -- 定义一个新的表空间
CREATE TEXT SEARCH CONFIGURATION -- 定义一个新的文本搜索配置
CREATE TEXT SEARCH DICTIONARY -- 定义一个新的文本搜索字典
CREATE TEXT SEARCH PARSER -- 定义一个新的文本搜索解析器
CREATE TEXT SEARCH TEMPLATE -- 定义一种新的文本搜索模板
CREATE TRANSFORM -- 定义一个新的转换
CREATE TRIGGER -- 定义一个新触发器
CREATE TYPE -- 定义一种新的数据类型
CREATE USER -- 定义一个新的数据库角色
CREATE USER MAPPING -- 定义一个用户到一个外部服务器的新映射
CREATE VIEW -- 定义一个新视图
DEALLOCATE -- 释放一个预备语句
DECLARE -- 定义一个游标
DELETE -- 删除一个表的行
DISCARD -- 抛弃会话状态
DO -- 执行一个匿名代码块
DROP ACCESS METHOD -- 移除一种访问方法
DROP AGGREGATE -- 移除一个聚集函数
DROP CAST -- 移除一个转换
DROP COLLATION -- 移除一个排序规则
DROP CONVERSION -- 移除一个转换
DROP DATABASE -- 移除一个数据库
DROP DOMAIN -- 移除一个域
DROP EVENT TRIGGER -- 移除一个事件触发器
DROP EXTENSION -- 移除一个扩展
DROP FOREIGN DATA WRAPPER -- 移除一个外部数据包装器
DROP FOREIGN TABLE -- 移除一个外部表
DROP FUNCTION -- 移除一个函数
DROP GROUP -- 移除一个数据库角色
DROP INDEX -- 移除一个索引
DROP LANGUAGE -- 移除一个过程语言
DROP MATERIALIZED VIEW -- 移除一个物化视图
DROP OPERATOR -- 移除一个操作符
DROP OPERATOR CLASS -- 移除一个操作符类
DROP OPERATOR FAMILY -- 移除一个操作符族
DROP OWNED -- 移除一个数据库角色拥有的数据库对象
DROP POLICY -- 从一个表移除一条行级安全性策略
DROP PROCEDURE -- 删除一个存储过程
DROP ROLE -- 移除一个数据库角色
DROP RULE -- 移除一个重写规则
DROP SCHEMA -- 移除一个模式
DROP SEQUENCE -- 移除一个序列
DROP SERVER -- 移除一个外部服务器描述符
DROP TABLE -- 移除一个表
DROP TABLESPACE -- 移除一个表空间
DROP TEXT SEARCH CONFIGURATION -- 移除一个文本搜索配置
DROP TEXT SEARCH DICTIONARY -- 移除一个文本搜索字典
DROP TEXT SEARCH PARSER -- 移除一个文本搜索解析器
DROP TEXT SEARCH TEMPLATE -- 移除一个文本搜索模板
DROP TRANSFORM -- 移除转换
DROP TRIGGER -- 移除一个触发器
DROP TYPE -- 移除一个数据类型
DROP USER -- 移除一个数据库角色
DROP USER MAPPING -- 移除一个用于外部服务器的用户映射
DROP VIEW -- 移除一个视图
END -- 提交当前事务
EXECUTE -- 执行一个预备语句
EXPLAIN -- 显示一个语句的执行计划
FETCH -- 使用游标从查询中检索行
GRANT -- 定义访问特权
IMPORT FOREIGN SCHEMA -- 从一个外部服务器导入表定义
INSERT -- 在一个表中创建新行
LISTEN -- 监听一个通知
LOAD -- 载入一个共享库文件
LOCK -- 锁定一个表
MOVE -- 定位一个游标
NOTIFY -- 生成一个通知
PREPARE -- 为执行准备一个语句
PREPARE TRANSACTION -- 为两阶段提交准备当前事务
REASSIGN OWNED -- 更改一个数据库角色拥有的数据库对象的拥有关系
REFRESH MATERIALIZED VIEW -- 替换一个物化视图的内容
REINDEX -- 重建索引
RELEASE SAVEPOINT -- 销毁一个之前定义的保存点
RESET -- 把一个运行时参数的值恢复到默认值
REVOKE -- 移除访问特权
ROLLBACK -- 中止当前事务
ROLLBACK PREPARED -- 取消一个之前为两阶段提交准备好的事务
ROLLBACK TO SAVEPOINT -- 回滚到一个保存点
SAVEPOINT -- 在当前事务中定义一个新的保存点
SECURITY LABEL -- 定义或更改应用到一个对象的安全标签
SELECT -- 从一个表或视图检索行
SELECT INTO -- 从一个查询的结果定义一个新表
SET -- 更改一个运行时参数
SET CONSTRAINTS -- 为当前事务设置约束检查时机
SET ROLE -- 设置当前会话的当前用户标识符
SET SESSION AUTHORIZATION -- 设置当前会话的会话用户标识符和当前用户标识符
SET TRANSACTION -- 设置当前事务的特性
SHOW -- 显示一个运行时参数的值
START TRANSACTION -- 开始一个事务块
TRUNCATE -- 清空一个表或者一组表
UNLISTEN -- 停止监听一个通知
UPDATE -- 更新一个表的行
VACUUM -- 垃圾收集并根据需要分析一个数据库
VALUES -- 计算一个行集合

ABORT

名称

ABORT -- 中止当前事务

大纲

ABORT [ WORK | TRANSACTION ]
复制

描述

ABORT回滚当前事务并且导致由该事务所作的所有更新被丢弃。这个命令的行为与标准SQL命令ROLLBACK的行为一样,并且只是为了历史原因存在。

参数


WORK
TRANSACTION

可选关键词。它们没有效果。

注解

使用COMMIT成功地终止一个事务。

在一个事务块之外发出ABORT会发出一个警告消息并且不会产生效果。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论