「大人の教養・知識・気付き」を伸ばすブログ

一流の大人(ビジネスマン、政治家、リーダー…)として知っておきたい、教養・社会動向を意外なところから取り上げ学ぶことで“気付く力”を伸ばすブログです。目下、データ分析・語学に力点を置いています。

MENU

データベースとSQL(07/20)

はじめに

 データ分析を行う場合、データの管理運用、蓄積も重要な論点となる。そのためにはSQLやデータベースの知識が求められる。そこでまずは

を基にSQLの勉強をしていく。

6. データの更新

  • テーブルにデータ(行)を登録するには\mathrm{INSERT}文を用いる。原則として\mathrm{INSERT}文は1回の実行で1行を挿入するようにする。
  • 列名や値をカンマで区切って、外側を括弧で括った形式をリストと呼ぶ。
  • テーブル名の後の劣リストはテーブルの全列に対して\mathrm{INSERT}を行う場合、省略可能である。
  • \mathrm{NULL}を挿入するには\mathrm{VALUES}句の値リストに「\mathrm{NULL}」を書く。
  • テーブル列にはデフォルト値を設定することができる、デフォルト値を設定するには\mathrm{CREATE\ TABLE}文の中で列に対して\mathrm{DEFAULT}制約を付ける。
  • デフォルト値を挿入するには\mathrm{INSERT}文の\mathrm{VALUE}句に\mathrm{DEFAULT}キーワードを指定する明示的な方法と劣リストを省略する暗黙的な方法の2種類がある。
  • 別のテーブルからデータをコピーするには\mathrm{INSERT\cdots SELECT}を用いる。

6.1 INSERT

 \mathrm{CREATE\ TALBE}文でテーブルを作成した後にデータを詰めるのに\mathrm{INSERT}文を用いる。テーブル名の後の列リストと\mathrm{VALUES}句の値リストは列数は一致していなければならない。

-- まずはテーブルを作成する
CREATE TABLE <テーブル名>
(<列名1> <データ型> <DEFAULT制約>,
 <列名2> <データ型> <DEFAULT制約>,
 <列名3> <データ型> <DEFAULT制約>,
 …
 <列名n> <データ型> <DEFAULT制約>)

-- データを挿入する
INSERT INTO <テーブル名> (列1,列2,...) VALUES (値1,値2, ...)

 原則として\mathrm{INSERT}文は基本的に1回で1行を挿入する。そのため複数行を挿入する場合は、その行数だけ\mathrm{INSERT}文を繰り返す。\mathrm{NULL}を割り当てられる列は\mathrm{NOT\ NULL}制約の付いていない列に限定され、付いているものを指定するとエラーになり、\mathrm{INSERT}文に書いたデータは挿入されない。

6.1.1 デフォルト値を挿入する

 テーブルの列にはデフォルト値を設定できる。デフォルト値を設定するにはテーブルを定義する\mathrm{CREATE\ TABLE}文の中で列に対して\mathrm{DEFAULT}制約を付ける。デフォルト値を挿入する際には、①変数名を宣言するとともに\mathrm{DEFAULT}と宣言する、もしくは②変数名と値の双方を省略する。クエリの可読性から明示的に書いた方が望ましい。

CREATE TABLE <テーブル名>
(<列名1>  <データ型>  NOT NULL,
 …
 <列名k>  <データ型>  DEFAULT 0, -- デフォルト値を0とする
 PRIMARY KEY <列名x>);

-- 対応する変数にDEFAULTと宣言すると、デフォルト値を挿入する
INSERT INTO <テーブル名> (<列名1>,..., <列名k>) VALUES(<値>,<値>,...,DEFAULT,<値>);
6.1.2 他のテーブルからデータをコピーする

 他のテーブルからコピーしたデータを挿入することもでき、そのためには\mathrm{INSERT\ INTO\ SELECT}を用いる。このとき\mathrm{SELECT}文には\mathrm{WHERE}句や\mathrm{GROUP\ BY}句を付けることができる。

-- 用法:
INSERT INTO <テーブル名> (<列名1>,...,<列名k>) 
SELECT <列名1>,...,<列名k> FROM <コピー対象となるテーブル> 
WHERE <条件>
GROUP BY <列名y>

6.2 データの削除

  • テーブルごと全部を削除するには\mathrm{DROP\ TABLE}文を、テーブル自体は残し行のみをすべて削除するには\mathrm{DELETE}文を用いる。
  • 一部の行を削除するときは、\mathrm{WHERE}句で対象となる行の条件を書く。\mathrm{WHERE}句で削除対象となる行を制限した\mathrm{DELETE}文を探索型\mathrm{DELETE}と呼ぶ。
6.2.1 DROP TABLE文とDELETE文

 データの削除方法は2つある:

  • \mathrm{DROP\ TABLE}文でテーブルそのものを削除する
  • \mathrm{DELETE}文テーブルはそのままでテーブル内のすべて(もしくは特定)の行を削除する
-- テーブルはそのままに行を削除する
DELETE FROM <テーブル名>;

-- 特定条件を満たす行を削除する
DELETE FROM <テーブル名>
WHERE <条件>

 一部の製品では\mathrm{TRUNCATE}というコマンドもある。\mathrm{DELETE}文よりも高速であるものの、Rollbackができないなどデメリットがある*1

*1:製品ごとに仕様が違うので必ず各マニュアルを読むこと。

プライバシーポリシー お問い合わせ