select、insert、delete、update と続いてきたので、今回は新しいテーブルの作成方法と、削除方法について解説したいと思います。
今回で DIYプログラミングでデータベースを扱う上で、必要最小限の説明が終了します。
実際はもっといろいろとあるのですが、それは必要に応じて少しづつ覚えていけば良いので、また別の機会に紹介できればと思います。
SQLを試す場合は、 こちら でツールを公開していますので、ダウンロードをお願いします。
Create文の書式
Create文の書式は次の通りです。
create table テーブル名(カラム1,カラム2,・・・,primary key (キー1,キー2,・・・))
カラム1,カラム2,・・・は、カラム名とデータ型をペアで指定します。
例えば、売上日,商品コード、商品名、数量という3つのカラムを持つ、売上明細というテーブルを作成したい場合
(売上日 TEXT,商品コード TEXT,商品名 TEXT, 数量 INTEGER)
という風に指定します。
データ型は省略が可能ですが、その場合は何でも入るカラムが作られてしまうため、格納するデータによっては、型変換(cast) をしないとgroup by による集計で意図しない結果が返ることが有るので、できるだけ記述する事が望ましいです。
primary key は主キーと呼ばれるもので、後ほど詳しく説明しますが、ここではキーはカラム名のことだと解釈して下さい。
例えば、次のように記述します。
primary key (売上日,商品コード)
primary key も省略可能ですが、適切に指定することで検索速度を速めたり、同じデータの2重登録を防ぐことができます。
以上の内容を前提に、実際に売上明細テーブルを作成する場合、次のSQLになります。
1 2 3 4 5 6 7 |
create table 売上明細 ( 売上日 text, 商品コード test, 数量 integer, primary key (売上日,商品コード) ) |
Createで使える型
SQLiteで使用できるデータ型は次の4種類です。
残念ながら日付型はありませんので、日付や時刻を入れる場合、TEXT を指定しなければなりません。
型 | 解説 |
---|---|
REAL | 浮動小数点 |
INTEGER | 整数 |
TEXT | 任意の文字列 |
BLOB | 任意のバイナリデータ |
BLOBはイメージデータやEXCEL、WORDなどのドキュメントファイルを格納するために使うものなので、使う機会は少ないかもしれません。
Primary key(主キー)とは
キーは別名インデックスとか索引とも呼ばれていますが、検索を高速に行うための仕組みです。
Primary key は日本語で主キーといいますが、そのテーブルを検索するときに、主に使われるキーの事です。
特定のカラムをキーとして指定すると、そのカラムの値が抜き出され、検索しやすいような形に変えられてメモリ上に置かれます。
select、delete、update において、where 区で指定する検索条件の中に、キーに指定したカラムがあれば、データの検索が超高速に行われるので検索速度が向上します。
インデックスは後から好きなだけ追加することが可能ですが、create 文を実行する時に指定する主となるキーのことを primary key と呼んでいます。

Createでテーブルを作ってみる。
では、実際にテーブルを作ってみましょう。
先ほどの例に出した売上明細のSQLを実行してみます。
1 2 3 4 5 6 7 |
create table 売上明細 ( 売上日 text, 商品コード test, 数量 integer, primary key (売上日,商品コード) ) |
左側のテーブル一覧に、売上明細の1行が使いされていると思いますので、クリックしてみて下さい。
以下の様な結果になります。

このツールでは、primary key については表示していないのでカラムだけの確認になりますが、カラム一覧に「売上日」「商品コード」「数量」が表示されています。
では、このテーブルにデータを追加したいと思います。
insert入門の記事では、insert 文1つにつき1レコードが追加されますので、好きなだけ insert文を作ればよいのですが、ここでは同じカラム持つ別テーブルの内容をコピーしてみたいと思います。
serect insert でデータをまとめて挿入
insert 文のところで説明していなかったのですが、insert にはもう1つ便利な書き方があります。
2つのテーブルAとBがあって、両方ともカラムの並び、データ型が一緒なら、一括してAからBにデータをコピーしてinsert するとができます。
insert into テーブル名1 select テーブル名2 where 抽出条件
先ほど作成した 売上明細と、ツールのサンプルテーブルである売上データは、全く同じカラムを持っていますので、 insert into select が使えます。
試しに、2020/09/01 以降で商品コードが ‘A000001’ のデータだけを売上明細にinsert してみましょう。
1 |
insert into 売上明細 select * from 売上データ where 売上日 >= '2020/09/01' and 商品コード='A000001' |
実行したら売上明細の内容を確認しましょう。
次のSQLを実行するか、ツールのテーブル一覧で売上明細をダブルクリックして下さい。
1 |
select * from 売上明細 |
次の内容が表示されていると思います。

では、今度は全件insert してみましょう。
1 |
insert into 売上明細 select * from 売上データ |
今度は次のようなエラーが表示されると思います。

これはユニークキー(一意キー)エラーと呼ばれるものです。
create table の時、Primary key に「売上日」と「商品コード」を指定していましたよね。
primary key を指定すると、「同じキーの値を持つレコードは1個しか登録できない」という制約が付加されます。
例えば、2020/09/09にA000001という商品コードが登録されていたら、後から 2020/09/09 A000001 を登録できないという事を意味しています。
エラーの内容は「既にそのキーの値でデータが登録されています」ということなのです。
primary key を設定することで、検索が早くなるだけではなく、2重登録が防げるという役割も果たしてくれるのです。

drop でテーブルを削除しよう
作成したテーブルは drop 文で削除することが出来ます。
drop table テーブル名
先ほど作成した、売上明細を削除するには次のように記述します。
1 |
drop table 売上明細 |
実行すると下記の様にてブル一覧から売上明細が消えます。

商品マスタ、商品仕様、売上データのテーブルも同様に drop table で削除できますので、お試しください。
まとめ
テーブルは create table で、テーブル削除は drop table で行うことが出来ます。
create table ではカラムとデータ型を列記していくのですが、使えるデータ型は TEXT,INTEGER,REAL,BLOB の4種類のみです。
primary key を指定すると、同じキーの値を持つレコードが登録できなくなります。
以上の点を踏まえておけば大丈夫です。
本サイトが提供するツールを使うことで、気に drop table を試せますので、是非ご活用ください。