プログラミングする >> MySQL

MySQL(マイエスキューエル)は、オラクルが開発するRDBMS(リレーショナルデータベースを管理、運用するためのシステム)の実装の一つである。

WEBクリエーターのために

  • ヨガ美しくなります。インストラクターを目指す方へ!

利用状況

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

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

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

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

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

開発言語

C,C++,Eiffel,Smalltalk,Java(JNI),Lisp,Perl,PHP,Python,Ruby,TclはMySQLのAPIを介してデータベースにアクセスできる。またODBCインターフェース (MyODBC) もサポートされている。MySQL自体はCおよびC++で開発されている。埋め込みSQLによる開発はサポートされていない。

日本語処理

MySQL5は、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を指定する。

たとえば、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 Rails、CakePHPのデフォルトはutf8だが、データベース接続設定でencodingをutf8と明示的に使用宣言しておく必要がある。

WEBニュース

    MySQLの管理ツール

    • MySQL Workbench(5.2以降)
    • phpMyAdmin
    • phpMyBackupPro
    • Navicat MySQL
    • MySQL Administrator
    • Database Master
    • Sequel Pro

    関連情報