閱讀118 返回首頁    go windows


OceanBase SQL簡介__SQL語法參考_雲數據庫 OceanBase-阿裏雲

語言結構

OceanBase SQL語句中涉及以下元素:

  • 字符串和數字等文字值;
  • 識別符,例如表名和列名;
  • 用戶和係統變量;
  • 注釋和保留字等。

文字值

文字值包括字符串、數值、日期、時間、十六進製、布爾值和NULL。

  • 字符串使用單引號(')或雙引號()引起來的字符序列。如果OceanBase SQL模式啟用了ANSI_QUOTES,表示隻用單引號引用字符串,用雙引號引用的字符串被解釋為一個識別符。

    在字符串中,某些序列具有特殊含義。這些序列均用反斜線(‘’)開始,即所謂的轉義字符。轉義字符對大小寫敏感。

    OceanBase識別的轉義字符如下表所示。

轉義字符 含義
b 退格符
f 換頁符
n 換行符
r 回車符
t tab字符
\ 反斜線字符
單引號
雙引號
_ _字符
% %字符
空字符(NULL)
Z ASCII 26(控製(Ctrl)-Z)
  • 數值可以分為精確數值(整數和定點數值)和浮點數值。數值可以使用.作為十進製間隔符。數值也可以在前麵加一個-來表示負值。

  • 日期值可以有多種形式,例如單引號字符串或數值。例如:‘2015-07-21’,‘20150721’和20150721。

  • 十六進製值。在數字上下文中,十六進製數如同整數(64位精度)。在字符串上下文,如果有二進製字符串,每對二進製數字被轉換為一個字符。

  • 布爾值,常量TRUE等於1,常量FALSE等於0。常量名可以寫成大寫或小寫。

  • NULL值表示“沒有數據”。NULL可以寫成大寫或小寫。請注意NULL值不同於數值類型的0或字符串類型的空字符串。

識別符

OceanBase1.0 SQL語句中的租戶、數據庫、表、視圖、索引、表格組、列名和別名等Schema對象名稱之為識別符。

OceanBase識別符的最大長度和允許的字符,如下表所示。

識別符 最大長度(字節) 允許的字符
用戶名 16 大小寫英文字母,數字和下劃線,而且必須以字母或下劃線開頭,並且不能OceanBase的關鍵字。
租戶 64 大小寫英文字母,數字和下劃線,而且必須以字母或下劃線開頭,並且不能OceanBase的關鍵字。
數據庫 64 大小寫英文字母,數字和下劃線,‘$’組成。
表組 64 大小寫英文字母,數字和下劃線,而且必須以字母或下劃線開頭,並且不能OceanBase的關鍵字。
64 大小寫英文字母,數字和下劃線,‘$’組成。
64 大小寫英文字母,數字和下劃線,‘$’組成。
索引 64 大小寫英文字母,數字和下劃線,‘$’組成。
別名 255 大小寫英文字母,數字和下劃線,‘$’組成。
變量 64 文字數字字符、‘.’、‘_’和‘$’組成。

注:除了表內注明的限製,識別符不可以包含ASCII 0或值為255的字節。數據庫、表和列名不應以空格結尾。在識別符中盡管可以使用引號識別符,應盡可能避免這樣使用。

識別符可以用引用符引起來也可以不引起來。如果識別符是一個保留字或包含特殊字符,無論何時使用,必須將它引起來。OceanBase識別符的引用符是反引號(` )。如果服務器模式包括ANSI_QUOTES模式選項,還可以用雙引號將識別符引起來。

例如:

Oceanbase>create table `add`(id int, `select` int);
Query OK, 0 rows affected (0.11 sec)

Oceanbase> create table "delete"(id int, "select" int);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"delete"(id int, "select" int)' at line 1

Oceanbase> set sql_mode='ANSI_QUOTES';
Query OK, 0 rows affected (0.00 sec)

Oceanbase> create table "delete"(id int, "select" int);
Query OK, 0 rows affected (0.12 sec)
  • 識別符引用

    OceanBase允許使用由單個識別符或多個識別符組成的名字。多個識別符之間以句點(.)間隔開。在OceanBase中可以引用下麵形式的列:

列參考 含義
col_name col_name,查詢中使用的表包含有此名字的列。
tbl_name.col_name 默認數據庫中的表tbl_name的列col_name
db_name.tbl_name.col_name 數據庫db_name中的表tbl_name的列col_name

如果多部分名的組件需要引用,應分別將它們引起來而不要將整個名引起來。例如,'my-tables'.'my-column'有效,而'my-tables.my-column'無效。

不需要在語句中為列指定tbl_namedb_name.tbl_name前綴,除非列不確定。如表t1和t2各包含一個列c,你使用SELECT語句在t1和t2中搜索c。在這種情況下,c不確定,因為它在語句中使用的表內不唯一。你必須用表名t1.c或t2.c限定它,表示指哪個表。同樣,要想用同一語句搜索數據庫db1中的表t和數據庫db2中的表t,你必須將那些表中的列指為db1.t.col_name和db2.t.col_name。

限定名中句點後麵的字必須為一個識別符,因此不需要將它引起來,即使是一個保留字。

語法.tbl_name表示當前數據庫中的tbl_name。該語法與ODBC兼容,因為某些ODBC程序在表名前麵加前綴.字符。

  • 識別符大小寫敏感性

    在OceanBase中識別符大小寫不敏感,但為了保持與MySQL兼容,同樣設計了與MySQL一樣的lower_case_tables_name係統參數,以決定表名和庫名這兩種識別符大小寫是否敏感。

含義
0 表名和庫名比較對大小寫敏感
1 表名和庫名比較對大小寫不敏感

用戶變量

可以先在用戶變量中保存值然後在以後引用,這樣可以將值從一個語句傳遞到另一個語句。用戶變量與連接有關,一個客戶端定義的用戶變量不能被其他客戶端看到或使用。當客戶端退出時,該客戶端連接的所有變量將自動釋放。

用戶變量的形式如@var_name,其中變量名var_name可以由當前字符集的文字、數字、字符、‘.’、‘_’和‘$’組成。

係統變量

OceanBase可以訪問係統和連接變量。當服務器運行時許多變量可以動態更改。

注釋

OceanBase支持3種注釋語法:

  • 從‘#’字符到行尾。

  • 從 ‘ __’序列到行尾。請注意‘ __’(雙破折號)注釋要求第2個破折號後麵至少跟一個空格符。

  • 從/* 序列到後麵的 */序列。結束序列不一定在同一行中,因此該語法允許注釋跨越多行。

保留字

在OceanBase中,保留字如下表所示。

保留字
NAME_OB STRING_VALUE INTNUM DATE_VALUE TIMESTAMP_VALUE
HINT_VALUE BOOL_VALUE APPROXNUM DECIMAL_VAL NULLX
QUESTIONMARK SYSTEM_VARIABLE TEMP_VARIABLE CLIENT_VERSION MYSQL_DRIVER
HEX_STRING_VALUE EXCEPT UNION INTERSECT INNER
RIGHT FULL LEFT CROSS JOIN
SET_VAR OR_OP OR XOR AND_OP
AND ELSE THEN WHEN CASE
BETWEEN LOWER_THAN_COMP REGEXP IN LIKE
IS COMP_NE COMP_LT COMP_LE COMP_GT
COMP_GE COMP_NSEQ COMP_EQ ESCAPE SHIFT_RIGHT
SHIFT_LEFT POW DIV MOD LOWER_THAN_NEG
CNNOP NEG NOT2 NOT COLLATE
BINARY INTERVAL LOWER_KEY KEY ERROR
READ_STATIC INDEX_HINT USE_NL FROZEN_VERSION TOPK
QUERY_TIMEOUT READ_CONSISTENCY HOTSPOT LOG_LEVEL LEADING_HINT
ORDERED FULL_HINT USE_MERGE USE_HASH USE_PLAN_CACHE
STRONG FROZEN STATIC WEAK _BINARY
_UTF8 _UTF8MB4 HINT_BEGIN HINT_END END_P
ACCESSIBLE ADD ALTER ANALYZE ALL
AS ASENSITIVE ASC BEFORE BIGINT
BLOB BOTH BY CALL CASCADE
CHANGE CHAR CHARACTER CHECK CONDITION
CONSTRAINT CONTINUE CONVERT COLUMN CREATE
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR
DAY_HOUR DAY_MICROSECOND DAY_MINUTE DAY_SECOND DATABASE
DATABASES DEC DECIMAL DECLARE DEFAULT
DELAYED DELETE DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DOUBLE DROP DUAL
EACH ENCLOSED ELSEIF ESCAPED EXISTS
EXIT EXPLAIN FETCH FOREIGN FLOAT
FLOAT4 FLOAT8 FOR FORCE FROM
FULLTEXT GET GRANT GROUP HAVING
HIGH_PRIORITY HOUR_MICROSECOND HOUR_MINUTE HOUR_SECOND IF
IFIGNORE INDEX INFILE INOUT INSENSITIVE
INT INT1 INT2 INT3 INT4
INT8 INTEGER INSERT INTO IO_AFTER_GTIDS
IO_BEFORE_GTIDS ISNULL ITERATE KEYS KILL
LEADING LEAVE LIMIT LINEAR LINES
LOAD LOCALTIME LOCALTIMESTAMP LOCK_ LONG
LONGBLOB LONGTEXT LOOP LOW_PRIORITY MASTER_BIND
MASTER_SSL_VERIFY_SERVER_CERT MATCH MAXVALUE MEDIUMBLOB MEDIUMINT
MEDIUMTEXT MIDDLEINT MINUTE_MICROSECOND MINUTE_SECOND MODIFIES
NATURAL NO_WRITE_TO_BINLOG NUMERIC ON OPTION
OPTIMIZE OPTIONALLY ORDER OUT OUTER
OUTFILE PROCEDURE PURGE PARTITION PRECISION
PRIMARY RANGE READ READ_WRITE READS
REAL RELEASE REFERENCES RENAME REPLACE
REPEAT REQUIRE RESIGNAL RESTRICT RETURN
REVOKE RLIKE SECOND_MICROSECOND SELECT SCHEMA
SCHEMAS SEPARATOR SET SENSITIVE SHOW
SIGNAL SMALLINT SPATIAL SPECIFIC SQL
SQLEXCEPTION SQLSTATE SQLWARNING SQL_BIG_RESULT SQL_CALC_FOUND_ROWS
SQL_SMALL_RESULT SSL_ STARTING STRAIGHT_JOIN TERMINATED
TINYBLOB TINYINTTINYTEXT TABLE TABLEGROUP TO
TRAILING TRIGGER UNDO UNIQUE UNLOCK
UNSIGNED UPDATE USAGE USE USING
UTC_DATE UTC_TIME UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING WHERE WHILE
WITH WRITE YEAR_MONTH ZEROFILL GLOBAL_ALIAS
SESSION_ALIAS ACCOUNT ACTION ACTIVE ADDDATE
AFTER AGAINST AGGREGATE ALGORITHM ANALYSE
ANY ASCII AT AUTHORS AUTOEXTEND_SIZE
AUTO_INCREMENT AVG AVG_ROW_LENGTH BACKUP BASIC
BEGI BINLOG BIT BLOCK BLOCK_SIZE
BOOL BOOLEAN BOOTSTRAP BTREE BYTE
CACHE CANCEL CASCADED CAST CATALOG_NAME
CHAIN CHANGED CHARSET CHECKSUM CIPHER
CLASS_ORIGIN CLEAN CLEAR CLIENT CLOSE
COALESCE CODE COLLATION COLUMN_FORMAT COLUMN_NAME
COLUMNS COMMENT COMMIT COMMITTED COMPACT
COMPLETION COMPRESSED COMPRESSION CONCURRENT CONNECTION
CONSISTENT CONSISTENT_MODE CONSTRAINT_CATALOG CONSTRAINT_NAME CONSTRAINT_SCHEMA
CONTAINS CONTEXT CONTRIBUTORS COPY COUNT
CPU CREATE_TIMESTAMP CUBE CURDATE CURRENT
CURTIME CURSOR_NAME DATA DATAFILE DATE
DATE_ADD DATE_SUB DATETIME DAY DEALLOCATE
DEFAULT_AUTH DEFINER DELAY DELAY_KEY_WRITE DES_KEY_FILE
DESTINATION DIAGNOSTICS DIRECTORY DISABLE DISCARD
DISK DO DUMP DUMPFILE DUPLICATE
DYNAMIC EFFECTIVE ENABLE END ENDS
ENGINE_ ENGINES ENUM ERROR_P ERRORS
EVENT EVENTS EVERY EXCHANGE EXECUTE
EXPANSION EXPIRE EXPIRE_INFO EXPORT EXTENDED
EXTENT_SIZE EXTRACT FAST FAULTS FIELDS
FILEX FINAL_COUNT FIRST FIXED FLUSH
FOLLOWER FORMAT FOUND FREEZE FUNCTION
GENERAL GEOMETRY GEOMETRYCOLLECTION GET_FORMAT GLOBAL
GRANTS GROUP_CONCAT HANDLER HASH HELP
HOST HOSTS HOUR IDENTIFIED IGNORE
IGNORE_SERVER_IDS IMPORT INDEXES INITIAL_SIZE INSERT_METHOD
INSTALL INVOKER IO IO_THREAD IPC
ISOLATION ISSUER JSON KEY_BLOCK_SIZE KEY_VERSION
LANGUAGE LAST LEADER LEAVES LESS
LEVEL LINESTRING LIST_ LOCAL LOCKED
LOCKS LOGFILE LOGS MAJOR MASTER
MASTER_AUTO_POSITION MASTER_CONNECT_RETRY MASTER_DELAY MASTER_HEARTBEAT_PERIOD MASTER_HOST
MASTER_LOG_FILE MASTER_LOG_POS MASTER_PASSWORD MASTER_PORT MASTER_RETRY_COUNT
MASTER_SERVER_ID MASTER_SSL MASTER_SSL_CA MASTER_SSL_CAPATH MASTER_SSL_CERT
MASTER_SSL_CIPHER MASTER_SSL_CRL MASTER_SSL_CRLPATH MASTER_SSL_KEY MASTER_USER
MAX MAX_CONNECTIONS_PER_HOUR MAX_CPU MAX_DISK_SIZE MAX_IOPS
MAX_MEMORY MAX_QUERIES_PER_HOUR MAX_ROWS MAX_SESSION_NUM MAX_SIZE
MAX_UPDATES_PER_HOUR MAX_USER_CONNECTIONS MEDIUM MEMORY MEMTABLE
MERGE MESSAGE_TEXT META MICROSECOND MIGRATE
MIN MIN_CPU MIN_IOPS MIN_MEMORY MINOR
MIN_ROWS MINUTE MODE MODIFY MONTH
MOVE MULTILINESTRING MULTIPOINT MULTIPOLYGON MUTEX
MYSQL_ERRNO NAME NAMES NATIONAL NCHAR
NDB NDBCLUSTER NEW NEXT NO
NODEGROUP NONE NORMAL NOW NOWAIT
NO_WAIT NUMBER NVARCHAR OFF OFFSET
OLD_PASSWORD ONE ONE_SHOT ONLY OPEN
OPTIONS OWNER PACK_KEYS PAGE PARAMETERS
PARSER PARTIAL PARTITION_ID PARTITIONING PARTITIONS
PASSWORD PAUSE PHASE PLUGIN PLUGIN_DIR
PLUGINS POINT POLYGON POOL PORT
PREPARE PRESERVE PREV PRIMARY_ZONE PRIVILEGES
PROCESSLIST PROFILE PROFILES PROXY QUARTER
QUERY QUICK READ_ONLY REBUILD RECOVER
RECYCLE REDO_BUFFER_SIZE REDOFILE REDUNDANT REFRESH
RELAY RELAYLOG RELAY_LOG_FILE RELAY_LOG_POS RELAY_THREAD
RELOAD REMOVE REORGANIZE REPAIR REPEATABLE
REPLICA REPLICA_NUM REPLICATION REPORT RESET
RESOURCE RESOURCE_POOL_LIST RESTART RESTORE RESUME
RETURNED_SQLSTATE RETURNS REVERSE ROLLBACK ROLLUP
ROOT ROOTTABLE ROUTINE ROW ROW_COUNT
ROW_FORMAT ROWS RTREE SAVEPOINT SCHEDULE
SCHEMA_NAME SCOPE SECOND SECURITY SERIAL
SERIALIZABLE SERVER SERVER_IP SERVER_PORT SERVER_TYPE
SESSION SESSION_USER SET_MASTER_CLUSTER SET_SLAVE_CLUSTER SHARE
SHUTDOWN SIGNED SIMPLE SLAVE SLOW
SNAPSHOT SOCKET SOME SONAME SOUNDS
SOURCE SPFILE SQL_AFTER_GTIDS SQL_AFTER_MTS_GAPS SQL_BEFORE_GTIDS
SQL_BUFFER_RESULT SQL_CACHE SQL_NO_CACHE SQL_THREAD SQL_TSI_DAY
SQL_TSI_HOUR SQL_TSI_MINUTE SQL_TSI_MONTH SQL_TSI_QUARTER SQL_TSI_SECOND
SQL_TSI_WEEK SQL_TSI_YEAR START STARTS STATS_AUTO_RECALC
STATS_PERSISTENT STATS_SAMPLE_PAGES STATUS STEP_MERGE_NUM STOP
STORAGE STORING STRING SUBCLASS_ORIGIN SUBDATE
SUBJECT SUBPARTITION SUBPARTITIONS SUBSTR SUBSTRING
SUM SUPER SUSPEND SWAPS SWITCH
SWITCHES SYSTEM SYSTEM_USER TABLE_CHECKSUM TABLE_ID
TABLE_NAME TABLEGROUPS TABLES TABLESPACE TABLET
TABLET_MAX_SIZE TEMPORARY TEMPTABLE TENANT TEXT
THAN TIME TIMESTAMP TIMESTAMPADD TIMESTAMPDIFF
TINYINT TRADITIONAL TRANSACTION TRIGGERS TRIM
TRUNCATE TYPE TYPES UNCOMMITTED UNDEFINED
UNDO_BUFFER_SIZE UNDOFILE UNICODE UNINSTALL UNIT
UNIT_NUM UNLOCKED UNTIL UNUSUAL UPGRADE
USE_BLOOM_FILTER UNKNOWN USE_FRM USER USER_RESOURCES
VALUE VARIABLES VERBOSE VIEW WAIT
WARNINGS WEEK WEIGHT_STRING WORK WRAPPER
X509_ XA XML YEAR ZONE
ZONE_LIST LOCATION PLAN HIGHER_THAN_NEG

支持語句

OceanBase1.0支持的語句

  • 數據定義語句

    CREATE DATABASE, ALTER DATABASE, DROP DATABASE, CREATE TABLE,ALTER TABLE,DROP TABLE,CREATE INDEX,DROP INDEX,CREATE VIEW,DROP VIEW,ALTER VIEW,TRUNCATE TABLE;

  • 數據操作語句

    INSERT,REPLACE,DELETE,UPDATE, SELECT查詢及查詢子句;

  • 事務類語句

    START TRANSACTION,COMMIT,ROLLBACK;

  • 數據庫管理語句

    CREATE TABLEGROUP,DROP TABLEGROUP, CREATE USER,DROP USER,SET,SET GLOBAL,SET PASSWORD,RENAME USER,ALTER USER,GRANT,REVOKE, ALTER SYSTEM;

  • 實用的SQL語句

    SHOW,KILL,USE,DESCRIBE,EXPLAIN,WHEN,HINT,HELP等。

SQL限製與約束:

OceanBase的SQL限製與約束:

  • 暫不支持用戶自定義數據類型、自定義函數;

  • 暫不支持可更新視圖、存儲過程、觸發器、遊標;

  • 暫不支持臨時表;

  • 暫不支持類似BEGIN…END,LOOP...END LOOP,REPEAT...UNTIL...END REPEAT, WHILE...DO...END WHILE等的複合語句;

  • 暫不支類似IF,WHILE等流程控製類語句;

  • 暫不支持INSERT/REPLACE語句中的帶SELECT子句的修改,暫不支持DELETE語句多表刪除,暫不支持UPDATE多表更新等;

  • 最大長度或個數限製如下:

    a) 建表或索引的時候,主鍵長度之和小於等於16K,單行長度小於等於1.5M;

    b) 單個VARCHAR列長度小於等於262,143字節(最大長度是256K);

    c) 主鍵個數小於等於64個

    d) 單表的最大列數為512

    e) 單表的最大索引數為128

  • SELECT…FOR UPDATE隻支持單表查詢;

  • OceanBase 1.0一期TRUNCATE TABLE語句暫時支持單個Partition的表,暫不支持多Parition的表;

最後更新:2016-11-23 16:03:54

  上一篇:go OceanBase SQL快速概覽__SQL語法參考_雲數據庫 OceanBase-阿裏雲
  下一篇:go range分區__分區_SQL語法參考_雲數據庫 OceanBase-阿裏雲