华为云用户手册

  • 关键字 SQL里有保留字和非保留字之分。根据标准,保留字决不能用做其他标识符。非保留字只是在特定的环境里有特殊的含义,而在其他环境里是可以用做标识符的。 表1 SQL关键字 关键字 GaussDB(DWS) SQL:1999 SQL-92 ABORT 非保留 - - ABS - 非保留 - ABSOLUTE 非保留 保留 保留 ACCESS 非保留 - - ACCOUNT 非保留 - - ACTION 非保留 保留 保留 ADA - 非保留 非保留 ADD 非保留 保留 保留 ADMIN 非保留 保留 - AFTER 非保留 保留 - AGGREGATE 非保留 保留 - ALIAS - 保留 - ALL 保留 保留 保留 ALLOCATE - 保留 保留 ALSO 非保留 - - ALTER 非保留 保留 保留 ALWAYS 非保留 - - ANALYSE 保留 - - ANALYZE 保留 - - AND 保留 保留 保留 ANY 保留 保留 保留 APP 非保留 - - ARE - 保留 保留 ARRAY 保留 保留 - AS 保留 保留 保留 ASC 保留 保留 保留 ASENSITIVE - 非保留 - ASSERTION 非保留 保留 保留 ASSIGNMENT 非保留 非保留 - ASYMMETRIC 保留 非保留 - AT 非保留 保留 保留 ATOMIC - 非保留 - ATTRIBUTE 非保留 - - AUTHID 保留 - - AUTHINFO 非保留 - - AUTHORIZATION 保留(可以是函数或类型) 保留 保留 AUTOEXTEND 非保留 - - AUTOMAPPED 非保留 - - AVG - 非保留 保留 BACKWARD 非保留 - - BARRIER 非保留 - - BEFORE 非保留 保留 - BEGIN 非保留 保留 保留 BETWEEN 非保留(不能是函数或类型) 非保留 保留 BIGINT 非保留(不能是函数或类型) - - BINARY 保留(可以是函数或类型) 保留 - BINARY_DOUBLE 非保留(不能是函数或类型) - - BINARY_INTEGER 非保留(不能是函数或类型) - - BIT 非保留(不能是函数或类型) 保留 保留 BITVAR - 非保留 - BIT_LENGTH - 非保留 保留 BLOB 非保留 保留 - BOOLEAN 非保留(不能是函数或类型) 保留 - BOTH 保留 保留 保留 BUCKETS 保留 - - BREADTH - 保留 - BY 非保留 保留 保留 C - 非保留 非保留 CACHE 非保留 - - CALL 非保留 保留 - CALLED 非保留 非保留 - CARDINALITY - 非保留 - CASCADE 非保留 保留 保留 CASCADED 非保留 保留 保留 CASE 保留 保留 保留 CAST 保留 保留 保留 CATALOG 非保留 保留 保留 CATALOG_NAME - 非保留 非保留 CHAIN 非保留 非保留 - CHAR 非保留(不能是函数或类型) 保留 保留 CHARACTER 非保留(不能是函数或类型) 保留 保留 CHARACTERISTICS 非保留 - - CHARACTER_LENGTH - 非保留 保留 CHARACTER_SET_CATALOG - 非保留 非保留 CHARACTER_SET_NAME - 非保留 非保留 CHARACTER_SET_SCHEMA - 非保留 非保留 CHAR_LENGTH - 非保留 保留 CHECK 保留 保留 保留 CHECKED - 非保留 - CHECKPOINT 非保留 - - CLASS 非保留 保留 - CLEAN 非保留 - - CLASS_ORIGIN - 非保留 非保留 CLOB 非保留 保留 - CLOSE 非保留 保留 保留 CLUSTER 非保留 - - COALESCE 非保留(不能是函数或类型) 非保留 保留 COBOL - 非保留 非保留 COLLATE 保留 保留 保留 COLLATION 保留(可以是函数或类型) 保留 保留 COLLATION_CATALOG - 非保留 非保留 COLLATION_NAME - 非保留 非保留 COLLATION_SCHEMA - 非保留 非保留 COLUMN 保留 保留 保留 COLUMNS 非保留 - - COLUMN_NAME - 非保留 非保留 COMMAND_FUNCTION - 非保留 非保留 COMMAND_FUNCTION_CODE - 非保留 - COMMENT 非保留 - - COMMENTS 非保留 - - COMMIT 非保留 保留 保留 COMMITTED 非保留 非保留 非保留 COMPATIBLE_ILLEGAL_CHARS 非保留 - - COMPLETE 非保留 - - COMPRESS 非保留 - - COMPLETION - 保留 - CONCURRENTLY 保留(可以是函数或类型) - - CONDITION - - - CONDITION_NUMBER - 非保留 非保留 CONFIGURATION 非保留 - - CONNECT - 保留 保留 CONNECTION 非保留 保留 保留 CONNECTION_NAME - 非保留 非保留 CONSTRAINT 保留 保留 保留 CONSTRAINTS 非保留 保留 保留 CONSTRAINT_CATALOG - 非保留 非保留 CONSTRAINT_NAME - 非保留 非保留 CONSTRAINT_SCHEMA - 非保留 非保留 CONSTRUCTOR - 保留 - CONTAINS - 非保留 - CONTENT 非保留 - - CONTINUE 非保留 保留 保留 CONVERSION 非保留 - - CONVERT - 非保留 保留 COORDINATOR 非保留 - - COPY 非保留 - - CORRESPONDING - 保留 保留 COST 非保留 - - COUNT - 非保留 保留 CREATE 保留 保留 保留 CROSS 保留(可以是函数或类型) 保留 保留 CSV 非保留 - - CUBE - 保留 - CURRENT 非保留 保留 保留 CURRENT_CATALOG 保留 - - CURRENT_DATE 保留 保留 保留 CURRENT_PATH - 保留 - CURRENT_ROLE 保留 保留 - CURRENT_SCHEMA 保留(可以是函数或类型) - - CURRENT_TIME 保留 保留 保留 CURRENT_TIMESTAMP 保留 保留 保留 CURRENT_USER 保留 保留 保留 CURSOR 非保留 保留 保留 CURSOR_NAME - 非保留 非保留 CYCLE 非保留 保留 - DATA 非保留 保留 非保留 DATE_FORMAT 非保留 - - DATABASE 非保留 - - DATAFILE 非保留 - - DATE 非保留(不能是函数或类型) 保留 保留 DATETIME_INTERVAL_CODE - 非保留 非保留 DATETIME_INTERVAL_PRECISION - 非保留 非保留 DAY 非保留 保留 保留 DBCOMPATIBILITY 非保留 - - DEALLOCATE 非保留 保留 保留 DEC 非保留(不能是函数或类型) 保留 保留 DECIMAL 非保留(不能是函数或类型) 保留 保留 DECLARE 非保留 保留 保留 DECODE 非保留(不能是函数或类型) - - DEFAULT 保留 保留 保留 DEFAULTS 非保留 - - DEFERRABLE 保留 保留 保留 DEFERRED 非保留 保留 保留 DEFINED - 非保留 - DEFINER 非保留 非保留 - DELETE 非保留 保留 保留 DELIMITER 非保留 - - DELIMITERS 非保留 - - DELTA 非保留 - - DEPTH - 保留 - DEREF - 保留 - DESC 保留 保留 保留 DESCRIBE - 保留 保留 DESCRIPTOR - 保留 保留 DESTROY - 保留 - DESTRUCTOR - 保留 - DETERMINISTIC 非保留 保留 - DIAGNOSTICS - 保留 保留 DICTIONARY 非保留 保留 - DIRECT 非保留 - - DIRECTORY 非保留 - - DISABLE 非保留 - - DISCARD 非保留 - - DISCONNECT - 保留 保留 DISPATCH - 非保留 - DISTINCT 保留 保留 保留 DISTRIBUTE 非保留 - - DISTRIBUTION 非保留 - - DO 保留 - - DOCUMENT 非保留 - - DOMAIN 非保留 保留 保留 DOUBLE 非保留 保留 保留 DROP 非保留 保留 保留 DYNAMIC - 保留 - DYNAMIC_FUNCTION - 非保留 非保留 DYNAMIC_FUNCTION_CODE - 非保留 - EACH 非保留 保留 - ELASTIC 非保留 - - ELSE 保留 保留 保留 ENABLE 非保留 - - ENCODING 非保留 - - ENCRYPTED 非保留 - - END 保留 保留 保留 END-EXEC - 保留 保留 ENFORCED 非保留 - - ENUM 非保留 - - EOL 非保留 - - EQUALS - 保留 - ERRORS 非保留 - - ESCAPE 非保留 保留 保留 ESCAPING 非保留 - - EVERY 非保留 保留 - EXCEPT 保留 保留 保留 EXCEPTION - 保留 保留 EXCHANGE 非保留 - - EXCLUDE 非保留 - - EXCLUDING 非保留 - - EXCLUSIVE 非保留 - - EXEC - 保留 保留 EXECUTE 非保留 保留 保留 EXISTING - 非保留 - EXISTS 非保留(不能是函数或类型) 非保留 保留 EXPIRATION 非保留 - - EXPLAIN 非保留 - - EXTENSION 非保留 - - EXTERNAL 非保留 保留 保留 EXTRACT 非保留(不能是函数或类型) 非保留 保留 FALSE 保留 保留 保留 FAMILY 非保留 - - FAST 非保留 - - FENCED 非保留 - - FETCH 保留 保留 保留 FILEHEADER 非保留 - - FILL_MISSING_FIELDS 非保留 - - FINAL - 非保留 - FIRST 非保留 保留 保留 FIXED 非保留 保留 保留 FLOAT 非保留(不能是函数或类型) 保留 保留 FOLLOWING 非保留 - - FOR 保留 保留 保留 FORCE 非保留 - - FOREIGN 保留 保留 保留 FORMATTER 非保留 - - FORTRAN - 非保留 非保留 FORWARD 非保留 - - FOUND - 保留 保留 FREE - 保留 - FREEZE 保留(可以是函数或类型) - - FROM 保留 保留 保留 FULL 保留(可以是函数或类型) 保留 保留 FUNCTION 非保留 保留 - FUNCTIONS 非保留 - - G - 非保留 - GENERAL - 保留 - GENERATED - 非保留 - GET - 保留 保留 GLOBAL 非保留 保留 保留 GO - 保留 保留 GOTO - 保留 保留 GRANT 保留 保留 保留 GRANTED 非保留 非保留 - GREATEST 非保留(不能是函数或类型) - - GROUP 保留 保留 保留 GROUPING - 保留 - HANDLER 非保留 - - HAVING 保留 保留 保留 HEADER 非保留 - - HIERARCHY - 非保留 - HOLD 非保留 非保留 - HOST - 保留 - HOUR 非保留 保留 保留 IDENTIFIED 非保留 - - IDENTITY 非保留 保留 保留 IF 非保留(不能是函数或类型) - - IFNULL 非保留(不能是函数或类型) - - IGNORE - 保留 - IGNORE_EXTRA_DATA 非保留 - - ILIKE 保留(可以是函数或类型) - - IMMEDIATE 非保留 保留 保留 IMMUTABLE 非保留 - - IMPLEMENTATION - 非保留 - IMPLICIT 非保留 - - IN 保留 保留 保留 INCLUDING 非保留 - - INCREMENT 非保留 - - INDEX 非保留 - - INDEXES 非保留 - - INDICATOR - 保留 保留 INFIX - 非保留 - INHERIT 非保留 - - INHERITS 非保留 - - INITIAL 非保留 - - INITIALIZE - 保留 - INITIALLY 保留 保留 保留 INITRANS 非保留 - - INLINE 非保留 - - INNER 保留(可以是函数或类型) 保留 保留 INOUT 非保留(不能是函数或类型) 保留 - INPUT 非保留 保留 保留 INSENSITIVE 非保留 非保留 保留 INSERT 非保留 保留 保留 INSTANCE - 非保留 - INSTANTIABLE - 非保留 - INSTEAD 非保留 - - INT 非保留(不能是函数或类型) 保留 保留 INTEGER 非保留(不能是函数或类型) 保留 保留 INTERNAL 保留 - - INTERSECT 保留 保留 保留 INTERVAL 非保留(不能是函数或类型) 保留 保留 INTO 保留 保留 保留 INVOKER 非保留 非保留 - IS 保留 保留 保留 ISNULL 非保留(不能是函数或类型) - - ISOLATION 非保留 保留 保留 ITERATE - 保留 - JOIN 保留(可以是函数或类型) 保留 保留 K - 非保留 - KEY 非保留 保留 保留 KEY_MEMBER - 非保留 - KEY_TYPE - 非保留 - LABEL 非保留 - - LANGUAGE 非保留 保留 保留 LARGE 非保留 保留 - LAST 非保留 保留 保留 LATERAL - 保留 - LC_COLLATE 非保留 - - LC_CTYPE 非保留 - - LEADING 保留 保留 保留 LEAKPROOF 非保留 - - LEAST 非保留(不能是函数或类型) - - LEFT 保留(可以是函数或类型) 保留 保留 LENGTH - 非保留 非保留 LESS 保留 保留 - LEVEL 非保留 保留 保留 LIKE 保留(可以是函数或类型) 保留 保留 LIMIT 保留 保留 - LISTEN 非保留 - - LOAD 非保留 - - LOCAL 非保留 保留 保留 LOCALTIME 保留 保留 - LOCALTIMESTAMP 保留 保留 - LOCATION 非保留 - - LOCATOR - 保留 - LOCK 非保留 - - LOG 非保留 - - LOGGING 非保留 - - LOGIN 非保留 - - LOOP 非保留 - - LOWER - 非保留 保留 M - 非保留 - MAP - 保留 - MAPPING 非保留 - - MATCH 非保留 保留 保留 MATCHED 非保留 - - MATERIALIZED 非保留 - - MAX - 非保留 保留 MAXEXTENTS 非保留 - - MAXSIZE 非保留 - - MAXTRANS 非保留 - - MAXVALUE 保留 - - MERGE 非保留 - - MESSAGE_LENGTH - 非保留 非保留 MESSAGE_OCTET_LENGTH - 非保留 非保留 MESSAGE_TEXT - 非保留 非保留 METHOD - 非保留 - MIN - 非保留 保留 MINEXTENTS 非保留 - - MINUS 保留 - - MINUTE 非保留 保留 保留 MINVALUE 非保留 - - MOD - 非保留 - MODE 非保留 - - MODIFIES - 保留 - MODIFY 保留 保留 - MODULE - 保留 保留 MONTH 非保留 保留 保留 MORE - 非保留 非保留 MOVE 非保留 - - MOVEMENT 非保留 - - MUMPS - 非保留 非保留 NAME 非保留 非保留 非保留 NAMES 非保留 保留 保留 NATIONAL 非保留(不能是函数或类型) 保留 保留 NATURAL 保留(可以是函数或类型) 保留 保留 NCHAR 非保留(不能是函数或类型) 保留 保留 NCLOB - 保留 - NEW - 保留 - NEXT 非保留 保留 保留 NLSSORT 保留 - - NO 非保留 保留 保留 NOCOMPRESS 非保留 - - NOCYCLE 非保留 - - NODE 非保留 - - NOLOGGING 非保留 - - NOLOGIN 非保留 - - NOMAXVALUE 非保留 - - NOMINVALUE 非保留 - - NONE 非保留(不能是函数或类型) 保留 - NOT 保留 保留 保留 NOTHING 非保留 - - NOTIFY 非保留 - - NOTNULL 保留(可以是函数或类型) - - NOWAIT 非保留 - - NULL 保留 保留 保留 NULLABLE - 非保留 非保留 NULLIF 非保留(不能是函数或类型) 非保留 保留 NULLS 非保留 - - NUMBER 非保留(不能是函数或类型) 非保留 非保留 NUMERIC 非保留(不能是函数或类型) 保留 保留 NUMSTR 非保留 - - NVARCHAR2 非保留(不能是函数或类型) - - NVL 非保留(不能是函数或类型) - - OBJECT 非保留 保留 - OCTET_LENGTH - 非保留 保留 OF 非保留 保留 保留 OFF 非保留 保留 - OFFSET 保留 - - OIDS 非保留 - - OLD - 保留 - ON 保留 保留 保留 ONLY 保留 保留 保留 OPEN - 保留 保留 OPERATION - 保留 - OPERATOR 非保留 - - OPTIMIZATION 非保留 - - OPTION 非保留 保留 保留 OPTIONS 非保留 非保留 - OR 保留 保留 保留 ORDER 保留 保留 保留 ORDINALITY - 保留 - OUT 非保留(不能是函数或类型) 保留 - OUTER 保留(可以是函数或类型) 保留 保留 OUTPUT - 保留 保留 OVER 非保留 - - OVERLAPS 保留(可以是函数或类型) 非保留 保留 OVERLAY 非保留(不能是函数或类型) 非保留 - OVERRIDING - 非保留 - OWNED 非保留 - - OWNER 非保留 - - PACKAGE 非保留 - - PAD - 保留 保留 PARAMETER - 保留 - PARAMETERS - 保留 - PARAMETER_MODE - 非保留 - PARAMETER_NAME - 非保留 - PARAMETER_ORDINAL_POSITION - 非保留 - PARAMETER_SPECIFIC_CATALOG - 非保留 - PARAMETER_SPECIFIC_NAME - 非保留 - PARAMETER_SPECIFIC_SCHEMA - 非保留 - PARSER 非保留 - - PARTIAL 非保留 保留 保留 PARTITION 非保留 - - PARTITIONS 非保留 - - PASCAL - 非保留 非保留 PASSING 非保留 - - PASSWORD 非保留 - - PATH - 保留 - PCTFREE 非保留 - - PER 非保留 - - PERM 非保留 - - PERCENT 非保留 - - PERFORMANCE 保留 - - PLACING 保留 - - PLAN 保留 - - PLANS 非保留 - - PLI - 非保留 非保留 POLICY 非保留 - - POOL 非保留 - - POSITION 非保留(不能是函数或类型) 非保留 保留 POSTFIX - 保留 - PRECEDING 非保留 - - PRECISION 非保留(不能是函数或类型) 保留 保留 PREFERRED 非保留 - - PREFIX 非保留 保留 - PREORDER - 保留 - PREPARE 非保留 保留 保留 PREPARED 非保留 - - PRESERVE 非保留 保留 保留 PRIMARY 保留 保留 保留 PRIOR 非保留 保留 保留 PRIVATE 非保留 - - PRIVILEGE 非保留 - - PRIVILEGES 非保留 保留 保留 PROCEDURAL 非保留 - - PROCEDURE 保留 保留 保留 PROFILE 非保留 - - PUBLIC - 保留 保留 QUERY 非保留 - - QUOTE 非保留 - - RANGE 非保留 - - RAW 非保留 - - READ 非保留 保留 保留 READS - 保留 - REAL 非保留(不能是函数或类型) 保留 保留 REASSIGN 非保留 - - REBUILD 非保留 - - RECHECK 非保留 - - RECURSIVE 非保留 保留 - REF 非保留 保留 - REFRESH 非保留 - - REFERENCES 保留 保留 保留 REFERENCING - 保留 - REINDEX 非保留 - - REJECT 保留 - - RELATIVE 非保留 保留 保留 RELEASE 非保留 - - RELOPTIONS 非保留 - - REMOTE 非保留 - - RENAME 非保留 - - REPEATABLE 非保留 非保留 非保留 REPLACE 非保留 - - REPLICA 非保留 - - RESET 非保留 - - RESIZE 非保留 - - RESOURCE 非保留 - - RESTART 非保留 - - RESTRICT 非保留 保留 保留 RESULT - 保留 - RETURN 非保留 保留 - RETURNED_LENGTH - 非保留 非保留 RETURNED_OCTET_LENGTH - 非保留 非保留 RETURNED_SQLSTATE - 非保留 非保留 RETURNING 保留 - - RETURNS 非保留 保留 - REUSE 非保留 - - REVOKE 非保留 保留 保留 RIGHT 保留(可以是函数或类型) 保留 保留 ROLE 非保留 保留 - ROLLBACK 非保留 保留 保留 ROLLUP - 保留 - ROUTINE - 保留 - ROUTINE_CATALOG - 非保留 - ROUTINE_NAME - 非保留 - ROUTINE_SCHEMA - 非保留 - ROW 非保留(不能是函数或类型) 保留 - ROWS 非保留 保留 保留 ROW_COUNT - 非保留 非保留 RULE 非保留 - - SAVEPOINT 非保留 保留 - SCALE - 非保留 非保留 SCHEMA 非保留 保留 保留 SCHEMA_NAME - 非保留 非保留 SCOPE - 保留 - SCROLL 非保留 保留 保留 SEARCH 非保留 保留 - SECOND 非保留 保留 保留 SECTION - 保留 保留 SECURITY 非保留 非保留 - SELECT 保留 保留 保留 SELF - 非保留 - SENSITIVE - 非保留 - SEPARATOR 非保留 - - SEQUENCE 非保留 保留 - SEQUENCES 非保留 - - SERIALIZABLE 非保留 非保留 非保留 SERVER 非保留 - - SERVER_NAME - 非保留 非保留 SESSION 非保留 保留 保留 SESSION_USER 保留 保留 保留 SET 非保留 保留 保留 SETOF 非保留(不能是函数或类型) - - SETS - 保留 - SHARE 非保留 - - SHIPPABLE 非保留 - - SHOW 非保留 - - SIMILAR 保留(可以是函数或类型) 非保留 - SIMPLE 非保留 非保留 - SIZE 非保留 保留 保留 SMALLDATETIME 非保留(不能是函数或类型) - - SMALLDATETIME_FORMAT 非保留 - - SMALLINT 非保留(不能是函数或类型) 保留 保留 SNAPSHOT 非保留 - - SOME 保留 保留 保留 SOURCE 非保留 非保留 - SPACE - 保留 保留 SPECIFIC - 保留 - SPECIFICTYPE - 保留 - SPECIFIC_NAME - 非保留 - SPILL 非保留 - - SPLIT 非保留 - - SQL - 保留 保留 SQLCODE - - 保留 SQLERROR - - 保留 SQLEXCEPTION - 保留 - SQLSTATE - 保留 保留 SQLWARNING - 保留 - STABLE 非保留 - - STANDALONE 非保留 - - START 非保留 保留 - STATE - 保留 - STATEMENT 非保留 保留 - STATEMENT_ID 非保留 - - STATIC - 保留 - STATISTICS 非保留 - - STDIN 非保留 - - STDOUT 非保留 - - STORAGE 非保留 - - STORE 非保留 - - STRICT 非保留 - - STRIP 非保留 - - STRUCTURE - 保留 - STYLE - 非保留 - SUBCLASS_ORIGIN - 非保留 非保留 SUBLIST - 非保留 - SUBSTRING 非保留(不能是函数或类型) 非保留 保留 SUM - 非保留 保留 SUPERUSER 非保留 - - SYMMETRIC 保留 非保留 - SYNONYM 非保留 - - SYS_REFCURSOR 非保留 - - SYSDATE 保留 - - SYSID 非保留 - - SYSTEM 非保留 非保留 - SYSTEM_USER - 保留 保留 TABLE 保留 保留 保留 TABLES 非保留 - - TABLE_NAME - 非保留 非保留 TEMP 非保留 - - TEMPLATE 非保留 - - TEMPORARY 非保留 保留 保留 TERMINATE - 保留 - TEXT 非保留 - - THAN 非保留 保留 - THEN 保留 保留 保留 TIME 非保留(不能是函数或类型) 保留 保留 TIME_FORMAT 非保留 - - TIMESTAMP 非保留(不能是函数或类型) 保留 保留 TIMESTAMPADD 非保留(不能是函数或类型) - - TIMESTAMPDIFF 非保留(不能是函数或类型) - - TIMESTAMP_FORMAT 非保留 - - TIMEZONE_HOUR - 保留 保留 TIMEZONE_MINUTE - 保留 保留 TINYINT 非保留(不能是函数或类型) - - TO 保留 保留 保留 TRAILING 保留 保留 保留 TRANSACTION 非保留 保留 保留 TRANSACTIONS_COMMITTED - 非保留 - TRANSACTIONS_ROLLED_BACK - 非保留 - TRANSACTION_ACTIVE - 非保留 - TRANSFORM - 非保留 - TRANSFORMS - 非保留 - TRANSLATE - 非保留 保留 TRANSLATION - 保留 保留 TREAT 非保留(不能是函数或类型) 保留 - TRIGGER 非保留 保留 - TRIGGER_CATALOG - 非保留 - TRIGGER_NAME - 非保留 - TRIGGER_SCHEMA - 非保留 - TRIM 非保留(不能是函数或类型) 非保留 保留 TRUE 保留 保留 保留 TRUNCATE 非保留 - - TRUSTED 非保留 - - TRY_CAST 非保留 - - TSTAG 保留,该字段仅在IoT数仓中使用 - - TSTIME 保留,该字段仅在IoT数仓中使用 - - TSFIELD 保留,该字段仅在IoT数仓中使用 - - TYPE 非保留 非保留 非保留 TYPES 非保留 - - UESCAPE - - - UNBOUNDED 非保留 - - UNCOMMITTED 非保留 非保留 非保留 UNDER - 保留 - UNENCRYPTED 非保留 - - UNION 保留 保留 保留 UNIQUE 保留 保留 保留 UNKNOWN 非保留 保留 保留 UNLIMITED 非保留 - - UNLISTEN 非保留 - - UNLOCK 非保留 - - UNLOGGED 非保留 - - UNNAMED - 非保留 非保留 UNNEST - 保留 - UNTIL 非保留 - - UNUSABLE 非保留 - - UPDATE 非保留 保留 保留 UPPER - 非保留 保留 USAGE - 保留 保留 USER 保留 保留 保留 USER_DEFINED_TYPE_CATALOG - 非保留 - USER_DEFINED_TYPE_NAME - 非保留 - USER_DEFINED_TYPE_SCHEMA - 非保留 - USING 保留 保留 保留 VACUUM 非保留 - - VALID 非保留 - - VALIDATE 非保留 - - VALIDATION 非保留 - - VALIDATOR 非保留 - - VALUE 非保留 保留 保留 VALUES 非保留(不能是函数或类型) 保留 保留 VARCHAR 非保留(不能是函数或类型) 保留 保留 VARCHAR2 非保留(不能是函数或类型) - - VARIABLE - 保留 - VARIADIC 保留 - - VARYING 非保留 保留 保留 VCGROUP 非保留 - - VERBOSE 保留(可以是函数或类型) - - VERIFY 非保留 - - VERSION 非保留 - - VIEW 非保留 保留 保留 VOLATILE 非保留 - - WHEN 保留 保留 保留 WHENEVER - 保留 保留 WHERE 保留 保留 保留 WHITESPACE 非保留 - - WINDOW 保留 - - WITH 保留 保留 保留 WITHIN 非保留 - - WITHOUT 非保留 保留 - WORK 非保留 保留 保留 WORKLOAD 非保留 - - WRAPPER 非保留 - - WRITE 非保留 保留 保留 XML 非保留 - - XMLATTRIBUTES 非保留(不能是函数或类型) - - XMLCONCAT 非保留(不能是函数或类型) - - XMLELEMENT 非保留(不能是函数或类型) - - XMLEXISTS 非保留(不能是函数或类型) - - XMLFOREST 非保留(不能是函数或类型) - - XMLNAMESPACES 非保留(不能是函数或类型) - - XMLPARSE 非保留(不能是函数或类型) - - XMLPI 非保留(不能是函数或类型) - - XMLROOT 非保留(不能是函数或类型) - - XMLSERIALIZE 非保留(不能是函数或类型) - - XMLTABLE 非保留(不能是函数或类型) - - YEAR 非保留 保留 保留 YES 非保留 - - ZONE 非保留 保留 保留
  • 客户端差异 GaussDB(DWS) gsql相较于PostgreSQL psql做了如下安全加固变更: 取消通过元命令\password设置用户密码。 新增元命令\i+、 \ir+、\include_relative+和输入输出参数-k,以支持给导入导出的文件加密。 取消打印命令行历史到文件的元命令\s。 涉及敏感操作SQL历史不再记录,如含有密码操作。即用户通过翻页/上下键查阅SQL历史将不能查到对应的记录。 支持连接后在屏幕上给出用户密码过期提示以及版本信息。 gsql在psql基础上还增加了如下功能: 新增输出格式参数-r。支持用户输入命令时的tab补齐和方向键调整焦点。 新增并行操作元命令\parallel,以提升执行性能。 新增\set RETRY支持语句出错重试。 新增PLSQL默认结束符功能,将“/”作为PLSQL语句(create or replace function/procedure)的默认结束符,增加便利性。 libpq:
  • SQL差异 表1 GaussDB(DWS)不支持的PostgreSQL数据库语言 分类 GaussDB(DWS)不支持 说明 数据类型 几何类型line GaussDB(DWS)所支持的数据类型参见数据类型。 pg_node_tree 函数 枚举支持函数: enum_first(anyenum) enum_last(anyenum) enum_range(anyenum) enum_range(anyenum, anyenum) GaussDB(DWS)所支持的函数参见函数和操作符。 访问权限查询函数: has_sequence_privilege(user, sequence, privilege) has_sequence_privilege(sequence, privilege) 系统目录信息函数: pg_get_triggerdef(trigger_oid) pg_get_triggerdef(trigger_oid, pretty_bool) 几何类型转换函数: line(point, point) pg_node_tree函数 SQL语法 CREATE TABLE子句: INHERITS ( parent_table [, ... ] ) 继承表。 CREATE TABLE的列约束: REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] 列约束中用REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ] [ ON DELETE action ] [ ON UPDATE action ] 为表创建外键约束。 CREATE TABLE的表约束: EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] ) 表约束中用EXCLUDE [ USING index_method ] ( exclude_element WITH operator [, ... ] )为表创建排除约束。 CREATE/ALTER/DROP EXTENSION 扩展的加载、修改和删除。 CREATE/ALTER/DROP AGGREGATE 聚集函数的定义、修改和删除。 CREATE/ALTER/DROP OPERATOR 操作符(OPERATOR)的创建、修改和删除。 CREATE/ALTER/DROP OPERATOR CLASS 操作符类(OPERATOR CLASS)的创建、修改和删除。 CREATE/ALTER/DROP OPERATOR FAMILY 操作符族(OPERATOR FAMILY)的创建、修改和删除。 CREATE/ALTER/DROP TEXT SEARCH PARSER 文本检索解析器(TEXT SEARCH PARSER)的创建、修改和删除。 CREATE/ALTER/DROP TEXT SEARCH TEMPLATE 文本检索模板(TEXT SEARCH TEMPLATE)的创建、修改和删除。 CREATE/ALTER/DROP COLLATION 排序规则(COLLATION)的创建、修改和删除 CREATE/ALTER/DROP CONVERSION 字符集编码转换(CONVERSION)的定义、修改和删除。 CREATE/ALTER/DROP RULE 规则(RULE)的创建、修改和删除。 CREATE/ALTER/DROP LANGUAGE 过程语言(LANGUAGE)的注册、修改和删除。 CREATE/ALTER/DROP DOMAIN 域(DOMAIN)的创建、修改和删除。 CREATE/DROP CAST 类型转换(CAST)的定义和删除。 CREATE/ALTER/DROP USER MAPPING 用户映射(USER MAPPING)的定义、修改和删除。 SECURITY LABEL 定义或更改对象的安全标签。 NOTIFY 生成一个通知。 LISTEN 监听一个通知。 UNLISTEN 停止监听通知信息。 LOAD 加载或重新加载一个共享库文件。 DISCARD 释放一个数据库的会话资源。(8.2.0及以上集群版本已支持DISCARD。) MOVE BACKWARD 反向移动游标。 COPY的COPY FROM FILE和COPY TO FILE 为了权限的隔离,GaussDB(DWS)禁用COPY FROM FILE和COPY TO FILE。 其他 自定义C函数 DWS支持的用户自定义函数参见用户自定义函数。
  • pv_compute_pool_workload() 描述:返回计算子集群当前的负载状态。 返回类型:void 示例: SELECT * from pv_compute_pool_workload(); nodename | rpinuse | maxrp | nodestate -----------+---------+-------+----------- datanode1 | 0 | 1000 | normal datanode2 | 0 | 1000 | normal (2 rows)
  • 内置函数 HLL(HyperLogLog)有一系列内置函数用于内部对数据进行处理,一般情况下不建议用户使用。 表1 内置函数 函数名称 功能描述 hll_in 以string格式接收hll数据。 hll_out 以string格式发送hll数据。 hll_recv 以bytea格式接收hll数据。 hll_send 以bytea格式发送hll数据。 hll_trans_in 以string格式接收hll_trans_type数据。 hll_trans_out 以string格式发送hll_trans_type数据。 hll_trans_recv 以bytea形式接收hll_trans_type数据。 hll_trans_send 以bytea形式发送hll_trans_type数据。 hll_typmod_in 接收typmod类型数据。 hll_typmod_out 发送typmod类型数据。 hll_hashval_in 接收hll_hashval类型数据。 hll_hashval_out 发送hll_hashval类型数据。 hll_add_trans0 类似于hll_add所提供的功能, 通常在分布式聚合运算的第一阶段DN上使用。 hll_union_trans 类似hll_union所提供的功能,在分布式聚合运算的第一阶段DN上使用。 hll_union_collect 类似于hll_union所提供的功能,在分布式聚合运算第二阶段CN上使用,汇总各个DN上的结果。 hll_pack 在分布式聚合运算第三阶段CN上使用,把自定义hll_trans_type类型最后转换成hll类型。 hll 用于hll类型转换成hll类型,根据输入参数会设定指定参数。 hll_hashval 用于bigint类型转换成hll_hashval类型。 hll_hashval_int4 用于int4类型转换成hll_hashval类型。 父主题: HLL函数和操作符
  • 什么是SQL SQL是用于访问和处理数据库的标准计算机语言。 SQL提供了各种任务的语句,包括: 查询数据。 在表中插入,更新和删除行。 创建,替换,更改和删除对象。 控制对数据库及其对象的访问。 保证数据库的一致性和完整性。 SQL语言由用于处理数据库和数据库对象的命令和函数组成。该语言还会强制实施有关数据类型、表达式和文本使用的规则。因此在SQL参考章节,除了SQL语法参考外,还会看到有关数据类型、表达式、函数和操作符等信息。
  • SQL发展简史 SQL发展简史如下: 1986年,ANSI X3.135-1986,ISO/IEC 9075:1986,SQL-86 1989年,ANSI X3.135-1989,ISO/IEC 9075:1989,SQL-89 1992年,ANSI X3.135-1992,ISO/IEC 9075:1992,SQL-92(SQL2) 1999年,ISO/IEC 9075:1999,SQL:1999(SQL3) 2003年,ISO/IEC 9075:2003,SQL:2003(SQL4) 2011年,ISO/IEC 9075:200N,SQL:2011(SQL5)
  • SQL语法文本格式约定 为了方便对语法使用的理解,在文档中对SQL语法文本按如下格式进行表述。 格式 意义 大写 语法关键字(语句中保持不变、必须照输的部分)采用大写表示。 小写 参数(语句中必须由实际值进行替代的部分)采用小写表示。 [ ] 可选语法项。表示用“[ ]”括起来的部分是可选的。 { } 必选语法项。 ... 表示前面的元素可重复出现。 [ x | y | ... ] 表示从两个或多个选项中选取一个或者不选。 { x | y | ... } 表示从两个或多个选项中选取一个。 [x | y | ... ] [ ... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用空格分隔。 [ x | y | ... ] [ ,... ] 表示可选多个参数或者不选,如果选择多个参数,则参数之间用逗号分隔。 { x | y | ... } [ ... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间以空格分隔。 { x | y | ... } [ ,... ] 表示可选多个参数,至少选一个,如果选择多个参数,则参数之间用逗号分隔。
  • inet inet类型在一个数据区域内保存主机的IPv4或IPv6地址,以及一个可选子网。主机地址中网络地址的位数表示子网(“子网掩码”)。如果子网掩码是32并且地址是IPv4,则这个值不表示任何子网,只表示一台主机。在IPv6里,地址长度是128位,因此128位表示唯一的主机地址。 该类型的输入格式是address/y,address表示IPv4或者IPv6地址,y是子网掩码的二进制位数。如果省略/y,则子网掩码对IPv4是32,对IPv6是128,所以该值表示只有一台主机。如果该值表示只有一台主机,/y将不会显示。 inet和cidr类型之间的基本区别是inet接受子网掩码,而cidr不接受。
  • cidr cidr(无类别域间路由,Classless Inter-Domain Routing)类型,保存一个IPv4或IPv6网络地址。声明网络格式为address/y,address表示IPv4或者IPv6地址,y表示子网掩码的二进制位数。如果省略y,则掩码部分使用已有类别的网络编号系统进行计算,但要求输入的数据已经包括了确定掩码所需的所有字节。 示例一:CIDR格式换算为IP地址网段 例如,10.0.0.0/8换算为32位二进制地址:00001010.00000000.00000000.00000000。其中/8表示8位网络ID,即32位二进制地址中前8位是固定不变的,对应网段为:00001010.00000000.00000000.00000000~00001010.11111111.11111111.11111111。则换算为十进制后,10.0.0.0/8表示:子网掩码为255.0.0.0,对应网段为10.0.0.0~10.255.255.255。 示例二:IP地址网段换算为CIDR格式 例如,192.168.0.0~192.168.31.255,后两段IP换算为二进制地址:00000000.00000000~00011111.11111111,可以得出前19位(8*2+3)是固定不变的,则换算为CIDR格式后,表示为:192.168.0.0/19。 表2 cidr类型输入举例 cidr输入 cidr输出 abbrev(cidr) 192.168.100.128/25 192.168.100.128/25 192.168.100.128/25 192.168/24 192.168.0.0/24 192.168.0/24 192.168/25 192.168.0.0/25 192.168.0.0/25 192.168.1 192.168.1.0/24 192.168.1/24 192.168 192.168.0.0/24 192.168.0/24 10.1.2 10.1.2.0/24 10.1.2/24 10.1 10.1.0.0/16 10.1/16 10 10.0.0.0/8 10/8 10.1.2.3/32 10.1.2.3/32 10.1.2.3/32 2001:4f8:3:ba::/64 2001:4f8:3:ba::/64 2001:4f8:3:ba::/64 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 2001:4f8:3:ba:2e0:81ff:fe22:d1f1/128 2001:4f8:3:ba:2e0:81ff:fe22:d1f1
  • macaddr macaddr类型存储MAC地址,也就是以太网卡硬件地址(尽管MAC地址还用于其它用途)。可以接受下列格式: '08:00:2b:01:02:03' '08-00-2b-01-02-03' '08002b:010203' '08002b-010203' '0800.2b01.0203' '08002b010203' 这些示例都表示同一个地址。对于数据位a到f,大小写都行。输出时都是以第一种形式展示。
  • pg_relation_filenode(relation regclass) 描述:指定关系的文件节点数。 返回值类型:oid 备注:pg_relation_filenode接收一个表、索引、序列或压缩表的OID或者名字,并且返回当前分配给它的“filenode”数。文件节点是关系使用的文件名字的基本组件。对大多数表来说,结果和pg_class.relfilenode相同,但对确定的系统目录来说, relfilenode为0而且这个函数必须用来获取正确的值。如果传递一个没有存储的关系,比如一个视图,那么这个函数返回NULL。
  • 全文检索概述 文本搜索操作符在数据库中已存在多年。GaussDB(DWS)为文本数据类型提供~、~*、LIKE和ILIKE操作符,但这些操作符缺乏现代信息系统所要求的许多必要属性。不过这一问题可以通过使用索引及词典进行解决。 文本检索缺乏信息系统所要求的必要属性: 没有语义支持,即使是英语。 由于要识别派生词并不是那么容易,因此正则表达式也不能满足要求。如,satisfies和satisfy,当使用正则表达式寻找satisfy时,并不会查询到包含satisfies的文档。用户可以使用OR搜索多种派生形式,但过程非常繁琐。并且有些词会有上千的派生词,因此容易出错。 没有对搜索结果的分类(排序)。当搜索出成千的文档时,查找效率很低。 由于没有索引的支持,每一次的搜索需要遍历所有的文档,整体搜索比较缓慢。 使用全文索引可以对文档进行预处理,并且可以使后续的搜索更快速。预处理过程包括: 将文档解析成token。 为每个文档标记不同类别的token是非常有必要的,例如:数字、文字、复合词、电子邮件地址,这样就可以做不同的处理。原则上token的类别依赖于具体的应用,但对于大多数的应用来说,可以使用一组预定义的token类。 将token转换为词素。 词素像token一样是一个字符串,但它已经标准化处理,这样同一个词的不同形式是一样的。例如,标准化通常包括:将大写字母折成小写字母、删除后缀(如英语中的s或者es)。这将允许通过搜索找到同一个词的不同形式,不需要繁琐地输入所有可能的变形样式。同时,这一步通常会删除停用词。这些停用词通常因为太常见而对搜索无用。(总之,token是文档文本的原片段,而词素被认为是有用的索引和搜索词。)GaussDB(DWS)使用词典执行这一步,且提供了各种标准的词典。 保存搜索优化后的预处理文档。 比如,每个文档可以呈现为标准化词素的有序组合。伴随词素,通常还需要存储词素位置信息以用于邻近排序。因此文档包含的查询词越密集其排序越高。 词典能够对token如何标准化做到细粒度控制。使用合适的词典,可以定义不被索引的停用词。 数据类型tsvector用于存储预处理文档,tsquery用于存储查询条件,详细内容可参见文本搜索类型。为数据类型tsvector提供的函数和操作符可参见文本检索函数和操作符,其中最重要的是匹配运算符@@,参见基本文本匹配。 父主题: 介绍
  • 定义分区表 分区表是一种逻辑表,数据是由普通表存储的,主要用于提升查询性能。所涉及的SQL语句,请参考下表。 表4 分区表定义相关SQL 功能 相关SQL 创建分区表 CREATE TABLE PARTITION 修改分区 ALTER TABLE PARTITION 修改分区表属性 ALTER TABLE PARTITION 删除分区 ALTER TABLE PARTITION 删除分区表 DROP TABLE
  • 定义行级访问控制 行级访问控制策略控制数据库表中行级数据可见性。不同用户执行相同的SQL查询操作,读取到的结果不同。所涉及的SQL语句,请参考下表。 表9 行级访问控制定义相关SQL 功能 相关SQL 创建行访问控制策略 CREATE ROW LEVEL SECURITY POLICY 修改已存在的行访问控制策略 ALTER ROW LEVEL SECURITY POLICY 删除表上某个行访问控制策略 DROP ROW LEVEL SECURITY POLICY
  • 定义脱敏策略 数据脱敏策略是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。用户可以在指定表对象创建脱敏策略,并限定策略生效范围,也可以新增、修改、删除脱敏列信息。所涉及的SQL语句,请参考下表。 表8 脱敏策略定义相关SQL 功能 相关SQL 对表创建数据脱敏策略 CREATE REDACTION POLICY 修改应用在指定表的脱敏策略 ALTER REDACTION POLICY 删除应用在指定表的脱敏策略 DROP REDACTION POLICY
  • 定义文本搜索配置 文本搜索配置指定了文本搜索解析器,该文本搜索解析器可以将字符串划分为标记,外加一些词典(可被用来决定哪些标记是搜索感兴趣的)。所涉及的SQL语句,请参考下表。 表17 文本搜索配置相关SQL 功能 相关SQL 创建文本搜索配置 CREATE TEXT SEARCH CONFIGURATION 修改文本搜索配置 ALTER TEXT SEARCH CONFIGURATION 删除文本搜索配置 DROP TEXT SEARCH CONFIGURATION
  • 定义全文检索词典 词典是在全文检索时识别特定词并进行处理。词典的创建依赖于预定义模板(在系统表PG_TS_TEMPLATE中定义),支持创建五种类型的词典,分别是Simple、Ispell、Synonym、Thesaurus、以及Snowball,每种类型的词典可以完成不同的任务。所涉及的SQL语句,请参考下表。 表18 全文检索词典相关SQL 功能 相关SQL 创建全文检索词典 CREATE TEXT SEARCH DICTIONARY 修改全文检索词典 ALTER TEXT SEARCH DICTIONARY 删除全文检索词典 DROP TEXT SEARCH DICTIONARY
  • get_all_col_file_vacuum_info(force_get_rewritten_file_num bool) 描述:查询全库所有列存表的文件vacuum相关信息。该函数仅8.2.0.100及以上集群版本支持。 参数:是否强制获取准确的可清理文件数(必选,true或false) 返回值类型:record 返回值: node_name:DN节点名。 schema_name:模式名。 table_name:表名。 total_file_num:总CU文件数。 rewritable_file_num:可重写,但还未重写的文件数。 rewritten_file_num:已重写未清理文件数,此值来源于内存态ClearCache,若由于重启等原因ClearCache丢失,可通过设置force_get_rewritten_file_num=true,消耗额外的时间,强制获取准确的可清理文件数。 empty_file_num:已清理文件数。 示例: 1 2 3 4 5 6 7 8 9 SELECT * FROM get_all_col_file_vacuum_info(false); node_name | schema_name | table_name | total_file_num | rewritable_file_num | rewritten_file_num | empty_file_num -----------+-------------+----------------------+----------------+---------------------+--------------------+---------------- datanode1 | public | udi_57373 | 2 | 0 | 0 | 1 datanode1 | public | udi_57374 | 2 | 0 | 0 | 1 datanode2 | public | udi_57373 | 2 | 0 | 0 | 1 datanode2 | public | udi_57374 | 2 | 0 | 0 | 1 datanode3 | public | udi_57373 | 2 | 0 | 0 | 1 datanode3 | public | udi_57374 | 2 | 0 | 0 | 1
  • Snowball词典 Snowball词典模板支持词干分析词典,基于Martin Porter的Snowball项目,内置有许多语言的词干分析算法。GaussDB(DWS)中预定义有多种语言的Snowball词典,可通过系统表PG_TS_DICT查看预定义的词干分析词典以及支持的语言词干分析算法。 无论是否可以简化,Snowball词典将标示所有输入为已识别,因此它应当被放置在词典列表的最后。把Snowball词典放在任何其他词典前面会导致后继词典失效,因为输入token不会通过Snowball词典进入到下一个词典。 关于Snowball词典的语法,请参见CREATE TEXT SEARCH DICTIONARY。 父主题: 词典
  • pg_advisory_lock(key bigint) 描述:获取会话级别的排它咨询锁。 返回值类型:void 备注:pg_advisory_lock锁定应用程序定义的资源,该资源可以用一个64位或两个不重叠的32位键值标识。如果已经有另外的会话锁定了该资源,则该函数将阻塞到该资源可用为止。这个锁是排它的。多个锁定请求将会被压入栈中,因此,如果同一个资源被锁定了三次,它必须被解锁三次以将资源释放给其他会话使用。
  • 处理tsvector GaussDB(DWS)提供了用来操作tsvector类型的函数和操作符。 tsvector || tsvector tsvector连接操作符返回一个新的tsvector类型,它综合了两个tsvector中词素和位置信息,并保留词素的位置信息和权重标签。右侧的tsvector的起始位置位于左侧tsvector的最后位置,因此,新生成的tsvector几乎等同于将两个原始文档字串连接后进行to_tsvector操作。(这个等价是不准确的,因为任何从左边tsvector中删除的停用词都不会影响结果,但是,在使用文本连接时,则会影响词素在右侧tsvector中的位置。) 相较于对文本进行连接后再执行to_tsvector操作,使用tsvector类型进行连接操作的优势在于,可以对文档的不同部分使用不同配置进行解析。因为setweight函数会对给定的tsvector中的语素进行统一设置,如果想要对文档的不同部分设置不同的权重,需要在连接之前对文本进行解析和权重设置。 setweight(vector tsvector, weight "char") returns tsvector setweight返回一个输入tsvector的副本,其中每一个位置都使用给定的权重做了标记。权值可以为A、B、C或D(D是tsvector副本的默认权重,并且不在输出中呈现)。当对tsvector进行连接操作时,这些权重标签将会被保留,文档不同部分以不同的权重进行排序。 权重标签作用于位置,而不是词素。如果传入的tsvector已经被剥离了位置信息,那么setweight函数将什么都不做。 length(vector tsvector) returns integer 返回vector中的词素的数量。 strip(vector tsvector) returns tsvector 返回一个tsvector类型,其中包含输入的tsvector的同义词,但不包含任何位置和权重信息。虽然在相关性排序中,这里返回的tsvector要比未拆分的tsvector的作用小很多,但它通常都比未拆分的tsvector小的多。 父主题: 附加功能
  • 多边形 多边形由一系列点代表(多边形的顶点)。多边形可以认为与闭合路径一样,但是存储方式不一样而且有自己的一套支持函数。 用下面的语法描述polygon的数值: ( ( x1 , y1 ) , ... , ( xn , yn ) ) ( x1 , y1 ) , ... , ( xn , yn ) ( x1 , y1 , ... , xn , yn ) x1 , y1 , ... , xn , yn 点表示多边形的端点。 多边形输出使用第一种语法。
  • 路径 路径由一系列连接的点组成。路径可能是开放的,也就是认为列表中第一个点和最后一个点没有连接,也可能是闭合的,这时认为第一个和最后一个点连接起来。 用下面的语法描述path的数值: [ ( x1 , y1 ) , ... , ( xn , yn ) ] ( ( x1 , y1 ) , ... , ( xn , yn ) ) ( x1 , y1 ) , ... , ( xn , yn ) ( x1 , y1 , ... , xn , yn ) x1 , y1 , ... , xn , yn 点表示组成路径的线段的端点。方括弧([])表明一个开放的路径,圆括弧(())表明一个闭合的路径。当最外层的括号被省略,如在第三至第五语法,会假定一个封闭的路径。 路径的输出使用第一种或第二种语法输出。
  • 功能描述 为当前事务做两阶段提交的准备。 在命令之后,事务就不再和当前会话关联了;它的状态完全保存在磁盘上,它被提交成功的可能性非常高,即使是在请求提交之前数据库发生了崩溃也如此。 一旦准备好了,一个事务就可以在稍后用COMMIT PREPARED或 ROLLBACK PREPARED命令分别进行提交或者回滚。这些命令可以从任何会话中发出,而不光是最初执行事务的那个会话。 从发出命令的会话的角度来看,PREPARE TRANSACTION不同于ROLLBACK:在执行它之后,就不再有活跃的当前事务了,并且预备事务的效果无法见到 (在事务提交的时候其效果会再次可见)。 如果PREPARE TRANSACTION因为某些原因失败,那么它就会变成一个ROLLBACK,当前事务被取消。
  • txid_visible_in_snapshot(bigint, txid_snapshot) 描述:在快照中事务ID是否可见(不使用子事务ID)。 返回类型:boolean 内部事务ID类型(xid)是32位,每40亿事务一次循环。这些函数使用的数据类型txid_snapshot,存储在特定时刻事务ID可见性的信息。其组件描述在表1。 表1 快照组件 名字 描述 xmin 最早的事务ID(txid)仍然活动。所有较早事务将是已经提交可见的,或者是直接回滚。 xmax 作为尚未分配的txid。所有大于或等于此txids的都是尚未开始的快照时间,因此不可见。 xip_list 当前快照中活动的txids。这个列表只包含在xmin和xmax之间活动的txids;有可能活动的txids高于xmax。 介于大于等于xmin、小于xmax,并且不在这个列表中的txid,在这个时间快照已经完成的,因此按照提交状态查看他是可见还是回滚。这个列表不包含子事务的txids。 txid_snapshot的文本表示为:xmin:xmax:xip_list。 示例:10:20:10,14,15意思为:xmin=10, xmax=20, xip_list=10, 14, 15。
  • 数据加载和卸载 【建议】在INSERT语句中显式给出插入的字段列表。例如: 1 INSERT INTO task(name,id,comment) VALUES ('task1','100','第100个任务'); 【建议】在批量数据入库之后,或者数据增量达到一定阈值后,建议对表进行ANALYZE操作,防止统计信息不准确而导致的执行计划劣化。 【建议】如果要清理表中的所有数据,建议使用truncate table方式,不要使用delete table方式。delete table方式删除性能差,且不会释放那些已经删除了的数据占用的磁盘空间。
  • DDL 【建议】在GaussDB(DWS)中,建议DDL(建表、comments等)操作统一执行,在批处理作业中尽量避免DDL操作。避免大量并发事务对性能的影响。 【建议】在非日志表(unlogged table)使用完后,立即执行数据清理(TRUNCATE)操作。因为在异常场景下,GaussDB(DWS)不保证非日志表(unlogged table)数据的安全性。 【建议】临时表和非日志表的存储方式建议和基表相同。当基表为行存(列存)表时,临时表和非日志表也推荐创建为行存(列存)表,可以避免行列混合关联带来的高计算代价。 【建议】索引字段的总长度不超过50字节。否则,索引大小会膨胀比较严重,带来较大的存储开销,同时索引性能也会下降。 【建议】除非已经明确对象间的依赖关系,否则不要使用DROP…CASCADE方式删除对象,以免误删。
  • 使用函数加解密 GaussDB(DWS)支持使用以下函数对字符串进行加解密。 gs_encrypt(encryptstr, keystr, cryptotype, cryptomode, hashmethod) 描述:采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法,以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。支持的cryptotype:aes128, aes192, aes256, sm4。支持的cryptomode:cbc。支持的hashmethod:sha256, sha384, sha512, sm3。支持的加密数据类型:目前数据库支持的数值类型,字符类型,二进制类型中的RAW,日期/时间类型中的DATE、TIMESTAMP、SMALLDATETIME。keystr的长度范围与加密算法相关,为1~KeyLen字节。当cryptotype为aes128和sm4时,KeyLen为16,aes192时KeyLen为24,aes256时KeyLen为32。 返回值类型:text 返回值长度:至少为 4*[(maclen + 56)/3] 字节,不超过 4*[(Len + maclen + 56)/3] 字节,其中Len为加密前数据长度(单位为字节),maclen为HMAC值的长度,当hashmethod为sha256和sm3时maclen为32,sha384时maclen为48,sha512时maclen为64。即当hashmethod为sha256和sm3时,返回值长度至少为120字节,不超过4*[(Len + 88)/3] 字节;当hashmethod为sha384时,返回值长度至少为140字节,不超过4*[(Len + 104)/3] 字节;当hashmethod为sha512时,返回值长度至少为160字节,不超过4*[(Len + 120)/3] 字节; 示例: 1 2 3 4 5 SELECT gs_encrypt('GaussDB(DWS)', '1234', 'aes128', 'cbc', 'sha256'); gs_encrypt -------------------------------------------------------------------------------------------------------------------------- AAAAAAAAAACcFjDcCSbop7D87sOa2nxTFrkE9RJQGK34ypgrOPsFJIqggI8tl+eMDcQYT3po98wPCC7VBfhv7mdBy7IVnzdrp0rdMrD6/zTl8w0v9/s2OA== (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。 在同一张数据表中,加密函数ge_encrypt与gs_encrypt_aes128不要混合使用。 gs_decrypt(decryptstr, keystr,cryptotype, cryptomode, hashmethod) 描述:采用cryptotype和cryptomode组成的加密算法以及hashmethod指定的HMAC算法,以keystr为密钥对decryptstr字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。 返回值类型:text 示例: 1 2 3 4 5 SELECT gs_decrypt('AAAAAAAAAACcFjDcCSbop7D87sOa2nxTFrkE9RJQGK34ypgrOPsFJIqggI8tl+eMDcQYT3po98wPCC7VBfhv7mdBy7IVnzdrp0rdMrD6/zTl8w0v9/s2OA==', '1234', 'aes128', 'cbc', 'sha256'); gs_decrypt -------------- GaussDB(DWS) (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。 此函数需要结合gs_encrypt加密函数共同使用,且加密算法和HMAC算法要保证一致。 gs_encrypt_aes128(encryptstr,keystr) 描述:以keystr为密钥对encryptstr字符串进行加密,返回加密后的字符串。keystr的长度范围为1~16字节。支持的加密数据类型:目前数据库支持的数值类型,字符类型,二进制类型中的RAW,日期/时间类型中的DATE、TIMESTAMP、SMALLDATETIME。 返回值类型:text 返回值长度:至少为92字节,不超过 4*[(Len+68)/3] 字节,其中Len为加密前数据长度(单位为字节)。 示例: 1 2 3 4 5 SELECT gs_encrypt_aes128('DWS','1234'); gs_encrypt_aes128 ---------------------------------------------------------------------------------------------- MGFX/AvA69PvS6wgZMtEAwNdjf/lMM6b7pIY5miAAkS0cf3m5mKl8iNe1BKDVqTvgZEEoMTycVVE+tHF69uHYznXyhs= (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。 在同一张数据表中,加密函数gs_encrypt_aes128与ge_encrypt不要混合使用。 gs_decrypt_aes128(decryptstr,keystr) 描述:以keystr为密钥对decryptstr字符串进行解密,返回解密后的字符串。解密使用的keystr必须保证与加密时使用的keystr一致才能正常解密。keystr不得为空。 返回值类型:text 示例: 1 2 3 4 5 SELECT gs_decrypt_aes128('MGFX/AvA69PvS6wgZMtEAwNdjf/lMM6b7pIY5miAAkS0cf3m5mKl8iNe1BKDVqTvgZEEoMTycVVE+tHF69uHYznXyhs=','1234'); gs_decrypt_aes128 ------------------- DWS (1 row) 由于该函数的执行过程需要传入解密口令,为了安全起见,gsql工具不会将该函数记录入执行历史。即无法在gsql里通过上下翻页功能找到该函数的执行历史。 此函数需要结合gs_encrypt_aes128加密函数共同使用。 gs_hash(hashstr, hashmethod) 描述:以hashmethod算法对hashstr字符串进行信息摘要,返回信息摘要字符串。支持的hashmethod:sha256, sha384, sha512, sm3。 返回值类型:text 返回值长度:sha256和sm3返回64字节,sha384返回96字节,sha512返回128字节。 示例: 1 2 3 4 5 SELECT gs_hash('GaussDB(DWS)', 'sha256'); gs_hash -------------------------------------------------------------------------------------------------- e59069daa6541ae20af7c747662702c731b26b8abd7a788f4d15611aa0db608efdbb5587ba90789a983f85dd51766609 (1 row) md5(string) 描述:将string使用MD5加密,并以16进制数作为返回值。 MD5的安全性较低,不建议使用。 返回值类型:text 示例: 1 2 3 4 5 SELECT md5('ABC'); md5 ---------------------------------- 902fbdd2b1df0c4f70b4a5d23525e932 (1 row) 父主题: 敏感数据管理
  • 执行预编译SQL语句 预编译语句是只编译和优化一次,然后可以通过设置不同的参数值多次使用。由于已经预先编译好,后续使用会减少执行时间。因此,如果多次执行一条语句,请选择使用预编译语句。可以按以下步骤执行: 调用Connection的prepareStatement方法创建预编译语句对象。 1 PreparedStatement pstmt = con.prepareStatement("UPDATE customer_t1 SET c_customer_name = ? WHERE c_customer_sk = 1"); 调用PreparedStatement的setShort设置参数。 1 pstmt.setShort(1, (short)2); 调用PreparedStatement的executeUpdate方法执行预编译SQL语句。 1 int rowcount = pstmt.executeUpdate(); 调用PreparedStatement的close方法关闭预编译语句对象。 1 pstmt.close();
共100000条