閱讀881 返回首頁    go 阿裏雲


set語句__數據庫管理語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲

設置字符集

字符集是一套符號和編碼。校對規則是在字符集內用於比較字符的一套規則。

OceanBase 1.0支持utf8mb4字符集,utf8mb4是utf8的超集,最大編碼長度4字節,最大有效位數21比特。與utf8相比,utf8mb4支持ios表情符號等新字符。通常將utf8支持的字符稱為BMP(Basic Multilingual Plane),將utf8mb4新增支持的字符稱為擴展集。

用戶可以在租戶級、Database級、表級、字段級、session級設置字符集,因OceanBase 1.0隻支持utf8mb4這一種字符集,通常不需要用戶去單獨設置字符集。

在OceanBase 1.0中,utf8mb4字符集對應的collation支持utf8mb4_bin、utf8mb4_general_ci這二種,默認為utf8mb4_general_ci。主要不同點是對排序和字符串比較有影響,其中utf8mb4_bin大小寫敏感、utf8mb4_general_ci大小寫不敏感。

  • 修改用戶變量

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

    格式

      SET @var_name = expr;
    
    • 用戶變量的形式為@var_name,其中變量名var_name可以由當前字符集的文字數字字符、“.”、“_”和“$”組成。

    • 每個變量的expr可以為整數、實數、字符串或者NULL值。

    • 同時定義多個用戶變量時,用“,”隔開。

舉例

設置用戶變量

Oceanbase>SET @a=2, @b=3;
Query OK, 0 rows affected (0.01 sec)

Oceanbase>SET @c = @a + @b;
Query OK, 0 rows affected (0.00 sec)

查看用戶變量:

Oceanbase>SELECT @a, @b, @c;
+------+------+------+
| @a   | @b   | @c   |
+------+------+------+
|    2 |    3 |    5 |
+------+------+------+
1 row in set (0.01 sec)

或者通過select語句設置用戶變量:

Oceanbase> SELECT @a:=2, @b:=3, @c:=@a+@b;
+-------+-------+-----------+
| @a:=2 | @b:=3 | @c:=@a+@b |
+-------+-------+-----------+
|     2 |     3 |         5 |
+-------+-------+-----------+
1 row in set (0.01 sec)
  • 修改係統變量

    係統變量和SQL功能相關,存放在“__all_sys_variable”表中,如autocommit,tx_isolation等。

OceanBase維護兩種變量:

  • 全局變量

    影響OceanBase整體操作。當OceanBase啟動時,它將所有全局變量初始化為默認值。修改全局變量,必須具有SUPER權限。

  • 會話變量

    影響當前連接到OceanBase的客戶端。在客戶端連接OceanBase時,使用相應全局變量的當前值對該客戶端的會話變量進行初始化。設置會話變量不需要特殊權限,但客戶端隻能更改自己的會話變量,而不能更改其它客戶端的會話變量。

  • 全局變量的更改不影響目前已經連接的客戶端的會話變量,即使客戶端執行SET GLOBAL語句也不影響。

格式

設置全局變量的格式:

SET GLOBAL system_var_name = expr;

或者

SET @@GLOBAL.system_var_name = expr;

設置會話變量的格式:

SET [SESSION | @@SESSION. | LOCAL | LOCAL. | @@]system_var_name =expr;

查看係統變量值的格式,如果指定GLOBAL或SESSION修飾符,則分別打印全局或當前會話的係統變量值;如果沒有修飾符,則顯示當前會話值:

SHOW [GLOBAL | SESSION] 
     VARIABLES 
    [LIKE 'system_var_name' | WHERE expr];

舉例

  • 執行以下命令,修改會話變量中的SQL超時時間。
SET @@SESSION.ob_tx_timeout = 900000;
  • 執行以下命令,查看“ob_trx_timeout”的值。
Oceanbase>show variables like 'ob_trx_timeout';
+----------------+-----------+
| Variable_name  | Value     |
+----------------+-----------+
| ob_trx_timeout | 100000000 |
+----------------+-----------+
1 row in set (0.02 sec)

同樣可以使用select語句查詢變量的值。

Oceanbase>select @@ob_trx_timeout;
+------------------+
| @@ob_trx_timeout |
+------------------+
|        100000000 |
+------------------+
1 row in set (0.00 sec)

最後更新:2016-11-24 11:23:47

  上一篇:go 用戶及權限管理__數據庫管理語言_SQL語法參考_雲數據庫 OceanBase-阿裏雲
  下一篇:go 事務處理語言__SQL語法參考_雲數據庫 OceanBase-阿裏雲