出典:魁!!男塾
こんにちは、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の中に多数のテーブルが入っています。
縦(列)をフィールド/カラムと言います。
横(行)をレコードと言います。
データベース
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)で指定することでテーブル同士をつなげる方法です。
最後に
備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。