これは MySQL のリファレンスマニュアルです; これは MySQL バージョン 3.22.21 について記述しています。
MySQL はとても高速で、マルチスレッド、マルチユーザ、頑丈な SQL (Structured Query Language)データベースサーバです。
Unix と OS/2 プラットフォームでは MySQL は基本的に無償であり、Microsoft プラットフォームでは、30日の試用期間を過ぎて使用する場合に MySQL ライセンスを 買わなければなりません. 「3 MySQL ライセンスとサポート」節参照.
MySQL ホームページは MySQL についての最新情報を提供しています。
MySQL の能力の説明については、 「1.4 MySQLの主な機能」節 を参照してください。
インストール方法については 「4 MySQL のインストール」節 を参照してください。 MySQL を新しいマシンや OS に移行するためのヒントについては 「G 他のシステムへの移植について」節 を参照してください。
3.21 リリースからのアップグレードについての情報は、 「4.16.2 3.21 から 3.22 バージョンへのアップグレード」節 を参照してください。
MySQL 導入のチュートリアルについては、 「8 MySQL チュートリアル」節 を参照してください。
SQL の例とベンチマーク情報についてはベンチマーキングのディレクトリを参照 してください。(`sql-bench' ディレクトリです)
新しい機能とバグ修正の履歴については 「D MySQL change history」節 を参照してください。
現在知られているバグと無い機能の一覧については 「E MySQL での既知のエラーと欠けているデザイン」節 を参照してくだ さい。
将来の計画については 「F MySQL に将来加えたいもの (The TODO)」節 を参照してください。
このプロジェクトへの全ての貢献者のリストについては 「C Contributors to MySQL」節 を参照してくだ さい。
重要:
バグ(エラー)レポート、質問、コメントはメーリングリスト mysql@lists.mysql.com に送ってください。 「2.3 バグや問題を報告する方法」節参照。
ソースディストリビューションでは、mysqlbug
スクリプトは `scripts' ディレクトリ
に見つけることができます。バイナリディストリビューションでは、mysqlbug
は
`bin' ディレクトリに見つけることができます。
このマニュアルへの追加または修正に関連する提案がある場合は、それらを MySQL マニュアルチーム (docs@mysql.com)に 送ってください。
MySQL は本当にマルチユーザ、マルチスレッドの SQL
データベースサーバです。SQL は世界でもっともポピュラーな
データベース言語です。MySQL は、サーバデーモン mysqld
と
多くの種類のクライアントプログラムとライブラリからなるクライアント/サー
バ実装です。
SQLは、情報を保存し、更新し、そしてアクセスすることを簡単にするために標準化された言語です。 例えば、あなたは、商品案内を検索するためにSQLを使って、 ウェブサイトに関するカスタマー情報を蓄積することができます。 MySQL は、ログや写真を保存させるにも、十分にはやく、フレキシブルです。
MySQL の主な目的は高速で頑丈で簡単に使用できることです。 MySQL は独自に開発されました。我々は、とても大きなデータ ベースを、他のデータベースベンダが我々に提供するものよりも速く、重要度の 順に処理できる SQL サーバを必要としていたからです。我々は、10,000 テー ブルを含む 40 以上のデータベースの環境で 1996 年から MySQL を使 用しています。そのテーブルの 500 以上は 700万以上のレコードを持ちます。 これは約100ギガバイトの、基幹業務のデータです。
MySQL が作成される上での基本は、何年もの間、製品環境の高い要求 で使用されていたルーチンのセットです。MySQL はまだ開発中ですが、 豊富でとても有用な関数セットを既に提供しています。
MySQL の公式な発音は ``My Ess Que Ell'' です(MY-SEQUEL ではあり ません)。
このマニュアルは以下の方々により訳されました (ハンドル名だけ書きます。敬称略。翻訳サーバーに登録した順 :) ):
このマニュアルは現在 Texinfo, プレーンテキスト, Info, HTML, PostScript, PDF バージョン があります。サイズが大きいため Postscript と PDF バージョンは MySQL のディストリビューションには含まれていませんが、別にダウン ロードするようになっています。http://www.mysql.com.
プライマリドキュメントは Texinfo ファイルです。HTML バージョンは
texi2html
の変更されたバージョンで自動的に提供されます。プレーン
テキストと Info バージョンは makeinfo
で提供されます。PostScript
バージョンは texi2dvi
と divps
を使用して提供されます。PDF
バージョンは Ghostscript ユーティリティ ps2pdf
で提供されます。
このマニュアルは David Axmark, Michael (Monty) Widenius, Paul DuBois, Kim Aldale によって作成され、維持されています。他の貢献者については 「C Contributors to MySQL」節 を参照してください。
このマニュアルは特定の印刷上の表記を使用しています:
constant
mysqladmin
がどのように動作するかを見るためには、
--help
オプションをつけて起動してください。''
コマンドが特定のプログラムによって実行されることを意味することを表す時、
コマンドと共に表示されるプロンプトによって、そのプログラムを表します。例えば、
shell>
は、あなたのログインシェルから実行するコマンドを表し、
mysql>
は mysql
クライアントから実行するコマンドを表します:
shell> type a shell command here mysql> type a mysql command here
シェルコマンドは Bourne シェル構文で示されます。csh
形式のシェ
ルを使用している場合は、わずかに変更してコマンドを発行する必要があるでしょ
う。例えば、環境変数を設定してコマンドを実行するシーケンスは、Bourne シェ
ル構文では次のようになります:
shell> VARNAME=value some_command
csh
では、次のようなシーケンスを実行してください:
shell> setenv VARNAME value shell> some_command
データベース名, テーブル名, フィールド名はコマンドの中で置換しなければいけない
ことがよくあります。このような置換が必要なことを示すために、このマニュア
ルは db_name
, tbl_name
, col_name
を使用します。
例えば、次のようなステートメントを見た場合:
mysql> SELECT col_name FROM db_name.tbl_name;
これは、同様のステートメントを入力するためには、おそらく次のように、あな た自身のデータベース名, テーブル名, フィールド名を供給することを意味します:
mysql> SELECT author_name FROM biblio_db.author_list;
SQL ステートメントは大文字でも小文字でも記述できます。このマニュアルが
SQL ステートメントを示すときは、特別なキーワードを説明している時には(そ
れを強調するために)そのキーワードに大文字が使用され、残りのステートメン
トに小文字が使用されます。SELECT
ステートメントの説明中には次が見
られるでしょう:
mysql> SELECT count(*) FROM tbl_name;
一方、COUNT()
関数の説明中では、ステートメントは次のように書かれ
ます:
mysql> select COUNT(*) from tbl_name;
特別な強調が意図されない場合、全てのキーワードは大文字で書かれます。
構文の説明中では、角括弧(`[' と `]')はオプションの単語や節であ ることを示すために使用されます:
DROP TABLE [IF EXISTS] tbl_name
構文要素がいくつかのものからなる場合、垂直バー(`|')で区切られます。 選択セットから一つのメンバを選ぶことができるときは、角括弧中にリストされ ます。選択セットから一つのメンバを選ぶ必要があるときは、波括弧(`{' と `}')中にリストされます:
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str) {DESCRIBE | DESC} tbl_name {col_name | wild}
我々自身の速くて低レベルな (ISAM) ルーチンを使用する、我々のテーブルへ
接続するために、 我々は一度
mSQL
を使用するつもりでした。しかし、いくつかのテストの後、我々は
mSQL
は我々が必要とするほど高速ではなく、柔軟度を持っていないとの
結論に至りました。この結果、mSQL
とほとんど同じ API インタフェー
スを持つ、我々のデータベースへの新しい SQL インタフェースに帰結しました。
この API はサードパーティコードの移植を簡単にするために選択されました。
MySQL の名前の由来は完全には明らかではありません。我々のベース ディレクトリと多くのライブラリとツールは接頭辞 ``my'' を 10 年以上も使っ ています。しかし、Monty の娘(何年か若い)も My という名前です。そのため、 この2つのどちらが MySQL に名前を与えたかは、我々にとっても未だ 謎です。
MySQL の重要な特徴のいくつかを以下の項目にあげます:
FLOAT
, DOUBLE
, CHAR
, VARCHAR
, TEXT
,
BLOB
, DATE
, TIME
, DATETIME
, TIMESTAMP
,
YEAR
, SET
, ENUM
型。 「7.3 フィールド型」節参照。
SELECT
と WHERE
部内での全ての演算子と関数のサポー
ト。例:
mysql> SELECT CONCAT(first_name, " ", last_name) FROM tbl_name WHERE income/dependents > 10000 AND age > 30;
GROUP BY
と ORDER BY
節の完全なサポート。グループ関数
(COUNT()
, COUNT(DISTINCT)
, AVG()
, STD()
, SUM()
, MAX()
,
MIN()
) のサポート。
LEFT OUTER JOIN
のサポート。
CHAR
または VARCHAR
フィールドの先頭部分を使用できます。
INSERT
を使用でき、明示的に値が与えられていないフィールドはそのデ
フォルト値が設定されます。
libtool
を使用しています。
purify
)でテ
ストされています。
myisamchk
を含んでいます。これは、テーブル検査、最適化、修復のため
のとても速いユーティリティです。 「13 Maintaining a MySQL installation」節参照。
DELETE
, INSERT
, REPLACE
, UPDATE
は
変更された(影響を受けた)行の数を返します。
ABS
は正しいフィールド
名です。制限は、関数呼び出しに、関数名とそれに続く `(' の間に空白が
許されないことだけです。 「7.31 Is MySQL picky about reserved words?」節参照。
--help
と -?
オプションで呼び出すことができます。
SHOW
コマンドはデータベース、テーブル、イン
デックスについての情報を取出すために使用できます。EXPLAIN
コマン
ドはオプティマイザがどのようにクエリを解析するかを決定するために使用
できます。
この節では、``MySQL はどれくらい安定か?'' と ``私はこのプロジェ クトで MySQL に依存できるか?'' という質問について回答します。
我々はここで、いくつかの問題を明らかにし、多くの人に関係すると思われるさ らに重要な質問のいくつかを回答することを試みます。この節は、メーリングリ スト(そこではとても活発にバグが報告されています)から取り込まれた情報が一 緒に置かれています。
TcX では、MySQL は 1996 中頃から我々のプロジェクトで何の問題も なく動いていました。広く公にリリースされた時、我々は、MySQL 内 に ``テストされていないコード'' の部分があることに注意しました。これは、 我々とは異なる方法でクエリを作成する新しいユーザによってすぐに見つけられました。 新しい各リリースは、(多くの新しい機能を持っているのに)前のものよりも問題 は少なくなります。そして次のリリースの一つを ``安定'' と呼ぶことができるよ うに我々は望んでいます。
MySQL の各リリースは実用的で、ユーザが ``グレイゾーン'' からの コードの使用を開始する時にだけ問題があります。当然、外部のユーザは、何が グレイゾーンかを知ることができません; この節で現在知られているこれらを示 してみます。 説明は MySQL の 3.22.x バージョンで扱われます。知られていて報告 されているバグは全て最新のバージョンで修正されています。bugs 節に 書かれているバグは除きます。それらは ``設計'' 関連のものです。 「E MySQL での既知のエラーと欠けているデザイン」節参照.
MySQL は複数の階層と様々な独立モジュールで書かれています。これ らのモジュールは、それぞれがどのようにテストされているかとともに次にリス トされています:
mysql
, mysqladmin
, mysqlshow
,
mysqldump
, mysqlimport
を含みます.
--skip-locking
フラグつきで動かすべ
きです。知られている問題は、いくつかの Linux システムと NFS マウントされ
たファイルシステム使用時の SunOS です。
fcntl()
コールでだけ問題が見つかっています。これは mysqld
への --skip-locking
オプションの使用で修正できます。何人かは
0.5 リリースで lockup 問題を報告しました。
SELECT
では、ステートメントは通常一度のフレームで行われるため、
mutex locking/thread juggling はありません。
LOAD DATA...
, INSERT ... SELECT
-- 安定
ALTER TABLE
-- 安定
mysqlaccess
-- ガンマ
GRANT
-- ガンマ
TcX は代金を支払った顧客のために email サポートを提供しています。しかし MySQL メーリングリストは通常、全ての一般的な質問に回答を提供し ています。バグは通常すぐにパッチで修正され、深刻なバグには、ほとんどいつ も新しいリリースがあります。
MySQL 自身は 2000 年問題(Y2K)に対して何の問題も持っていません:
2069
年まで日付には何の
問題もありません; 全ての2桁の年は 1970
から 2069
の範囲に
あると見なされます。これは、year
フィールド内に 01
を格納する場
合、MySQL はそれを 2001
として扱うということを意味します。
YEAR
フィールド型は
0
と 1901
から 2155
までの年を1バイトで格納でき、2
桁または4桁で表示できます。
2000年安全でない方法で MySQL を使用するアプリケーションでは問題
になります。例えば、多くの古いアプリケーションは4桁値ではなく2桁値(これ
は曖昧です)を使用して年を格納し操作します。この問題は、00
または
99
のような値を ``欠けている'' 値の表われとして使用するアプリケー
ションによって作られます。
あいにく、これらの問題を修正するのは困難です。様々なアプリケーションが様々 なプログラムによって書かれていて、その各々が慣習と日付操作関数の様々な組 み合わせを使用するからです。
これは、MySQL が 2030 年までの日付に何の問題もないことを示す簡単なテスト です!
mysql> DROP TABLE IF EXISTS y2k; mysql> CREATE TABLE y2k (date date, date_time datetime, time_stamp timestamp); mysql> INSERT INTO y2k VALUES ("1998-12-31","1998-12-31 23:59:59",19981231235959); mysql> INSERT INTO y2k VALUES ("1999-01-01","1999-01-01 00:00:00",19990101000000); mysql> INSERT INTO y2k VALUES ("1999-09-09","1999-09-09 23:59:59",19990909235959); mysql> INSERT INTO y2k VALUES ("2000-01-01","2000-01-01 00:00:00",20000101000000); mysql> INSERT INTO y2k VALUES ("2000-02-28","2000-02-28 00:00:00",20000228000000); mysql> INSERT INTO y2k VALUES ("2000-02-29","2000-02-29 00:00:00",20000229000000); mysql> INSERT INTO y2k VALUES ("2000-03-01","2000-03-01 00:00:00",20000301000000); mysql> INSERT INTO y2k VALUES ("2000-12-31","2000-12-31 23:59:59",20001231235959); mysql> INSERT INTO y2k VALUES ("2001-01-01","2001-01-01 00:00:00",20010101000000); mysql> INSERT INTO y2k VALUES ("2004-12-31","2004-12-31 23:59:59",20041231235959); mysql> INSERT INTO y2k VALUES ("2005-01-01","2005-01-01 00:00:00",20050101000000); mysql> INSERT INTO y2k VALUES ("2030-01-01","2030-01-01 00:00:00",20300101000000); mysql> INSERT INTO y2k VALUES ("2050-01-01","2050-01-01 00:00:00",20500101000000); mysql> SELECT * FROM y2k; +------------+---------------------+----------------+ | date | date_time | time_stamp | +------------+---------------------+----------------+ | 1998-12-31 | 1998-12-31 23:59:59 | 19981231235959 | | 1999-01-01 | 1999-01-01 00:00:00 | 19990101000000 | | 1999-09-09 | 1999-09-09 23:59:59 | 19990909235959 | | 2000-01-01 | 2000-01-01 00:00:00 | 20000101000000 | | 2000-02-28 | 2000-02-28 00:00:00 | 20000228000000 | | 2000-02-29 | 2000-02-29 00:00:00 | 20000229000000 | | 2000-03-01 | 2000-03-01 00:00:00 | 20000301000000 | | 2000-12-31 | 2000-12-31 23:59:59 | 20001231235959 | | 2001-01-01 | 2001-01-01 00:00:00 | 20010101000000 | | 2004-12-31 | 2004-12-31 23:59:59 | 20041231235959 | | 2005-01-01 | 2005-01-01 00:00:00 | 20050101000000 | | 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 | | 2050-01-01 | 2050-01-01 00:00:00 | 00000000000000 | +------------+---------------------+----------------+ 13 rows in set (0.00 sec)
これは、DATE
と DATETIME
型は未来のいかなる日付において
問題のないことををしめします (これら日付は 9999 年まで扱えます)
TIMESTAMP
型は、時刻を保存しますが、2030-01-01
までです。
TIMESTAMP
は 32-bit マシンでは 1970
から 2030
の範囲です。
64-bit マシンでは、 2106
年まで扱えれます。
MySQL は 2000年対応ですが、曖昧でない入力を提供するのはあなたの 責任です。曖昧な日付の入力データ(2桁の年の値)の扱いについての MySQL の規則については 「7.3.6.1 西暦2000年問題とデータ型」節 を参照してください。
この本は MySQL メーリングリストの数人によって推奨されています:
Judith S. Bowman, Sandra L. Emerson and Marcy Darnovsky The Practical SQL Handbook: Using Structured Query Language Second Edition Addison-Wesley ISBN 0-201-62623-3 http://www.awl.com
この本も MySQL ユーザーにいくつかの推薦を受けています:
Martin Gruber Understanding SQL ISBN 0-89588-644-8 Publisher Sybex 510 523 8233 Alameda, CA USA
SQL チュートリアルがネット上にあります http://www.geocities.com/SiliconValley/Vista/2207/sql1.html
SQL in 21 Tagen (online book in German language): http://www.mut.de/leseecke/buecher/sql/inhalt.htm
MySQL
with other programsmSQL
mSQL
TCL
DBI
/DBD
.
DBI
/DBD
modules homepage
MySQL を使用した多くの web ページもあります。 「A Some MySQL users」節参照。この リストへ追加できるものを webmaster@mysql.com に送ってください。 We now require that you show a MySQL logo somewhere (It is okay to have it on a ``used tools'' page or something similar) to be added.
Go to the first, previous, next, last section, table of contents.