本日もデータベース関連のお話です。
昨日のデータベースについてはこちら
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実行できますが
データを見たりするのは専用のツールがあったほうがやりやすいです。
下記からビューアーツールをダウンロードしましょう。
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ファイルから格納する方法
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