Help us understand the problem. What is going on with this article?

【SQLite3】テーブルの操作

テーブル作成

CREATE TABLE personal001(id, name);

この構文をCREATE文といいますが、これでテーブルを作成できます。


データベース内に作成されたテーブルを確認する

.tables

データベースに格納されたテーブルの名前を確認したいときは、このSQLiteコマンドを使うと確認することができます。

.tables
実行結果
personal001  personal002

.schema

SQLiteコマンドの.schemaを使うと、データベースに格納されたテーブルの構造を確認することができます。

.schema
:実行結果
CREATE TABLE personal001(id, name);
CREATE TABLE personal002(id INTEGER PRIMARY KEY, name TEXT NOT NULL);

テーブル名の変更

ALTER TABLE 現在のテーブル名 RENAME TO 新しいテーブル名;

テーブルの名前を変更するには、上記のように行います。

テーブル名を"personal002"から"myfriends"に変更
ALTER TABLE personal002 RENAME TO myfriends;

実際にテーブル名が変更されたかを.tablesコマンドで確認してみます。

.tablesコマンドの実行結果
.tables
myfriends    personal001

カラムの追加

一度作成したテーブルに後からカラムを追加することも可能です。
カラムを追加するには ALTER TABLE 文を使います。書式は次の通りです。

ALTER TABLE テーブル名 ADD COLUMN カラム名 [データ型];

追加したカラムはテーブルの最後に追加されます。またカラムを追加する場合は次の条件を満たしていなければなりません。

  • PRIMARY KEY や UNIQUE 制約は設定できない
  • DEFAULT 制約を設定する時は、CURRENT_TIME/CURRENT_DATE/CURRENT_TIMESTAMP は指定できない
  • NOT NULL 制約を設定する時は、NULL以外のデフォルト値の設定が必要

現在のテーブルを確認してみます。

.schema
CREATE TABLE personal001(id, name);
CREATE TABLE myfriends(id INTEGER PRIMARY KEY, name TEXT NOT NULL);

テーブル"myfriends"に新しいカラム"address"を追加してみます。

ALTER TABLE myfriends ADD COLUMN address text;

.schemaで確認すると、カラムが追加されたことがわかります。

.schema
CREATE TABLE personal001(id, name);
CREATE TABLE myfriends(id INTEGER PRIMARY KEY, name TEXT NOT NULL, address text);

カラムの削除

SQLite3では、カラムの削除のコマンドがないようです。
なので、カラムを削除したいときは以下の手順を行う必要があります。

  1. 元テーブル(削除対象のカラムが入っているもの)を用意する。
  2. 元テーブルのコピーを削除対象のカラムを除いて作成する。(必然的にテーブル名が元テーブルとは違ったものになる。)
  3. 元テーブルを削除する。
  4. コピーしたテーブルの名前を元テーブルのものにする。

テーブルの削除

テーブルを削除するには、DROP TABLE文を使います。
まず、.tableコマンドで現在作成済みのテーブルを確認します。

.tables
myfriends    personal001

テーブル"myfriends"を削除します。

DROP TABLE myfriends;

.tablesコマンドで、格納されているテーブルを確認します。

.tables
personal001

本記事目次ページ

【データベース】SQLite3・JDBCまとめ

参考サイト

tsweblabo
はじめまして。t's Web Laboと申します。 昨年新しい環境での生活が始まり、多くの方のサポートのおかげでようやく環境が整ってきました。 とはいえ知識や技術面の足りない部分が多く、日々勉強の必要性を感じています。 プログラミング関連で興味を持ったこと、勉強したことを備忘録の意味も込めてQiitaで発信していきます。 2020.06.03
https://tsweblabo.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away