SQLiteを学んでいこうという連載の3回目です。前回の記事はこちらになります。
前回は、Anaconda PromptからSQLiteを起動してその概要を見てみました。なんだかいろいろな機能がありますね。
SQLiteは起動時になにも指定せずに起動すると、インメモリデータベースに接続されています。この状態でもテーブルを作成したりデータを入力したりをすることができるのですが、これらの内容はSQLite終了時に消えてしまいます。そこで今回は、データベースファイルを作成して操作してみようと思います。
データベースファイルの作成と接続
SQLiteでデータベースファイルを作成する方法はシンプルです。起動時にファイル名を指定するだけです。
SQLite3 ファイル名
とすれば指定したファイル名でデータベースファイルが作成され接続されます。すでに同名のファイルがある場合は、そのファイルに接続されます。新規作成の場合、実際のファイルはテーブルを作成した際に作成されます。また、ドットコマンドの「.open ファイル名」でも同じ結果となります。SQLiteでは、ファイルの拡張子をとくに指定する必要はありません。この連載では「.db」で統一したいと思います。
テーブルの作成
次は作成したデータベースにテーブルを追加してみます。テーブルの追加はSQL文の「CREATE TABLE」で行います。書式は以下の通りです。
CREATE TABLE テーブル名(列名1 データ型,列名2 データ型,列名3 データ型・・・);
データ型の指定は必須ではありません。作成したテーブルの一覧を確認するにはドットコマンドの「.tables」を用います。また、作成したテーブルの削除はSQL文の「DROP TABLE」で行います。
DROP TABLE テーブル名;
ここまでの動作を確認してみましょう。Anaconda Promptから「SqLite3 C:\WORK\TEST.db」と入力して以下を実行してみました。
SQLite version 3.39.3 2022-09-05 11:02:23 Enter ".help" for usage hints. sqlite> .show echo: off eqp: off explain: auto headers: off mode: list nullvalue: "" output: stdout colseparator: "|" rowseparator: "\n" stats: off width: filename: C:\WORK\TEST.db sqlite> CREATE TABLE sample(id integer); sqlite> .tables sample sqlite> DROP TABLE sample; sqlite> .tables sqlite> .exit
「.show」で確認してみると、「C:\WORK\TEST.db」に接続されている事を確認できます。続いて「CREATE TABLE」でテーブル「sample」を作成しました。 「.tables」で確認してみると、テーブルができいることを確認できます。「DROP TABLE」で削除すると、テーブルが削除されていることが判ります。
データ型
上記の「CREATE TABLE」で指定する列のデータ型ですが、以下の5つを選べます。
- TEXT
- NUMERIC
- INTEGER
- REAL
- BLOB※
※BLOBは、Binary Large OBjectの略。任意のバイナリデータ。
入力データのデータ型とは異なるので気を付けてください。
入力データのデータ型は以下の5つです。
型 | 内容 |
---|---|
NULL | NULL値 |
INTEGER | 符号付整数。値の大きさによって、1,2,3,4,6,8バイトのいずれかとなる |
REAL | IEEE浮動小数点数。8バイト |
TEXT | テキスト。文字セットはUTF-8,UTF-16BE,UTF-16-LEのいずれか |
BLOB | 入力データのまま |
列のデータ型とは少し異なりますね。SQLiteは他のデータベースシステムと異なり、データに動的な型付けを使用します。データ型を指定した列でも色々な型のデータを入力できてしまいます。列のデータ型と入力データのデータ型が異なっていても、列のデータ型に合わせる形で入力データを変換して記録されます。
また、SQLiteにはブール型や日付/時間型のデータ型はありません。
次回は基本機能の確認
以上、今回はデータベースファイルの作り方、テーブルの追加・削除方法、列と入力データのデータ型についてご紹介しました。次回はデータベースの基本機能について確認していきたいと思います。お楽しみに!!