なんだかGoodVibes

日々の勉強メモです。

【SQLite】テーブルの作成とデータの追加

こんにちは。
SQLiteの勉強メモです。

概要

以下の記事の続きになります。

nandakagoodvibes.hatenablog.com


テーブルの作成

itemsというテーブルを以下のカラムで作成します。

名前 PRIMARY KEY NOT NULL
Id INTEGER
Name TEXT
TypeId INTEGER
ColorId INTEGER

以下のコマンドでそれぞれのテーブルを作成します。
プライマリーキーはIdです。
さらに、IdにはAUTOINCREMENTを設定します。
これは、INTEGERでPRIMARY KEYに設定した場合に、
値を指定しなくても最大のインデックス+1を自動で採番するというものです。

sqlite> CREATE TABLE items(
   ...>   Id INTEGER PRIMARY KEY AUTOINCREMENT
   ...> , Name TEXT NOT NULL
   ...> , TypeId INTEGER NOT NULL
   ...> , ColorId INTEGER NOT NULL
   ...> );


テーブルの一覧を以下のコマンドで確認します。

sqlite> .tables
items

テーブルが生成されているが確認できます。


テーブルの削除

まず、testというテーブルを作成します。

sqlite> CREATE TABLE test(id int primary key, name text);
sqlite> .tables
items   test

削除する際のコマンドは、DROP TABLEです。

sqlite> DROP TABLE test;
sqlite> .tables
items

testテーブルが削除されたのが確認できました。


カラムの追加

itemsテーブルにMemoというカラムを追加しましょう。
型はTEXTです。

sqlite> ALTER TABLE items ADD COLUMN Memo TEXT;
sqlite> .schema items
CREATE TABLE items(
  Id INTEGER PRIMARY KEY AUTOINCREMENT
, Name TEXT NOT NULL
, TypeId INTEGER NOT NULL
, ColorId INTEGER NOT NULL
, Memo TEXT);


データの追加

全データを入力する

INSERT INTO テーブル名 VALUES(...)
で行います。

itemsテーブルにデータを追加してみましょう。

sqlite> INSERT INTO items VALUES(1, 'Apple', 1, 1, NULL);

SELECTで確認するとデータが追加されているのがわかります。

sqlite> SELECT * FROM items;
1|Apple|1|1|
特定のカラムのデータを入力する

INSERT INTO テーブル名(カラム名カラム名…) VALUES(データ、データ…); で行います。

sqlite> INSERT INTO items(Name, TypeId, ColorId) VALUES('Strawberry', 1, 1);

SELECTで確認するとデータが追加されているのがわかります。
Idは自動で値が割り振られています。

sqlite> SELECT * FROM items;
1|Apple|1|1|
2|Strawberry|1|1|


SELECTの結果を見やすくする

SELECTした際、初期のままだと非常に見にくいです。

sqlite> SELECT * FROM items;
1|Apple|1|1|
2|Strawberry|1|1|

なので、カラム名を表示するようにし、
modeをカラム毎に左揃えで表示する設定に変更します。

sqlite> .headers on
sqlite> .mode column

結果は以下のようになります。 非常に見やすくなりますね。

sqlite> SELECT * FROM items;
Id          Name        TypeId      ColorId     Memo      
----------  ----------  ----------  ----------  ----------
1           Apple       1           1                     
2           Strawberry  1           1      



以上です。