100日後にエンジニアになるキミ - 37日目 - データベース - SQLの環境構築


本日もデータベース関連のお話です。

昨日のデータベースについてはこちら
100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて

SQLについて

こちらは昨日と全く一緒の内容です。

SQLはリレーショナルデータベースを操作するための言語になりますが
SQLそのものはプログラム言語ではありません。

ただしプログラム内ではSQLを作成して
データベースにアクセスするのに利用されます。

SQLには沢山の亜種も存在しますが、一応標準規格があるようで
ここで主に取り扱うのは標準SQLの話になります。

SQLは操作用のを書いてコマンドラインなどで実行することにより
データベースの様々な操作を執り行う事が出来るようになっています。

SQLの文法の種別は主に3つの系統に別れています。
DDLデータ定義言語 (data definition language)
DMLデータ操作言語 (data manipulation language)
DCLデータ制御言語 (data control language)

データ定義言語(DDL)

データベースそのものを定義するために最初に行うもので
主に下記のようながあります。
CREATE データベースオブジェクト(表、インデックス、制約など)の定義
DROP データベースオブジェクトの削除
ALTER データベースオブジェクトの定義変更

データ操作言語(DML)

おそらく一番用いられる文法はDMLで
主に下記のようながあります。

INSERT行データもしくは表データの挿入
UPDATE表を更新
DELETE表から特定行の削除
SELECT表データの検索、結果集合の取り出し

データ制御言語(DCL)

データベースの利用に様々な制限をつけるための文法で
主に下記のようながあります。

GRANT特定のデータベース利用者に特定の作業を行う権限を与える
REVOKE特定のデータベース利用者からすでに与えた権限を剥奪する
SET TRANSACTIONトランザクションモードの設定
BEGINトランザクションの開始
COMMITトランザクションの確定
ROLLBACKトランザクションの取り消し
SAVEPOINT任意にロールバック地点を設定する
LOCK表などの資源を占有する

SQLiteのインストール

SQLを習得するには、まずSQLを動かせる環境を用意しないといけません。

SQLは一般的なリレーショナルデータベースであれば
何でも実行する事ができます。

今回はその中でも比較的インストールなどが簡単な
SQLiteを用いることにします。

Macの人は最近のPCであればすでにインストールされていると思います。

ターミナルなどで確認してみましょう。
sqlite3 -version

version情報が出てきていたらインストール済みです。
出てこない場合はダウンロードしましょう。

SQLiteのダウンロード

まずは下記のページからSQLiteをダウンロードしましょう。
SQLite Download

ダウンロードしたらZIPファイルを解凍します。

中身は

コマンドラインツール
アナライザーツール
DIFFツール
3つのファイルが入っていると思います。

Windowsの人はフォルダを移動させCドライブの分かりやすいところに置きましょう。

SQLの実行

SQLの実行はコマンドラインかビューアーツールで行う事ができます。
Windowsの人は先ほどダウンロードしたフォルダまで移動する必要があります。

移動したらコマンドを実行してみましょう。
Macの人は特に気にせず、コマンド実行できると思います。

SQLite3の起動

sqlite3 データベース名.db

sqlite3 sample.db

起動したらsqlite>と表示されます。
これでSQLiteが起動できてデータベースの操作ができるようになりました。

初めはデータベースが存在しない状態なのですが
これでデータベースが作成されている状態です。

どこに出来たか確かめてみましょう。
.database

SQLite3の終了

.quit
.exit

これでコマンドラインに戻る事ができます。

DB Browserのインストール

SQLite単体でもSQL実行できますが
データを見たりするのは専用のツールがあったほうがやりやすいです。
下記からビューアーツールをダウンロードしましょう。

DB Browser

Macの人はDB Browser for SQLiteのdmgファイルを使ってアプリケーションにコピー

Windowsの人はDB Browser for SQLite - .zip (no installer) for 64-bit Windowsから
ダウンロードして解凍しましょう。

DB Browserの起動

Macの人はアプリケーション内のDB Browser
Windowsの人は解凍したフォルダ内のDB Browser for SQLite.exe
をダブルクリックなどで起動します。

新しいデータベースの作成

画面左上にあるNew Databaseをクリックします。

名前をつけて保存します。

作成画面が開くので

テーブル名をsample_table1
カラムを追加するならAdd fieldをクリックして追加します。

ここでは
カラム名 : Type
id : 'INTEGER'
name : TEXT
num : INTEGER
を指定してOKをクリックします。

これでテーブルが作成されました。

データベース上ではCREATE文を用いて作成をすることもできます。
DB Browserで作成した際にはどのようなCREATE文で作成したのかが
Schemaの部分に表示されます。

Schemaスキーマはテーブルの構造を意味します。
どのようなカラムが存在するか、どのようにデータを格納できるのかなどは
このスキーマを見ることで確認する事ができます。

データの格納

テーブルへのデータの格納方法としては
INSERT文で格納する。
CSVファイルなどを読み込んで格納する。
という方法があります。

INSERT文で格納する方法

下記を実行してみましょう。

BEGIN TRANSACTION;
INSERT INTO `sample_table1` VALUES ('1','鮎川なお','35');
INSERT INTO `sample_table1` VALUES ('2','及川なお','40');
INSERT INTO `sample_table1` VALUES ('3','菜々緒','30');
COMMIT;

実行方法は画面中央のExecute SQLをクリックして
エディター画面に移動して貼り付けます。

貼り付けたら右三角の実行ボタンをクリックするとINSERT文が実行されます。
クリックするたび実行されてしまうので、1回だけにしましょう。

実行結果はBrowser Dataをクリックしてテーブルのデータを確認できます。

ちなみに上記SQL文の中で
INSERTの部分が投入するデータの部分で
BEGIN TRANSACTION;,COMMIT;はトランザクションの開始、終了を意味します。

CREATE文とNSERT文を同時に実行することもできます。

BEGIN TRANSACTION;
CREATE TABLE `sample_table2` (
 `id` INTEGER PRIMARY KEY AUTOINCREMENT,
 `name` TEXT NOT NULL,
 `old` INTEGER,
 `address` TEXT
);
INSERT INTO `sample_table2` VALUES ('1','加藤鷹','59','東京都');
INSERT INTO `sample_table2` VALUES ('2','しみけん','34','北海道');
INSERT INTO `sample_table2` VALUES ('3','チョコボール','53','東京都');
INSERT INTO `sample_table2` VALUES ('4','吉村卓','47','愛知県');
COMMIT;

新しくsample_table2を作成してデータも投入します。
Tableの部分でテーブル名を選択して切り替えます。

作成したテーブルはDatabese Structureでテーブル一覧から確認できます。
テーブルを消すにはテーブル名を右クリックしてDelete Tableを選択します。

CSVファイルから格納する方法

sample2.csv
id,name,old,address
1,加藤鷹,59,東京都
2,しみけん,34,北海道
3,チョコボール,53,東京都
4,吉村卓,47,愛知県

上記をコピーしてCSVファイルを作成しましょう。
名前はsample2.csvとします。

読み込み方はFile,ImportからTable from CSV fileを選択し
保存したsammple2.csvを選択します。

OKをクリックするとsample2でテーブル作成がされると思います。

SQL文の実行にはデータが必要なので
テーブルを用意できるようにしておきましょう。

まとめ

データベースをインストールしてSQL文が実行できる環境を整えておこう。
データベースに関してはMySQLなど他にも沢山あるので
好きなデータベース環境を構築してみよう。

君がエンジニアになるまであと63日

作者の情報

乙pyのHP:
http://www.otupy.net/

Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter:
https://twitter.com/otupython