前回はインストールの方法を書きました。
今回は実際にSQLiteを触って、DB、テーブルの作成、操作について記載します。
DB作成とDBアクセス(接続)
SQLiteはDBを作成すると1つのファイルを生成します。
このファイルにDBの情報がすべて詰まっていると言っても過言ではありません。
では、実際にDBを作成するために下記コマンドを実行してみましょう。
sqlite3 ./test_DB.sqlite
コマンドを実行するとSQLiteのコマンドプロンプトに移動します。
簡単に言うと、test_db.sqlite
というDBにログインした状態になります。
つまり、作成と同時にログインした状態と考えても良いでしょう。
SQLiteのコマンドプロンプトから抜ける場合は下記コマンドを実行します。
.exit
テーブルも何も作成していない場合、何もファイルはできません。
※ファイルの拡張子はなんでもokです。今回は分かるように.sqlite
としたにすぎません。
DB削除時のお話になりますが、SQLiteは一般的なDBと異なり、DBサーバと言うものがありません。
組込み型のDBです。
そのため、DROP DATABASE データベース名
といったことはせずに
通常のファイルと同様に上記ファイルを削除すれば事足ります。
テーブル作成
では、改めてSQLiteにアクセスし、簡単テーブルを作成します。
テーブル名:employee_tbl
カラム名 | データ型 | その他 |
---|---|---|
id | INTEGER | 主キーかつ、自動採番 |
name | TEXT | 名前 |
gender | INTEGER(1) | 性別・・・男:0、女:1 |
salary | INTEGER | 給料 |
notes | TEXT | 備考 |
【SQL文】
CREATE TABLE employee_tbl ( id INTEGER PRIMARY KEY, name TEXT, gender INTEGER(1), salary INTEGER, notes TEXT)
SQL文自体は一般的なものと同じですが、1点異なる箇所があります。
MySQLやMariaDBは自動採番を行う際、AUTO_INCREMENT
というオプションを付けます。
PostgreSQLについては、シーケンステーブルを作成し、カラムとリンクさせます。
しかし、SQLiteに関しては特に何も記載していません。
これは、PRIMARY KEY制約を付けたカラムのデータ型がINGETERであった場合、
自動採番される仕組みが備わっているためです。
自動採番
前述でありました自動採番について、触れてみたいと思います。
まず、通常通りのINSERT文を書いて正常に自動採番されているかを見たいと思います。
正常に自動採番されていることが分かるかと思います。
では、ここで2件目のデータ(SAK HANAKO)を削除し、再度データを登録してみたいと思います。
どうなるでしょう・・・
また、IDに2が付きました。
このことから分かるように、登録されている値の最大値+1の値が設定されます。
つまり、番号を他のテーブルで管理していないため、このような事象が発生すると考えられます。
念のため、中抜けのパターンも試してみました。
やはり、最大値+1が設定されています。
プログラム作成を行う際には、この点は注意したいところです。
SQLが学べる 関連連載リンク
データベースの基礎が学べるSQL基礎講座
SQL基礎 連載
練習問題を通じてSQL理解度アップの人気連載!
SQL練習問題集