SET [GLOBAL | SESSION] sql_variable=expression,
    [[GLOBAL | SESSION] sql_variable=expression] ...
        SET
        は、サーバやクライアントの動作に影響を及ぼすさまざまなオプションを設定します。
      
以下の例は、変数の設定に使用できる各種の構文を示しています。
        旧バージョンの MySQL では、SET
        OPTION
        構文の使用を許可していましたが、今は廃止されています。
      
        MySQL 4.0.3 では、GLOBAL
        オプション、SESSION
        オプション、および最も重要なスタートアップ変数へのアクセスを追加しています。
      
        LOCAL は、SESSION
        のシノニムとして使用できます。
      
        1
        つのコマンドラインに複数の変数を設定する場合は、最後の
        GLOBAL | SESSION
        モードが使用されます。
      
SET sort_buffer_size=10000; SET @@local.sort_buffer_size=10000; SET GLOBAL sort_buffer_size=1000000, SESSION sort_buffer_size=1000000; SET @@sort_buffer_size=1000000; SET @@global.sort_buffer_size=1000000, @@local.sort_buffer_size=1000000;
        @@variable_name 構文は、MySQL
        構文とその他のデータベースとの互換性を保持を目的にサポートされています。
      
このマニュアルのシステム変数のセクションに設定可能な多様なシステム変数に関する説明があります。 See 項6.1.5. 「システム変数」。
        SESSION(デフォルト)を使用している場合、現在のセッションを終了するまで、あるいはこのオプションに別の値を設定するまで、設定したオプションが有効になります。SUPER
        特権を必要とする GLOBAL
        を使用した場合、サーバの再起動が行われるまでオプションが記憶され、新規接続時も使用されます。オプションを永続的にする場合は、オプション設定ファイルに設定します。
        See 項4.1.2. 「my.cnf オプション設定ファイル」。
      
        不適切な使用を防ぐため、SET
        SESSION でしか使用できない変数とともに
        SET GLOBAL
        を使用した場合や、グローバル変数に SET
        GLOBAL を使用しない場合には MySQL
        からエラーが出力されます。
      
        SESSION 変数を GLOBAL
        値に、あるいは GLOBAL 値を MySQL
        のデフォルト値に設定する場合は、DEFAULT
        として設定することができます。
      
SET max_join_size=DEFAULT;
これは以下と等しいことになります。
SET @@session.max_join_size=@@global.max_join_size;
        SET
        コマンドで設定可能なサーバ変数に最大値を設定して制限する場合、--maximum-variable-name
        コマンドラインオプションを使用して最大値を指定できます。
        See 項4.1.1. 「mysqld コマンドラインオプション」。
      
        SHOW VARIABLES
        を使用すると、ほとんどの変数の一覧が出力されます。
        See 項4.6.8.4. 「SHOW VARIABLES」。
        @@[global.|local.]variable_name
        構文を使用すると特定の変数の値を取得できます。
SHOW VARIABLES like "max_join_size"; SHOW GLOBAL VARIABLES like "max_join_size"; SELECT @@max_join_size, @@global.max_join_size;
        以下に、非標準 SET
        構文を使用する変数およびその他の変数の一部について説明します。これ以外の変数定義は、システム変数セクションのスタートアップオプションの部分または
        SHOW VARIABLES
        の説明に記載されています。 See
        項6.1.5. 「システム変数」。 See
        項4.1.1. 「mysqld コマンドラインオプション」。 See
        項4.6.8.4. 「SHOW VARIABLES」。
      
            AUTOCOMMIT= 0 | 1
          
            1
            に設定すると、テーブルに対する変更すべてがただちに実行される。トランザクションを有効にする場合は、BEGIN
            ステートメントを使用する必要がある。See
            項6.7.1. 「START
        TRANSACTION、COMMIT、ROLLBACK
        の各構文」。0
            に設定した場合は、そのトランザクションを
            COMMIT
            で受け入れるか、ROLLBACK
            で取り消す必要がある。 See
            項6.7.1. 「START
        TRANSACTION、COMMIT、ROLLBACK
        の各構文」。 AUTOCOMMIT
            モードを 0 から
            1
            に変更すると、開いているすべてのトランザクションに対して
            MySQL が COMMIT
            を自動実行するため注意が必要である。
          
            1
            に設定すると、テンポラリテーブルのすべてがメモリではなくディスクに格納される。これによって速度が少し低下するが、大きなテンポラリテーブルを必要とする大規模な
            SELECT 操作でもエラー The
            table tbl_name is full
            が出力されなくなる。新たに接続した場合のデフォルト値は
            0(メモリ内テンポラリテーブルを使用)である。
            この変数は旧称 SQL_BIG_TABLES
            であった。MySQL 4.0 では、MySQL
            によって必要に応じてメモリ内テーブルがディスクベーステーブルに自動変換されるため、通常この変数の設定が必要な状況はない。
          
            CHARACTER SET character_set_name |
            DEFAULT
          
            これは、クライアントとの間でやり取りされるすべての文字列に指定のマッピングを行う。
            現在、character_set_name
            の唯一のオプションは
            cp1251_koi8 のみであるが、MySQL
            ソースディストリビューションの
            sql/convert.cc
            ファイルを編集して容易に新規のマッピングを追加できる。デフォルトのマッピングは、DEFAULT
            の character_set_name
            値を使用してリストアできる。
          
            CHARACTER SET
            オプションを設定する構文は、他のオプションを設定する構文とは異なるため注意が必要である。
          
            DATE_FORMAT = format_str
          
            サーバで DATE
            値を文字列に変換する方法を設定する。この変数は、グローバルオプション、ローカルオプション、コマンドラインオプションのいずれでも使用できる。format_str
            の指定には GET_FORMAT()
            関数の使用が便利である。 See
            項6.3.4. 「日付と時刻関数」 を参照。
          
            DATETIME_FORMAT = format_str
          
            サーバで DATETIME
            値を文字列に変換する方法を設定する。この変数は、グローバルオプション、ローカルオプション、コマンドラインオプションのいずれでも使用できる。format_str
            の指定には GET_FORMAT()
            関数の使用が便利である。 See
            項6.3.4. 「日付と時刻関数」 を参照。
          
            INSERT_ID = #
          
            次の INSERT や ALTER
            TABLE コマンドで使用される
            AUTO_INCREMENT
            値を設定する。これは主としてバイナリログとともに使用される。
          
            LAST_INSERT_ID = #
          
            LAST_INSERT_ID()
            から返される値を設定する。これは、テーブルを更新するコマンドで
            LAST_INSERT_ID()
            関数を使用した場合にバイナリログに格納される。
          
            LOW_PRIORITY_UPDATES = 0 | 1
          
            1 に設定した場合、全ての
            INSERT、UPDATE、DELETE、および
            LOCK TABLE WRITE
            ステートメントが、同じテーブルに対して実行されている
            SELECT や LOCK TABLE
            READ がなくなるまで待機する。
            この変数は旧称
            SQL_LOW_PRIORITY_UPDATES であった。
          
            MAX_JOIN_SIZE = value | DEFAULT
          
            value
            を超えるレコードの組み合わせを調べることが必要な
            SELECT ステートメント、または
            value
            を超えるディスクシークの実行が見込まれる
            SELECT
            ステートメントを許可しない。この値を設定すると、キーの使用が不適切で長時間かかると見込まれる
            SELECT
            ステートメントを捕捉できる。DEFAULT
            以外の値に設定すると、SQL_BIG_SELECTS
            値が 0
            にリセットされる。SQL_BIG_SELECTS
            値を設定しなおすと、SQL_MAX_JOIN_SIZE
            変数は無視される。mysqld を
            --max_join_size=value
            オプションを指定して起動すると、この変数にデフォルト値を設定できる。この変数は旧称
            SQL_MAX_JOIN_SIZE であった。
          
クエリ結果がすでにクエリキャッシュにある場合は、結果がすでに計算されており、クライアントへの送信による負荷がサーバにかからないため、結果サイズのチェックは実行されない。
現在のユーザのパスワードを設定する。すべての非匿名ユーザは各自のパスワードを変更できる。
            PASSWORD FOR user =
            PASSWORD('パスワード')
          
            現在のサーバホストの特定ユーザのパスワードを設定する。この実行は、mysql
            データベースへのアクセスがあるユーザに限られる。ユーザは
            user@hostname
            の形式で指定する必要がある。user
            と hostname
            は、mysql.user
            テーブルエントリの User
            カラムと Host
            カラムの記載どおりにする必要がある。たとえば、User
            フィールドと Host
            フィールドのエントリが 'bob'
            および '%.loc.gov'
            の場合は次のように入力する。
          
mysql> SET PASSWORD FOR 'bob'@'%.loc.gov' = PASSWORD('newpass');
これは以下と等しいことになる。
mysql>UPDATE mysql.user SET Password=PASSWORD('newpass')->WHERE User='bob' AND Host='%.loc.gov';mysql>FLUSH PRIVILEGES;
            QUERY_CACHE_TYPE = OFF | ON | DEMAND ,
            QUERY_CACHE_TYPE = 0 | 1 | 2
          
スレッドにクエリキャッシュ設定を行う。
| オプション | 説明 | 
| 0またはOFF | 結果のキャッシュや取り出しを行わない。 | 
| 1またはON | SELECT SQL_NO_CACHE ...クエリを除くすべての結果をキャッシュする。 | 
| 2またはDEMANDは、 | SELECT SQL_CACHE ...クエリのみをキャッシュする。 | 
            SQL_AUTO_IS_NULL = 0 | 1
          
            1(デフォルト)に設定すると、WHERE
            auto_increment_column IS NULL
            の構造を使用して AUTO_INCREMENT
            カラムが含まれるテーブルで最後に挿入されたレコードを検索できる。これは、Access
            などの ODBC プログラムの一部で使用される。
          
            SQL_BIG_SELECTS = 0 | 1
          
            0
            に設定すると、長時間要すると見込まれる(オプティマイザによって
            MAX_JOIN_SIZE
            の値を超えるレコード数が調べられると見込まれる)SELECT
            ステートメントが MySQL
            によって中止される。 これは不適切な
            WHERE
            ステートメントが使用された場合に役立つ。新たに接続した場合のデフォルト値は
            1で、すべての 1
            ステートメントが許可される。
          
            MAX_JOIN_SIZE を
            DEFAULT
            以外の値に設定すると、SQL_BIG_SELECTS
            が 0 に設定される。
          
            SQL_BUFFER_RESULT = 0 | 1
          
            SQL_BUFFER_RESULT は
            SELECT
            ステートメントからの結果を強制的にテンポラリテーブルに入れる。これは、MySQL
            によるテーブルロック解除の早期化と、結果セットのクライアントへの送信に長時間かかる場合に役立つ。
          
            SQL_LOG_BIN = 0 | 1
          
            0
            に設定すると、クライアントに
            SUPER
            特権がある場合、そのクライアントに関するバイナリログへのログ記録が行われなくなる。
          
            SQL_LOG_OFF = 0 | 1
          
            1
            に設定すると、クライアントに
            SUPER
            特権がある場合、そのクライアントに関する標準ログへのログ記録が行われなくなる。
          
            SQL_LOG_UPDATE = 0 | 1
          
            0
            に設定すると、クライアントに
            SUPER
            特権がある場合、そのクライアントに関する更新ログへのログ記録が行われなくなる。
            バージョン 5.0
            以降はこの変数が廃止されている。
          
            SQL_QUOTE_SHOW_CREATE = 0 | 1
          
            1 に設定すると、SHOW
            CREATE TABLE
            でテーブル名とカラム名がクオートされる。これはデフォルトでオンになっており、マルチバイト文字などを使用したカラム名をもつテーブルのレプリケーションを可能にする。
            項4.6.8.8. 「SHOW CREATE TABLE」。
          
            SQL_SAFE_UPDATES = 0 | 1
          
            1 に設定すると、MySQL によって
            WHERE 節でキーや
            LIMIT を使用しない
            UPDATE または
            DELETE
            ステートメントが中止される。これで、手入力で
            SQL
            ステートメントを作成した場合に誤った更新の捕捉が実現される。
          
            SQL_SELECT_LIMIT = value | DEFAULT
          
            SELECT
            ステートメントから返されるレコードの最大数。SELECT
            に LIMIT
            節がある場合、SQL_SELECT_LIMIT
            の値よりも LIMIT
            のほうが優先される。新たに接続した場合のデフォルト値は
            ``無制限''
            である。この制限を変更した場合、DEFAULT
            の SQL_SELECT_LIMIT
            値を使用してデフォルト値をリストアできる。
          
            TIMESTAMP = timestamp_value | DEFAULT
          
            クライアントに時間を設定する。これは、レコードのリストアにバイナリログを使用する場合、オリジナル(ログが記録された時点)のタイムスタンプにするために使用される。timestamp_value
            は MySQL タイムスタンプではなく Unix
            基準時点のタイムスタンプにする必要がある。
          
            TIME_FORMAT = format_str
          
            サーバで TIME
            値を文字列に変換する方法を設定する。この変数は、グローバルオプション、ローカルオプション、コマンドラインオプションのいずれでも使用できる。format_str
            の指定には GET_FORMAT()
            関数の使用が便利である。 See
            項6.3.4. 「日付と時刻関数」 を参照。
          
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

