プログラミング備忘録

仕事で覚えたことのまとめ

SQLite入門(2) データベースの階層構造を理解する

前回のあらすじ

C\sqlite > sqlite3 my_database.db
SQLite version 3.35.1 2021-03-15 16:53:57
Enter ".help" for usage hints.
C\sqlite >

無償で使えるデータベース管理ツール「SQLite」をPCへ導入、データベースを作成した。

データベースにデータを入れる

前回のsqlite3 my_database.dbを実行した段階では、.dbファイルにまだデータはおろか、データを入れる枠すら作成されていない状態です。 データベースの階層構造を理解しつつ、データを入れる枠であるテーブルとカラムを作成します。

データベースの階層構造

f:id:nigou2:20210724181503p:plain

データの型

SQLiteの型 説明 MySQLの型
NULL NULL値
TEXT テキスト CHAR, VARCHAR
INTEGER 整数 TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
REAL 浮動小数点数 FLOAT, DOUBLE
BLOB Binary Large OBject。入力データをそのまま格納

※DATETIME(日付)型はSQLiteではTEXT型として扱われる。 ※MySQLではVARCHAR(10)のようにデータのバイト数上限を指定できるが、SQLiteでは適用されない。

詳細なまとめ

# テーブルを作る

sqlite > create tabel my_table(id integer , name text , del_flag integer);

create table [テーブル名]\(カラム名 データ型\);

末尾のセミコロンを忘れずに!

データ型の後ろに not nullと記載するとNULLをデータ上に生成しないように指定など、テーブル作成にまつわるオプションは数多く存在する。参考

作ったテーブルを確認する

.tableでデータベースに上に作成したテーブルを確認できる。

sqlite> .table
my_table

どんな作り方をしたかを見たい場合はsqlite_masterからSELECTする。 以下はさらにwhereでテーブルの名前で指定している。 .mode line で行ごとに出力させると以下のように表示される

sqlite > .mode line
sqlite > select * from sqlite_master where type ='table' and name='my_table'
        type = table
      name = my_table
tbl_name = my_table
rootpage = 2
          sql = CREATE TABLE my_table (id integer , name text , del_flag integer)

データを入れる

INSERT INTO テーブル名 VALUES(値1, 値2, ...);でデータをテーブルへ格納していく。

sqlite > insert into my_table values('1','tom',0)
sqlite > select * from my_Table
          id = 1
   name  = htom
del_flag = 0

入っているデータを全て確認したいならselect * from [テーブル名]

テーブルを削除する

drop [テーブル名];でテーブルごと削除ができます。

sqlite > drop my_table;

最後に

コマンドの末尾には「;」を付けるのが必須です。お忘れなく!

次回

CSVをそのままテーブルに取り込む