このページは機械翻訳したものです。
MySQL Server では、他の SQL DBMS で検出されない可能性のある拡張機能がサポートされています。 これらを使用する場合は、コードが他の SQL サーバーに移植できない可能性があることを警告してください。 場合によっては、MySQL 拡張機能を含むコードを記述しても、次の形式のコメントを使用することで移植することができます。
/*! MySQL-specific code */
        この場合、MySQL Server は他の SQL ステートメントと同様にコメント内のコードを解析して実行しますが、他の SQL サーバーは拡張を無視する必要があります。 たとえば、MySQL Server は次のステートメントの STRAIGHT_JOIN キーワードを認識しますが、他のサーバーは認識できません: 
      
SELECT /*! STRAIGHT_JOIN */ col1 FROM table1,table2 WHERE ...
        !文字のあとにバージョン番号を追加すると、コメント内の構文は、MySQL のバージョンが指定されたバージョン番号以上の場合にだけ実行されます。 次のコメントの KEY_BLOCK_SIZE 句は、MySQL 5.1.10 以上のサーバーによってのみ実行されます: 
      
CREATE TABLE t1(a INT, KEY (a)) /*!50110 KEY_BLOCK_SIZE=1024 */;次の説明は、MySQL 拡張機能をカテゴリでまとめた一覧です。
- 
ディスク上のデータの構成 MySQL Server は、各データベースを MySQL データディレクトリ下のディレクトリにマップし、データベース内のテーブルをデータベースディレクトリ内のファイル名にマップします。 したがって、大/小文字が区別されるファイル名 (ほとんどの Unix システムなど) を持つオペレーティングシステム上の MySQL Server では、データベース名とテーブル名は大/小文字が区別されます。 セクション9.2.3「識別子の大文字と小文字の区別」を参照してください。 
- 
一般言語構文 - デフォルトでは、文字列は - "および- 'で囲むことができます。- ANSI_QUOTESSQL モードが有効な場合、文字列は- 'でのみ囲むことができ、サーバーは- "で囲まれた文字列を識別子として解釈します。
- \は文字列内のエスケープ文字です。
- SQL ステートメントでは、 - db_name.tbl_name構文を使用して、さまざまなデータベースのテーブルにアクセスできます。 同様の機能を備えた SQL サーバーもありますが、これは- User spaceと呼ばれます。 MySQL Server は、- CREATE TABLE ralph.my_table ... IN my_tablespaceなど、ステートメントで使用されるようなテーブルスペースをサポートしません。
 
- 
SQL ステートメント構文 - ANALYZE TABLE、- CHECK TABLE、- OPTIMIZE TABLE、および- REPAIR TABLEステートメント。
- CREATE DATABASE、- DROP DATABASE、および- ALTER DATABASEステートメント。 セクション13.1.12「CREATE DATABASE ステートメント」、セクション13.1.24「DROP DATABASE ステートメント」、およびセクション13.1.2「ALTER DATABASE ステートメント」を参照してください。
- DOステートメント。
- クエリーオプティマイザによるテーブルの処理方法に関する説明を取得する - EXPLAIN SELECT。
- FLUSHおよび- RESETステートメント。
- SETステートメント。 セクション13.7.6.1「変数代入の SET 構文」を参照してください。
- SHOWステートメント。 セクション13.7.7「SHOW ステートメント」を参照してください。 MySQL 固有の- SHOWステートメントの多くによって生成される情報は、- SELECTを使用して- INFORMATION_SCHEMAをクエリーすることによって、より標準的な方法で取得できます。 第26章「INFORMATION_SCHEMA テーブル」を参照してください。
- LOAD DATAの使用。 多くの場合、この構文は Oracle- LOAD DATAと互換性があります。 セクション13.2.7「LOAD DATA ステートメント」を参照してください。
- RENAME TABLEの使用。 セクション13.1.36「RENAME TABLE ステートメント」を参照してください。
- DELETE+- INSERTの代わりとしての- REPLACEの使用。 セクション13.2.9「REPLACE ステートメント」を参照してください。
- ALTER TABLEステートメントにおける- CHANGE、- col_name- DROP、あるいは- col_name- DROP INDEX、- IGNOREまたは- RENAMEの使用。- ALTER TABLEステートメントにおける、複数の- ADD、- ALTER、- DROP、または- CHANGE句の使用。 セクション13.1.9「ALTER TABLE ステートメント」を参照してください。
- インデックス名の使用、カラムのプリフィクス上のインデックス、および - CREATE TABLEステートメントでの- INDEXまたは- KEYの使用。 セクション13.1.20「CREATE TABLE ステートメント」を参照してください。
- CREATE TABLEを用いた- TEMPORARYまたは- IF NOT EXISTSの使用。
- DROP TABLEおよび- DROP DATABASEを用いた- IF EXISTSの使用。
- 1 つの - DROP TABLEステートメントで複数のテーブルを破棄できる機能。
- UPDATEおよび- DELETEステートメントの- ORDER BYおよび- LIMIT句。
- INSERT INTO構文。- tbl_nameSET- col_name= ...
- INSERTおよび- REPLACEステートメントの- DELAYED句。
- INSERT、- REPLACE、- DELETE、および- UPDATEステートメントの- LOW_PRIORITY句。
- SELECTステートメントにおける- INTO OUTFILEまたは- INTO DUMPFILEの使用。 セクション13.2.10「SELECT ステートメント」を参照してください。
- SELECTステートメントにおける- STRAIGHT_JOINや- SQL_SMALL_RESULTなどのオプション。
- GROUP BY句で、選択したすべてのカラムの名前を列挙する必要はありません。 これにより、ごく一部ではありますが、きわめて一般的なクエリーのパフォーマンスが向上します。 セクション12.20「集計関数」を参照してください。
- ORDER BYを用いるだけでなく- GROUP BYを用いても、- ASCおよび- DESCを指定できます。
- :=割り当て演算子で、ステートメント内の変数を設定する機能。 セクション9.4「ユーザー定義変数」を参照してください。
 
- 
データ型 - MEDIUMINT、- SET、および- ENUMデータ型と、さまざまな- BLOBおよび- TEXTデータ型。
- AUTO_INCREMENT、- BINARY、- NULL、- UNSIGNED、および- ZEROFILLデータ型の属性。
 
- 
関数と演算子 - ほかの SQL 環境を使用していたユーザーにわかりやすいように、MySQL Server では多数の関数のエイリアスがサポートされています。 たとえば、すべての文字列関数で、標準の SQL 構文と ODBC 構文の両方がサポートされています。 
- MySQL Server は、 - ||および- &&演算子が、C プログラミング言語の場合と同様に論理 OR および AND を意味することを理解しています。 MySQL Server では、- ||と- ORはシノニムであり、- &&と- ANDも同様です。 この優れた構文のために、MySQL Server では、文字列の連結に標準 SQL の- ||演算子を使用することができません。その代わりに、- CONCAT()を使用します。- CONCAT()は任意の数の引数を取るため、- ||演算子の使用を MySQL Server に変換することは簡単です。
- value_listに複数の要素がある場合の、- COUNT(DISTINCTの使用。- value_list)
- デフォルトでは、文字列比較では大/小文字は区別されず、ソート順序は現在の文字セット (デフォルトでは - utf8mb4) の照合順序によって決定されます。 かわりに、大/小文字を区別する比較を実行するには、- BINARY属性を使用してカラムを宣言するか、- BINARYキャストを使用する必要があります。これにより、字句の順序付けではなく、基礎となる文字コード値を使用して比較が実行されます。
- %演算子は- MOD()のシノニムです。 つまり、- N%- M- MOD(と同等です。- N,- M)- %は、C プログラマと、PostgreSQL との互換性のためにサポートされています。
- 
SELECTステートメントの出力カラムリスト (FROMの左側) の式で、=、<>、<=、<、>=、>、<<、>>、<=>、AND、OR、またはLIKE演算子を使用できます。 例:mysql> SELECT col1=1 AND col2=2 FROM my_table;
- LAST_INSERT_ID()関数は、最新の- AUTO_INCREMENT値を返します。 セクション12.16「情報関数」を参照してください。
- LIKEは、数値に対して使用できます。
- REGEXPおよび- NOT REGEXP拡張正規表現演算子。
- 1 つまたは複数の引数を使用する - CONCAT()または- CHAR()。 (MySQL Server では、これらの関数は引数をいくつでも使用することができます。)
- BIT_COUNT(),- CASE,- ELT(),- FROM_DAYS(),- FORMAT(),- IF(),- MD5(),- PERIOD_ADD(),- PERIOD_DIFF(),- TO_DAYS()および- WEEKDAY()の機能。
- 部分文字列を削除する - TRIM()の使用。 標準 SQL では、1 つの文字しか削除できません。
- GROUP BY関数- STD()、- BIT_OR()、- BIT_AND()、- BIT_XOR()、および- GROUP_CONCAT()。 セクション12.20「集計関数」を参照してください。