本章提供了有关如何使用 SQL 语句、 SPL 语句和语法段的信息。
本章组织为以下几节。
节
范围
如何输入 SQL 语句
如何使用语法图和描述以正确输入 SQL 语句
如何输入 SQL 注释
如何在 SQL 语句中输入注释
SQL 语句的类别
SQL 语句, 按功能类别列出
ANSI/ISO 的一致性和扩展
SQL 语句, 按与 ANSI/ISO 的一致性程度列 出
1.1 如何输入 SQL 语句
SQL 语言是自由格式的(如同 C 或 PASCAL), 通常忽略空格字符(例如 TAB 、LINEFEED 和各语句或语句元素之间额外的空格)。然而,必须至少有一个空白字符或其它定界符将关键字和 标识与其它语法标记分开。
除了在带引号字符串中以外, SQL 是不区分大小写的;另见 标识符。在符合 ANSI 的数据库中, 如果没有用双引号 ( " ) 定界对象的 owner ,而且当初始化数据库服务器时没有将 ANSIOWNER 环境变量设置为 1 ,则数据库服务器会以大写字母存储 owner 名称。
在本手册中提供了语句描述以帮助您成功输入 SQL 语句。语句描述包括以下信息:
• 用来说明语句作用的简短介绍
• 用来显示如何正确输入语句的语法图
• 用来说明语法图中的每个输入参数的语法表
• 用法规则, 通常带有说明这些规则的示例
对于某些语句, 只为单独的子句提供了这些信息。
大多数语句描述的最后都带有本手册和其它手册中的相关信息的引用。
SQL 语句 提供了每个 SQL 语句的描述,是以字母顺序排列的。 SPL 语句 使用相同格式描述了 每个 SPL 语句。
输入 SQL 语句的主要帮助包括:
• 语法图和语法表的组合
• 出现在用法规则中的语法示例
• 对相关信息的引用
使用语法图和语法表
在您尝试使用本章中的语法图之前, 先阅读介绍中的语法图一节会有所帮助。本节是理解语法图的 关键, 并说明了可出现在语法图中的元素和这些元素互连的路径。本节还包括说明典型语法图元素 的示例。示例图后面的叙述显示了如何阅读该图以便成功输入语句。
语法图可以参考其他的语法部分或可以指定不同的限制。如果您正在使用应用程序接口(例如: ESQL/C),那么只有客户端应用和数据库服务器都支持的 SQL 语法规则是有效的。
当语法图包括输入规范(如标识、表达式、文件名、主机变量或其它项)时,语法图后跟着一个 表,该表描述如何输入该项而不生成错误。每个语法表包含四列:
• Element 列列出了语法图中的每个变量项。
• Description 列简述了该项并标识缺省值(如果该项有缺省值的话) 。
• Restrictions 列总结了该项的限制,例如值的可接受范围。(对于某些语法图,无法概括总 结的限制显示在 Usage 注解中而不是在此列中。)
• Syntax 列指向给出该项的详细语法的 SQL 段。对于某些项(如主变量名称、路径名或文 字字符), 未提供页码索引。
这些图表通常提供给定的 SQL 语句中有效内容的直观注解,但对于某些语句,语法元素之间的相 关性或限制仅在用法部分中的文本中作出标识。
使用示例
要理解某个语句的主要语法图和子图,请研究在每个语句的用法规则中显示的语法示例。这些示例 有两个作用:
• 显示如何使用语句或子句完成特定任务
• 显示如何以具体的方法使用语句或其子句的语法
提示: 理解语法图的一个有效方法是,查找语法示例并将其与语法图中的关键字和参数作比较。
通过将示例的具体元素映射到语法图的抽象元素, 可以有效地理解和使用语法图。 对于在本手册示例中使用的约定的说明, 请参阅介绍中的语法图的章节。
这些代码示例是用以说明有效语法的程序分段,而不是完整的 SQL 程序。在一些示例代码中, 省 略号( . . . )表示剩下的代码已省略。但为了节省空间, 在程序分段的开头和结尾不显示省略号。
使用相关信息
为了帮助理解 SQL 语句描述中的概念和项, 请查看每个语句结尾处的“相关信息”部分。
本部分指向本手册和其它手册中的相关信息, 以帮助您理解讨论中的语句。本部分提供以下某些或 全部信息。
• 相关语句的名称,这些相关语句可能包含词语中主题的更完整讨论
• 提供此语句中主题的展开讨论的其它手册的标题
提示: 如果您对 SQL 没有广泛的知识和经验, GBase 8s SQL 教程指南会给予您所需的基本 SQL
知识, 供您理解并使用本手册中的语句描述。
1.2 如何输入 SQL 注释
您可以添加注释以阐明特定 SQL 语句的作用和影响。您还可以在程序开发期间使用注释符号以禁 用个别语句,而无需从源代码中删除它们。
您的注释可帮助您或其他人理解程序、 SPL 例程或命令文件中的语句角色。本手册中的代码示例有 时包括阐明代码中的 SQL 语句角色的注释, 但如果在写程序时经常使用注释,那么您自己的 SQL 程序将更容易阅读和维护。
下表显示了可在代码中输入的 SQL 注释指示符。这里列中的 Y 表示您可以将此符号与列标题中 标识的产品或数据库类型一起使用。列中的 N 表示不能将此符号与指出的产品或指出的 ANSI 一 致性状态的数据库一起使用。
数据库服务器忽略注释中的字符。
优化程序伪指令 这一部分描述了上下文, 在该上下文中注释内的信息可以影响 GBase 8s 的查询计 划。
如果您使用的产品支持所有这些注释符号,则您选择的注释符号取决于对 ANSI/ISO 一致性的需 求:
• 双连字符( – )符合 SQL 的 ANSI/ISO 标准。
• 花括号( { } )是 ANSI/ISO 标准 的 GBase 8s 扩展。
• C 语言样式的斜杠和星号( /* . . . */ )符合 SQL-99 标准。
只要符合 ANSI/ISO 一致性,您对注释符号的选择纯属个人偏好。
在 DB-Access 中, 当您使用 SQL 编辑器输入 SQL 语句和当您使用 SQL 编辑器或系统编辑器创 建 SQL 命令文件时,可以使用这些注释符号中的任何符号。
SQL 命令文件是包含一条或多条 SQL 语句的操作系统文件。命令文件也称为命令脚本。关于命令 文件的更多信息,请参阅 GBase 8s SQL 教程指南 中命令脚本的讨论。关于如何在 DB-Access 中 使用 SQL 编辑器或系统编辑器创建和修改命令文件的信息, 请参阅 GBase 8s DB-Access 用户指 南 。
您可以在 SPL 例程的任意一行中使用任意一种注释符号。请参阅 GBase 8s SQL 教程指南 中关于 如何注释和记录 SPL 例程的讨论。
在 GBase 8s ESQL/C 中, 以连字符(–)开始的注释可以延伸到同一行的末尾。关于 GBase 8s ESQL/C 程序中特定于语言的注释符号的信息,请参阅 GBase 8s ESQL/C 程序员手册。
SQL 注释符号示例
这些示例说明了使用 SQL 注释指示符的不同方式。
以下示例使用了每一种注释符号,包括双连字符(–)、花括号( { })、 C 语言样式(/* . . . */)的注释符号在 SQL 语句后注释。该注释与语句显示在同一行。
SELECT * FROM customer; – Selects all columns and rows
SELECT * FROM customer; {Selects all columns and rows}
SELECT * FROM customer; /Selects all columns and rows/
以下三个示例与前面的示例使用了相同的 SQL 语句和相同的注释, 但注释自成一行:
SELECT * FROM customer;
– Selects all columns and rows
SELECT * FROM customer;
{Selects all columns and rows}
SELECT * FROM customer;
/Selects all columns and rows/
以下示例中,用户输入与前面的示例中相同的 SQL 语句, 但现在输入一条多行注释(或者对于双 连字符有两条注释) :
SELECT * FROM customer;
– Selects all columns and rows
– from the customer table
SELECT * FROM customer;
{Selects all columns and rows
from the customer table}
SELECT * FROM customer;
/*Selects all columns and rows
from the customer table*/
一条 SQL 语句中出现任意三种样式的注释:
SELECT * – Selects all columns and rows
FROM customer; – from the customer table
SELECT * {Selects all columns and rows}
FROM customer; {from the customer table}
SELECT * /Selects all columns and rows/
FROM customer; /from the customer table/
如果您使用花括号或 C 语言样式的注释被成对的开始和结束符号定界, 那么结束注释符号必须与 开始注释符号的样式相同。
SQL 注释中的非 ASCII 字符
如果数据库语言环境支持非 ASCII 字符(包括多字节字符), 则可以在 SQL 注释中输入非 ASCII 字符。关于 SQL 注释 GLS 方面的进一步信息, 请参阅 GBase 8s GLS 用户指南。
1.3 SQL 语句的类别
传统上将 SQL 语句划分为以下逻辑类别:
数据定义语句
这些数据定义语言(DDL)语句可声明、重命名、修改或破坏数据库对象。
数据操纵语句
这些数据操纵语言(DML)语句可检索、插入、删除或修改数据值。
游标操纵语句
这些语句可声明、打开和关闭游标, 游标是用于对多行数据操作的数据结构。
动态管理语句
这些语句支持内存管理并运行用户在运行时指定 DML 操作的详细信息。
数据访问语句
这些语句指定访问特权并支持多个用户对数据库的同时访问。
数据完整性语句
这些语句执行事务日志记录并支持数据库的参照完整性。
优化语句
这些语句可用于提高数据库操作的性能。
例程定义语句
这些语句可声明、定义、修改、执行或破坏数据库存储的用户定义的例程。
客户机/服务器连接语句
这些语句可打开或关闭数据库和客户机应用程序之间的连接。
辅助语句
这些语句可提供关于数据库的信息。(这也是一个剩余类别, 用于不与其他语句紧密相关的语 句。)
数据定义语言语句
SQL 数据定义语言(DDL)创建、修改、重命名或销毁数据库对象并对数据库中系统目录表中的 行进行相应的修改。
• ALTER ACCESS_METHOD
• ALTER FRAGMENT
• ALTER FUNCTION
• ALTER INDEX
• ALTER PROCEDURE
• ALTER ROUTINE
• ALTER SEQUENCE
• ALTER SECURITY LABEL COMPONENT
• ALTER TABLE
• ALTER TRUSTED CONTEXT
• ALTER USER
• CLOSE DATABASE
• CREATE ACCESS_METHOD
• CREATE AGGREGATE
• CREATE CAST
• CREATE DATABASE
• CREATE DEFAULT USER
• CREATE DISTINCT TYPE
• CREATE EXTERNAL TABLE
• CREATE FUNCTION
• CREATE FUNCTION FROM
• CREATE INDEX
• CREATE OPAQUE TYPE
• CREATE OPCLASS
• CREATE PROCEDURE
• CREATE PROCEDURE FROM
• CREATE ROLE
• CREATE ROUTINE FROM
• CREATE ROW TYPE
• CREATE SCHEMA
• CREATE SECURITY LABEL
• CREATE SECURITY LABEL COMPONENT
• CREATE SECURITY POLICY
• CREATE SEQUENCE
• CREATE SYNONYM
• CREATE TABLE
• CREATE TEMP TABLE
• CREATE TRIGGER
• CREATE TRUSTED CONTEXT
• CREATE USER
• CREATE VIEW
• CREATE XADATASOURCE
• CREATE XADATASOURCE TYPE
• DROP ACCESS_METHOD
• DROP AGGREGATE
• DROP CAST
• DROP DATABASE
• DROP FUNCTION
• DROP INDEX
• DROP OPCLASS
• DROP PROCEDURE
• DROP ROLE
• DROP ROUTINE
• DROP ROW TYPE
• DROP SECURITY
• DROP SEQUENCE
• DROP TRUSTED CONTEXT
• DROP SYNONYM
• DROP TABLE
• DROP TRIGGER
• DROP TYPE
• DROP USER
• DROP VIEW
• DROP XADATASOURCE
• DROP XADATASOURCE TYPE
• RENAME COLUMN
• RENAME DATABASE
• RENAME INDEX
• RENAME SECURITY
• RENAME SEQUENCE
• RENAME TABLE
• RENAME TRUSTED CONTEXT
• RENAME USER
• TRUNCATE
• UPDATE STATISTICS
数据操纵语言语句
• DELETE
• INSERT
• LOAD
• MERGE
• SELECT
• UNLOAD
• UPDATE
注: SQL 的 ANSI/ISO 标准中的 DML 语句包括 DELETE 、INSERT 、MERGE 、SELECT 和 UPDATE 语句。 MERGE 可模拟 INSERT 和 DELETE 或 UPDATE 。尽管 LOAD 和 UNLOAD 在功能上类似于 DML ,但这些 DB-Access 宏不在本手册中对“DML 语句”的大多数引用范围 内。
数据完整性语句
• BEGIN WORK
• COMMIT WORK
• SAVEPOINT
• RELEASE SAVEPOINT
• ROLLBACK WORK
• SET Database Object Mode
• SET LOG
• SET Transaction Mode
• START VIOLATIONS TABLE
• STOP VIOLATIONS TABLE
游标操纵语句
• CLOSE
• DECLARE
• FETCH
• FLUSH
• FREE
• OPEN
• OPEN FOR
• PUT
• SET AUTOFREE
动态管理语句
• ALLOCATE COLLECTION
• ALLOCATE DESCRIPTOR
• ALLOCATE ROW
• DEALLOCATE COLLECTION
• DEALLOCATE DESCRIPTOR
• DEALLOCATE ROW
• DESCRIBE
• DESCRIBE INPUT
• EXECUTE
• EXECUTE IMMEDIATE
• FREE
• GET DESCRIPTOR
• INFO
• PREPARE
• SET DEFERRED_PREPARE
• SET DESCRIPTOR
数据访问语句
• GRANT
• GRANT FRAGMENT
• LOCK TABLE
• REVOKE
• REVOKE FRAGMENT
• SET ISOLATION
• SET LOCK MODE
• SET ROLE
• SET SESSION AUTHORIZATION
• SET TRANSACTION
• SET Transaction Mode
• UNLOCK TABLE
优化语句
• SAVE EXTERNAL DIRECTIVES
• SET ENVIRONMENT
• SET EXPLAIN
• SET OPTIMIZATION
• SET PDQPRIORITY
• SET STATEMENT CACHE
例程定义语句
• ALTER FUNCTION
• ALTER PROCEDURE
• ALTER ROUTINE
• CREATE FUNCTION
• CREATE FUNCTION FROM
• CREATE PROCEDURE
• CREATE PROCEDURE FROM
• CREATE ROUTINE FROM
• DROP FUNCTION
• DROP PROCEDURE
• DROP ROUTINE
• EXECUTE FUNCTION
• EXECUTE PROCEDURE
• SET DEBUG FILE TO
辅助语句
• GET DIAGNOSTICS
• INFO
• OUTPUT
• SET COLLATION
• SET DATASKIP
• SET ENCRYPTION PASSWORD
• SET USER PASSWORD
• WHENEVER
客户机/服务器连接语句
• CONNECT
• DATABASE
• DISCONNECT
• SET CONNECTION
1.4 ANSI/ISO 的一致性和扩展
以下列表显示了在入门级别上符合 ANSI SQL-92 标准的语句、符合 ANSI 但包括 GBase 8s 扩展 的语句和 ANSI/ISO 标准的 GBase 8s 扩展语句。
符合 ANSI/ISO 的语句
• • • • • •
具有
• • • • • • • • • • •
CLOSE
COMMIT WORK
RELEASE SAVEPOINT
SET CONSTRAINTS (请参阅 SET Transaction Mode 语句)
SET SESSION AUTHORIZATION
SET TRANSACTION
GBase 8s 扩展的符合 ANSI/ISO 的语句
ALLOCATE DESCRIPTOR
ALTER TABLE
CONNECT
COMMENT
CREATE FUNCTION
CREATE PROCEDURE
CREATE TRIGGER
CREATE SCHEMA
CREATE TABLE
CREATE TEMP TABLE
CREATE VIEW
• DEALLOCATE DESCRIPTOR
• DECLARE
• DELETE
• DESCRIBE
• DESCRIBE INPUT
• DISCONNECT
• EXECUTE
• EXECUTE IMMEDIATE
• FETCH
• GET DESCRIPTOR
• GET DIAGNOSTICS
• GRANT
• INSERT
• MERGE
• OPEN
• PREPARE
• REVOKE
• ROLLBACK WORK
• SAVEPOINT
• SELECT
• SET CONNECTION
• SET DESCRIPTOR
• UPDATE STATISTICS
• WHENEVER
ANSI/ISO 标准的扩展语句
• ALLOCATE COLLECTION
• ALLOCATE ROW
• ALTER ACCESS_METHOD
• ALTER FRAGMENT
• ALTER FUNCTION
• ALTER INDEX
• ALTER PROCEDURE
• ALTER ROUTINE
• ALTER SECURITY LABEL COMPONENT
• ALTER SEQUENCE
• ALTER TRUSTED CONTEXT
• ALTER USER
• BEGIN WORK
• CLOSE DATABASE
• CREATE ACCESS_METHOD
• CREATE AGGREGATE
• CREATE CAST
• CREATE DATABASE
• CREATE DEFAULT USER
• CREATE DISTINCT TYPE
• CREATE EXTERNAL TABLE
• CREATE FUNCTION FROM
• CREATE INDEX
• CREATE OPAQUE TYPE
• CREATE OPCLASS
• CREATE PROCEDURE FROM
• CREATE ROLE
• CREATE ROUTINE FROM
• CREATE ROW TYPE
• CREATE SECURITY LABEL
• CREATE SECURITY LABEL COMPONENT
• CREATE SECURITY POLICY
• CREATE SEQUENCE
• CREATE SYNONYM
• CREATE TRUSTED CONTEXT
• CREATE USER
• CREATE XADATASOURCE
• CREATE XADATASOURCE TYPE
• DATABASE
• DEALLOCATE COLLECTION
• DEALLOCATE ROW
• DROP ACCESS_METHOD
• DROP AGGREGATE
• DROP CAST
• DROP DATABASE
• DROP FUNCTION
• DROP INDEX
• DROP OPCLASS
• DROP PROCEDURE
• DROP ROLE
• DROP ROUTINE
• DROP ROW TYPE
• DROP SECURITY LABEL
• DROP SECURITY LABEL COMPONENT
• DROP SECURITY POLICY
• DROP SEQUENCE
• DROP SYNONYM
• DROP TABLE
• DROP TRIGGER
• DROP TRUSTED CONTEXT
• DROP TYPE
• DROP USER
• DROP VIEW
• DROP XADATASOURCE
• DROP XADATASOURCE TYPE
• EXECUTE FUNCTION
• EXECUTE PROCEDURE
• FLUSH
• FREE
• GRANT FRAGMENT
• LOAD
• LOCK TABLE
• OUTPUT
• PUT
• RELEASE SAVEPOINT
• RENAME COLUMN
• RENAME DATABASE
• RENAME INDEX
• RENAME SECURITY LABEL
• RENAME SECURITY LABEL COMPONENT
• RENAME SECURITY POLICY
• RENAME SEQUENCE
• RENAME TABLE
• RENAME TRUSTED CONTEXT
• RENAME USER
• REVOKE FRAGMENT
• SAVE EXTERNAL DIRECTIVES
• SET AUTOFREE
• SET COLLATION
• SET CONSTRAINTS (请参阅 SET Database Object Mode 语句)
• SET Database Object Mode
• SET DATASKIP
• SET DEBUG FILE TO
• SET DEFERRED_PREPARE
• SET ENCRYPTION PASSWORD
• SET ENVIRONMENT
• SET EXPLAIN
• SET INDEXES (请参阅 SET Database Object Mode 语句)
• SET ISOLATION
• SET LOCK MODE
• SET LOG
• SET OPTIMIZATION
• SET PDQPRIORITY
• SET ROLE
• SET STATEMENT CACHE
• SET TRIGGERS (请参阅 SET Database Object Mode 语句)
• SET USER PASSWORD
• START VIOLATIONS TABLE
• STOP VIOLATIONS TABLE
• TRUNCATE
• UNLOAD
• UNLOCK TABLE
• UPDATE STATISTICS
————————————————
版权声明:本文为CSDN博主「aisirea」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/aisirea/article/details/124093556