身近によく聞くデータベースですが、皆さんは「データベース」とは何かと聞かれて説明できますか?
コンピュータを使うときには、ほとんどの場合、何らかのデータベースへのアクセスが生じます。この機会にぜひ見ておきましょう。
データベースとは何か、データベースの種類、データベース関連の用語について、プログラミング初心者向けに説明します。
目次
データベース(DB)とは
- データを格納する入れ物
- 検索や蓄積が容易にできるよう整理された情報の集まり
- すべてのシステムがデータを取り扱っている。
- データを取り扱う手段として、ほぼ全てのシステムが何かしらの、データベースを使用。
Webサービスを開発するうえで、データベースの学習は必須といえます。
どこでデータベースが利用されているの?
- ECサイト (アマゾン、楽天、ヨドバシカメラ …)
- SNS(Facebook, Twitter, Instagram … )
- オンライン学習サイト (AIdemy、 こどもちゃれんじ … )
- 会計ソフト(弥生会計、freee、 MFクラウド… )
- 銀行の預金情報管理(三菱東京UFJ銀行、三井住友銀行、みずほ銀行… )
- 住民票管理(地方自治体)
- ブログ (アメブロ、ライブドアブログ、 WordPressを使ったサイト…)
- スマートフォン(アドレス帳などの管理、アプリのデータ管理… )
などなど。
データベースを使っていないIT機器を探す方が難しいです。
○ECサイトを例に考えると
- ユーザー情報 : 山田 太郎, yamada@example.com, 090-0000-0000, 東京都千代田区xxxx, ・・・
- 商品情報 : はじめてのPython入門, 3,800, ・・・
- 売上情報 : 誰が、何を、いくらで、いくつ買った, ・・
⇒ このようなデータを保存して扱うために、データベースを利用しています。
データベースが必要な理由
- データがプログラムに依存しない
- システム間でデータを共有できる
- データを一元管理できる(矛盾がない・整合性)
- バックアップが容易
- データベースの障害時に、バックアップを利用してデータを復旧できる
データベースマネジメントシステム(DBMS)とは
- データベースを管理するコンピュータシステムのこと。
- データを操作する手段や、操作の整合性管理、バックアップや障害対策など、さまざまな機能をもっている
DBMSの種類
DBMS(データモデル) には次のものがあります。
– 階層型データベース(ツリー型)
–ネットワーク型データベース(Network (CODASYL) Data Model)
–リレーショナルデータベース(Relational Database : RDB)
– XML型データベース(XML Database : XMLDB)
– オブジェクト型データベース(Object Oriented Database : OODB
<参考>
– NoSQL(ノーエスキューエル):一般にRDBMS以外のデータモデルを使用しているもの。(Not Only SQLの略で、リレーショナル型データベースにおけるACID特製に縛られない、自由なデータ方式が特徴。ビッグデータ等を大量に保存できる。
このうちRDBについて、もう少し詳しく説明していきます。
リレーショナルデータベース(RDB)
- 現在もっとも広く利用されているデータベース
- エクセルのシートのように列と行からなる2次元の表形式(テーブル)でデータを管理。
- 複数の表が項目の値で関係付けられている。
- SQLという専用の言語を使ってデータを操作する。
代表的な製品
- Oracle Database(オラクルデーターベース、オラクル) : Oracle社のRDBMS
- SQL Server (エスキューエルサーバー):Microsoft社のRDBMS
- DB2(ディービーツー) : IBM社のRDBMS
※補足:RDMBS(リレーショナル・データベース・マネジメント・システム)
オープンソース
- MySQL(マイエスキューエル) : オープンソースのRDBMS ☆本コースで使用
- MariaDB (マリアディービー): MySQLから派生したオープンソースのRDBMS
- PostgreSQL(ポストグレエスキューエル, ポストグレス, ポスグレ): オープンソースのRDBMS
リレーショナルデータベースの特徴
- RDB(Relational DataBase) と呼ばれる
- 2次元の表形式(リレーション)でデータを管理する
- 表と表との間に「関係(リレーション)を定義する」ことができる。
- 関連を利用してデータを定義することで効率的なデータ管理が可能になる。
データベース言語
SQLはデータベース言語であり、データベースを管理するソフトウェアを操作・制御することが目的です。言語といっても、プログラミング言語ではないのでシステムを開発することはできません。
SQLとは
- Structured Query Languageの略
- データベースの操作するための言語
- ISO(国際標準化機構)やJIS(日本工業規格)によって標準化されているため、特定のDBMS製品に依存せず、データを扱うことが出来る
SQLはデータベース言語の中で、最も普及している言語の一つです。
DBMS(データベース管理システム)上でデータやデータベースを制御するための言語であり、ユーザーやシステムからの命令を受けてRDB(リレーショナルデータベース)にクエリ(問い合わせ)を行い、結果を返します。返ってきた結果はモニターなどに表示されます。
SQLはデータベース言語としてISO(国際標準化機構)で規格化されています。そのため一つのデータベース用のSQLを覚えたら、そのほかのほとんどのRDBで同じように利用できます。
SQLの使えるデータベースには、Oracle社のOracle Database、Microsoft社のMicrosoft SQL ServerやAccess、オープンソースのMySQLやPostgreSQLなどがあり、それぞれ異なるデータベース・エンジンを搭載していますが、どれもSQLで操作可能です。
これまではRDBMSごとにさまざまな規格を使っていましたが、SQLに改名されてからANSI(米国国家規格協会)やISOで標準化されました。SQLの標準規格は現在も数年おきに改訂されています。
(各データベース毎に、方言みたいな微妙な違いがある)
SQLの特徴
現在の DBMS では、リレーショナル型を多く採用しています。そのため、SQLを理解することで、ほとんどのDBMSを利用することが可能です。
■一方的に命令する
SQLは、対話のように文をやりとりして命令を行います。プログラミング言語はソースコードに命令を順番に記述して実行しますが、SQLはシンプルな命令文を一方的にデータベースに送るだけです。
基本的に1文で完結し、複雑な処理を行う場合は、返ってきた処理の結果に応じてまた命令を送るというようにデータベースと対話するように命令文をやりとりします。
■SQLのみではアプリを作成できない
SQLはデータベースを操作するための言語であり、アプリケーションを作成したり操作したりする機能はありません。アプリケーションやシステムを開発するときには、ほかのプログラムやプログラミング言語と組み合わせて使用します。
アプリケーションからデータベースを利用したい場合は、アプリケーションにSQLの命令文を記述します。RDBMSを操作して返ってきた値をアプリケーションで利用し、さらに処理を繰り返し行います。
■SQLでデータベースを操作する方法
SQLでデータベースを操作するための命令を送るには、2つの方法があります。
<対話型>
ユーザーがプログラムのコマンドラインなどでSQLのコマンドを打ち込み、直接操作する方法で、対話型と呼ばれています。この場合は、処理の結果が表示されるのを待って次の命令を送ります。
<埋め込み型>
Javaなどほかのプログラミング言語で記述したソースコードに直接SQL文を埋め込み、動的に操作する方法です。ほかのプログラムに埋め込むことで、SQLをシステムの一部として使用します。
命令文をネスト構造(入れ子)にして、命令1の結果に応じて「~ならば命令2、そうでなければ命令3」などの処理を行うことで、最終的な結果を得ることができます。これをサブクエリといいます。
SQLの種類
SQLは、大きく分けて3種類の言語から構成されています。データベースを制御したり操作したりする際に使い分けられ、すべて命令文で動詞と目的語を組み合わせた構文です。
データ定義言語(Data Definition Language)
データ定義言語はDDLと略され、RDBMSで扱うオブジェクト(テーブルやインデックスなど)の構造や、オブジェクト同士の関係を定義する構文です。
種 類 | SQL | 内 容 |
データ定義言語 | CREATE | 新しい低ブルの作製 |
(DDL) | ALTER | 既存のテーブルの変更 |
DROP | 既存のテーブルの削除 | |
RENAME | テーブル名の変更 | |
TRUNCATE | テーブルの切り捨て |
データ操作言語(Data Manipulation Language)
データ操作言語はDMLと略され、データベースを操作するための構文です。
目的語やさまざまな条件を示すキーワードと組み合わせて使われ、多くのパターンがあります。目的語には「~以上」「~以下」などの条件をつけることもでき、SQL関数と呼ばれる関数を使用することもできます。
種 類 | SQL | 内 容 |
データ操作言語 | SELECT | データの検索 |
(DML) | INSERT | 新しいレコードの挿入 |
UPDATE | 既存のレコードの更新 | |
DELETE | 既存のレコードの削除 | |
MERGE | レコードのマージ |
データ制御言語(Data Control Language)
データ制御言語はDCLと略され、データへのアクセスを制御する構文です。トランザクションやシステムを管理したり、ユーザーのアクセス権を制御したりするために使われます。
種 類 | SQL | 内 容 |
データ制御言語 | GRANT | データベースに対するアクセス権限の付与 |
(DCL) | REVOKE | データベースに対するアクセス権限の削除 |
トランザクション | COMMIT | 更新の確定 |
制御 | ROLLBACK | 更新の取り消し |
SAVEPOINT | セーブポイントの設定 |
まとめ
コンピュータを使うときには、ほとんどの場合、何らかのデータベースへのアクセスが生じます。
近年はビッグデータの活用によるマーケティングが話題になっていますが、ビッグデータをデータ分析処理するインターフェースとして、SQLが提供されていることが一般的です。
そのため、SQLは重要なデータベース言語として見直されています。
データベースに関するスキルは、Webエンジニアにとって必須のスキルとなっていますので、確実に身につけましょう。