【DB】DataBase(データベース)について

2023/07/22に公開

データベースとは

データベースとは、管理・活用できるように集めた大量のデータ、あるいはそれを処理するソフトウェアのことをいいます。

データベースとは、構造化した情報またはデータの組織的な集合であり、通常はコンピューター・システムに電子的に格納されています。データベースは通常、データベース管理システム(DBMS)で制御します。データとDBMS、およびそれらに関連するアプリケーションをまとめてデータベース・システムと呼びます。多くの場合は単にデータベースと呼んでいます。

現在運用されている最も一般的なタイプのデータベースに格納されているデータは、処理とデータのクエリを効率化するために、一連のテーブルの行と列でモデル化されていることが普通です。このようにデータをモデル化すれば、アクセス、管理、変更、更新、制御、および整理が容易になります。ほとんどのデータベースでは、データの書き込みとクエリに構造化クエリ言語(SQL)を使用します。

構造化クエリ言語(SQL)とは

SQLは、データをクエリ、操作、定義するほか、アクセス制御を提供するためにほとんどすべてのリレーショナル・データベースで使用されているプログラミング言語です。SQLは、Oracleを主な協力組織として1970年代にIBMで最初に開発され、SQL ANSI標準の発行に結実しています。それ以来、IBM、Oracle、Microsoftなどの組織がSQLから多くの拡張機能を作り出してきました。SQLは現在でも広く使用されていますが、新しいプログラミング言語も登場し始めています。

データベースの進化

データベースは、1960年代初頭の登場以来、劇的に進化してきました。階層型データベース(ツリー形態のモデルを基本として、1対多の関係のみを許可)などのナビゲーショナル・データベース、およびネットワーク・データベース(複数の関係を使用できる、やや柔軟性があるモデル)は、データの保存と操作に使用する原形といえるシステムでした。このような初期のシステムは、簡潔ではあっても柔軟性に欠けていました。1980年代にリレーショナル・データベースが普及し、つづいて1990年代にはオブジェクト指向データベースが一般的になりました。さらに時代が進むと、インターネットの成長、およびデータ処理の高速化と非構造化データの処理に対するニーズに呼応してNoSQLデータベースが登場しました。現在、データの収集、保存、管理、利用の方法に関しては、クラウド・データベースと自律運転データベースが新境地を開いています。

データベースの種類

データベースにはさまざまな種類があります。特定の組織に最適なデータベースは、その組織がデータをどのように利用しようとしているかによって異なります。

リレーショナル・データベース

リレーショナル・データベースは1980年代に主流となりました。リレーショナル・データベースの各項目は、列と行を持つテーブルの集合として編成されています。リレーショナル・データベースのテクノロジーは、構造化された情報にアクセスする最も効率的で柔軟な方法を提供します。

オブジェクト指向データベース

オブジェクト指向データベースに保存した情報は、オブジェクト指向プログラミングの場合と同様に、オブジェクトとして扱われます。

分散データベース

分散データベースは、さまざまなサイトにある2つ以上のファイルで構成されています。このデータベースは、物理的に同じ場所にある複数のコンピューターに格納できるほか、さまざまなネットワークにわたって分散配置することもできます。

データ・ウェアハウス

データの中央リポジトリであるデータウェアハウスは、高速なクエリと分析に特化して設計されたデータベースです。

NoSQLデータベース

NoSQLデータベース(非リレーショナル・データベース)では、非構造化データと半構造化データを格納し、操作できます(これとは対照的に、リレーショナル・データベースではデータベースに挿入するすべてのデータの構成方法が規定されています)。Webアプリケーションが広く使用され、複雑になるに伴い、NoSQLデータベースが普及するようになりました。

グラフ・データベース

グラフ・データベースは、エンティティの観点とエンティティ間の関係の観点からデータを格納します。
また、OLTPデータベース。OLTPデータベースは、複数のユーザーが実行する大量のトランザクション向けに設計された高速で分析的なデータベースです。
これらは、現在使用されている数十種類のデータベースのほんの一部です。これらのほかに、広く使用されてはいないものの、科学や財務などの機能に特化して作成されたデータベースもあります。このように多彩な各種データベースが存在することに加え、テクノロジー開発手法の変化とクラウドや自動化などの劇的な進歩により、データベースはまったく新しい方向に進んでいます。最新のデータベースとして、次のようなものがあります。

オープンソース・データベース

オープンソース・データベース・システムは、ソースコードがオープン・ソースであるデータベースです。SQLデータベースであることもあれば、NoSQLデータベースであることもあります。

クラウド・データベース

クラウド・データベースは、プライベート・クラウド、パブリック・クラウド、またはハイブリッド・クラウドのコンピューティング・プラットフォーム上に置いた構造化データまたは非構造化データの集合です。クラウド・データベース・モデルには、従来型とDatabase as a Service(DBaaS)の2つのタイプがあります。DBaaSでは、管理タスクとメンテナンスをサービス・プロバイダーが実施します。

マルチモデル・データベース

マルチモデル・データベースは、さまざまな種類のデータベース・モデルを、単一の統合バックエンドに結合します。したがって、多彩な種類のデータに対応できます。

ドキュメント/JSONデータベース

ドキュメント・データベースは、ドキュメント指向の情報を格納、取得、および管理することを目的としており、行や列ではなくJSON形式でデータを格納する最新の方法です。

自律運転データベース

最新で最も革新的な種類のデータベースである自律運転データベース(自律型データベースとも呼ばれます)はクラウドベースであり、データベースのチューニング、セキュリティ、バックアップ、更新をはじめとして、従来はデータベース管理者が担当してきた日常的な管理タスクを機械学習によって自動化します。

データベース・ソフトウェアとは

データベース・ソフトウェアは、データベースのファイルとレコードの作成、編集、メンテナンスに使用されて、ファイルとレコードの作成、データの入力、データの編集、更新、レポートの作成が容易になります。また、データの保管、バックアップとレポート、マルチアクセス制御、セキュリティ確保にも使用されます。データの盗難が頻繁になるにつれて、強力なデータベース・セキュリティが今日特に重要になっています。データベース・ソフトウェアは、「データベース管理システム」(DBMS)と呼ばれることもあります。

データベース・ソフトウェアにより、ユーザーはデータを構造化された形式で保存でき、構造化データにアクセスできるようになるため、データ管理が簡素化されます。データベース・ソフトウェアでは、通常、データの作成と管理に便利なグラフィカルインターフェイスが備わっており、場合によって、ユーザーは独自のデータベースを構築できます。

データベース管理システム(DBMS)とは

多くの場合、データベースには、データベースの包括的なソフトウェア・プログラムであるデータベース管理システム(DBMS)が必要です。DBMSは、データベースとそのエンド・ユーザーまたはプログラムとの間でインターフェイスとして機能し、情報の編成方法と最適化方法をユーザーが取得、更新、および管理できるようにします。また、DBMSはデータベースの監視と制御を容易にし、パフォーマンスの監視、チューニング、バックアップとリカバリなどのさまざまな管理操作を可能にします。

広く使用されているデータベース・ソフトウェア(DBMS)の例として、MySQL、Microsoft Access、Microsoft SQL Server、FileMaker Pro、Oracle Database、dBASEがあります。

MySQL Databaseとは

MySQL は、SQLに基づくオープン・ソースのリレーショナル・データベース管理システムです。Webアプリケーション用に設計および最適化されており、どのプラットフォーム上でも実行できます。新しい多彩な要件がインターネットで求められるようになるに伴い、Web開発者とWebベースのアプリケーションにとってMySQLが最適なプラットフォームになっています。数百万件のクエリと数千件のトランザクションを処理するように設計されているMySQLは、複数の送金を管理する必要があるeコマース・ビジネスで盛んに利用されています。MySQLで目立つ特徴はオンデマンドの柔軟性です。

Airbnb、Uber、LinkedIn、Facebook、Twitter、YouTubeをはじめとして、世界中に多数の利用者を持つWebサイトやWebベース・アプリケーションをDBMSとしてMySQLが支えています。

データベースの基本

「住所」「名前」のように、同じ種類のデータが入る項目を「カラム(列)」。そして、1件分のデータを「レコード」と呼びます。

phpMyAdminによるMySQLの使い方

ローカル環境では「MAMP」がインストールされていれば、すぐに使えるようになっています。

MAMP(マンプ)を使う場合は、管理画面の「Start Servers」をクリックして、「Apache Server」と「MySQL Server」を起動させます。

MySQLを使う前に準備する ~ Windowsユーザーのみ ~

Windowsでは、MySQLを使うときに文字エンコーディングの設定が必要です。
MAMP(マンプ)のようなソフトウェアでの設定変更は、設定ファイルに書かれた文字列を修正して使うことが多いです。間違えると動作しなくなることもあるので、バックアップなどをとりながら、慎重に行いましょう。

ここで変更する設定は、MySQLサーバー内部で使用する文字エンコーディングです。今回はWeb標準の「UTF-8」で統一しますが、Windows版のMySQLはデフォルトの設定が異なりますので、変更する必要があります。(※Mac版はデフォルトがそもそも「UTF-8」なので、設定変更は不要です。)

設定は「my.ini」というテキストファイルの記述を書き換えることで行います。
「my.ini」は「C:\MAMP\conf\mysql」フォルダの中にあります。

手順1

対象のファイルをコピーして、バックアップをとります。

手順2

テキストエディタでファイルを開いて、「# The MySQL server」という記述が載っているところを探します。

my.ini
# The MySQL server
[mysqld]
port		= 3306
socket		= mysql
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
basedir = C:/MAMP/bin/mysql/
datadir = C:/MAMP/db/mysql/

この一番下の「datadir = C:/MAMP/db/mysql/」となっている記述の下に、「character-set-server=utf8」「collation-server=utf8_general_ci」の2行を追加します。

datadir = C:/MAMP/db/mysql/

↓↓↓ ※2行追加

datadir = C:/MAMP/db/mysql/
character-set-server=utf8 
collation-server=utf8_general_ci

MAMP(マンプ)のバージョンによっては、既にこの記述が入っている場合があります。
その場合は、設定変更は必要ありませんので、そのまま閉じてOKです。

手順3

設定変更が完了したら、MySQLを開きましょう。
MAMP(マンプ)のアプリケーションを開いて、[Start Servers]のアイコンをクリックします。

  • Apache Server
  • MySQL Server

上記2つの項目に緑色のランプがついたら、起動している状態です。

管理画面の「Open WebStart page」のアイコンをクリックして、MAMPのスタートページを開きます。
MAMPのスタートページの実際のファイルは「C:\MAMP\htdocs」フォルダの中にある「index.php」です。

初期値のURLは「 http://localhost/MAMP/ 」です。

スタートページの中にある「phpMyAdmin( http://localhost/phpMyAdmin/?lang=ja )」をクリックして、phpMyAdminの管理画面を開きます。

無事に開けたら、前準備は完了です。

phpMyAdminで、データベースとテーブルを作ろう

データベースの操作にはいろいろな方法がありますが、ここではWebページからGUIで操作できるphpMyAdminというツールを使ってみます。

「phpMyAdmin」はMySQLをブラウザで管理するためのツールで、phpMyAdmin自体がPHPで作られています。ちなみにみなさんがレンタルサーバーを借りると、MySQLは多くの場合phpMyAdminで管理することになりますので、慣れておくと便利です。

まず、phpMyAdminが開けたら、「言語 - Language」項目で日本語を選択しましょう。
※既になっている場合は変更無しで大丈夫です。

今回は、「testdb」という名前のデータベースを作ります。

今回作成するデータベースの情報

  • ホスト名:localhost ※今回はローカル環境なので
  • ユーザー名:root ※MAMPのデフォルト値です(実際の環境では変更してください)
  • パスワード:root ※MAMPのデフォルト値です(実際の環境では変更してください)
  • データベース名:testdb

データベースを作ってみよう

<手順1>
[データベース]をクリック。

<手順2>
「データベースを作成する」項目の入力フィールドに、今回のデータベースの名前「testdb」を入力。

<手順3>
データベースの名前の入力欄の隣に、文字コードの設定があるので、MAMPの「C:\MAMP\conf\mysql\my.ini」ファイルで設定した「collation-server=utf8_general_ci」と同じ文字コードを選択します。今回は「utf8_general_ci」です。

<手順4>
[作成]ボタンを押したら、データベースの作成は完了です。

作成したデータベースにテーブルを作ってみよう

今回のデータベース「testdb」ができました。でも、データベースだけ作っても、データの置き場所であるテーブルがないと、データの保存ができません。

今回は、

  • bangou(番号)
  • namae(名前)
  • message(メッセージ)
  • hiduke(日付)
    の4つのカラムを持つ、「tabletest1」という名前のテーブルを作ってみます。

データベースでは、同じカラムには同じ種類のデータしか入れられません。データの種類をデータ型といいます。

  • 整数型(int)
  • 文字列型(varchar)※varcharは可変長の文字列型
  • 日付時刻型(datetime)
    など。

phpMyAdminは、視覚的にクリックで作成していくことができるツールなので、そこまで難しいことを覚えなくても使うことができます。では、実際に作っていきましょう。

<手順1>
データベースの一覧から、今回のデータベース「testdb」を選択する。

<手順2>
メニューから[構造]をクリックし、『テーブルを作成』項目の名前の入力欄に今回作成する「tabletest1」を入力する。カラム数は「4」を選択して[実行]ボタンをクリックします。

<手順3>
「tabletest1」テーブルのカラム作成画面に遷移するので、カラムを作成していきます。
まず、は1行目の名前に「bangou」、タイプ(データ型)に整数型を意味する「INT」を選択します。次に、インデックスに「PRIMARY」を選択すると、『インデックスを追加する』ダイアログが出てくるので、いったんそのまま[実行]ボタンをクリックします。次にA_I(AUTO_INCREMENT)となっている項目のチェックボックスにチェックを入れます。

※「A_I(AUTO_INCREMENT)」は連続番号機能のことで、レコードを挿入するたびに「1、2、3...」と自動的に連番が入力されます。また、MySQLでは、「連続番号機能」を設定したカラムはプライマリーキーである必要があるため、「インデックス」で「PRIMARY」を選択します。プライマリーキーとは、レコードを一意で特定するために使用されるカラムのことです。

<手順4>
2行目の名前に「namae」、タイプ(データ型)に可変長の文字列を意味する「VARCHAR」を選択し、長さ/値に「20(入力して欲しい内容に合わせて数字は決定)」を入力します。

同じように、3行目の名前に「message」、タイプ(データ型)に可変長の文字列を意味する「VARCHAR」を選択し、長さ/値に「100(入力して欲しい内容に合わせて数字は決定)」を入力します。

最後に4行目の名前に「hiduke」、タイプ(データ型)に日付時刻型を意味する「DATETIME」を選択します。

<手順5>
カラムの入力が全て終わったら、[保存する]ボタンをクリックして、テーブルを作成します。
メニューの[構造]ボタンをクリックして、テーブルの内容を確認しましょう。
入力が間違っているところなどがあれば[変更]ボタンをクリックして修正しましょう。

以上で、テーブルの作成とカラムの設定は完了です。

phpMyAdminで、SQLを実行してみよう

phpMyAdminで、レコードを挿入してみよう

<手順1>
メニューから[挿入]ボタンをクリックします。

<手順2>

  • bangou の値は入力しなくても勝手に連番が付くので入力不要。
  • namae の値には、「太郎」
  • message の値には、「はじめてのメッセージです。」
  • hiduke には関数欄で、「NOW」を選択し、値は空にします。

<手順3>
すべて入力ができたら[実行]ボタンをクリックします。
すると、「1行挿入しました。」「id1の行を挿入しました」というメッセージとともに、実行したSQL文が表示されます。

SQL文
INSERT INTO `tabletest1` (`bangou`, `namae`, `message`, `hiduke`) VALUES (NULL, '太郎', 'はじめてのメッセージです。', NOW());

データベースを操作するときには「命令」を伝えなくてはいけないわけですが、PHPにはデータベースに直接命令を出す機能がありません。そこで登場するのが、SQL(Structured Query Language)というデータベース操作用の汎用言語です。汎用なので、MySQLだけでなく、OracleやPostgresSQLなどの他のデータベースでも使用することができます。そしてPHPでは、SQLで書かれた命令をデータベースシステムへ送ることによって、データベースを操作します。

SQLはいくつかの命令文で構成されており、レコードの挿入には「INSERT文」を使用します。

レコードを挿入するINSERT文

INSERT INTO テーブル名 (カラム名1,カラム名2...) VALUES (入れるデータ);

「bangou」カラムのような、自動連番が設定されているカラムには「空データ」という意味のNULLを入力することで、勝手に連番が入ります。

「NOW()」は現在日時を返すMySQLの関数なので、実行した日時が入力されます。

「INSERT INTO ~」などのSQLは、大文字でも小文字でもどちらでもかまいませんが、だいたいは大文字で統一されています。

挿入したレコードの内容をSQLで表示

1行だけ挿入したレコードの内容を、SQLを使って確認してみましょう。
今回は「テーブル内の全レコードを表示する」という「SELECT * FROM テーブル名」のSQLを実行してみることにします。

<手順1>
メニューの[SQL]タブをクリックして、クエリ入力画面を開きます。

<手順2>
もともと以下のような文が入っているかもしれません。

SELECT * FROM `tabletest1` WHERE 1

こちらはいったん削除し、以下を入力します。

SELECT * FROM tabletest1;

でも大丈夫ですが、テーブル名のような文字列は、「`(グレイヴ・アクセント)」で囲む方が正確です。

SELECT * FROM `tabletest1` ;

実行すると、現在登録されている1行分のレコードが表示されるはずです。

テーブルを表示する基本構文は、

SELECT 表示させたいカラム名1, 表示させたいカラム名2,... FROM テーブル名;

「SELECT」の直後には、表示させたいカラム名をカンマで区切って並べます。
全て表示したいときは「*(アスタリスク)」で代用することができます。

SQLでレコードの内容を表示するための文の「WHERE 1」とは

最初に出てきた「WHERE 1」とはなんでしょうか?

SELECT * FROM `tabletest1` WHERE 1 ;

MySQLでは整数の1はTRUEと等価であり、「WHERE 1」と「WHERE 1 = 1」はどちらも変わらず「TRUE」となります。

そしてWHEREで指定する条件が必ず真であるならば、すべての行が選択されるので、
WHERE を指定しない、「SELECT * FROM tabletest1 ;」と結果は全く同じになります。

ではなぜ、「SELECT * FROM tabletest1 ;」と「SELECT * FROM tabletest1 WHERE 1 ;」は同じ結果となるのに、わざわざ「WHERE 1」を書くのかというと、そのほうがプログラミングするうえで都合がいいからです。

SQLで条件を指定する時、1つ目の条件はWHERE句で指定し、2つ目以降の条件はANDかORで指定します。

SELECT * FROM テーブル名 WHERE 1つ目の条件 AND 2つ目の条件 AND 2つ目の条件 ...

SQLを組み立てるときに「それが1つ目の条件ならばWHEREで指定する」という処理が面倒なので、
あらかじめ WHERE = 1 という全ての行にマッチする条件をつけておいて、
それ以外の条件を足していくようにしておいたほうが、簡単なのです。

次のような条件でusersテーブルをemailとnameで絞り込み検索をするプログラムを書くとしましょう。

  • emailだけが指定されて入れば、emailだけで検索
  • nameだけが指定されて入れば、nameだけで検索
  • emailとnameが指定されていれば、emailとnameのAND検索

試しに「WHERE 1」が無い時のプログラム

$sql = "SELECT * FROM users";
if($email){
    $sql .= " WHERE email = :email";
}
if($name){
    if($email){
        $sql .= " AND name = :name";
	//「.=」は文字列演算子(結合)で「$sql = $sql . " AND name = :name"」の略です
    }
    else{
        $sql .= " WHERE name = :name";
    }
}

次に「WHERE 1」を付けた時のプログラム

$sql = "SELECT * FROM users WHERE 1";
if($email){
    $sql .= " AND email = :email";
}
if($name){
    $sql .= " AND name = :name";
}

このようにクエリを組み立てたい場合はWHERE 1があるほうがシンプルになります。
そのため、「WHERE 1」は後々便利になるので、おまじない的につけておくと良いでしょう。

phpMyAdminで、ちょっとした掲示板を作ってみよう

<手順1>
keijiban1.phpにフォームを作って、ニックネームとメッセージを入力してもらい、keijiban2.phpに送信します。

<手順2>
keijiban2.phpに、受け取ったデータを、データベース「testdb」のテーブル「tabletest1」に書き込みます。あわせて、keijiban1.phpはテーブル「tabletest1」のすべてのレコードを表示します。

データを送るプログラムを作成しましょう

始めに送信フォームを作ります。名前とメッセージを入力して送信ボタンをクリックしてもらうタイプのものです。今回はPOST送信を使っていきます。

GET送信を使用すると、通常のWebアプリケーションでは、URLにデータが表示が表示されてしまうので、POST送信の方が良く使われています。

まずは、「keijiban1.php」に入力フォームを作成していきます。

keijiban1.php
<p>ここに名前とメッセージを入力してね!</p>
<form method="post" action="keijiban2.php">
  名前:
  <div>
    <input type="text" name="na">
  </div>
  メッセージ:
  <div>
    <textarea name="me"></textarea>
  </div>
  <input type="submit" value="送信するよ!">
</form>

この時点では、まだHTMLのコードしかありませんが、拡張子は「.php」です。
後ほど、PHPのプログラムを書き足していきます。

次に、<form>タグのaction属性で指定した「keijiban2.php」でメッセージを受け取る側のプログラムを書いていきます。

keijiban2.php
<?php
$my_namae = htmlspecialchars($_POST['na'], ENT_QUOTES);
$my_messa = htmlspecialchars($_POST['me'], ENT_QUOTES);

$db = new PDO("mysql:host=localhost;dbname=testdb","root","root");
$db->query("INSERT INTO `tabletest1` (`bangou`, `namae`, `message`, `hiduke`) VALUES (NULL, '$my_namae', '$my_messa', NOW())");

print '書き込みに成功しました!';
print '<p><a href="keijiban1.php">一覧表示へ</a></p>';
?>

書くときに「"」や「'」が入れ子になっているので、セットを間違えないように注意しましょう。

実際にフォームからデータベースに送信してみましょう

間違えずに記述できたら、さっそく動作確認をしてみましょう。

まずは、ブラウザで「 http://localhost/keijiban1.php 」にアクセスします。
フォームに名前とメッセージを入力したら、送信ボタンをクリック。
アクションに設定した「keijiban2.php」のページが表示されればOKです!

次に「keijiban2.php」の中に書いたHTML「一覧表示へ」をクリックして、「keijiban1.php」のページに戻ってこれるか確認しましょう。

戻って来れたら、phpMyAdminを開いて、レコードが追加されていることが確認できたら、プログラムは成功です!

もしも、ここで「HTTP 500」や「インターナル・サーバー・エラー」と表示されるエラーが出た場合は、プログラムの記述にミスがあるか、MySQLサーバーが起動していない可能性がありますので、もう一度手順や、プログラムのコードを確認しましょう。

データベースにデータを保存するための仕組みを確認しましょう

「keijiban2.php」で書いたプログラムの内容を確認していきます。

フォームで入力された送信データの受け取り

POST送信では、PHPに予め用意されている「$_POST」というスーパーグローバル変数を使って送信されたデータを受け取ります。
サンプルでは、それぞれ、名前に「na」、メッセージに「me」という入力フォームの名前(name属性)をつけて送信しました。このデータを受け取りつつ、「htmlspecialchars()」関数で、危険なタグを無効にするのが、以下の2行の処理です。

$my_namae = htmlspecialchars($_POST['na'], ENT_QUOTES);
$my_messa = htmlspecialchars($_POST['me'], ENT_QUOTES);

データベースへの接続(アクセス)

PHPからデータベースを操作するためには「PDO オブジェクト」というものを作成して、それを変数に代入して、使用していきます。

$db = new PDO("mysql:host=localhost;dbname=testdb","root","root");

PHPでは、ファイルにデータを書き込むとき、テキストファイルを操作するためのファイルハンドルをを使用しますが、データベースでは、それが「PDO オブジェクト」になると考えてください。
PHPプログラム上ではPDOオブジェクトをデータベースそのもののように扱うことが可能です。

ちなみに、オブジェクトとは、プログラミング上の抽象的な概念で、PHP以外のプログラミング言語にも存在します。また、そのオブジェクトの元となるクラスという概念もありますが、ここではいったん触れずに、データベースを使うための構文として解説していきます。

https://www.php.net/manual/ja/language.oop5.basic.php
https://www.php.net/manual/ja/class.pdo.php
https://www.sejuku.net/blog/25620
https://www.delftstack.com/ja/howto/php/php-create-object/

PDOオブジェクトを作成する構文は、次のような構造になっています。

PDO("mysql:host=ホスト名;dbname=データベース名","ユーザー名","パスワード");

「PDO」は、PHPとデータベースサーバーの間の接続をするために、PHP側であらかじめ用意されているクラスです。そのため、自作のクラスと違って「class PDO」のように定義をする必要はありません。変数にクラスを格納して使う、先頭に「new」をつけたインスタンスの生成をして、対象のクラスが使えるように宣言します。そして「メソッド」というものを呼び出します。
//メソッドの呼出し

//インスタンスの生成
$db = new PDO("mysql:host=localhost;dbname=testdb","root","root");

上記は、変数「$db」に、クラス「PDO();」を代入して、インスタンスの生成をしています。
※「new」はオブジェクトを作成する時に使用する演算子で、インスタンスの生成時に、先頭につける決まりです。)

上記の構文は、データベースにアクセス(ログイン)するための基本構文となっていて。
これを変数に代入することによって、アクセスが発生するタイミングで毎回記述しなくてもよくなります。

その他

MySQL

MySQLは、オープンソースのデータベースで、データベースの種類としてはリレーショナル型にあたります。オープンソースなので基本は無償ですが、商用利用する場合は有償になります。

無償なので、データベースを用いたプログラミングの研修や個人のシステム開発などで使われています。

SQLite

SQLiteは、オープンソースのデータベースで、データベースの種類としてはリレーショナル型にあたります。

他のリレーショナル型データベースと大きく異なり、SQLiteはソフトウェアに組み込んで使う種類のデータベースとなります。容量もコンパクトなので、携帯端末で動作するソフトウェアに適してるでしょう。

オラクル

Oracle Databaseは、リレーショナル型の有償データベースです。日本国内のリレーショナル型データベースとして圧倒的なシェアがあります。

Oracle Databaseは、クライアントサーバーシステムの時代から使われてきましたが、最近のクラウド環境にも対応しています。
https://www.oracle.com/jp/

PostgreSQL

PostgreSQLは、データベースの種類としてはリレーショナル型データベースにあたります。重複データを持たずに登録できるよう、データ構造を整理して登録していきます。

PostgreSQLは、今時点では、無償で手に入れることができるので、プログラム開発の練習用に用いられたり、小規模システムのデータベースとして採用されていたりします。
https://www.postgresql.org/
https://www.postgresql.jp/

MongoDB

MongoDBは、NoSQL型のデータベースです。データベース自体はオープンソースですが、サブスクリプションと管理ツールは有償です。

MongoDBはNoSQL型という種類の中でも採用の多いデータベースです。クラウド型のアプリで多く採用されていますが、近年注目されているブロックチェーンのデータベースとしても採用されています。

Microsoft Access

Microsoft Accessは、Microsoft Officeのパッケージに含まれるデータベースアプリケーションです。データベースの種類としては、リレーショナル型であり、リレーショナル型データベースの入門としても使われています。

プログラミングができない人でも、簡単なデータベースシステムを作ることができるので、データベースを理解するための研修で使われることもあります。

Microsoft SQL Server

Microsoft SQL Serverは、Microsoft社の有償データベースです。データベースの種類としては、リレーショナル型にあたります。

業務システムで使われるデータベースとしては、Oracleに次ぐシェアを占めており、Microsoft社製のシステム管理ツールを導入する際にも必要になります。

FileMaker

FileMakerは、データベースの種類としてはリレーショナル型にあたります。

FileMakerはデータベースとしての入れ物だけでなく、データベースを扱うためのプラットフォームソフトです。プログラミングのできない人でも簡単なデータベースアプリケーションを作れます。EXCELからのデータ流用も簡単にできます。

IndexedDB

IndexedDBは、JavaScriptを使ってデータを管理する種類のデータベースです。IndexedDBもプログラムへの組み込み型のデータベースです。

データベースの種類としてはリレーショナル型ではありませんが、キーと値を備え、表形式のイメージを持てるデータ構造となります。

Web SQL

Web SQLは、HTMLで扱える種類のデータベースです。当初はHTML5の標準仕様として検討されていましたが、結果として標準仕様からは外れました。しかし、多くの主要ブラウザで対応されています。

バックエンドとしてSQLiteが使われているので、基本的なSQL文は使えます。データベースの種類としては、リレーショナル型に属します。

参考サイト

https://www.sbcr.jp/product/4797393118/

https://www.oracle.com/jp/database/what-is-database/

Discussion