MySQL
MySQLとは、オープンソースのデータベースである。世界で最も普及しているオープンソースのデータベースとして知られています[1]。
Linux界隈では「mariaDB」というMySQL互換のデータベースが普及しています(オラクルにMySQLが買収されたため、いろいろな経緯で代替のmariadbが登場した)。
本科目では、主にMySQLおよび、その互換ソフトウェアであるmariaDBについて説明します。
目次[編集]
- MySQL/インストール
- MySQL/基本操作 (起動方法、データベースの作成、テーブルの作成と削除など)
- MySQL/ユーザー
- MySQL/データの挿入
- MySQL/データの検索
はじめに[編集]
MySQLの採用しているデータベース言語を「SQL」と言います。
またMySQLは、リレーショナル型データベース(「関係データベース」ともいう)と言われる、データベースの設計思想に基づいています。
MySQLは、データベース言語にSQLを採用しているデータベース・ソフトウェアのうちのひとつです。
SQLは、データベース言語として、大いに普及しています。
MySQLもSQLも、プログラミング言語ではないです。データベース言語は、プログラム言語とは異なります。
また「SQLスクリプト」という、MySQLの命令をスクリプトとしてまとめたコードを実行できる機能をもつデータベースが一部企業の商品にありますが、しかしこのデータベース系スクリプトはデータベースの記録内容などの状況によって結果が変わるため、いわゆる一般的なプログラム言語としては機能しないです。
さて、データベースを使うことによって、データの保存や形式その他一切の技術的問題、例えば、データの保存や暗号化やユーザー権限などについて、考える必要がなくなります。そういった意味でデータベースは非常に有用です。
なお、MySQLはそれ自身がサーバーとしての機能を持つので、ネットワーク公開の設定をしてあればネットワーク越しにデータにアクセスする事も可能です[2]。
- SQLite との違い
なお、MySQLとは異なるSQLデータベース・ソフトウェアとして、サーバーとしての機能を持たない『SQLite』(エスキューライト)というSQLデータベース言語の別アプリケーションも存在します。
SQLiteは、単独のアプリではなく、他のアプリケーションにすでに組み込まれた形で使用されます。プログラム言語のPHPにはSQLiteが標準でPHP5以降に組み込まれています。また、Pythonでは標準ライブラリとしてSQLiteが用意されており、簡単に導入することができます。
このため、MySQLの文法とSQLiteの文法とは異なります。本書では SQLiteの文法については解説しません。 SQLiteの文法については、SQLiteを採用している各プログラム言語の書籍などを参照してください。
SQLiteは軽量化を目指しているため、MySQLに存在している機能のいくつかが、SQLiteには存在していないです。
たとえば、MySQLにはデータ型の概念があります。しかしSQLiteにはデータ型の概念が無いです。(このため desc コマンドなどはSQliteには無いです。なお desc コマンドについては wikibooks『MySQL/基本操作』で後述します。)
※ 下書き[編集]
※ 下記の節から、節「外部リンク」の直前までは下書きです。
内容が充実してきたら、専用のサブページを作成して、内容をサブページに移行してください。
バックアップ/外部出力の方法[編集]
MySQLは自動的にアプリ内でデータベースを保管してくれますが、しかしそれだけだと、外部にデータベースを渡すこともできないですし、OSが故障したりしたときのためのバックアップも不可能になってしまいます。
このため、バックアップが必要です。
mysqldump というコマンドを、ターミナル側(MySQLのログイン前の段階)で使用することで、データベースをバックアップ出力できます。(出力先は初期設定では、ホームファイル)
なので、もしMySQLにログイン中なら、いったん exit または quit コマンドで、MySQL からログアウトする必要があります。
さて、ターミナル側でバックアップのために使用するコマンドは
sudo mysqldump -u root -p 出力したい既存データベース名 > バックアップファイル名
というコマンドです。
なお、コマンド入力後にMySQLからもパスワードを聞かれます。これは、sudoコマンドを使うためのコマンドとは違いますので、混同しないように。
なお、MySQLのバックアップファイルはテキストファイル形式なので、メモ帳でも中身を読めます。
また、その中身の内容は、ほとんど、そのデータベースを構築するためのコマンド履歴です。
たとえば、本書の元素表のデータベースの例の場合、バックアップファイル中に
INSERT INTO `testTable` VALUES (1,'Hydrogen','H');
という、
過去のコマンド入力
MariaDB [testmysql]> insert into testTable (gensobangou,gensomei,gensokigou) values(1, "Hydrogen", "H" ); Query OK, 1 row affected (0.486 sec)
のほぼそのままのコマンド内容がバックアップファイルにも保管されています。
備考[編集]
ダンプ前のデータの保管場所は、
var/lib/mysql
です。mariadb でも、このフォルダにあります。
外部リンク[編集]
脚注[編集]
- ^ http://db-engines.com/en/ranking
- ^ Bill Lubanovic 著『入門Python3』、斉藤康毅 監訳 ・長尾高弘 訳、株式会社オライリー・ジャパン発行、オーム社 発売、2017年2月3日 初版 第6刷、246ページ