新機能
ツリー形式(階層状)の構造を検索する
Oracle のような CONNECT BY PRIOR
...
。
不足しているすべての SQL-92 および ODBC 3.0 型を追加する。
SUM(DISTINCT)
を追加する。
テーブルの読み取りがロックされている場合、テーブルの最後で同時挿入を行う
INSERT SQL_CONCURRENT
および
mysqld --concurrent-insert
。
UPDATE TABLE foo SET @a=a+b,a=@a,
b=@a+c
のように、UPDATE
ステートメントでの変数の更新を有効にする。
ユーザ変数が更新される場合、SELECT
id, @a:=COUNT(*), SUM(sum_col)/@a FROM table_name
GROUP BY id
のように GROUP
BY
とともに使用できるように変更する。
TIMESTAMP
および
AUTO_INCREMENT
フィールドを更新しないように
LOAD DATA INFILE
に
IMAGE
オプションを追加する。
次のように動作する LOAD DATA INFILE
... UPDATE
構文を追加する。
主キーがあるテーブルについて、入力レコードに主キー値が含まれている場合、その主キー値と一致する既存のレコードはその他の入力カラムから更新される。ただし、入力レコードにないカラムに対応するカラムはそのままになる。
主キーがあるテーブルについて、入力レコードに主キー値が含まれていない場合やキーの一部がない場合、レコードは
LOAD DATA INFILE ... REPLACE
INTO
として処理される。
LOAD DATA INFILE
で次のような構文が認識されるようにする。
LOAD DATA INFILE 'file_name.txt' INTO TABLE tbl_name TEXT_FIELDS (text_field1, text_field2, text_field3) SET table_field1=CONCAT(text_field1, text_field2), table_field3=23 IGNORE text_field3
これを使用すると、テキストファイル内の余分なカラムをスキップしたり、読み取ったデータの式に基づいてカラムを更新したりすることができる。
SET
型のカラムを使用する新しい関数。
ADD_TO_SET(value,set)
REMOVE_FROM_SET(value,set)
クエリの途中で mysql
を停止する場合、別の接続を開き、実行中の元のクエリを終了する必要がある。または、サーバでこれが検出されるようにする必要がある。
システムテーブルとして使用できるように、テーブル情報のストレージエンジンインタフェースを追加する。これは、すべてのテーブルに関する情報を要求した場合には多少遅くなるが、非常に柔軟である。基本的なテーブル情報を対象とした
SHOW INFO FROM tbl_name
が実装される。
SELECT a FROM table_name1 LEFT JOIN
table_name2 USING (a)
を有効にする。この場合、a
は、table_name1
テーブルに由来すると想定される。
UPDATE
ステートメントの
DELETE
および
REPLACE
オプション(これによって、更新時に重複キーエラーが発生した場合、レコードが削除されるようになる)。
秒の小数部を格納するように
DATETIME
の書式を変更する。
現在のライブラリの代わりに、新しい GNU regexp ライブラリを使用できるようにする(新しいライブラリは、現在のライブラリよりはるかに高速である)。
標準への準拠、移植性、および移行
カラムに自動 DEFAULT
値が追加されないようにする。DEFAULT
がないカラムについては、INSERT
ステートメントに値がない場合、エラーを生成する。
ANY()
、EVERY()
、および
SOME()
グループ関数を追加する。標準の SQL
では、これらはブール型のカラムのみで動作するが、0
値を FALSE、0 以外の値を TRUE
として処理することで、あらゆるカラム/式で動作するように拡張することができる。
MAX(column)
の型をカラム型と同じになるように固定する。
mysql>CREATE TABLE t1 (a DATE);
mysql>INSERT INTO t1 VALUES (NOW());
mysql>CREATE TABLE t2 SELECT MAX(a) FROM t1;
mysql>SHOW COLUMNS FROM t2;
速度の向上
定義された数を超えるスレッドで同時に
MyISAM
リカバリが実行されないようにする。
必要に応じて同時挿入を使用するように
INSERT ... SELECT
を変更する。
しばらく使用されていない場合、遅延キーが設定されているテーブルのキーページを定期的にフラッシュするオプションを追加する。
キー部分での結合を有効にする(最適化の問題)。
Windows での
pread()
/pwrite()
のシミュレーションを追加して、同時挿入を有効にする。
最も頻繁にヒットするテーブル、複数テーブルの結合が実行される頻度などに関する情報を解析できるログファイルアナライザを追加する。これは、はるかに効率的なクエリを実行するように最適化することができる領域やテーブル設計を特定する上で便利である。
国際化
使いやすさの向上
SELECT MIN(column) ... GROUP BY
の実行時に、元のフィールド型を返す。
long_query_time
をマイクロ秒単位で詳細に指定できるようにする。
PACK
または
COMPRESS
操作を実行できるように、myisampack
コードをサーバにリンクする。
インデックスファイルがいっぱいになった場合にリカバリできるように、INSERT/DELETE/UPDATE
時にテンポラリキーバッファキャッシュを追加する。
別のディスクにシンボリックリンクされているテーブルで
ALTER TABLE
を実行する場合、そのディスクにテンポラリテーブルを作成する。
タイムゾーンが異なる日付の処理を容易にするために、タイムゾーン情報を適切に処理する
DATE/DATETIME
型を実装する。
スレッドを使用せずにすべてのライブラリ(MyISAM
など)をコンパイルできるように、configure
を固定する。
LIMIT @a,@b
のように、SQL
変数を LIMIT
の引数として使用できるようにする。
mysql
から Web
ブラウザへの自動出力。
LOCK
DATABASES
(およびさまざまなオプション)。
SHOW STATUS
によって表されるさまざまな数値。レコードの読み取りおよび更新。1
つのテーブルに対する SELECT
および結合を使用した SELECT。 SELECT
されたテーブルの平均数。ORDER
BY
および GROUP BY
クエリの数。
mysqladmin copy database
new-database
。このためには、COPY
操作を mysqld
に追加する必要がある。
プロセス一覧の出力にクエリ/スレッドの数が示されるようにする。
ホスト名キャッシュに関する情報を出力するための
SHOW HOSTS
。
計算されたカラムについて、空白文字列から
NULL
にテーブル名を変更する。
SELECT COUNT(*)*(id+0) FROM table_name GROUP
BY id
の場合、数字 -> 文字列
->
数字という変換を避けるために、数値に対して
Item_copy_string
を使用しない。
INSERT DELAYED
を実行するクライアントが ALTER
TABLE
によって停止されないように変更する。
UPDATE
節でカラムが参照されている場合、更新が開始される前の古い値がカラムに含まれるように固定する。
新しいオペレーティングシステム
LynxOS への MySQL クライアントの移植。
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.