MySQL

出典: フリー教科書『ウィキブックス(Wikibooks)』
ナビゲーションに移動 検索に移動

メインページ > 工学 > 情報技術 > プログラミング > MySQL

Wikipedia
ウィキペディアMySQLの記事があります。

MySQLとは、オープンソースのデータベースである。世界で最も普及しているオープンソースのデータベースとして知られています[1]

Linux界隈では「mariaDB」というMySQL互換のデータベースが普及しています(オラクルにMySQLが買収されたため、いろいろな経緯で代替のmariadbが登場した)。

本科目では、主にMySQLおよび、その互換ソフトウェアであるmariaDBについて説明します。


目次[編集]

関連リンク[編集]

SQL一般の仕様や文法についての解説は

にあります。

はじめに[編集]

MySQLの採用しているデータベース言語を「SQL」と言います。

またMySQLは、リレーショナル型データベース(「関係データベース」ともいう)と言われる、データベースの設計思想に基づいています。

MySQLは、データベース言語にSQLを採用しているデータベース・ソフトウェアのうちのひとつです。


SQLは、データベース言語として、大いに普及しています。

MySQLもSQLも、プログラミング言語ではありません。データベース言語は、プログラム言語とは異なります。

また「SQLスクリプト」という、MySQLの命令をスクリプトとしてまとめたコードを実行できる機能をもつデータベースが一部企業の商品にありますが、しかしこのデータベース系スクリプトはデータベースの記録内容などの状況によって結果が変わるため、いわゆる一般的なプログラム言語としては機能しません。

さて、データベースを使うことによって、データの保存や形式その他一切の技術的問題、例えば、データの保存や暗号化やユーザー権限などについて、考える必要がなくなります。そういった意味でデータベースは非常に有用です。


なお、MySQLはそれ自身がサーバーとしての機能を持つので、ネットワーク公開の設定をしてあればネットワーク越しにデータにアクセスする事も可能です[2]

SQLite との違い[編集]

SQLiteは、サーバークライアントモデルのMySQLとは異なり、アプリケーションプログラムにライブラリーとしてリンクされ利用されます。 また、データーベースは単一のファイルです。 プログラム言語のPythonには標準でモジュール sqlite3 が提供されSQLite3をサポートしています。またPHP5以降のPHPも標準でサポートしています。 データー型に対するアプローチもMySQLとは異なり、スキーマーで定義されたフィールドの型と異なり値がINSERTされた場合、自動的に型変換します(制約をかけることはできます)。 また、MySQLの desc コマンドは、sqlite3 の .schema コマンドが相当します(desc コマンドについては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 でも、このフォルダにありました)。

しかし2021年現在、Fedora Linuxでは保管場所の仕様が変わったようで、ここにはありません。

外部リンク[編集]

脚注[編集]

  1. ^ http://db-engines.com/en/ranking
  2. ^ Bill Lubanovic 著『入門Python3』、斉藤康毅 監訳 ・長尾高弘 訳、株式会社オライリー・ジャパン発行、オーム社 発売、2017年2月3日 初版 第6刷、246ページ