Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

本記事では、データベースをあつかいます。

ある程度データの数が多くなると、そのあつかいに注意しないと、メンテナンス性も悪いし速度の向上も期待できません。

テキストファイルで管理すると、誰かが不用意に手作業で書き換えてしまうことも考えられます。

データの変更も容易ではありません。

そこでデータベースが必要になるのです。

本記事では数あるデータベースの中で、SQLiteを取り上げて解説を進めます。

データベースとは何か

冒頭で述べたように、データベースとはデータを管理してくれる便利なソフトウェアです。

もう少し詳細に解説しましょう。

値の読み書きをSQLで簡単にする

住所録をテキストファイルでCSV形式で保存するとしましょう。

欲しい住所を検索して、ヒットした行を取り出して、カンマごとに分割して・・・と毎回やっていては手間がかかって仕方ありません。

そこでデータベースの出番となります。

データベースは内部でデータ管理し、操作するときはSQLという言語でできるようにしています。

つまり本来は複雑な処理を経て初めて得られるデータを、SQlという簡易な開発言語で操作できるのです。

たとえばテーブルからすべてのデータを取るSQLは以下のとおりです。

SELECT * FROM テーブル名

SQLはまるで文章のようで、直感的でわかりやすいですね。

速度向上

単純にテーブルにデータを格納するだけでなく、効率的に目的のデータにたどり着けるように「キー」というものを付加します。

これにより、テキスト検索よりも高速に欲しいデータに飛ぶことができます。

セキュリティ

アクセスできるユーザーごとに、何をどこまで許すのかを設定できます。

つまりデータの更新や削除だけは高権限者のみ許す、といった設定が可能です。

データベースの種類

データベースは、有償無償や製造元を含めて、さまざまな種類が存在します。

有名なものは以下です。

かっこの中は製造元です。

 

 

今回は、OSSでかつ軽量であつかいの容易な「SQLite」を使用します。

SQLiteのセットアップ

前置きはこれくらいにして、SQLiteのセットアップにいきましょう。

以下を実行してください。

$ gem install sqlite3

エラーメッセージが何も表示されなければOKです。

データベースとテーブルを作る

データを格納するためには、データベースとテーブルが必要になります。

1つのデータ種ごとに「テーブル」と呼ばれる、いわゆる器にデータを格納します。

テーブルの中身は二次元のデータ、つまりExcelのシートのような形式と思ってください。

データベースとテーブルの関係は、図にすると以下のようになります。

データベースという器の中に、多数のテーブルを格納できます。

今回はこれを一度に両方作ります。

require "sqlite3"

SQLite3::Database.open "testdb" do |db|
	db.execute "CREATE TABLE YUBIN (ZIP TEXT, ADDRESS TEXT)"
end

※SQLite以外は、最初にデータベースを作っておく必要があります。

テーブルができたかどうか、件数を取得してみましょう。

テーブルを作っただけでデータがないので、0件となるはずです。

require "sqlite3"

SQLite3::Database.open "testdb" do |db|
	db.execute("SELECT COUNT(*) FROM YUBIN") do |count|
		puts count
	end
end

[実行結果]

0

テーブルができていない場合は、以下のエラーが返ってきます。

`initialize': no such table: YUBIN (SQLite3::SQLException)

エラーメッセージをまるごとググって対処してください。

データ操作とSQLiteの専用GUIツール

データの操作を、順を追って解説します。

データがないと操作も何もできないので、まずはデータを入れましょう。

データの確認は、SQLiteの専用GUIツール「DB Browser for SQLite」を使ってビジュアル的に確認できます。

このツールはデータを分かりやすく見せるのと同時に、編集や削除といった操作が可能です。

データの挿入 INSERT

データをテーブルに挿入するには、SQLのINSERT文を使います。

require "sqlite3"

SQLite3::Database.open "testdb" do |db|
	db.execute('INSERT INTO YUBIN VALUES("1020072","東京都千代田区神田西福田町");')
	db.execute('INSERT INTO YUBIN VALUES("1020072","東京都千代田区飯田橋");')
end

これでもよいのですが、もう少しスマートにいきましょう。

配列に入れたい値が入っているとして、それをeachで回します。

require "sqlite3"

array = [["1010037","東京都千代田区神田西福田町"],
	       ["1020072","東京都千代田区飯田橋"]]

SQLite3::Database.open "testdb" do |db|
	array.each do |val|
		db.execute 'INSERT INTO YUBIN VALUES(?,?);', val[0], val[1]
	end 
end

この結果を確認しましょう。

データが挿入されたのがお分かりでしょうか。

また二次元の表のように見えることも注目しましょう。

データの抽出 SELECT

データを抽出するのはSELECTを使います。

require "sqlite3"

SQLite3::Database.open "testdb" do |db|
	db.execute('SELECT * FROM YUBIN;') do |rows|
		p rows
	end
end

[実行結果]

["1010037", "東京都千代田区神田西福田町"]
["1020072", "東京都千代田区飯田橋"]

配列として取得できました。

先ほどのDB Browserで出てきた内容と同じ内容が取得できたのがわかりますね。

まとめ

本記事ではデータベース、特にSQLiteのあつかいを解説しました。

削除と更新は割愛しましたが、本記事の内容を理解できればインターネットで情報を検索して対応できます。

またSQLite以外のDBにもぜひチャレンジしてみてくださいね!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。