日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql内置的变量,MySQL服务器模式及相关内置变量

發布時間:2023/12/10 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql内置的变量,MySQL服务器模式及相关内置变量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章我們主要包含兩部分的內容:

MySQL服務器模式

MySQL內置變量

1. MySQL服務器模式

不同的MySQL客戶端可以通過不同的模式操作MySQL Server。DBA可以設置一個全局模式,而每個應用程序可以根據需要為相應的會話設置不同的模式。

MySQL操作模式會影響到SQL的語法和相應的SQL語句的校驗。

1.1 設置SQL模式

默認情況下SQL的模式是NO_ENGINE_SUBSTITUTION。如果要在MySQL Server啟動的時候就設置好相應的SQL模式的話,可以使用--sql-mode=命令行選項來進行設置,也可以在MySQL配置文件中通過sql-mode=來進行配置。是由一系列由空格分隔的不同的模式組成。如果要清除SQL模式,則只需要在啟動時傳遞--sql-mode=""或者在配置文件中配置sql-mode=""。

如果需要在運行時更改SQL模式,那么可以設置全局與會話 sql_mode系統變量:

SET GLOBAL sql_mode = 'modes';

SET SESSION sql_mode = 'modes';

對于設置全局變量,需要有SUPER權限,并且會影響到之后連接的所有客戶端。對于設置會話變量,則只會影響到當前客戶端。每個客戶端都可以改變該會話的sql_mode。

可以通過如下命令來獲取當前全局及會話sql_mode:

SELECT @@GLOBAL.sql_mode;

SELECT @@SESSION.sql_mode;

1.2 最重要的SQL模式

SQL有很多模式,下面我們介紹幾種常用的重要的SQL模式:

ANSI: 該模式會改變相應的語法和操作行為,以使最接近標準的SQL。它是一種特殊的組合模式(combination modes)。

STRICT_TRANS_TABLES: 假如一個值并不能插入到一個“事務表”中,那么中斷該語句的執行。

TRANDITIONAL: 使MySQL接近于傳統的SQL數據庫系統。簡單的描述即為“在插入錯誤的值到一列時直接返回錯誤,而不是警告”。

2. 獲取服務器元數據

MySQL有很多元數據,這里我們列出幾個常用的:

SELECT VERSION(): 服務器版本信息

SELECT DATABASE(): 當前數據庫名(或者返回為NULL)

SELECT USER(): 當前用戶名

SHOW STATUS: 服務器狀態

SHOW VARIABLES: 獲取當前會話的配置變量

3. 修改MySQL系統變量

下面以設置MySQL 系統變量wait_timeout為例。

3.1 設置全局變量

1) 修改參數文件,然后重啟MySQL

# vi /etc/my.cnf

[mysqld]

wait_timeout=10

# service mysqld restart

此種方法太過生硬,并且要重啟MySQL,一般不推薦。

2) 在命令行通過SET來設置,然后再修改參數文件

如果要修改全局變量,必須要顯示指定GLOBAL或者@@global.,同時必須要有SUPER權限:

mysql> SET GLOBAL wait_timeout=10;

or

mysql> set @@global.wait_timeout=10;

然后通過下面的命令查看設置是否成功:

然后查看設置是否成功:

mysql> SELECT @@global.wait_timeout=10;

or

mysql> SHOW GLOBAL variables like 'wait_timeout';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| wait_timeout | 10 |

+---------------+-------+

如果查詢時使用的是SHOW VARIABLES的話,會發現設置并沒有生效,除非重新登錄再查看。這是因為使用SHOW VARIABLES的話就等同于使用SHOW SESSION VARIABLES,查詢的是會話變量,只有使用SHOW GLOBAL VARIABLES查詢的才是全局變量。如果僅僅想修改會話變量的話,可以使用類似SET wait_timeout=10;或SET SESSION wait_timeout=10;`這樣的語法。

當前只修改了正在運行的MySQL實例參數,但下次重啟mysqld又會回到默認值,所以別忘了修改參數文件:

# vi /etc/my.cnf

[mysqld]

wait_timeout=10

3.2 修改會話變量

如果要修改會話變量值,可以指定SESSION或者LOCAL關鍵字,或者通過@@session、@@local、@@限定符, 又或者不加任何關鍵字與限定符。例如:

SET SESSION wait_timeout = 10;

or

SET LOCAL wait_timeout = 10;

or

SET @@session.wait_timeout = 10;

or

SET @@local.wait_timeout = 10;

or

SET @@wait_timetout = 10;

or

SET wait_timeout = 10;

然后查看設置是否成功:

mysql> select @@wait_timeout;

or

mysql> select @@session.wait_timeout;

or

mysql> select @@local.wait_timeout;

or

mysql> show variables like 'wait_timeout';

or

mysql> show local variables like 'wait_timeout';

or

mysql> show session variables like 'wait_timeout';

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| wait_timeout | 10 |

+---------------+-------+

另外,如果要將一個全局系統變量設置為MySQL編譯時的默認值,或者將一個session系統變量設置為當前的全局值,可以將該變量的值設置為DEFAULT。例如:

SET @@session.max_join_size = DEFAULT;

SET @@session.max_join_size = @@global.max_join_size;

[參看]:

總結

以上是生活随笔為你收集整理的mysql内置的变量,MySQL服务器模式及相关内置变量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。