_mysqlとは? わかりやすく解説

MySQL

読み方マイエスキューエル

MySQLとは、Sun MicrosystemsからオープンソースソフトウェアOSS)として公開されているリレーショナルデータベース管理システムRDBMS)の名称である。

MySQLは、もともとはMySQL AB社において開発・提供が行われていたソフトウェアであり、オープンソース提供されてはいるが、商用データベース勝るとも劣らない品質実現している。独自アーキテクチャーデータベースエンジン搭載しており、パフォーマンスの高さに定評がある他、数MB単位からTB単位まで対応するスケーラビリティの高さや、LinuxUNIXWindowsなどの複数プラットフォーム対応するマルチプラットフォーム性、柔軟なカスタマイズ性トランザクション処理などに関する堅牢性といった点でも優れているといわれる

MySQLは、高性能であり、巨大なシステムにも対応でき、かつ、GPLライセンスに従って自由に利用することができることから、商用サイト含めて多くデータベースデータベース管理システムとして採用されている。Yahoo!GoogleYouTubeWikipedia、といった、巨大なデータベースシステムにおいても、MySQLが採用されていることが知られている。

OSS利用してWebアプリケーションプラットフォーム構築する際、最もよく利用されるソフトウェアセットとして、LAMPと呼ばれる組み合わせがある。「L」はOSLinux、「A」はWebサーバーApache、そして「M」がデータベースのMySQLを指している。なお「P」はプログラミング言語として、PHP、またはPerlPythonいずれかを指す。

MySQLは、OSSRDBMSとしては世界で最も多く利用されているといわれている。なお、MySQLと同様にOSSとして提供されているRDBMSとしては、PostgreSQL挙げることができる。


参照リンク
MySQL - (英文
MySQL
データベースのほかの用語一覧
データベース:  DB2  GLR  Microsoft Access  MySQL  Microsoft Query  NEEDS  PostgreSQL

MySQL 関数

php.ini の設定により動作が変化します。
表 170. MySQL 設定オプション
名前デフォルト変更の可否変更履歴
mysql.allow_persistent"1"PHP_INI_SYSTEM 
mysql.max_persistent"-1"PHP_INI_SYSTEM 
mysql.max_links"-1"PHP_INI_SYSTEM 
mysql.trace_mode"0"PHP_INI_ALLPHP 4.3.0 以降で使用可能です。
mysql.default_portNULLPHP_INI_ALL 
mysql.default_socketNULLPHP_INI_ALLPHP 4.0.1 以降で使用可能です。
mysql.default_hostNULLPHP_INI_ALL 
mysql.default_userNULLPHP_INI_ALL 
mysql.default_passwordNULLPHP_INI_ALL 
mysql.connect_timeout"60"PHP_INI_ALLPHP <= 4.3.2 では PHP_INI_SYSTEM で、PHP 4.3.0 以降で使用可能です。

PHP_INI_* 定数の詳細および定義については 付録 G. php.ini ディレクティブ を参照してください。
以下に設定ディレクティブに関する 簡単な説明を示します。
mysql.allow_persistent boolean
MySQL への 持続的接続 を可能にするかどうか。
mysql.max_persistent integer
プロセス毎の持続的 MySQL 接続の最大数。
mysql.max_links integer
持続的接続を含むプロセス毎の MySQL 接続の最大数。
mysql.trace_mode boolean
トレースモード。mysql.trace_mode が有効の場合、 テーブル/インデックスのスキャン時の警告・結果セットの未開放・SQL エラー などが画面に表示されます(PHP 4.3.0 以降で使用可能です)。
mysql.default_port string
他のポートが指定されない場合、データベースサーバ接続時に使用される デフォルトの TCP ポート番号。デフォルトが指定されない場合は、 環境変数 MYSQL_TCP_PORT/etc/servicesmysql-tcpエントリ・コンパイル時の MYSQL_PORT 定数の順番でポートが取得されます。 Win32 では、MYSQL_PORT 定数のみが使用されます。
mysql.default_socket string
他にソケット名が指定されない場合、ローカルなデータベースサーバに 接続する時のデフォルトのソケット名。
mysql.default_host string
他のサーバ名が指定されない場合に、データベースサーバへの接続時に 使用されるデフォルトのサーバ名。 SQL セーフモード では適用されません。
mysql.default_user string
他のユーザ名が指定されない場合に、データベースサーバへの接続時に 使用されるデフォルトのユーザ名。 SQL セーフモード では適用されません。
mysql.default_password string
他のパスワードが指定されない場合に、データベースサーバへの接続時に 使用されるデフォルトのパスワード。 SQL セーフモード では適用されません。
mysql.connect_timeout integer
接続の有効時間(単位:秒)。Linux では、この有効時間はサーバからの 最初の応答の待ち時間としても使用されます。

リソース型

MySQL モジュールでは、2 種類のリソース型が使用されています。 最初のリソースはデータベース接続のリンク ID で、2 番目のリソースは クエリ結果を保持するリソースです。

定義済み定数

以下の定数が定義されています。 この関数の拡張モジュールが PHP 組み込みでコンパイルされているか、 実行時に動的にロードされている場合のみ使用可能です。
PHP 4.3.0 以降では、mysql_connect()mysql_pconnect() で追加のクライアントフラグを 指定できるようになりました。以下の定数が定義されています。 表 171. MySQL クライアント定数
定数説明
MYSQL_CLIENT_COMPRESS圧縮プロトコルを利用します。
MYSQL_CLIENT_IGNORE_SPACE関数名の後のスペースを許可します。
MYSQL_CLIENT_INTERACTIVEinteractive_timeout で指定された秒数(wait_timeout のかわり) の無通信が続くまで接続を閉じません。
MYSQL_CLIENT_SSLSSL による暗号化を使用します。このフラグは、バージョン 4.x 以降の MySQL クライアントライブラリを利用している場合にのみ有効です。 PHP 4 や、Windows 版の PHP 5 にバンドルされているのは、バージョン 3.23.x のライブラリです。


mysql_fetch_array() 関数は、結果の配列の形式を 指定するための定数を使用します。以下の定数が定義されています。 表 172. MySQL フェッチ定数
定数説明
MYSQL_ASSOC カラムは、フィールド名を添字とする配列形式で返されます。
MYSQL_BOTH カラムは、数値の添字とフィールド名の添字のどちらでもアクセスできる 配列形式で返されます。
MYSQL_NUM カラムは、数値の添字を持つ配列形式で返されます。添字は 0 からはじまり、 結果の最初のフィールドです。


注意

注意: ほとんどの MySQL 関数は、link_identifier を 最後のパラメータとしてオプションで受け付けます。これを指定しなかった場合、 直近にオープンされた接続が使用されます。もし直近の接続が存在しない場合、 php.ini のデフォルトパラメータを使用して接続を確立しようとします。 この試行にも失敗した場合、関数は FALSE を返します。

以下は、MySQL データベースに接続し、クエリを実行し、結果レコードを 出力、接続を切断する例です。 例 1307. MySQL 拡張モジュールに関する例
<?php
// データベースに接続し、選択する
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
   or die('Could not connect: ' . mysql_error());
echo 'Connected successfully';
mysql_select_db('my_database') or die('Could not select database');

// SQL クエリを実行する
$query = 'SELECT * FROM my_table';
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

// HTML に結果を出力する
echo "<table>\n";
while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
   echo "\t<tr>\n";
   foreach ($line as $col_value) {
       echo "\t\t<td>$col_value</td>\n";
   }
   echo "\t</tr>\n";
}
echo "</table>\n";

// 結果セットを開放する
mysql_free_result($result);

// 接続を閉じる
mysql_close($link);
?>


目次

mysql_affected_rows — 一番最近の操作で変更された行の数を得る
mysql_change_user — アクティブな接続でログイン中のユーザーを変更する
mysql_client_encoding — 文字セット名を返す
mysql_close — MySQL 接続を閉じる
mysql_connect — MySQL サーバへの接続をオープンする
mysql_create_db — MySQL データベースを作成する
mysql_data_seek — 内部的な結果ポインタを移動する
mysql_db_name — データベース名を得る
mysql_db_query — MySQL クエリーを送信する
mysql_drop_db — MySQLデータベースを破棄(削除)する
mysql_errno — 直近の MySQL 処理からエラーメッセージのエラー番号を返す
mysql_error — 直近に実行された MySQL 操作のエラーメッセージを返す
mysql_escape_string — mysql_query で使用するために文字列をエスケープする
mysql_fetch_array — 連想配列、添字配列、またはその両方として結果の行を取得する
mysql_fetch_assoc — 連想配列として結果の行を取得する
mysql_fetch_field — 結果からカラム情報を取得し、オブジェクトとして返す
mysql_fetch_lengths — 結果における各出力の長さを得る
mysql_fetch_object — 結果の行をオブジェクトとして取得する
mysql_fetch_row — 結果を添字配列として取得する
mysql_field_flags — 結果において指定したフィールドのフラグを取得する
mysql_field_len — 指定したフィールドの長さを返す
mysql_field_name — 結果において指定したフィールド名を取得する
mysql_field_seek — 結果ポインタを指定したフィールドオフセットにセットする
mysql_field_table — 指定したフィールドが含まれるテーブルの名前を取得する
mysql_field_type — 結果において指定したフィールドの型を取得する
mysql_free_result — 結果保持用メモリを開放する
mysql_get_client_info — MySQL クライアント情報を取得する
mysql_get_host_info — MySQL ホスト情報を取得する
mysql_get_proto_info — MySQL プロトコル情報を取得する
mysql_get_server_info — MySQL サーバ情報を取得する
mysql_info — 直近のクエリについての情報を得る
mysql_insert_id — 直近の INSERT 操作で生成された ID を得る
mysql_list_dbs — MySQL サーバ上で利用可能なデータベースのリストを得る
mysql_list_fields — MySQL テーブルのフィールドのリストを得る
mysql_list_processes — MySQL プロセスのリストを得る
mysql_list_tables — MySQL データベース上のテーブルのリストを得る
mysql_num_fields — 結果におけるフィールドの数を得る
mysql_num_rows — 結果における行の数を得る
mysql_pconnect — MySQL サーバへの持続的な接続をオープンする
mysql_ping — サーバとの接続状況を調べ、接続されていない場合は再接続する
mysql_query — MySQL クエリを送信する
mysql_real_escape_string — SQL 文中で用いる文字列の特殊文字をエスケープする
mysql_result — 結果データを得る
mysql_select_db — MySQL データベースを選択する
mysql_stat — 現在のシステムの状態を取得する
mysql_tablename — フィールドのテーブル名を得る
mysql_thread_id — カレントのスレッド ID を返す
mysql_unbuffered_query — MySQL に SQL クエリを送信するが、結果に対してのフェッチやバッファリングは行わない

MySQL 関数 (PDO_MYSQL)

導入

PDO_MYSQL は、PHP から MySQL 3.x、4.x および 5.x データベースへのアクセスを可能にするための PHP Data Objects (PDO) インターフェース を実装したドライバです。
PDO_MYSQL は、MySQL 4.1 以降に存在するプリペアドステートメントを ネイティブにサポートしているという利点があります。 古いバージョンの mysql クライアントライブラリを使用している場合は、 PDO がこの機能をエミュレートします。

警告
注意: MySQL のテーブル型 (ストレージエンジン) の中には、 トランザクションをサポートしていないものがあります。 トランザクションをサポートしていないテーブル型を使用して トランザクションを使用するコードを書くと、 MySQL はトランザクションが正常に使用できたかのように振舞います。 さらに、DDL クエリを実行する際には、 実行中のトランザクションが暗黙的にコミットされます。

定義済み定数

このドライバでは以下の定数が定義されて います。これは拡張モジュールが PHP に組み込まれているか、実行時に動的にロード されている場合のみ使用可能です。さらに、これらのドライバ固有の定数は そのドライバを使用している場合にのみ使用されます。 postgres ドライバで mysql 固有の属性を使用すると、予期せぬ結果を引き起こします。 もし複数のドライバを使用しているコードを実行している場合、 PDO::getAttribute()PDO_ATTR_DRIVER_NAME 属性を使用することで、使用中のドライバ名を調べることが可能です。
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (integer)
PDOStatement でこの属性を TRUE に設定すると、 MySQL ドライバはバッファ版の MySQL API を使用します。 移植性の高いコードを書くには、代わりに PDOStatement::fetchAll() を使用すべきです。
例 1363. mysql でクエリのバッファリングを強制する
<?php
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
   $stmt = $db->prepare('select * from foo',
       array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));
} else {
   die("このアプリケーションは mysql でしか動作しません。代わりに \$stmt->fetchAll() を使用すべきです");
}
?>


PDO::MYSQL_ATTR_LOCAL_INFILE (integer)
LOAD LOCAL INFILE を有効にします。
PDO::MYSQL_ATTR_INIT_COMMAND (integer)
MySQL サーバへの接続時に実行するコマンドを指定します。 再接続の際には自動的に再実行されます。
PDO::MYSQL_ATTR_READ_DEFAULT_FILE (integer)
my.cnf ではなく、 指定した名前のファイルからオプションを読み込みます。
PDO::MYSQL_ATTR_READ_DEFAULT_GROUP (integer)
my.cnf あるいは 別のファイル (MYSQL_READ_DEFAULT_FILE で指定したもの) の中の、指定した名前のグループからオプションを読み込みます。
PDO::MYSQL_ATTR_MAX_BUFFER_SIZE (integer)
バッファの最大サイズ。デフォルトは 1 MiB です。
PDO::MYSQL_ATTR_DIRECT_QUERY (integer)
プリペアドステートメントではなく、直接クエリを実行します。

目次

PDO_MYSQL DSN — MySQL データベースに接続する

MySQL

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2025/04/26 03:57 UTC 版)

MySQL
現在のロゴ
Linux上で実行中のGUIフロントエンド MySQL Administrator
開発元 オラクルサン・マイクロシステムズ
初版 1995年5月23日 (1995-05-23)
最新版
旧版
8.0.38[1] / 2024年7月1日 (9か月前)
安定版
9.3.0[2] / 2025年4月15日 (11日前)
長期サポート
8.4.5[3] / 2025年4月15日 (11日前)
リポジトリ
プログラミング
言語
C, C++
対応OS クロスプラットフォーム
種別 RDBMS
ライセンス GPL v2 または Commercial License
公式サイト www.mysql.com/jp/
dev.mysql.com
テンプレートを表示

MySQL(マイ・エスキューエル、海外ではマイ・シークェルとも)は、オープンソースリレーショナルデータベース管理システム (RDBMS) である。その名前は、共同設立者のミカエル・ウィデニウスの娘の名前である「My」と、Structured Query Languageの略称である「SQL」を組み合わせたものである。

MySQLは、GNU General Public Licenseの条件に基づいたフリーでオープンソースのソフトウェアであり、さまざまなプロプライエタリライセンスでも利用可能である。MySQLは、サン・マイクロシステムズ(現在のオラクル)に買収されたスウェーデンの企業MySQL ABが所有、出資していた。2010年にオラクルがサンを買収したとき、ウィデニウスはオープンソースのMySQLプロジェクトをフォークしてMariaDBを作った。

MySQLは、LAMP Webアプリケーションソフトウェアスタック(LAMPは、LinuxApache、MySQL、Perl/PHP/Pythonの頭字語)のコンポーネントである。MySQLは、DrupalJoomlaphpBBWordPressなど、多くのデータベース駆動型Webアプリケーションで使用されている。MySQLは、FacebookFlickrMediaWikiTwitterYouTubeなど[4][5]、多くの人気Webサイトでも使用されている。

概要

MySQLはCC++で書かれている。SQLパーサーについて構文解析はyaccで書かれている(実際のコンパイルにはBisonが使われる)が、字句解析にはLexは使わず自家製の字句解析器を使用している。MySQLは、AIX、BSDi、FreeBSDHP-UX、eComStation、i5/OS、IRIX、Linux、macOSMicrosoft WindowsNetBSD、Novell NetWare、OpenBSDOpenSolaris、OS/2Warp、QNX、Symbian、SunOS、SCO OpenServer、SCO UnixWare、Sanos、Tru64など、多くのシステムプラットフォームで動作する。OpenVMSへのMySQLのポートも存在する。

MySQLサーバーソフトウェアとクライアントライブラリは、デュアルライセンス配布を使用している。これらはGPLバージョン2、またはプロプライエタリなライセンスで提供されている。

公式マニュアル[6]からサポートを得ることができる。また、別のIRCチャネルやフォーラムでも無償サポートが提供されている。オラクルはMySQL Enterprise製品を通じて有償サポートを提供している。それらはサービスの範囲や価格がそれぞれ違っている。さらに、MariaDBやPercona (en:Percona) など、サポートやサービスを提供するサードパーティ組織も多数存在する。

MySQLは肯定的なレビューを受けており、レビュー担当者はMySQLが「平均的なケースでは非常によく機能」し、「開発者向けのインターフェイスがあり、ドキュメント(Webサイトなどを通じた現実世界でのフィードバックは言うまでもなく)も非常に良い。」ことに気付いた。また、「高速で安定した真のマルチユーザ、マルチスレッドのSQLデータベースサーバ」としてもテストされている。

特徴

MySQLは、オープンソースのMySQL Community ServerとプロプライエタリのEnterprise Serverの2つの異なるエディションで提供される。[7] MySQL Enterprise Serverは、サーバープラグインとしてインストールされる一連の独自の拡張機能によって差別化されているが、それ以外は同じバージョン番号付けシステムを共有し、同じコードベースから構築される。

MySQL 5.6で利用可能な主な機能:

  • ANSI SQL 99の広範なサブセットと拡張機能
  • クロスプラットフォームのサポート
  • SQL / PSMに厳密に従う手続き言語を使用するストアドプロシージャ [8]
  • トリガー
  • カーソル
  • 更新可能なビュー
  • InnoDBストレージエンジンを使用する場合のオンラインデータ定義言語 (DDL)。
  • 情報スキーマ
  • 監視目的でサーバーの実行とクエリのパフォーマンスに関する統計を収集および集約するパフォーマンススキーマ。[9]
  • 実行時の動作を制御するための一連のSQLモードオプション。SQL標準に準拠するための厳密モードが含まれる。
  • X / Open XA 分散トランザクション処理 (DTP) サポート。この一環として、デフォルトのInnoDBストレージエンジンを使用した2フェーズコミット
  • デフォルトのInnoDB Storage Engineを使用する場合のセーブポイントを持つトランザクション。NDB Cluster Storage Engineはトランザクションもサポートする。
  • InnoDBおよびNDB Cluster Storage Engineを使用する場合のACIDコンプライアンス[10]
  • SSLサポート
  • クエリキャッシング
  • サブSELECT(ネストされたSELECT)
  • ビルトインされたレプリケーションサポート
    • 非同期レプリケーション:1つのマスターから多数のスレーブ[11][12]へのマスター/スレーブ、または1つのスレーブ[13]への多数のマスター。
    • 準同期レプリケーション:マスターがレプリケーション時に待機するマスターからスレーブへのレプリケーション[14][15]
    • 同期レプリケーション: マルチマスターレプリケーションはMySQL Cluster[16]にて提供される。
    • 仮想同期 :マルチマスターサポートを備えたMySQLサーバーの自己管理グループは、Galera Cluster[17]または組み込みのGroup Replicationプラグイン[18]を使用して実行できる[19]
  • 全文索引付けおよび検索[注 1]
  • 組み込みデータベースライブラリ
  • Unicodeサポート[注 2]
  • オプティマイザーでパーティションをプルーニングしたパーティションテーブル
  • MySQL Clusterによる非共有クラスタリング
  • 複数のストレージエンジン。アプリケーションの各テーブルに最も効果的なストレージエンジンを選択できる[注 3]
  • ネイティブストレージエンジンInnoDBMyISAM、マージ、メモリ(ヒープ)、フェデレーション、アーカイブ、CSV、ブラックホール、NDBクラスター。
  • グループ化をコミットし、複数の接続から複数のトランザクションを収集して、1秒あたりのコミット数を増やす。

開発者は、約3か月ごとにMySQL Serverのマイナーアップデートをリリースする。ソースは、両方ともGPLライセンスの下で、MySQLのWebサイトまたはMySQLのGitHubリポジトリから取得できる。

シェア

世界でもっとも普及しているオープンソースのRDBMSとして知られており[20]、市場シェアではPostgreSQLなどの他のオープンソース・データベースを圧倒している[21]。日本でも2009年になってPostgreSQLを超えるシェアを獲得している[22]。初期のMySQLで文字コードのサポートが悪かったのが影響したが、現在はEUC、SJIS、多言語面を含むUTF-8などをサポートしている。

利用企業数の割合
地域 MySQL PostgreSQL 調査機関
世界 82.1% 27.1% 451 Group (2009年)[23]
日本 60.5% 51.9% IPA (2009年)[22]

ストレージエンジン

データの保存とアクセスを行うストレージエンジンがSQLパーサとは分離独立しており、用途に応じたストレージエンジンを選択できる「マルチストレージエンジン」方式を採用している。

バージョン3.23.34以降で組み込まれているInnoDBストレージエンジンは、オープンソースソフトウェア企業のInnobase社が開発したストレージエンジンであり、高い堅牢性とMVCCによる高い並列性を兼ね備えており、あらゆるアプリケーションに対応出来る人気のストレージエンジンとなっている。InnoDBはMySQL本体やOSのクラッシュからの復旧(クラッシュリカバリ)をサポートしている。

また、InnoDB登場以前から搭載されているMyISAMストレージエンジンも検索が高速であり、更新よりも参照の頻度の高いWebアプリケーションなどで活用されている。全文検索や空間検索が利用できるのも、MyISAMの利点であったが最近のMySQLではInnoDBにおいてもそれらは利用できるようになっている。

以前はMyISAMの方が高速であったり多機能であると言われることが多かったが、InnoDBの性能・機能改善が進んだことから、高速性や多機能性を求めるためにMyISAMを利用するということも減ってきている。

トランザクション

MySQLでは、トランザクション管理はストレージエンジンの役割であり、トランザクションを利用したければ対応したストレージエンジンを使用すればよい。

InnoDBは、ACIDに準拠したトランザクションをサポートしている。一方MyISAMでは、トランザクションをサポートしていない。トランザクションが必要でないシーンは徐々に減ってきているので、最近MyISAMの出番も減りつつあるようである。

その他の機能

副次問い合わせ(サブクエリ)は、バージョン4.1以降でサポートされている。バージョン5.0以降では、SQL99にストアドプロシージャビュートリガーが実装され、機能の面でも他のRDBMSに追いつきつつある。またバージョン8.0ではウインドウ関数と共通表式(CTE: Common Table Expression)が実装された。

その他、標準でマスタスレーブ方式のレプリケーション機能を備えており、堅牢なデータストレージの構築が比較的容易である。MySQLはストレージエンジンに寄らないバイナリログ(旧:更新ログ)を実装しており、それを使った論理レプリケーションである。

MySQL 5.7.17以降、MySQL 8.xではグループレプリケーションの機能をプラグインでサポートしている。

また、本体+プラグインのGR(グループレプリケーション)とMySQL Shell, MySQL Routerを組み合わせたMySQL InnoDB Cluster構成も可能になった。

ライセンス

MySQLは GPL とコマーシャルライセンスのデュアルライセンス方式で提供されている[24]。基本的に、MySQLのサーバ本体とクライアントライブラリはGPLで提供される。このため、MySQLを改造し、それを再頒布する場合は、GPLに従う必要がある。

GPLのクライアントライブラリを利用してMySQLに接続するアプリケーションを開発した場合、そのアプリケーションもGPLライセンスとしなければならない可能性がある。ただし、クライアントライブラリに関しては、アプリケーションが既定のオープンソースライセンスで公開されるのであれば、GPL以外のオープンソースライセンスで再頒布することも可能である[25]

サポートやツールが提供される有料サブスクリプションのMySQL Standard Edition, Enterprise Editionでは、コマーシャルライセンス版のバイナリが提供される[26]。コマーシャルライセンス版では、GPLによる制約は受けない。

歴史

  • 1995年5月23日 - 内部的にMySQLの最初のバージョンがリリース。
  • 1998年1月8日 - 最初のWindows版がリリース。Windows 95やNT向け。
  • 2001年1月 - Version 3.23 プロダクションリリース。ベータ版は2000年6月にリリース。
  • 2003年3月 - Version 4.0 プロダクションリリース。ベータ版は2002年8月にリリース。union搭載。
  • 2004年10月 - Version 4.1 プロダクションリリース。ベータ版は2004年6月にリリース。R木B木、サブクエリー、prepared statements搭載。
  • 2005年10月 - Version 5.0 プロダクションリリース(5.0.15よりGA)。ベータ版は2005年3月にリリース。cursors, stored procedures, triggers, views, XA transactions搭載。
  • 2008年2月6日 - サン・マイクロシステムズがMySQL ABを買収。
  • 2008年7月1日 - サン・マイクロシステムズ株式会社がMySQL株式会社(MySQLの日本法人)を吸収合併。
  • 2008年11月 - Version 5.1 プロダクションリリース(5.1.30よりGA)。ベータ版は2005年11月にリリース。event scheduler, partitioning, plugin API, row-based replication, server log tables搭載。
  • 2010年1月27日 - オラクルがサン・マイクロシステムズを買収。
  • 2010年12月15日 - Version 5.5 プロダクションリリース(5.5.8よりGA)。デフォルトのストレージエンジンが InnoDB になり、マルチコアCPUでのパフォーマンスが改善した[27]。ベータ版 (Version 5.4) は2009年4月にリリース。
  • 2013年2月5日 - Version 5.6 プロダクションリリース(5.6.10よりGA)。InnoDB、NoSQLの機能を強化[28][29]
  • 2015年10月21日 - Version 5.7 プロダクションリリース(5.7.9よりGA)。
  • 2018年4月19日 - Version 8.0 プロダクションリリース(8.0.11よりGA)[30]

利用状況

世界的にはこのMySQLの方が、ライバルであるFirebirdPostgreSQLよりも多く使用されており、ウェブサイトの構築に用いるソフトウェア環境として、LAMP (Linux, Apache, MySQL, PerlPHPPython) の略称が知られている。Yahoo!FacebookTwitterなどの巨大なウェブサイトでの適用例も多く、WebアプリケーションのXOOPSWordPressSugarCRMなどCMSも、バックエンドのデータベースとしてMySQLを利用している。また、ウィキペディアのためのソフトウェアであるMediaWikiでもこのソフトウェアを使用している[注 4]。他にも、社内用WebアプリケーションのサイボウズもMySQLを利用しており、MySQLを改造するため、有償契約をしている。

世界的な傾向に反し、以前の日本では、PostgreSQLの適用例がMySQLを上回っていた。2003年平成15年)の時点で、オープンソース系のデータベースとして、日本では8割以上がPostgreSQLだった。

その理由として、以下の理由が指摘されている。

  • 欧米において、MySQLの広報が積極的だった。
  • MySQLの日本ユーザ会の立ち上げが遅れた。
  • 日本でのPHPの本である「PHP徹底攻略」と「PHP4徹底攻略」がPostgreSQLとの接続を想定して記述されていた。
  • PostgreSQLの開発に日本人であるSRAの石井達夫が関わっていた。彼は上記二冊の執筆も一部担当している。
  • Javaを開発するサン・マイクロシステムズが、MySQLよりもPostgreSQLを推していた。
  • かつてのMySQLでUnicodeのサポートが不十分だった。
  • アプリケーションの頒布形態によっては、GPLではなく商用ライセンスを選択しなければならないケースがある。

だが、そのような状況は徐々に変遷し、2009年(平成21年)の段階では、MySQLのほうがPostgreSQLよりも多く利用されているという報告がある[31][32]

プラットフォーム

MySQL 8.0は次のプラットフォームでサポートされている。[33]

開発言語

C, C++, Eiffel, Smalltalk, Java (JNI), LISP, Perl, PHP, Python, Ruby, TclはMySQLのAPIを介してデータベースにアクセスできる。またODBCインターフェース (Connector/ODBC (旧名:MyODBC)) もサポートされている。MySQL自体はCおよびC++で開発されている。埋め込みSQLによる開発はサポートされていないため、オープンソースプロジェクトのOpen ESQL等が利用される[34]

日本語処理

MySQLは、sjis (Shift_JIS)、cp932(Microsoftコードページ932)、utf8(UTF-8(3バイトまで))、utf8mb4(UTF-8(4バイトまで/MySQL5.5以降でサポート))、ujis (EUC-JP) といった文字セットを指定することで、日本語の文字を含む入出力を正しく扱うことができる。

sjisは、JIS X 0201およびJIS X 0208に準じたものであるが、同じ「Shift_JIS」でも、Windows環境で使用される文字の一部を正しく扱えない場合がある。これは、Windowsでは、前記の規格以外の拡張文字を含む、拡張されたShift_JISを使用しているためである。これらの文字をMySQLで正しく扱うには、sjisではなくcp932を指定する。同様の理由でujisではなくeucjpmsを指定すべきである。

たとえば、Microsoft AccessからUTF-8で格納するテーブルにODBCリンク経由でアクセスする場合は、MyODBCの文字セット設定をcp932にしておけば、正しく入出力できる。

cp932がMySQLでサポートされたのは4.1.12からであり、それまでは、「sjisで格納し、sjisで入出力」するという設定を行い、入出力時の文字コード変換を避けることで、Windowsの拡張シフトJISで問題が起きないようにする、というのが、日本国内における「常識」であった。cp932のサポートの前にはすでにUnicodeがサポートされていたが、それらを積極的に使用する人はあまりいなかった。なぜなら、Unicodeで格納するテーブルに対してsjisで入出力を行うと、Windows環境において拡張文字が適切に変換されず文字化けが発生するため、それが「Unicode対応が不完全」「Unicodeはまだ使いものにならない」という評価を生む一因となっていたからである。

Ruby on RailsCakePHPのデフォルトはutf8だが、データベース接続設定でencodingをutf8と明示的に使用宣言しておく必要がある。

MySQLの管理ツール

注釈

  1. ^ Initially, it was a MyISAM-only feature; supported by InnoDB since the release of MySQL 5.6.
  2. ^ Prior to MySQL 5.5.3, UTF-8 and UCS-2 encoded strings are limited to the BMP; MySQL 5.5.3 and later use utf8mb4 for full Unicode support.
  3. ^ In MySQL 5.0, storage engines must be compiled in; since MySQL 5.1, storage engines can be dynamically loaded at run time.
  4. ^ なお、ウィキペディア自体はMySQLからフォークしたMariaDBの利用へと移行している。
  5. ^ MySQL :: MySQL Workbench
  6. ^ phpMyBackupPro - the MySQL backup tool :: Features
  7. ^ Navicat for MySQL | MySQLに対応したDB管理・開発ツール
  8. ^ MySQL :: MySQL Workbench: Administration
  9. ^ Home - Nucleon Software
  10. ^ Sequel Pro
  11. ^ Adminer - Database management in a single PHP file

出典

  1. ^ "Changes in MySQL 8.0.38 (2024-07-01, General Availability)"; 閲覧日: 2024年7月1日; 出版日: 2024年7月1日.
  2. ^ "Changes in MySQL 9.3.0 (2025-04-15, Innovation Release)"; 閲覧日: 2025年4月15日; 出版日: 2025年4月15日.
  3. ^ "Changes in MySQL 8.4.5 (2025-04-15, LTS Release)"; 閲覧日: 2025年4月15日; 出版日: 2025年4月15日.
  4. ^ Slide 1”. Oracle. 2024年3月6日閲覧。
  5. ^ MySQL”. www.mysql.com. 2024年3月5日閲覧。
  6. ^ MySQL 8.0 リファレンスマニュアル”. MySQL. 2022年7月3日閲覧。
  7. ^ Which Should I Use: MySQL Enterprise or MySQL Community Server?”. MySQL AB. 2009年4月9日時点のオリジナルよりアーカイブ。2009年4月8日閲覧。
  8. ^ Guy Harrison; Steven Feuerstein (2008). MySQL Stored Procedure Programming. O'Reilly Media. p. 49. ISBN 978-0-596-10089-6. https://books.google.com/books?id=YpeP0ok0cO4C&pg=PT75 
  9. ^ Monitoring RDS MySQL performance metrics”. Datadog (2015年10月20日). 2015年12月14日閲覧。
  10. ^ MySQL :: InnoDB 1.1 for MySQL 5.5 User's Guide :: C InnoDB Glossary :: ACID”. 2010年12月25日時点のオリジナルよりアーカイブ。2011年1月5日閲覧。
  11. ^ Replication”. MySQL. 2020年5月2日閲覧。
  12. ^ MariaDB Replication”. MariaDB KnowledgeBase. 2019年3月9日閲覧。
  13. ^ MySQL :: MySQL 5.7 Reference Manual :: 16.1.4 MySQL Multi-Source Replication”. dev.mysql.com. 2019年3月9日閲覧。
  14. ^ MySQL :: MySQL 5.7 Reference Manual :: 16.3.9 Semisynchronous Replication”. dev.mysql.com. 2019年3月9日閲覧。
  15. ^ Semisynchronous Replication”. MariaDB KnowledgeBase. 2019年3月9日閲覧。
  16. ^ MySQL Cluster Replication: Multi-Master and Circular Replication”. MySQL. 2020年5月2日閲覧。
  17. ^ MySQL University: MySQL Galera Multi-Master Replication”. Oracle Corporation. 2020年5月2日閲覧。
  18. ^ MySQL :: MySQL 8.0 Reference Manual :: 18 Group Replication”. dev.mysql.com. 2019年3月9日閲覧。
  19. ^ MySQL :: MySQL 8.0 Reference Manual :: 18 Group Replication”. dev.mysql.com. 2019年3月9日閲覧。
  20. ^ DB-Engines Ranking - popularity ranking of database management systems
  21. ^ http://www-jp.mysql.com/why-mysql/marketshare/
  22. ^ a b オープンソフトウェア:第2回オープンソースソフトウェア活用ビジネス実態調査:IPA 独立行政法人 情報処理推進機構
  23. ^ 451 Group survey highlights user concerns over Oracle's proposed ownership of MySQL
  24. ^ MySQLのライセンスポリシー
  25. ^ FOSS License Exception
  26. ^ MySQL Editions
  27. ^ 1.5. What Is New in MySQL 5.5
  28. ^ Oracle>About>Press Room>Oracle Announces General Availability of MySQL 5.6
  29. ^ Oracle Japan>Media centre home>ニュースリリース>MySQL5.6の一般提供開始を発表
  30. ^ MySQL 8.0: New Features in Replication
  31. ^ http://ossipedia.ipa.go.jp/doc/201
  32. ^ SQL ServerとOSSが勢力拡大の兆し――DBMS市場:ITmedia リサーチインタラクティブ 第6回調査 - ITmedia エンタープライズ
  33. ^ Supported Platforms: MySQL Database
  34. ^ Open ESQL

関連項目

  • MySQL Cluster英語版
  • MySQL Workbench英語版
  • ストレージエンジン
  • アプリケーションとパッケージ
    • MediaWiki - MySQLをバックエンドに用いることが可能である。
    • XAMPP
  • MySQLからフォークしたプロジェクト

外部リンク


MySQL

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/05 08:20 UTC 版)

Mac OS X Lion」の記事における「MySQL」の解説

プリインストールされなくなった為、自分インストールする、またはPostgreSQL利用可能

※この「MySQL」の解説は、「Mac OS X Lion」の解説の一部です。
「MySQL」を含む「Mac OS X Lion」の記事については、「Mac OS X Lion」の概要を参照ください。

ウィキペディア小見出し辞書の「_mysql」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「_mysql」の関連用語

_mysqlのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



_mysqlのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
デジタル大辞泉デジタル大辞泉
(C)Shogakukan Inc.
株式会社 小学館
OSS iPediaOSS iPedia
Copyright © Information-technology Promotion Agency, Japan. All rights reserved 2006-2025
PHPプロ!PHPプロ!
©COPYRIGHT ASIAL CORPORATION ALL RIGHTS RESERVED.
IT用語辞典バイナリIT用語辞典バイナリ
Copyright © 2005-2025 Weblio 辞書 IT用語辞典バイナリさくいん。 この記事は、IT用語辞典バイナリの【MySQL】の記事を利用しております。
PHP Documentation GroupPHP Documentation Group
Copyright © 1997 - 2025 by the PHP Documentation Group.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのMySQL (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのMac OS X Lion (改訂履歴)、RocksDB (改訂履歴)、列挙型 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS