テーブルの確認(SQLiteを学ぶ_10)

SQLiteを学んでいこうという連載の10回目です。前回の記事はこちらになります。

hirocom777.hatenadiary.org

前回は、SQLiteで日時データを扱う際のポイントについてご紹介しました。SQLiteの日時データは結構癖があるので、事前に認識しておきたいところです。

今回からテーブルについて見ていこうと思います。データベースファイルの中身ですね。 以前、一般的なデータベースシステムに要求される基本機能にCRUDがあります。データの作成(Create)、読み出し(Read)、更新(Update)、削除(Delete)の頭文字を取ったものです。しかし、他の形でテーブルを操作することもあります。今回はテーブル内容の確認方法についてご紹介します。

テーブルの確認

まずは以下の操作で今回確認に使用するテーブルを作りましょう。また、今回は結果を確認しやすくするために「.mode line」と設定しました。各列ごとに分けて表示されます。

sqlite> .mode line
sqlite> CREATE TABLE sample(id INTEGER,name TEXT,age INTEGER);

SQLiteのデータベースファイルには「sqlite_master」という名前のテーブル情報を管理するための内部テーブルがあります。この内容を確認すれば、デーダースファイル内のオブジェクト(ここではデータベースファイルを構成する要素のこと)構成が分かります。確認方法は他のテーブルと一緒でSQL文の「SELECT」を使います。以下を入力、実行してみました。

sqlite> SELECT * FROM sqlite_master;
    type = table
    name = sample
tbl_name = sample
rootpage = 2
     sql = CREATE TABLE sample(id INTEGER,name TEXT,age INTEGER)

4つの要素が表示されました。1つずつ見ていきましょう。

  • type

オブジェクトのタイプです。「table」以外に「index」、「view」、「trigger」があります。これらについては別の機会に説明します。

  • name

オブジェクトの名前です。オブジェクトのタイプが「table」の場合は「tbl_name」と同じになります。

  • tbl_name

オブジェクトが所属するテーブルの名前です。

  • rootpage

インデックスで使用するページ番号です。

オブジェクトが生成される際に使用されたSQL文です。

列情報の確認

テーブルの各列の情報を取得するには以下のSQL文を使います。

sqlite> PRAGMA table_info(テーブル名);

「PRAGMA」は、SQLite固有の拡張機能です。実行してみましょう。

sqlite> PRAGMA table_info(sample);
       cid = 0
      name = id
      type = INTEGER
   notnull = 0
dflt_value =
        pk = 0

       cid = 1
      name = name
      type = TEXT
   notnull = 0
dflt_value =
        pk = 0

       cid = 2
      name = age
      type = INTEGER
   notnull = 0
dflt_value =
        pk = 0

各列ごとに6つの要素が表示されました。1つずつ見ていきましょう。

  • cid

列の番号です

  • name

列の名前です

  • type

列に設定されたデータ型です

  • notnull

null(データがない状態)が許可されるかどうかを表します。許可されていれば「0」、許可されていなければ「1」となります。 許可されない状態のことを「not null制約」がかかっていると言ったりしますが、詳細は別の機会に説明します。

デフォルト値を設定します。指定されていない場合はnullとなります。デフォルト値が設定されている状態のことを「デフォルト制約」がかかっていると言ったりしますが、詳細は別の機会に説明します。

  • pk

主キーとして設定されているかどうかを表します。設定されていれば「1」、設定されていなければ「0」となります。主キーについては別の機会に説明します。

レコード数の確認

レコード数の確認については、以下のSQLで可能です。

SELECT COUNT(*) FROM テーブル名;

レコードを追加して、レコード数を確認してみましょう。

sqlite> SELECT COUNT(*) FROM sample;
COUNT(*) = 0
sqlite> INSERT INTO sample(id,name,age)
   ...> VALUES(1,"MURAYAMA",22),
   ...> (2,"OOSAKI",29),
   ...> (3,"TANAKA",26);
sqlite> SELECT COUNT(*) FROM sample;
COUNT(*) = 3

最初はレコード数が0、レコードを追加した後はレコード数が3と確認できました。

次回はテーブル操作

いかがでしょうか。これでテーブルの状態を確認できるようになりました。次回はこれを踏まえてテーブル操作の方法をご紹介します。お楽しみに!!

hirocom777.hatenadiary.org

SQLite学習記事のまとめですはこちらから