【試して覚える】SQLite で テーブル作成(create table と drop table)

SQL入門
この記事は約6分で読めます。

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になります。

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行が使いされていると思いますので、クリックしてみて下さい。

以下の様な結果になります。

このツールでは、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 してみましょう。

実行したら売上明細の内容を確認しましょう。

次のSQLを実行するか、ツールのテーブル一覧で売上明細をダブルクリックして下さい。

次の内容が表示されていると思います。

では、今度は全件insert してみましょう。

今度は次のようなエラーが表示されると思います。

これはユニークキー(一意キー)エラーと呼ばれるものです。

create table の時、Primary key に「売上日」と「商品コード」を指定していましたよね。

primary key を指定すると、「同じキーの値を持つレコードは1個しか登録できない」という制約が付加されます。

例えば、2020/09/09にA000001という商品コードが登録されていたら、後から 2020/09/09 A000001 を登録できないという事を意味しています。

エラーの内容は「既にそのキーの値でデータが登録されています」ということなのです。

primary key を設定することで、検索が早くなるだけではなく、2重登録が防げるという役割も果たしてくれるのです。

drop でテーブルを削除しよう

作成したテーブルは drop 文で削除することが出来ます。

drop table テーブル名

先ほど作成した、売上明細を削除するには次のように記述します。

実行すると下記の様にてブル一覧から売上明細が消えます。

商品マスタ、商品仕様、売上データのテーブルも同様に drop table で削除できますので、お試しください。

まとめ

テーブルは create table で、テーブル削除は drop table で行うことが出来ます。

create table ではカラムとデータ型を列記していくのですが、使えるデータ型は TEXT,INTEGER,REAL,BLOB の4種類のみです。

primary key を指定すると、同じキーの値を持つレコードが登録できなくなります。

以上の点を踏まえておけば大丈夫です。

本サイトが提供するツールを使うことで、気に drop table を試せますので、是非ご活用ください。

タイトルとURLをコピーしました