MySQL(マイエスキューエル)は、オラクルが開発するRDBMS(リレーショナルデータベースを管理、運用するためのシステム)の実装の一つである。
世界的にはこの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だった。
その理由として、以下の理由が指摘されている。
だが、そのような状況は徐々に変遷し、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と明示的に使用宣言しておく必要がある。