1
2

More than 3 years have passed since last update.

データベースの基礎知識(SQL, CRUD)

Posted at

はじめに

プログラミングを学習していると、「データベース」という言葉や「SQL」といった言葉が頻繁に出てくる。
私は、なんとなくデータベースはデータの保管場所(そのままやないか)というざっくりしたイメージしかありませんでした。
ざっくりしたイメージだけだと。CRADって? SQLがわからない。といったことがあったので、データベースに関して、きちんと理解を深めたいので、この記事を書きます。

データベースってなに?

・WEBアプリにおけるデータベース(DB)はデータを整理して格納する保存先の役割を持つものです。
・データを整理して失われない形で格納する場所のことをデータベース(DB)という。
・また、格納されたデータを効率的に取得、更新、削除するための手段を提供してくれるシステムのことをデータベース・マネジメントシステム(DBMS)と呼ぶ。

っと、言っていますが、要はWEBアプリで必要なデータを保管するためのBOXのようなイメージですかね。(違っていたらご指摘ください)
ログインパスワードや、投稿した記事、ECサイトの商品など、すべてデータベースに保存されています。
このQiitaの記事が見れるのも、色んな記事がデータベースに保存されているからだと思います。
データベースが無いと、WEBアプリケーションとして、機能しなくなります。

CRADってなに?

簡単に言ってしまうと
登録・変更・削除・参照機能のことです。
具体的には、上記で記述したデータベースを操作する際に必要な最低限の機能である、
・登録機能(Create)
・参照機能(
Read)
・更新機能(
Update)
・削除機能(
Delete)
の4つの機能をあわせた表現を「CRUD」と言います。意外と簡単ですね。

SQLってなに?

データベースとやり取りするときに使う言語です。
上記に記述したCRUDによる、登録機能や、参照機能、更新機能、削除機能を操作するための言語ということです。

それではデータベースを作成し、登録(Create)、参照(Read)、更新(Update)する流れを簡単にコードを書いて説明します。

データベースの作成コマンド

データベースの作成
$ sqlite3 db/sandbox.sqlite3

このコマンドを実行すると「sqlite>」というプロンプトが表示され、入力待ちの状態になる。

テーブルの作成

データベース内でのテーブル
$ sqlite> create table users(id integer, name text); #文末には;(セミコロン)をつける

この場合は、id(数字)とname(文字)をカラムに持つ、usersテーブルを作成する。
コマンドを実行すると、db/sandbox.sqlite3ファイルが作成される。
テーブルを作成するにはこのように
create table テーブル名(カラム名A 型, カラム名B 型・・・);
という構文を使用する。(Rubyは基本的にセミコロンをつけないが、SQL文では文末にセミコロンが必要なので気をつける)

⚠操作ミスでテーブルを削除したい時は?

usersテーブルを作りたかったのにスペルミスをしたり、何らかのミスをしたままテーブルを作成してしまうこともあるかもしれません。
その場合は、一度、テーブルを削除してから新しいテーブルを再作成しましょう。
テーブルを削除するには
drop table テーブル名;
というコマンドでテーブルの削除ができます。尚、テーブルにデータがあるときは、中のデータも含めて削除されるので注意が必要です。

SQL文の種類と概要

基本的なデータベースレコードを操作するためのSQL文を紹介します。(ほんとにざっくりしていると思います)

1 : insert文(テーブルにレコードを作成) [Create]

insert into テーブル名(カラム名1, カラム名2,...) values(値1, 値2,...);
概要:指定したテーブルにレコードを1つ格納する。指定したカラムと値の順序が一致している必要がある。値をセットしないときはnullと書きます。
※例

insert文
$ sqlite> insert into users(id, name) values(1, '山田太郎');
$ sqlite> insert into users(id, name) values(2, '鈴木一郎');
$ sqlite> insert into users(id, name) values(3, 'タイロン・ウッズ');

これで、usersテーブルid:1 山田太郎、id:2 鈴木一郎、id:3 タイロン・ウッズ というレコードが作成されました。

2 : select文(テーブルに格納されたレコードを参照) [Read]

select カラム名1, カラム名2, ...from テーブル名 where 条件式;
概要:指定したテーブルに格納されているレコードのうち条件式にマッチするものを指定したカラム分取り出す。すべてのカラムを取り出す場合には*(アスタリスク)を指定します。
※例

select文
$ sqlite> select name from users;
山田太郎
鈴木一郎
タイロン・ウッズ

これはusersテーブルnameカラムを取り出しています。
先程、usersテーブルにidとnameカラムを追加しましたので、nameカラムを指定すると、nameカラムのすべての値を取り出す事ができます。

3 : update文(テーブルに格納されたレコードを更新) [Update]

update テーブル名 set カラム名1 = 値1, カラム名2 = 値2, ... where条件式;
概要:指定したテーブルに格納されているレコードのうちm条件式にマッチするものを指定した値で更新する。ただし、条件式は省略可能です。複数のレコードが一致した場合には、全ての値を書き換えてしまうので注意が必要です。
※例

update文
$ sqlite> update users set name = '山田太郎' where id = 1; #レコードの更新
$ sqlite> select * from users where id = 1; #更新したレコードの参照
$ 1|山田太郎

4 : delete文(テーブルに格納されたレコードを削除) [Delete]

delete from テーブル名 where 条件式;
概要:指定したテーブルに格納されているレコードのうち、条件式にマッチするものを削除する。ただし条件式は省略可能。複数のレコードが一致した場合は、全てのレコードを削除してしまうので注意が必要です。
※例

delete文
$ sqlite> delete from users where id = 1;   #usersテーブルのidが1のデータを削除
$ sqlite> select * from users;   #usersテーブルの全てのデータを参照
↓ id1が削除されていることがわかる
2|鈴木一郎
3|タイロン・ウッズ

最後に

データベースの基本的な理解はできたと思います。これからアプリケーションを開発する上で、データベースは重要なものになると思うので、きちんと理解し、DB設計などができるように勉強していきます。

参考記事

SQLとは 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
CRUDとは 「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
たった1日で基本が身に付く! Ruby on Rails 超入門 たった1 日で基本が身に付く!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2