SET NAMES指定COLLATE子句 |
SET [ SESSION | LOCAL ] NAMES {'charset_name' [COLLATE 'collation_name'] | DEFAULT}; |
GaussDB中SQL_ASCII库下暂不支持指定charset_name与数据库字符集不同。具体请参考《M-Compatibility开发指南》中“SQL参考 > SQL语法 > SQL语句 > S > SET ”章节。
不指定字符集时,MySQL会报错但GaussDB不报错。 |
支持DESCRIBE语句 |
{DESCRIBE | DESC}
tbl_name [col_name | wild] |
- 用户权限验证与MySQL存在差异。
- GaussDB中需要拥有指定表所在Schema的USAGE权限,同时还需要拥有指定表的任意表级权限或列级权限,仅显示拥有SELECT、INSERT、UPDATE、REFERENCES和COMMENT权限的列信息。
- MySQL中需要拥有指定表的任意表级权限或列级权限,仅显示拥有SELECT、INSERT、UPDATE、REFERENCES和COMMENT权限的列信息。
- 模糊匹配时涉及到字符串比较操作时,Field字段使用字符集utf8mb4、字符序utf8mb4_general_ci。
|
SET设置用户变量 |
SET @var_name := expr |
- MySQL用户变量名支持使用转义字符或双重引号转义,GaussDB用户变量名不支持。
单引号括起的变量名,变量名不能出现单引号,如@'''、@''''、@'\''不支持,解析时匹配不到'或解析报错,如:
-- 解析报错
m_db=# SET @'''' = 1;
ERROR: syntax error at or near "@"
LINE 1: SET @'''' = 1;
-- 解析时匹配不到'
m_db=# SET @'\'' = 1;
m_db'#
双引号括起的变量名,变量名不能出现双引号,如@"""、@""""、@"\""不支持,解析时匹配不到"或解析报错,如:
-- 解析报错
m_db=# SET @"""" = 1;
ERROR: syntax error at or near "@"
LINE 1: SET @"""" = 1;
-- 解析时匹配不到"
m_db=# SET @"\"" = 1;
m_db"#
反引号括起的变量名,变量名不能出现反引号,如@```、@````、@`\``不支持,解析时匹配不到`或解析报错,如:
-- 解析报错
m_db=# SET @```` = 1;
ERROR: syntax error at or near "@"
LINE 1: SET @```` = 1;
-- 解析时匹配不到`
m_db=# SET @`\`` = 1;
m_db`#
|
SET设置系统参数 |
SET [ SESSION | @@SESSION. | @@ | LOCAL | @@LOCAL.] {config_parameter { TO | = } { expr | DEFAULT } | FROM CURRENT }}; |
- config_parameter为BOOLEAN类型系统参数时:
- 参数值直接设置为字符串形式的'1'/'0'、'true'/'false'时,GaussDB数据库设置成功,MySQL设置失败。
- 参数值设置为子查询的查询结果,当查询结果为'true'/'false'、非整数类型1/0时,GaussDB数据库设置成功,MySQL设置失败;当查询结果为NULL时,GaussDB数据库设置失败,MySQL设置成功。
|
USE切换当前模式 |
USE schema_name |
使用USE语句指定模式,当用户没有对应模式的USAGE权限时,MySQL产生报错,GaussDB会将当前模式指定为空。
-- MySQL
mysql> USE test;
ERROR 1044 (42000): Access denied for user 'u1'@'%' to database 'test'
-- GaussDB
m_db=> USE test;
SET
m_db=> SELECT database();
ERROR: function returned NULL
CONTEXT: referenced column: database
|