皆さんMySQL使ってますか?MySQLを使いはじめて、意外と引っかかるポイントが独自の専門用語の多さではないでしょうか。MySQLはデータベース管理システムなので、プログラミング言語とはまた違った独自の言い回しがちょくちょく現れます。
なんとなくわかるものから、今ひとつ意味がつかみにくいものまで様々ありますよね。そこでこの記事ではMySQLにまつわる様々な専門用語を解説していきます。さっそくいってみましょう!
MySQLとは?
まずはMySQLとはなんなのかについて見ていきましょう。一言で言えば、MySQLとはリレーショナルデータベース(RDB)を扱うRDB管理ツール(RDBMS)となります。専門用語が一気に出てきましたね。1つずつ理解していきましょう。
リレーショナルデータベースとは
リレーショナルデータベース(関係データベースともいいます)はテーブルと呼ばれる表を使い、関係モデルというデータモデルに基づいて設計開発されるデータベースです。
正確な定義を書くとやたらと難しそうですが、ざっくり言えば、Excelの表のようなものを複数もち、表同士が一定のルールで関係性を持っているもの、これがリレーショナルデータベースです。
初心者のうちはこれくらいざっくりした理解で問題ありません。テーブルについては後の章でもう一度取り上げます。よりしっかりとした説明が必要な方はこちらの記事も参考にしてみてください。
SQLとは
リレーショナルデータベースに対して何らかの操作、たとえばデータの追加、削除、更新、をするための言語をSQLといいます。
SQLはデータベース言語(問い合わせ言語)とよばれ、リレーショナルデータベースを効率的に扱うために作られた専用の言語です。2018年現在、リレーショナルデータベースのデータベース言語はほぼSQLに統一されている状態です。
RDBMSとは
リレーショナルデータベース管理システム(RDBMS)とはSQLを使い、リレーショナルデータベースを効率的に管理するためのシステムのことを指します。今回紹介しているMySQLはまさにこのRDBMSの代表選手です。
MySQL以外のRDBMSはというと、Oracle Database、Microsoft SQL Server、PostgreSQLなどたくさんあります。それぞれ、有償な代わりにサポートが手厚かったり、SQLを独自に拡張した方言が使いやすかったり、速度面で優位性があったりと色々な個性を持っています。
データベースの専門家としてキャリアを積んでいくならば、これからこういったRDBMSとも出会うことがあるでしょう。
また、リレーショナルデータベースが扱いを苦手とするビッグデータなどに対して、RDBMS以外の可能性を模索する動きもあります。興味のある方は「NoSQL」で調べてみるといいでしょう。
インストール時の専門用語
まずはインストール時に現れる専門用語をみていきます。バージョンやエディション等、細かな違いがありますので、この項目でしっかりと理解してしまいましょう!
community editionとは
まずはcommunity editionとはなんなのか、を確認します。歴史的な経緯が色々とあった結果、現在のMySQLにはオープンソースかつ、特定の条件下で無償利用可能なMySQL Community Editionと、有償で提供される商用版に大きく分けられます。
商用版は
- MySQL Standard Edition
- MySQL Enterprise Edition
- MySQL Cluster Carrier Grade Edition
の3種類があり、年間サブスクリプション制で料金が発生します。一方のcommunity editionはGPLライセンスとして提供されています。
個人が学習目的で利用する場合や、企業であってもインフラとして利用し、MySQL自体の再配布を伴わず、技術サポートが不要な場合はGPLライセンス版を利用することができます。初心者で学習目的の場合はcommunity editionを選んでおけば間違いありません。
community serverとは
上のcommunity editionと混同しやすいのがこちらのcommunity serverです。community editionはGPLライセンス版であることを示すエディションの表記でしたが、community serverはcommunity edition版のMySQL serverであることを示します。
長々と書きましたが、初学者にとっては要するに、無料で利用できるMySQLを使いたい場合はこちらを選べばオッケー、ということです。ダウンロードページには、他にも色々なツールが置いてあるので結構わかりにくいんですよね……
MySQL :: MySQL Community Downloads
Workbenchとは
Workbench、正式名称MySQL WorkbenchとはMySQLが提供している公式のクライアントツールです。
MySQL :: MySQL Community Downloads
GUIの設計が優れており、操作性が高く、MySQLのかなり深い部分まで操作することができるので、初心者から本業のデータベース管理者・設計者まで広く使われているツールです。大まかな使い方はこちらでも解説しているので、ご参照ください。
操作にまつわる専門用語
こちらでは操作にまつわる専門用語を解説していきます。
クエリとは
クエリとはSQLで書かれた命令文のことを指します。たとえば、次のようなものですね。
SELECT * FROM db1;
クエリを覚える = データベースの操作を覚えることになるので、MySQLの学習初期段階では色々なクエリを覚えていくことが基本になります。
なお、クエリと同じような意味でSQL文という表現もあります。ちなみにSQLとはデータベース言語の1つで、現在世界で最も普及しているデータベース言語です。MySQLの学習者にとっては次のように覚えておいて当面の間は問題ありません。
SQL文 = SQLの命令文 = MySQLのクエリ
なお、大幅に脱線しますが、MySQLに限らない場合、クエリはコンピュータに対する問い合わせを意味します。Googleなどの検索エンジンに放り込むキーワードも問い合わせの一つと言えるので「(検索)クエリ」と呼ばれます。
MySQL以外の場合でクエリという語をみかけたら、何かをコンピュータに問い合わせているんだなーくらいに思っておくと理解が進むかもしれません。
エイリアスとは
エイリアスは、MySQLにおいては別名を付ける機能といえます。たとえば、dayというカラムが唐突にあったとしましょう。このカラムは名前からでは何を表しているのかさっぱりわかりません。
企業で使われているのであれば、売上が発生した日なのか、受注した日なのか、納期なのか、はっきりわからなくては様々な問題に発展しかねません。そこで、SELECT文で表示する際にわかりやすい別名を付ける方法がエイリアスです。
たとえば、次のように書きます。
クエリ
SELECT day AS "契約日" FROM db2;
このようにカラム名に別名を付けてあげることで、利便性を上げる機能がエイリアスなのです。
なお、エイリアスはカラム名だけでなく、テーブル名にもつけることができます。あと、若干脇道にそれますが、そもそも論として、こういった具体的な内容のわからないカラム名をつけるべきではありません。
今回はあくまでも例の一つということで極端に抽象的な名前を付けましたが、現実でカラム名をつける時はもっと具体的な内容をつかめるクエリ名を使うようお願いいたします。
テーブルにまつわる専門用語
最後にテーブルにまつわる専門用語を紹介していきましょう。
テーブル・レコード・カラムとは
まずは基本的な用語からいきましょう。テーブルとはデータベースに格納されている表のことを指します。テーブルは横方向の行に1件分の情報を格納し、これをレコードと呼びます。
レコードはID、名前、生年月日などの要素が集まって作られています。レコードごとに共通する要素を縦方向にまとめ、この列をカラムと呼びます。つまり、テーブルはレコードとカラムから作られる、とも言うことができますね。
主キー・ユニークキーとは
主キーとはテーブルの中でレコードを一つに特定できる要素のことを指します。
たとえば、名前をつかってレコードを識別する場合、同姓同名の人がいたらデータ的に識別することができなくなってしまいますよね。そういったことを防ぐため、データベースでは主キーを設定して、すべてのレコードが識別できるように設計します。
具体例としてIDカラムを設定し、このカラムに一意の数字を入れることで主キーの役割をもたせることができます。主キーは他のレコードと異なる値を取らなければいけない一意制約と、かならず値を取らなければいけない非NULL制約があります。
これらの制約を満たすように主キーは設計されます。なお、主キーはプライマリーキー(PRIMARY KEY)とも呼ばれます。主キーの具体的な使用例はこちらの記事をご覧ください。
一方のユニークキーはテーブルの複数列に設定可能な属性です。ユニークキーに設定されたカラムではレコード間の重複が許されなくなります。
どういった場面でこれが役に立つのかというと、たとえばメールアドレスの登録があげられます。ユーザー登録テーブルのメールアドレスにユニークキーを設定しておくことで、既に登録されているメールアドレスを弾くことが可能になります。
データベースにメールアドレスの重複が起こらないので、同じ宛先に複数回メルマガが配信される、といった状況を防ぐことができます。意外と便利に使えますね。
ビューとは
ビューとは事前に定義したクエリから仮想的なテーブルを作り出す機能です。たとえば、参照する頻度の高いSELECT文があったとしましょう。そのSELECT文の条件設定がやたらと難解で、何度もクエリを打つのがしんどかったとします。
そういったときに、そのSELECT文を定義に持つ仮想的なテーブルにしてしまえば、何度もクエリを打ち込まなくて楽だよね、という発想でビューは使われています。
書式
書式は上の通りで、データベースやテーブルを作る時とほとんど同じですね。定義文にはSELECT文が入ります。
ビューはクエリの複雑さを回避する以外にも、重要なデータを権限の無いユーザーからマスクしたり、テーブルが増えすぎたときにビューを使って面倒な部分を回避させる、といった使い方もできます。
まとめ
いかがでしたか?今回はMySQLの基本的な専門用語について、状況別に解説してきました。MySQL、ひいてはSQLはデータベース言語なので、一般的なプログラミング言語とは勝手が異なるものです。
仮に普段からプログラミングに慣れていたとしても、見慣れない用語がちょくちょく現れるものです。この記事でそういった見慣れない用語に対してすこしでも苦手意識が減らすことができたのであれば幸いです。