【SQLite3】データベースとSQL(実際にDBを作成して接続してみる)

サーバ・DBなどのイメージズを作成している

Pythonでアプリケーションを作成した際、【SQLite3】を利用しました。

SQLiteは、非常に軽量で動作も安定しており、使いやすいデータベースです。

またPythonや他の言語と組み合わせることによって、アプリケーションを作成することができます。

SQLiteの、導入としてDBの作成と接続をしてみたいと思います。

禄太
その前に!そもそも、SQLite3(データベース)とSQLってなに?からまとめさせてください。
今日まとめたいこと
  • データベースってなんだ?という初級者の方に向けて、SQLite3についてまとめました。
  • 実際にデータベースを作成 / 接続し、動作確認を実施します。

動作確認を含めてご参照いただければ幸いです。

目次

SQLite3とは?

SQLite3とは、非常に軽量・小型なデータベースソフトウェアです。

通常データベースを利用する際は、設定ファイルを用意し、プロセスを起動して使用する。などの設定が必要ですが、SQLiteでは必要ありません。

インストール後すぐに使用することができます(Macを利用されている方は最初からインストールされています)。

また、パスワードの設定も不要であり、初めてデータベースやSQLを使う方には使いやすいのではないかと思います。

禄太
実際、練習用やローカルだけで使う目的であれば、SQLiteだけで事足りるのではないかと思います。

SQLite3を利用するメリット

メリット
  1. 導入 / 利用が簡単!
  2. さまざまなアプリケーションに組み込める!
  3. データ型を定めなくてよい!

【③データ型を定めなくてよい!】だけ、もう少し補足させてください。

一般的なデータベースの場合、テーブルカラムごとに「String型(文字列)」「Integer型(数値)」などのデータ型を定義しなければなりません。

データ型を指定すると、異なる型のデータを格納することは原則としてできません。

例えば、「Integer型(数値)」で定めたカラムに、「String型(文字列)」を格納することはできないのです。

一見不便そうですが、金額を入れたい項目に、誤って氏名など異なったデータが混入することが防げます。

ちなみに、
テーブルとは【表】のことを指しています。
カラムとは【列】のことを指しています。
ロウとは【行】のことを指しています。

表(テーブル)列(カラム)1 列(カラム)2
行(ロウ)1 White_shirt 10000
行(ロウ)2 Red_shirt 15000

しかし、SQLiteの場合、データ型を指定しなくてもテーブルを作成することができます。

また、1つのカラムの中に、異なる型のデータを格納することも可能です。

SQLiteでも、データ型を指定することは可能です。

指定しない場合は、格納されたデータによって自動でデータ型を判別しています。

禄太
ただし、これによって、金額の項目に氏名が入ってしまった!ということにもなりかねないので、実際使用酢祭は注意が必要です。
私は、データベースを作成する際は、型を指定するようにしています。

SQLとは?

SQLとは、データベースを管理・操作するために使用される言語です。

※プログラミング言語とは異なります!

以下のような用途で、使用されます。

用途
  • データベースに、データを挿入したい。
  • データベースのデータを、更新したい。
  • データベースに格納されているデータを参照したい。
  • データベースから、データを削除したい。

ざっくりと、SQLは、データの検索・挿入・削除・更新などの命令をデータベースに対して行う。ものなんだ。ということがイメージしていただければ大丈夫です。

今回の作業場所

###デスクトップ > work 配下にDBを作成する###

Users/
 └ usrname/
   └ Desktop/
     └ work/
      └─ stockinfo.sqlite3
#デスクトップに移動する。
% cd Desktop

#デスクトップ上に、【work】フォルダを作成する
% mkdir work

#作成したworkフォルダに移動する
% cd work

データベースの作成

#SQLite3で、データベースを作成する基本構文

sqlite3 データベース名称 ;
禄太
最後に、「;」を忘れないように注意です!
以下のサンプルを実行すると、SQLite3でデータベースを作成の上、接続することができます。
sqlite3 stockinfo.sqlite3;
禄太
画面上何も変化がないように見えますが、ターミナルで【sqlite>】という表示になっていれば接続されています。
初期実行時の補足
自分が作成したいDB(今回はstockinfo.sqlite3)が未作成の場合は、新しいDB(stockinfo.sqlite3)が作成されます。
そして、ご自身が作成したDBに接続されます。

もし、作成済みの場合は同じSQLを実行することで、DBに接続することができます。

実際にテーブルを作成してみる

CREATE TABLE list(
MEI_CODE TEXT NOT NULL ,
MEI_MS TEXT  NOT NULL ,
TRA_DATE TEXT NOT NULL ,
PRICE REAL  NOT NULL ,
ST_PRI REAL  NOT NULL ,
HI_PRI REAL  NOT NULL ,
LW_PRI REAL  NOT NULL ,
VOLUME INTEGER  NOT NULL ,
UNIQUE(MEI_CODE,TRA_DATE)
);
禄太
個人的な興味・関心から、株価情報を保持するデータベースを作成してみたいと思います。

補足(CREATE文)

テーブルを作成する際は、CREATE TABLE と記載して、テーブル名称とカラム名を列挙します。

これで、テーブルが完成です!

CREATE TABLE テーブル名称(
カラム名 ,
カラム名 ,
...(中略)...
);

補足(.tables)

すみません、、、↑のキャプチャでは【.table】としていますが、実際は【.tables】が正しいです(複数形にするのが正しい)。

データベース内にあるテーブルの一覧を取得できます。

EOF

SQLiteで、データベース作成から接続までをご紹介しました。

CRUD操作について、次回まとめたいと思います。

本日も一緒に学習してくださって、ありがとうございました!

では、また次回!