前回
6. データの更新
- テーブルにデータ(行)を登録するには文を用いる。原則として文は1回の実行で1行を挿入するようにする。
- 列名や値をカンマで区切って、外側を括弧で括った形式をリストと呼ぶ。
- テーブル名の後の劣リストはテーブルの全列に対してを行う場合、省略可能である。
- を挿入するには句の値リストに「」を書く。
- テーブル列にはデフォルト値を設定することができる、デフォルト値を設定するには文の中で列に対して制約を付ける。
- デフォルト値を挿入するには文の句にキーワードを指定する明示的な方法と劣リストを省略する暗黙的な方法の2種類がある。
- 別のテーブルからデータをコピーするにはを用いる。
6.1 INSERT
文でテーブルを作成した後にデータを詰めるのに文を用いる。テーブル名の後の列リストと句の値リストは列数は一致していなければならない。
-- まずはテーブルを作成する CREATE TABLE <テーブル名> (<列名1> <データ型> <DEFAULT制約>, <列名2> <データ型> <DEFAULT制約>, <列名3> <データ型> <DEFAULT制約>, … <列名n> <データ型> <DEFAULT制約>) -- データを挿入する INSERT INTO <テーブル名> (列1,列2,...) VALUES (値1,値2, ...)
原則として文は基本的に1回で1行を挿入する。そのため複数行を挿入する場合は、その行数だけ文を繰り返す。を割り当てられる列は制約の付いていない列に限定され、付いているものを指定するとエラーになり、文に書いたデータは挿入されない。
6.1.1 デフォルト値を挿入する
テーブルの列にはデフォルト値を設定できる。デフォルト値を設定するにはテーブルを定義する文の中で列に対して制約を付ける。デフォルト値を挿入する際には、①変数名を宣言するとともにと宣言する、もしくは②変数名と値の双方を省略する。クエリの可読性から明示的に書いた方が望ましい。
CREATE TABLE <テーブル名> (<列名1> <データ型> NOT NULL, … <列名k> <データ型> DEFAULT 0, -- デフォルト値を0とする PRIMARY KEY <列名x>); -- 対応する変数にDEFAULTと宣言すると、デフォルト値を挿入する INSERT INTO <テーブル名> (<列名1>,..., <列名k>) VALUES(<値>,<値>,...,DEFAULT,<値>);
6.1.2 他のテーブルからデータをコピーする
他のテーブルからコピーしたデータを挿入することもでき、そのためにはを用いる。このとき文には句や句を付けることができる。
-- 用法: INSERT INTO <テーブル名> (<列名1>,...,<列名k>) SELECT <列名1>,...,<列名k> FROM <コピー対象となるテーブル> WHERE <条件> GROUP BY <列名y>
6.2 データの削除
- テーブルごと全部を削除するには文を、テーブル自体は残し行のみをすべて削除するには文を用いる。
- 一部の行を削除するときは、句で対象となる行の条件を書く。句で削除対象となる行を制限した文を探索型と呼ぶ。
*1:製品ごとに仕様が違うので必ず各マニュアルを読むこと。