MySQL基礎知識

MySQLの基礎知識

データベースは「規則を持ったデータの集まり」を意味しますが、一般的には、データを追加したり、検索や抽出をしたりといった管理機能を含めてデータベースと呼びます。

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

データベースとして広く使われているのは、リレーショナル型と呼ばれてるものです。

このリレーショナルデータベースを管理するシステムをRDBMS(Relational DataBase Management System)といいます。

現在、世界中でたくさんのRDBMSが利用されています。

主なRDBMS

製品名
Oracle
Access
SQL Server
PostgreSQL
MySQL

リレーショナルデータベースでは、一つのデータを項目の集まりで表します。

例えば、1件分の商品データを「商品コード」「商品名」「価格」...というように分けて、これを商品の数だけ集めます。

1件のデータを「レコード」、そして項目「カラム(列)」、そしてレコードの集まりを「テーブル」と呼びます。

データベースイメージ

f:id:mkyosuke:20191129103657p:plain

●データベースの特徴

・データの矛盾が発生しにくい

・データへのアクセス権限が設定できる

・障害発生時の回復が容易

・データの追加、変更、削除、検索が安全で効率的にできる

一つのデータベースには複数のテーブルを置くことが出来ます。

たとえば「商品コードと商品名のテーブル」、「商品コードと価格のテーブル」のように、項目を複数のテーブルに分けておき、必要なテーブルの必要な部分だけを集めて利用されるのが一般的です。

 MySQLを利用するための設定

MySQLを利用するためには、最初に日本語文字コードの設定が必要です。

データベースでは、文字化けに悩まされることが多々あります。

・rootユーザーのパスワード設定

初期状態では、「root」というユーザーが作られます。この「root」というユーザーは管理権限のあるユーザーですが、パスワードが設定されていないので、パスワードを設定しておきます。

 

phpMyAdminによるMySQL操作の基本

PHPスクリプトMySQLを操作する前に、phpMyAdminで直接データベースを作成・

編集す方法を覚えていきます。

基本的なデータベースとテーブルの作成、そしてデータの確認ではphpMyAdminを今回は利用することにします。

phpMyAdminは、ブラウザ上でMySQLサーバーを管理するソフトウェアです。面倒な命令を入力することなく、簡単な操作でMySQLのすべてが管理できます。

ちなみにphpMyAdminのプログラム自体もPHPで書かれています。

 

・データベースとテーブルの作成

いよいよデータベースを作成し、その中にテーブルを作成した後、実際のデータを入力していきます。

■作成するデータベースの概要

 ここでは、サンプルとして、文房具のデータベースを作成します。

    データベース名 :db

    文字コード   :UTF-8

 基本となるデータベースです。このデータベース「db」の中に、次のテーブルを保

 管します。

    テーブル名     :tb

    このテーブルは、次の3つのカラム(列)と、「データ型」を持つものとします。

 テーブル「db」の構造

カラム名(列名) cd nm pr
データ型 VARCHAR(10) VARCHAR(20) INT
内容 商品コード 商品名 数値

 そして、テーブル「tb」には次のデータを挿入します。

カラム「cd」に入れる値 カラム「nm」に入れる値 カラム「pr」に入れる値
SH001 鉛筆 100
SH002 消しゴム 50
SH003 ボールペン 200
SH004 ノート 250
SH005 定規 150

■カラムとデータ型

「データ型」とは、そのカラム(列)に保管するデータの種類のことです。

PHPの変数にもデータ型がありますが、MySQLのデータ型はまた別のものです。

「INT」は1,2,3のような整数のデータを保管できることを意味します。

また「VARCHAR」とは、文字データを保管することを意味します。

「VARCHAR」に続く「10」は、「10個までの文字が入力できる」という意味です。

マルチバイトの日本語でも10個まで入ります。

PHPではデータ型を自動的に判断してくれましたが、MySQLのようなデータベースシステムでは、データ型は厳密に指定する必要があります。

つまり「INT」型が設定されたカラムに整数以外のデータを挿入することはできません。

今回はカラム「pr」には整数、またカラム「cd」と「nm」には10個および20個までの文字が入れられるという設定を行います。

「cd」「nm」「pr」という名前のカラムを設定します。テーブル名やカラム名には、日本語を使うこともできます。しかし、日本語文字コードを使った名前は問題が生じる可能性があるので、避けたほうがよいでしょう。

■データベースの新規作成

「db」という名前のデータベースを作成し、ここに様々なテーブルを保管します。

①「データベース」をクリック

②「db」入力

③「utf8_general_ci」を選択

④ 作成をクリック

f:id:mkyosuke:20191129140639p:plain


すると、「データベースdbを作成しました」数秒表示され、データベース一覧に「db」が追加されます。これで「db」という名前のデータベースが作成されました。

■テーブルの作成

①データベース一覧の「db」を選択

②テーブルの名前「tb」と入力

③カラム「3」と入力

④実行をクリック

f:id:mkyosuke:20191129141333p:plain

⑤「cd」「VARCHAR」「10」と入力

⑥「nm」「VARCHAR」「20」と入力

⑦「pr」 「INT」と入力

⑧ 保存するをクリック

f:id:mkyosuke:20191129141602p:plain

 これでテーブル「tb」が作成できました。

f:id:mkyosuke:20191129142234p:plain

・テーブル構造の変更

phpMyAdminでは、一度作成したテーブルの構造も簡単に変更することができます。

もし間違った内容でテーブルを作成してしまった場合は上記の画面から操作できます。

■レコードを挿入する

入れ物であるテーブル「tb」はできたので、そこに具体的なデータを追加してみましょう。ここからクエリを発行することでデータベースを操作していきます。

クエリはPHPによるデータベースの基本になります。

・クエリとSQL

人間が「データベースに伝える命令」を文字として表したのがクエリ(query)です。

データを挿入するクエリ ➡ 「INSERT INTO...」

データを読み出すクエリ ➡    「SELECT*FROM...」

このクエリを書く規則が、SQL(Structured Query Language)という言語です。

・レコードの挿入

今回はクエリを使って、次のようなレコードを挿入します。

テーブル「tb」に挿入するデータ

カラム「cd」に入れる値 カラム「nm」に入れる値 カラム「pr」に入れる値
SH001 鉛筆 100
SH002 消しゴム 50
SH003 ボールペン 200
SH004 ノート 250
SH005 定規 150

 テーブルにレコードを挿入するには、INSERT命令を使います。

書式 INSERT INTO テーブル名 VALUES(データ1,データ2....);

VALUESの後の「()」中に、設定したカラム順のデータを、「,」で区切って記述します。このとき下記の注意点があります。

●大文字/小文字は区別しない

SQLでは、PHPと同じく命令文の大文字/小文字は区別しません。ですから「insert」でも「INSERT」でもかまいません。

●文字列は " もしくは ' で囲む

PHPと同じく、文字列データは「"」ダブルクォーテーション、または「’」シングルクォーテーションで囲って記述します。

●カラムの設定文字数を超えない

たとえばカラム「cd」は「VARCHAR(10)」で作成したので、11文字以上は入力できません。ただし、MySQLの場合、指定の文字数を超えて入力してもエラーにならず、入りきれない文字(この場合11文字以降)だけが消えてしまいます。

●命令の最後に「 ; 」を付ける

PHPと同じく、SQLでも命令の終わりには「;」(セミコロン)を付けなければなりません。

●挿入の実行

テーブル「tb」に挿入するレコードを入力する場合は次のようになります。

INSERT INTO tb VALUES('SH001','鉛筆',100);

INSERT INTO tb VALUES('SH002','消しゴム',50);

INSERT INTO tb VALUES('SH003','ボールペン',200);

INSERT INTO tb VALUES('SH004','ノート',250);

INSERT INTO tb VALUES('SH005','定規',150);

では、実際にphpMyAdminを使って、レコードを挿入しましょう。

f:id:mkyosuke:20191129145902p:plain

SQLを入力して、実行をクリック

f:id:mkyosuke:20191129150020p:plain

それぞれの行で「1行変更しました。」と表示されたら、レコードの挿入は完了です。

テーブルの内容確認は「表示」タブです。

f:id:mkyosuke:20191129150423p:plain