MySQL
本書では、MySQLおよびその互換ソフトウェアであるMariaDBについて解説します。MySQLはオープンソースのRDBMSであり、世界で最も広く普及しているデータベースの1つです[1]。
2010年、オラクルがサン・マイクロシステムズを買収したことでMySQLの所有権はオラクルに移管されましたが、この影響を受けてMySQLのオリジナル開発者はMariaDBというMySQLのフォークをリリースしました。
MariaDBはMySQLと高い互換性を持っており、MySQLクライアントを変更することなくMariaDBに接続できることが特徴です。
目次
編集- MySQL/インストール
- MySQL/基本操作 (起動方法、データベースの作成、テーブルの作成と削除など)
関連リンク
編集SQL一般の仕様や文法についての解説は
にあります。
はじめに
編集MySQLは、オープンソースのリレーショナルデータベース管理システムです。MySQLは、高速、信頼性が高く、安定性があり、多数のプラットフォームで動作するため、世界中の多くの企業や個人によって広く使用されています。MySQLは、Webサイトやアプリケーション、ビジネスインテリジェンス、データウェアハウス、組織内のデータ管理など、さまざまな用途に適しています。
本書では、MySQLの基本的な概念、機能、および操作について説明します。MySQLを使って、データベースの作成、管理、およびクエリの作成について学びます。また、MySQLの高度なトピックについても説明します。
本書は、MySQLを使ってデータベースを設計する方法、テーブルを作成する方法、データを挿入する方法、データをクエリする方法、およびデータを更新する方法について、実用的な手順を提供します。また、MySQLのセキュリティ機能、バックアップとリカバリ、パフォーマンスチューニングについても詳しく説明します。
本書は、MySQLの新しいユーザーにとっても、経験豊富なユーザーにとっても、価値のあるリソースです。MySQLについて学ぶための最良の方法の1つは、実際に手を動かして操作することです。本書のチュートリアルと演習を完了することで、MySQLを効果的に使用するための基礎知識を身につけることができます。
SQLite との違い
編集SQLiteは、MySQLのようなサーバークライアントモデルとは異なり、アプリケーションプログラムにライブラリとしてリンクして使用します。 さらに、SQLiteのデータベースは単一のファイルに格納されます。プログラム言語のPythonには、標準でsqlite3モジュールが提供され、SQLite3をサポートしています。また、PHP5以降のPHPも標準でサポートしています。
SQLiteは、MySQLとは異なり、データ型に対するアプローチが異なります。MySQLでは、フィールドの型がスキーマで定義されているため、値がINSERTされた場合には、型変換が自動的に行われませんが、SQLiteでは自動的に型変換されます(制約をかけることもできます)。
さらに、MySQLのdescコマンドは、SQLite3の.schemaコマンドに相当します。descコマンドについては、MySQL/基本操作で説明します。
※ 下書き
編集※ 下記の節から、節「外部リンク」の直前までは下書きです。
内容が充実してきたら、専用のサブページを作成して、内容をサブページに移行してください。
バックアップ/外部出力の方法
編集MySQLはサーバーのファイルシステムにデータベースを保管しますが、外部にデータベースを渡したり、システムの障害などに備えるためのデータの保全も必要です。
このため、データベースのダンプが必要です。
mysqldump を使用することで、データベースをバックアップ出力できます(出力先のディフォルトは標準出力です)。
もしMySQLにログイン中なら、いったん exit または quit コマンドで、MySQL からログアウトする必要があります。
- 形式
sudo mysqldump -u root -p 出力したい既存データベース名 > バックアップファイル名
- コマンド入力後にMySQLからパスワードを聞かれます。
MySQLのバックアップファイルはプレーンテキストなので、テキストエディタで中身を読むことができます。 その内容は、リストアをリダイレクトやファイルからのコマンド読込みで可能になるよう、コマンド形式で書かれています。
本書の周期律表のデータベースの例の場合、バックアップファイル中に
INSERT INTO `testTable` VALUES (1,'Hydrogen','H');
という、コマンドでレコードが作られましたが
ダンプ中に
MariaDB [testmysql]> insert into testTable (原子番号,元素名,元素記号) values(1, "Hydrogen", "H" ); Query OK, 1 row affected (0.486 sec)
- とあります。
- これを、コマンドそのもの記録されていると思いがちですが、コマンドが保存されるのではなく、現状のレコードがコマンドの形式で保存されるので、勘違いしないようにしましょう(トランザクションを積んだりジャーナリングが行われているわけではありません)。
データベースファイルのありか
編集/var/lib/mysql
がディフォルトで使われましたが、ココにない場合は my.cnf
の datadir=
セクションで確認できます。
my.cnf
自体のありかは
mysql --help | grep "my.cnf"
でわかります。