#author("2023-11-14T16:27:20+09:00;2023-11-14T16:26:27+09:00","default:inoue.ko","inoue.ko") *Database ~ データベースとは、大量のデータをコンピューターで扱いやすい形に整理したものです。インターネット検索、チケット予約、ブログ、オンラインショッピングなど、様々なアプリケーションやWebサイトがデータベースと連携しています。 ~ ***CONTENTS #contents2_1 ~ ~ **概要 ***データモデル データモデルには、カード型、階層型、ネットワーク型、リレーショナル型などが存在しますが、現在主流となっているデータモデルはリレーショナル型です。 リレーショナル型データベースは、データを列(Column)と行(Row)で表現される表(Table)の集合として編成されます。 小規模なデータ管理であれば、同じく Table を基本とするスプレッドシートでも事足りますが、大規模かつ効率的なデータ管理を行うには、これが重宝します。 ~ ***DBMS データベースを管理するソフトウェアのことを一般にデータベース管理システム(DBMS:DataBase Mnanagement System)と呼びます。DBMSには、データ管理のための様々な機能があって、それらは以下4つの機能に分類されます。 -Data Definition(データ定義) データの編成を規定する定義の作成、変更、および削除 -Update(更新) 実データを挿入、変更、および削除 - Retrieval(検索) データを直接、または他のアプリケーションで処理できる形式で提供 検索結果は、データベースに保存されているものと同形式、または、それらを編集した新たな形式でも利用することができる -Administration(管理) ユーザー登録、状態の監視、データの維持・管理、破損情報の回復など DBMSの具体例としては、MySQL、Microsoft Access、Microsoft SQL Server、FileMaker Pro、Oracle Database、dBASE などがありますが、その代表はオープンソースの__[[MySQL>Database/MySQL]]__(派生版:MariaDB) です。 MySQLは、Webベースのアプリケーションに最適なプラットフォームで、オンデマンド利用における柔軟性から、Airbnb、Uber、LinkedIn、Facebook、X(Twitter)、YouTubeなど、世界中に多数の利用者を持つ Webアプリケーションに利用されています。 ~ ~ **SQL ***SQLとは データの書き込みや問い合わせ(クエリ)には、SQL(Structured Query Language:構造化クエリ言語)を使用します。 SQLによるデータベース操作には「対話型」と「埋め込み型」の2種類があります。対話型は、phpMyAdmin のようなツール上で、ユーザーが直接SQLのコマンドを打ち込むもので、埋め込み型は、PHPやJavaなどのプログラミング言語で記述したソースコードにSQL文を埋め込むものです。 SQLは、 あくまでもデータの操作や定義を行うためのデータベース言語で、それ自体はプログラミング言語ではありません。実際的には、様々なアプリケーションにおけるデータベースへのアクセスのために、他のプログラミング言語(ホスト言語)に埋め込まれて利用されるのが一般的です。 SQLはその機能によって「データ定義言語」「データ操作言語」「データ制御言語」の3種類に分類されます。以下、それぞれの概要と命令文の例です。 ~ ***DDL(Data Definition Language:データ定義言語) データを格納する際の構造を定義するためのSQL -CREATE:オブジェクトを制作する -JOIN:テーブルを結合する -DROP:オブジェクトを削除する -ALTER:オブジェクトの内容を変更する -TRUNCATE:データを全削除する ~ ***DML(Data Manipulation Language:データ操作言語) 格納された個々のデータを操作するためのSQL -SELECT:データを検索して取得する -INCERT:データを追加する -DELETE:データを削除する -UPDATE:データを更新する ~ ***DCL(Data Control Language:データ制御言語) データへのアクセス権限などを制御するためのSQL -GRANT:ユーザーに権限を付与する -REVOKE:ユーザーの権限を削除する -BEGIN:トランザクションを開始する -COMMIT:トランザクションを確定する -ROLLBACK:トランザクションを取り消す ~ ***DBMSでの対話例 MySQLをWebブラウザから管理する GUIツール phpMyAdmin を使うと、SQLによるデータベースとの対話が簡単に行えます。 例えば、成績一覧テーブルから、芸術学部の学生の英語の点数のみを抽出するには、以下のようなSQL を書いて「実行」します。 SELECT 英語 FROM 成績一覧 WHERE 学部 = '芸術'; ~ ***PHPでの埋め込み例 PHPからデータベースに接続するには、PDO(PHP Data Objects)というデータベース接続クラスを使用します。以下、商品表(shohin)から ID(id) と 商品名(name)を抽出する例です。 // データベースへの接続情報の設定 $dsn = 'mysql:dbname=SampleDB; host=localhost'; $user = 'SampleUser'; $password = 'SampleP@ssWord'; // PDOインスタンスの生成 $pdo = new PDO( $dsn, $user, $password ); $pdo->query('SET NAMES utf8;'); // 文字化け対策 // クエリの定義 $sql = 'select id,name from shohin'; // クエリの実行 foreach ( $pdo->query( $sql ) as $row ) { print( $row['id'] ); print( $row['name'].'<br>' ); } // データーベースを切断 unset($pdo); 上記の例では・・ -mysql:dbname = mydb; host = localhost; の部分が、データベースへの接続に必要な情報( DSN:Data Source Name )です。 -select id,name from shohin という記述が SQL です。 ~ ~ **phpMyAdmin ***概要 ~ ~ ***付記:XAMPP をインストール済みの方へ 自分のPCにXAMPPをインストール済みで、XAMPPマネージャで MySQL Database を Running させている場合は、以下のアドレスで、その動作を確認することができるはずです。 http://localhost/phpmyadmin/ ~ ~