プログラミング

DBとはなんぞや・・・!?

出典:魁!!男塾

こんにちは、Nanayakuです。

今回は、DB(データベース)について解説していきます。

 

DB(Database)とは

データを扱いやすい形で入れておく箱の事です。

 

DBMS(DatabaseManagementSystem)とは

DBを管理するシステムの事です。

DBMSを使わなくても、DBを管理するシステムを作れるが、様々な便利な機能があるためみんな使っています。

DBを管理するシステムを、自前で作成すると不具合が生じる可能性があります。

例)

アクセスカウンターの場合

同時にアクセスした時、片方の値に反映されないことがあります。(総アクセス数が10と表示されている人が2人いる)

 

DBMSの種類

RDBMS・・・SQLを使用した表形式のデータベース

例)MySQL、Amazon Aurora、SQLite、Oracle Database

 

NoSQL・・・SQLを使用しないデータベース

例)redis、mongoDB

SQLとはデータベース言語のこと(RubyやPHPのデータベースバージョン)

 

MySQLとは

オープンソース(設計図が公開さ、自由に使える)のRDBMSで世界でもっとも使われているものです。

ダウンロード

https://dev.mysql.com/ でMySQL Community Edition(GPL)のMySQL Community Server (GPL)をダウンロード

 

インストール

ダウンロードしたファイルを開き、インストールをする。

 

起動

ローカルサーバー(Vagrantなど)を起動し、mysqlサーバーが起動しているか確認する。

 

次に、mysqlサーバーに接続する。

 

[~~~~]$ から mysql> に変われば、接続完了です。

 

ユーザー情報の確認方法は select user();

バージョンの確認は select version();

 

注意

mysqlのクエリ(命令)は;で閉じるルールなので、;を忘れないように注意が必要です。

 

データベースの全体像を分かりやすくするGUIツールがあるが、想定外の負荷がかかる可能性があるため、実務では推奨していません。

GUIツールとはCyberduck(ドットインストールローカル開発環境の構築#8)のようなものです。

 

テーブルについて

DBの中に多数のテーブルが入っています。

縦(列)をフィールド/カラムと言います。

横(行)をレコードと言います。

 

データベース

+ テーブル1

↓ フィールド(カラム/列)↓

レコード(行)

ID name age
1 ラオウ 25
2 トキ 24
3 ケンシロウ 18

+ テーブル2

↓ フィールド(カラム/列)↓

レコード(行)

ID name age
1 ユリア 18
2 リン 11
3 バット 8

 

mysqlの基本操作

データベースの作成・・・create database テーブルの名前;

データベースの削除・・・drop databace テーブルの名前;

操作対象のデータベースの確認・・・select databace();

操作対象のデータベースの更新・・・use データベース名;

 

レコードの操作

データの追加・・・insert into テーブル名(フィールド名) values(入れる値);

 

データの取得・・・select 取ってくるフォーム名 from テーブル名 where 条件

1つ目が20歳以上のname、2つ目が20歳以上のデータ全て(*は全てのデータを対象にする)

 

データの更新・・・update テーブル名 set 値 where 変更するレコードの条件

太郎のageを25に変更

 

データの削除・・・delete from テーブル名 where 削除するレコードの条件

太郎のデータを削除

 

mysqlのデータ型

number(数値)

int・・・整数

float・・・浮動小数点数(小数点第7位まで)

double・・・floatより制度が高いもの(小数点第15位まで)

 

string(文字列)

char()・・・固定のデータ(商品コードなど):4桁なら()に4と入れる。

varchar()・・・可変のデータ(メールアドレスなど):255バイトまで格納できる。文字数を制限する時にも使われる。

text・・・どのくらいの長さになるかわからないときに使う。

 

date/time(時間・日付)

date・・・日付

time・・・時間

datetime ・・・日時(例:'2017-07-22 17:22:33')

 

true/false(真偽値)

true・・・数字の1で管理されている

false・・・数字の0で管理されている

0とnillがfalse、空文字を含むそれ以外の値をtrueとする

 

データ型を指定する目的

  • 想定外の値が入るのを防ぐため
  • データ量を決めて箱を用意することで、無駄なデータを減らせるから

 

データの重複

データを追加していくと重複する部分が出てきます。

重複してしまうと、データに無駄が出て、運用上の管理が難しくなる。

そこで考えられたのが、カテゴリー毎にテーブルを切って、Primary key(id)で指定することでテーブル同士をつなげる方法です。

 

最後に

備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。

-プログラミング
-

Copyright© Nanayaku blog , 2019 All Rights Reserved Powered by AFFINGER5.