SQL 语法
数据处理语句(Data Manipulation)
SELECT
INSERT
UPDATE
DELETE
BACKUP
CALL
EXPLAIN
MERGE
RUNSCRIPT
SCRIPT
SHOW
数据定义语句(Data Definition)
ALTER INDEX RENAME
ALTER SEQUENCE
ALTER TABLE ADD
ALTER TABLE ADD CONSTRAINT
ALTER TABLE ALTER
ALTER TABLE DROP COLUMN
ALTER TABLE DROP CONSTRAINT
ALTER TABLE SET
ALTER TABLE RENAME
ALTER USER ADMIN
ALTER USER RENAME
ALTER USER SET PASSWORD
ALTER VIEW
ANALYZE
COMMENT
CREATE AGGREGATE
CREATE ALIAS
CREATE CONSTANT
CREATE DOMAIN
CREATE INDEX
CREATE LINKED TABLE
CREATE ROLE
CREATE SCHEMA
CREATE SEQUENCE
CREATE TABLE
CREATE TRIGGER
CREATE USER
CREATE VIEW
DROP AGGREGATE
DROP ALIAS
DROP ALL OBJECTS
DROP CONSTANT
DROP DOMAIN
DROP INDEX
DROP ROLE
DROP SCHEMA
DROP SEQUENCE
DROP TABLE
DROP TRIGGER
DROP USER
DROP VIEW
TRUNCATE TABLE
其他语句
CHECKPOINT
CHECKPOINT SYNC
COMMIT
COMMIT
TRANSACTION
GRANT RIGHT
GRANT ROLE
HELP
PREPARE COMMIT
REVOKE RIGHT
REVOKE ROLE
ROLLBACK
SET CLUSTER
SET COLLATION
SET COMPRESS_LOB
SET
DATABASE_EVENT_LISTENER
SET DB_CLOSE_DELAY
SET DEFAULT_LOCK_TIMEOUT
SET DEFAULT_TABLE_TYPE
SET EXCLUSIVE
SET IGNORECASE
SET LOCK_MODE
SET LOCK_TIMEOUT
SET MODE
SET MULTI_THREADED
SET
OPTIMIZE_REUSE_RESULTS
SET PASSWORD
SET QUERY_TIMEOUT
SET
REFERENTIAL_INTEGRITY
SET SALT HASH
SET SCHEMA
SET
SCHEMA_SEARCH_PATH
ROLLBACK
TRANSACTION
SAVEPOINT
SET @
SET ALLOW_LITERALS
SET AUTOCOMMIT
SET CACHE_SIZE
SET LOG
SET
MAX_LENGTH_INPLACE_LOB
SET MAX_LOG_SIZE
SET MAX_MEMORY_ROWS
SET MAX_MEMORY_UNDO
SET
MAX_OPERATION_MEMORY
SET THROTTLE
SET TRACE_LEVEL
SET
TRACE_MAX_FILE_SIZE
SET UNDO_LOG
SET WRITE_DELAY
SHUTDOWN
Quoted
Csv Options
Data Type
Date
Decimal
Digit
Dollar
String
Double
Expression
Factor
Hex
Hex Number
Index Column
Int
Long
Name
Null
Number
Operand
Order
Quoted Name
Referential
Constraint
Select Expression
String
Summand
Table Expression
Term
Time
Timestamp
Value
其他语法
Alias
And Condition
Array
Boolean
Bytes
Case
Case When
Cipher
Column Definition
Comments
Compare
Condition
Condition Right Hand
Side
Constraint
Constraint
Definition
Name
系统表
Information Schema
Range Table
SELECT
SELECT [ TOP term ] [ DISTINCT | ALL ] selectExpression [,...]
FROM tableExpression [,...] [ WHERE expression ]
[ GROUP BY expression [,...] ] [ HAVING expression ]
[ { UNION [ ALL ] | MINUS | EXCEPT | INTERSECT } select ] [ ORDER BY order [,...] ]
[ LIMIT expression [ OFFSET expression ] [ SAMPLE_SIZE rowCountInt ] ]
[ FOR UPDATE ]
从一张表或多张表查询数据。GROUP BY 根据给定的表达式(expression)
将结果进行分组,HAVING 是在分组之后进行行过滤。ORDER BY 根据给定
的字段或表达式对结果集进行排序。UNION 联合这个查询的结果集和另一个
查询的结果集。
LIMIT 限制查询返回的行数,OFFSET 指定多少行被跳过, SAMPLE_SIZE
限制聚集查询读取的行数。
如果指定 FOR UPDATE,表被锁定用于写。
例子如下:
SELECT * FROM TEST;
SELECT * FROM TEST ORDER BY NAME;
SELECT ID, COUNT(*) FROM TEST GROUP BY ID;
SELECT NAME, COUNT(*) FROM TEST GROUP BY NAME HAVING
COUNT(*) > 2;
SELECT 'ID' COL, MAX(ID) AS MAX FROM TEST UNION SELECT 'NAME',
MAX(NAME) FROM TEST;
SELECT * FROM TEST LIMIT 1000;
SELECT * FROM (SELECT ID, COUNT(*) FROM TEST
GROUP BY ID UNION SELECT NULL, COUNT(*) FROM TEST)
ORDER BY 1 NULLS LAST;
INSERT
INSERT INTO tableName [ ( columnName [,...] ) ]
{ VALUES { ( { DEFAULT | expression } [,...] ) } [,...] | select }
插入新行到表中。
例子如下:
INSERT INTO TEST VALUES(1, 'Hello')
UPDATE
UPDATE tableName [ [ AS ] newTableAlias ] SET { columnName= { DEFAULT | expression } }
[,...]
[ WHERE expression ]
更新表中的数据:
例子如下:
UPDATE TEST SET NAME='Hi' WHERE ID=1;
UPDATE PERSON P SET NAME=(SELECT A.NAME FROM ADDRESS A WHERE
A.ID=P.ID);
DELETE
DELETE FROM tableName [ WHERE expression ]
从表中删除行。
例子如下:
DELETE FROM TEST WHERE ID=2
BACKUP
BACKUP TO fileNameString
备份数据库文件到一个.zip 文件按中,对象不能被锁定,执行这条语句需要管理员权限。
例子如下:
BACKUP TO 'backup.zip'
CALL
CALL expression
计算一个简单的表达式。
例子如下:
CALL 15*25
EXPLAIN
EXPLAIN [ PLAN FOR ] { select | insert | update | delete }
显示语句的执行计划。
例子如下:
EXPLAIN SELECT * FROM TEST WHERE ID=1
MERGE
MERGE INTO tableName [ ( columnName [,...] ) ]
[ KEY ( columnName [,...] ) ]
{ VALUES { ( { DEFAULT | expression } [,...] ) } [,...] | select }
如果记录不存在,插入记录,如果记录存在,更新存在的记录,如果没有指定的键(KEY)
字段,查找记录时就使用主键字段,如果一个新纪录影响多个记录,将抛出异常,如果表包
含自增的键或标识字段,生产的键被设置为0,否则,它就被设置为新的键值。
例子如下:
MERGE INTO TEST KEY(ID) VALUES(2, 'World')
RUNSCRIPT
RUNSCRIPT FROM fileNameString [ COMPRESSION { DEFLATE | LZF | ZIP | GZIP } ]
[ CIPHER cipher PASSWORD string ] [ CHARSET charsetString ]
运行指定 SQL 脚本文件,SQL 脚本文件是包含 SQL 语句的文本文件,每个语句必须使用';'
结束。这个语句也可以用于从一个备份恢复数据库。密码必须使用单引号引用,它是区分大
小写的,并且可以包含空格。
压缩算法必须与创建脚本的压缩算法相匹配。当使用加密时,只有 DEFLATE 和 LZF 被支
持(LZF 性能更快,但是使用更多的空间)。可以不指定文件,使用 URL 替代。
执行这个命令需要管理员权限。
例子如下:
RUNSCRIPT FROM 'backup'
SCRIPT
SCRIPT [ SIMPLE ] [ NODATA ] [ NOPASSWORDS ] [ NOSETTINGS ]
[ DROP ] [ BLOCKSIZE blockSizeInt ]
[ TO fileNameString [ COMPRESSION { DEFLATE | LZF | ZIP | GZIP } ]
[ CIPHER cipher PASSWORD string ] ]
从数据库创建 SQL 脚本。
SIMPLE 表示不使用多行插入语句。 NODATA 表示不会发出 INSERT 语句。如果 DROP
选项被指定,表(TABLE)、视图(VIEW)和序列(SEQUENCE)的 DROP 语句被创建。
如果 BLOCKSIZE 被设置,当 CLOB 和 BLOB 的尺寸比设置值大时,将被分割为多块。
如果 TO 文件没有被指定,脚本将返回一个结果集。这个语句也能用于创建数据库备份,对
于长期存储,它比拷贝数据库文件更便携。
如果一个文件名被指定,整个脚本(包括插入语句)都被写入到这个文件,一个不包含插入
语句的结果集将被返回,当要加密时,只有 DEFLATE 和 LZF 被支持(LZF 性能更快,但
需要更多的空间)。
这个语句在运行时,将锁定对象。密码必须使用单引号引用,它是区分大小写的,并且可以
包含空格。
例子如下:
SCRIPT NODATA
SHOW
SHOW { SCHEMAS | TABLES [ FROM schemaName ] |
COLUMNS FROM tableName [ FROM schemaName ] }
列出 SCHEMAS 列表,表列表,表的字段列表。
例子如下:
SHOW TABLES
ALTER INDEX RENAME
ALTER INDEX indexName RENAME TO newIndexName
重命名一个索引,这个语句提交一个打开的事务。
例子如下:
ALTER INDEX IDXNAME RENAME TO IDX_TEST_NAME
ALTER SEQUENCE
ALTER SEQUENCE sequenceName [ RESTART WITH long ] [ INCREMENT BY long ]
改变自增序列的下一个值,这个语句不提交当前的事务,但是其他事务能立即获得新值,即
使回滚当前的事务,这个语句不受影响。
例子如下:
ALTER SEQUENCE SEQ_ID RESTART WITH 1000
ALTER TABLE ADD
ALTER TABLE tableName ADD name dataType [ DEFAULT expression ]
[ [ NOT ] NULL ] [ AUTO_INCREMENT | IDENTITY ] [ BEFORE columnName ]
增加一个新的列到表中,这个语句提交一个打开的事务。
例子如下:
ALTER TABLE TEST ADD CREATEDATE TIMESTAMP
ALTER TABLE ADD CONSTRAINT
ALTER TABLE tableName ADD constraint [ CHECK | NOCHECK ]
增加一个约束到表中。如果 NOCHECK 被指定,已经存在的行将不被检查一致性(默认情
况下是检查已存在行的一致性的)。如果被需要的索引不存在,将自动创建索引,但是不可
能去屏蔽唯一性检查。这个语句提交一个打开的事务。
例子如下:
ALTER TABLE TEST ADD CONSTRAINT NAME_UNIQUE UNIQUE(NAME)
ALTER TABLE ALTER
ALTER TABLE tableName ALTER COLUMN columnName
{ { dataType [ DEFAULT expression ] [ [ NOT ] NULL ] [ AUTO_INCREMENT | IDENTITY ] }
| { RENAME TO name }
| { RESTART WITH long }
| { SELECTIVITY int }
| { SET DEFAULT expression }
| { SET NULL }
| { SET NOT NULL } }
改变列的数据类型,重命名列名,改变标识符值,改变优化选项。
如果数据不能被转换,数据类型的改变将失败。
RESTART 改变一个自增列的下一个值,这个字段必须已经是一个自增列,对于 RESTART,
遵守与 ALTER SEQUENCE 相同的事务规则。
SELECTIVITY 设置字段的优化选项,0为优化选项的默认值,SELECTIVITY 用于基于成
本优化器去计算一个索引的开销估算,SELECTIVITY 设置为100意味着是列上的值都是唯
一的,10意味着平均每10次就会有相同的值出现。
SET DEFAULT 改变列的默认值。
SET NULL 设置允许这个列为 NULL,行不能是主键或复合 HASH 索引的一部分,这个字
段上的单列索引被移去。
SET NOT NULL 设置字段不允许为空,行不允许包含为 NULL 的字段。
这个语句提交一个打开的事务。
例子如下:
ALTER TABLE TEST ALTER COLUMN NAME CLOB;
ALTER TABLE TEST ALTER COLUMN NAME RENAME TO TEXT;
ALTER TABLE TEST ALTER COLUMN ID RESTART WITH 10000;
ALTER TABLE TEST ALTER COLUMN NAME SELECTIVITY 100;
ALTER TABLE TEST ALTER COLUMN NAME SET DEFAULT '';
ALTER TABLE TEST ALTER COLUMN NAME SET NOT NULL;
ALTER TABLE TEST ALTER COLUMN NAME SET NULL;