概要
本日はSQLの初歩的な操作方法全般について解説する
解説する文法はCREATE、INSERT、DROP、ALTERだ
テーブルの定義、定義の変更、削除について習得できているはずだ
CREATE

CREATE文の文法は
CREATE TABLE テーブル名 (カラム名1 データ型1 カラム制約1,カラム名2 データ型2カラム制約2,…);だ
この文法にあてはめて次のようなPRODUCTテーブルを作成することを考えよう
PRODUCTテーブルはID, NAME, PRICEのカラムを持ったテーブルだ
IDはINTEGER型で、主キー、オートインクリメント
NAMEはTEXT型で、NOT NULL、ユニーク制約
PRICEはINTEGER型で、NOT NULL、ユニーク制約、デフォルト値は0
という条件で作成することを考える
主キー、ユニーク制約、NOT NULLなどの意味を簡単に振り返ると
主キーは行を一意に特定するための制約
ユニーク制約はカラムの中で重複した値を持つことができなくなる制約
NOT NULLはNULL値を格納できなくなる制約だ
このテーブルを作成するCREATE文は次の通りだ
CREATE TABLE EXISTS product (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL UNIQUE,
price INTEGER NOT NULL DEFAULT 0);だ
また、次のようにしても問題ない
CREATE TABLE product (
id INTEGER,
name TEXT NOT NULL UNIQUE,
price INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY(id AUTOINCREMENT));
PRIMARY KEYとAUTOINCREMENTを定義する位置が変わっている
DB Browser for SQLiteを開いてSQL実行タブをクリックする
このタブの中にSQL文を書き込み、実行ボタンをクリックすることでSQL文を実行できる
SQL文が実行されると一つ下のウインドウにSQL文の実行結果が表示される
CREATE TABLE IF NOT EXISTS テーブル名
CREATE TABLE テーブル名とする部分を
CREATE TABLE IF NOT EXISTS テーブル名とすることによって
該当のテーブルが既に存在しない場合のみテーブルを作成するようになる
この文法はsqliteでsqlファイル形式でデータをエクスポートした際に見かけるだろうから
覚えておいて損はない
すでにテーブルが存在する状態でCREATE文を実行するとエラーになるので
そのエラーを回避するために使われる
INSERT
続いてINSERT文を用いたデータ追加方法について解説しよう



DB Browser for SQLiteを開いてSQL実行タブをクリックする
このタブの中にSQL文を書き込み、実行ボタンをクリックすることでSQL文を実行できる
SQL文が実行されると一つ下のウインドウにSQL文の実行結果が表示される
では、試しにproductテーブルにデータを追加してみよう
INSERT文の文法は
INSERT INTO テーブル名 (列名1, 列名2,…)VALUES (値1, 値2,…);だ
最後のセミコロンを忘れがちなので注意しよう
この文法にあてはめてPRODUCTテーブルにデータを追加してみよう
SQL 1タブに
INSERT INTO product (id, name, price)VALUES (1, ‘apple’, 100);
と入力する
実行ボタンをクリックするとデータが追加されていることがわかる
値として数値を指定する場合はそのままでよいが、
文字列を指定するためには’で囲む必要があるので注意しよう
また、先ほどはid, name, priceと、全ての列に対してデータを指定したが
必ずしも全てに対して指定する必要がない
試しにid列を指定せず、name、priceだけを指定してISNERTを実行してみよう
先ほどと同様にSQL 1タブに
INSERT INTO product (name, price)VALUES (‘apple’, 100);
と入力し、実行ボタンをクリックしてみよう
ID列にはオートインクリメントが設定されているので自動的にIDが採番される
ちなみに、NOT NULLとなっていてDEFAULTの値が設定されていないカラムには
必ず値を設定しなければならないことにも注意しよう
列名の省略

また、先ほど
INSERT INTO テーブル名 (列名1, 列名2,…)VALUES (値1, 値2,…);
でデータを追加したが、列名は省略することもできる
SQL 1タブに
INSERT INTO product VALUES (6, ‘orange’, 80);
と入力して、実行ボタンをクリックしてみよう
このようにカラム名を省略してもデータを追加できることが確認できるだろう
複数データ追加


先ほどまでは一度に一行分のデータしか追加していなかったが、
複数データを追加する方法を紹介する
複数データを追加するINSERT文の文法は
INSERT INTO テーブル名 (列名1, 列名2,…) VALUES(値1, 値2,…), (値1, 値2,…), (値1, 値2,…);だ
この文法にあてはめてPRODUCTテーブルに複数データを追加してみよう
SQL 1タブに
INSERT INTO product (id, name, price) VALUES(1, ‘apple’, 100), (2, ‘orange’, 80);だ
と入力し、実行ボタンをクリックしてみよう
データ閲覧タブで確認すると複数データが追加されていることがわかるだろう
SELECT文を使ってINSERTする方法


また、複数データを追加する方法にはSELECT文を使う方法もある
SELECT文を用いてデータを追加する文法は
INSERT INTO テーブル (列名1, 列名2,…)SELECT…;だ
この文法に当てはめてSELECT文を用いたデータ追加を行ってみよう
データ追加の前にproduct_with_taxというテーブルを新たに作成しよう
product_with_taxのカラムはproductテーブルと同じで構わない
このproduct_with_taxにproductのデータをprice列に10%の消費税を付加したうえで
データ追加をしてみよう
SQL 1タブに
INSERT INTO product_with_tax (id, name, price)SELECT id, name, price * 1.1 FROM product;
と入力し、実行ボタンをクリックしてみよう
データ閲覧タブで確認するとproductテーブルのprice列が1.1倍になったデータが
product_with_tax に追加されていることがわかるだろう
DROP


続いてDROP文を持ちいたテーブル削除方法について解説しよう
DROP文の文法は
DROP TABLE テーブル名;だ
この文法にあてはめてPRODUCTテーブルを削除してみよう
SQL 1タブに
DROP TABLE PRODUCT;
と入力する
実行ボタンをクリックするとPRODUCTテーブルが削除されていることがわかる
テーブルを削除してしまうとテーブル内のデータも一緒に削除されてしまうので
データを残しておきたい場合はエクスポートでバックアップを取っておくことをお勧めする
ALTER
続いてALTER文を用いてデータ追加方法について解説しよう
ALTER文でできることは二つある
テーブル名の変更と、カラムの追加だ
テーブル名の変更


まず一つ目のテーブル名の変更について解説しよう
テーブル名を変更する場合のALTER文の文法は
ALTER TABLE テーブル名 RENAME TO 新しいテーブル名;だ
この文法にあてはめてPRODUCTテーブルをNEW_PRODUCTテーブルに変更してみよう
SQL 1タブに
ALTER TABLE PRODUCT RENAME TO NEW_PRODUCT;
と入力して実行ボタンをクリックすると
PRODUCTテーブルがNEW_PRODUCTテーブルに変更されていることがわかる
カラム追加


続いて、二つ目のカラム追加について解説しよう
カラムを追加する場合のALTER文の文法は
ALTER TABLE テーブル名 ADD COLUMN カラム名 データ型;だ
この文法にあてはめてPRODUCTテーブルに
在庫の有無を意味するhas_stockカラムを追加してみよう
SQL 1タブに
ALTER TABLE product ADD COLUMN has_stock INTEGER;
と入力して実行ボタンをクリックすると
PRODUCTテーブルにhas_stockカラムが追加されていることがわかる