ROWID
SQLiteではテーブルを作成しデータを追加すると、データ毎にROWIDという値が自動的に割り当てられます。このROWIDはあたかもカラムのように扱うことができますのでSELECT文などで取り出すことができます。
例として次のようなテーブルを作成し、データを2行追加します。
このテーブルからROWIDも含めてデータを取得します。ROWIDはカラムのように扱うことができますので、SELECT文でカラムを指定する箇所に記述します。(ただしカラム名に「*」を指定してもROWIDは含まれません)。
select ROWID, * from books;
このようにROWIDはデータ毎に自動的に値が格納されます。
格納される値は現在ROWIDに格納されている最大の値に1を加えた値が格納されます。また一度使用された値であっても、その値が格納されたデータが削除され使用されなくなると、再度同じ値が他のデータに割り当てられる可能性があります。
ROWIDは自動的に値が割り当てられますが、データを追加する時に任意の値を指定することもできます。
SELECT文の条件式などでROWIDを使用することもできます。
注意点としてROWIDは重複した値を持つことはできません。
既に使われている値をROWIDに指定してデータを追加しようとすると「SQL error: PRIMARY KEY must be unique」というエラーが表示されます。
ここまでのROWIDの特徴を見て頂くと分かると思いますが、ROWIDはデータ型をINTEGERでPRIMARY KEY制約が設定されているカラムとまったく同じ挙動を示します。
実はカラムにINTEGER PRIMARY KEYを設定すると、そのカラムはROWIDと同じ値を参照します。INTEGER PRIMARY KEYが設定されたカラムに値を指定すればROWIDも同じ値となり、ROWIDに値を指定すればINTEGER PRIMARY KEYが設定されたカラムも同じ値となります。(別々の値を指定してデータを追加した場合は、後から指定した値が両方に格納されます)。
ROWIDの別名
ROWIDは別名として「OID」または「_ROWID_」も利用することができます。
違いはありません。他のデータベースとの互換性のために用意されているだけと思います。