<学習する内容>
データベースの概要と、sql文を使ってデータベースやテーブルの作成、データの登録・更新等を使って動きを理解します。
1)データベースとは
データを入れる箱であり、データの作成、読込み、更新、削除できる4つの基本で操作できるものです。
本サイトではよく使われるリレーショナルデータベースについて記述します。
ひとつのテーブル(表)だけ操作するのではなく、複数のテーブルを関連(リレーション)づけて操作できるのが
リレーショナルデータベースです。
例えば名刺管理を作るとしましょう。一つのテーブルに会社名、住所、氏名、電話番号等
入れると情報が増えてしまいます。これを企業の情報、担当者の情報を分けて、得意先コードで関連させてテーブルで作成します。
仮に住所が変わった場合、テーブルが1つだとすべてのデータを更新させないといけないですが、得意先情報と分けていれば
得意先テーブルの住所のみ1つのデータを変えるだけで情報の更新が済ます。
データの取り扱いが簡素化でき情報量も重複する住所データが減ります。重複するのはリレーション用の企業コードだけで済みます。
一つのテーブルの場合
担当者 コード
得意先名
担当者名
郵便番号
住所1
住所2
1
ABC株式会社
田中 太郎
220-0001
横浜市西区〇〇
〇〇・・・ビル
2
ABC株式会社
井上 一郎
220-0001
横浜市中区〇〇
〇〇・・・ビル
3
株式会社DEF
渡辺 進
***-****
・・・
・・・
4
・・・・
・・・
***-****
・・・
・・・
二つのテーブルに分けると
<得意先テーブル>
得意先 コード
得意先名
住所等
100001
ABC株式会社
・・
100002
株式会社DEF
・・
100003
・・・・
・・
得意先コードで リレーション
<担当者テーブル>
担当者 コード
得意先 コード
担当者名
1
100001
田中 太郎
2
100001
井上 一郎
3
100002
渡辺 進
4
100002
・・・・
データベース化する一番のメリットはデータが一元管理できること。エクセルだとファイルはどんどん増え、どのデータが最新なのか管理が必要となります。
リアルタイムにデータの重複もなく管理できることです。
2)得意先一覧のデータベースのテーブル設計
操作する前に得意先のデータベースを作成します。
作業としては、データベースを作成し、得意先情報を入れるテーブル(エクセルシートのようなもの)を作成します。下記の項目がエクセルでいう列に相当しDBではカラムやフィールドと呼びます。
どのような表をつくるか検討しましょう。
設計 テーブル名:Mcustomer
項目
カラム名
データ型
長さ
備考
得意先コード
customerCode
int
11
プライマリキー
得意先名
customerName
varchar
50
郵便番号
zipcode
varchar
8
住所1
address1
varchar
30
住所2
address2
varchar
30
長さとは、文字や数字の個数(桁数)。例)ABCは3桁、ABCでも3桁、12345なら5桁
intとは、整数 (INTEGER) 型 指定しない場合は11桁で、12桁以上指定する場合がbigint
varcharとは、文字列を意味するデータ型。
3)得意先のデータベース作成とテーブルを作成
操作する前に得意先のデータベースを作成します。データベースアプリケーションには複数のデータベースを作成することができます。
営業用や経理用、技術用とか。このデータベースを作ってから、テーブル(表)を作っていきます。
今回は営業用としてsalesというデータベースを作ります。
・最初にコマンドプロンプトを起動します。
この検索で
powershell と入力しenter
左記の画面が表示されます。 ここにデータベースのコマンドを入力し 作成していきます。
①ディレクトリーの位置を変更します。
C:\Users\****> cd /xampp/mysql/bin
コマンドのあるディレクトリーに移動
まだパスを通す設定をしていないでこの作業が必要です。
→
パスの設定方法はこちら
②データベース(mysql)にログインします。
C:\xampp\mysql\bin> mysql -u root -h localhost -p
-u はユーザ、-hはコンピュータ名やIPアドレス、-pはパスワード
Enter password: ********* パスワードを入力しEnter
ログインすると
C:\Users\****> から MariaDB [(none)]> が表示が変わります。
・ログイン時にデータベースを指定することができます
C:\xampp\mysql\bin> mysql -u root -h localhost -p********* sales
**********はパスワード -p後スペースは入れない 続いてsalesを記述
この1行でsalesというベータベースを指定してログインできます
※ERROR 2002 (HY000): Can't connect to MySQL server on 'localhost' (10061)
のエラーが出た場合はmysqlが起動してません。
Xamppのcontrol panel よりmysqlを起動させてください。
・過去の入力したコマンドを呼び出す
キーボードの上↑で過去の入力をよび出せます
③
データベースを作成 します。
MariaDB [(none)]> create database sales;
sales というデータベースを作る
※SQLの命令文の最後には必ず「 ; 」が必要
④この作成した
salesというデータベースを指定 します。
MariaDB [(none)]> use sales;
salesというデータベース利用するのことを指定する
MariaDB [none] → MariaDB [sales] []内の利用データベース名に切変わります。
⑤
テーブル(データを入れる表)を作成 します。
作業としては、データベースを作成し、得意先情報を入れるテーブル(エクセルシートのようなもの)
を作成します。
MariaDB [(sales)]> create table Mcustomer ( customerCode int(11) primary key,customerName varchar(50),zipcode varchar(8),address1 varchar(30),address2 varchar(30));
<解説>
テーブル名がMcustomerで
(カラム名がcustomerCode でデータ型がint(11) (11桁の整数型)でプライマリーキー、
カラム名がcustomerName で データ型がvarchar(50) (50桁の文字型)、 カラム名がzipcode で データ型がvarchar(8) (8桁の文字型)、
カラム名がaddress1 で データ型がvarchar(30) (30桁の文字型)、 カラム名がaddress2 で データ型がvarchar(30) (30桁の文字型))
を作りなさい。というコマンド。
・プライマリーキーは、重複しない固有のデータにするという指定
・カラムとは、データの列。テーブルとは表イメージとしてはエクセルのシート。この列がカラムです。
・データ型には、カラム毎どのような型を入れるかの指定ができる。intは整数値のみで11桁まで、
桁を増やしたいならbigint(15)と記載する。varcharは文字が、floatは少数点のある数値等々、
どういったものが他にあるかはネット検索ください。「sqlデータ型」検索など
⑥
作成されたテーブルの構成を確認 します。
MariaDB [(sales)]> desc Mcustomer;
4)データの作成と抽出、更新等SQL文を使って見る
①データ作成
MariaDB [sales]> insert into Mcustomer(customerCode,customerName,zipcode,address1,
address2)
values (10001,'ABC株式会社','220-0001','神奈川県横浜市中区〇〇','横浜ビル10階');
※PowerShellから日本語等(全角文字)の入力すると「強制的に貼り付け」を聞いてきますのでそのまま「強制的に貼り付け」をクリック下さい。
insert文では、記述の順番のカラムに合わせvalues以降でデータを記載します。
カラムがvarcharの場合データは必ずシングルコーテーション「'」 で囲まれていること。
他に、sql文の途中でEnterを押すと改行され→表示されます。そのまま記述することができ
ます。また改行は何回も繰り返し行われ最後のセミコロン「;」のEnterで実行されます。
②データの抽出
MariaDB [sales]> select * from Mcustomer;
データの呼びだしはselect文を使います。「*」はすべてのカラムの呼出しです。
呼び出すカラムを指定することもできます。
MariaDB [sales]> select customerCode,customerName from Mcustomer;
条件式where句
MariaDB [sales]> select * from Mcustomer where customerCode = 10001;
customerCodeが10001のデータを抽出
以外の場合は、customerCode <> 10001 記述
MariaDB [sales]> select * from Mcustomer where address1 like '神奈川%';
address1が神奈川のデータを抽出
※文字列(数字以外)等の場合は条件式には ' ' で囲む必要があります。
%は以降の文字はなんでも(曖昧検索)を指定
%神奈川%の場合、文字の中に神奈川が含まれるものを抽出
以外の場合は、address1 not like '神奈川%' 記述
③テーブルのデータを更新
MariaDB [sales]> update Mcustomer set zipcode = '220-0002' where customerCode = 10002;
テーブル名:McustomerのcustomerCodeが10002のzipcodeを220-0002に更新しなさ
い
④テーブルのデータを削除
MariaDB [sales]> delete from Mcustomer where customerCode = 10002;
テーブル名:McustomerのcustomerCodeが10002のprefを削除しなさい
⑤テーブルのカラムを追加
MariaDB [sales]> alter table Mcustomer add telephone varchar(12) after address1;
テーブル名:Mcustomerのカラムaddress1の後にtelephoneという名のカラムを追加し
なさい。after address1 のようにどのカラムの後に追加するか指定がないと一番最後に
追加される
⑥テーブルのカラムを変更
MariaDB [sales]> alter table Mcustomer change telephone tel varchar(12);
テーブル名:Mcustomerのカラムtelephoneをtelというカラム名に変更しなさい。
このときデータの型も変更できます
⑦テーブルのカラムを削除
MariaDB [sales]> alter table Mcustomer drop tel;
テーブル名:Mcustomerのカラムtelを削除しなさい
⑧テーブルを削除
MariaDB [sales]> drop table Mcustomer;
テーブル名:Mcustomerを削除しなさい
⑨データベースを削除
MariaDB [sales]> drop database sales;
データベース名:salesを削除しなさい
⑩データベース一覧の確認
MariaDB [sales]> show databases;
⑪データベース内のテーブルの確認
MariaDB [sales]> show tables;
6)失敗で理解する
・SQLエラー
sql文に間違いがあるとエラーが表示されます。
<文法間違い>
fromがありません。
<無いテーブルの指定>
テーブル名の最後にMcustomer
1 で存在しないテーブルです。
<無いカラムの指定>
テーブル名の最後にcustomer_Name
1 で存在しないカラムです。
<データ重複>
プライマリーキーcustomerCode 10001が重複
<シングルコーテーション「'」漏れ>
芝ビル10階
' の最後
「'」 が抜けいている(SQL文が終わってないと判断)
>
'; を入力してエラーで終わらせます
7)Mysqlの扱う文字特性について
Mysqlを取り扱う文字では、大文字、小文字の区別はしません。テーブル名をMcustomerとして作成してもmcustomerでも同様とします。
また、カラム名も同じで、データを検索しても大文字小文字に関係なく検索してくれます。本サイトでMcustomerにように混在させているは
プログラムを見やすくすることが目的」です。
注意)phpの変数は大文字小文字識別しますので注意してください。
次はPHPからDBの操作を行います。
PHPからDBを操作