ここでは、データの変更処理として、データの追加・更新・削除について説明します。
データの追加は、実在表に対して行うが、SQLでは「INSERT文」により操作します。
INSERT INTO 表名(列名, ...) ← 追加する表と列を指定する(列の順番通りならば、かっこを含め列名を省略できる) VALUES (値, ...) ← 追加する値(列の順番に対応)を指定する
例えば、「[顧客]に新規の顧客情報("2001"、"株式会社こあら百貨店"、"埼玉県入間市東町1-XX", "042-119-XXXX")を追加する」は、次のようになります。
INSERT INTO 顧客(顧客番号, 顧客名, 住所, 電話番号)
VALUES ("2001",
"株式会社こあら百貨店",
"埼玉県入間市東町1-XX",
"042-119-XXXX")
| フィールド: | 式1: "2001" | 式2: "株式会社こ | 式3: "埼玉県入間 | 式4: "042-119-X |
| テーブル: | ||||
| 並べ替え: | ||||
| レコードの追加: | 顧客番号 | 顧客名 | 住所 | 電話番号 |
| 抽出条件: | ||||
| または: |
| 顧客番号 | 顧客名 | 住所 | 電話番号 | |
|---|---|---|---|---|
| 1001 | 株式会社冨田貿易 | 東京都港区芝浦1-X-XX | 03-3256-XXXX | |
| 1003 | 宇宙商事株式会社 | 東京都足立区神明22-XX | 03-5126-XXXX | |
| 1006 | 有限会社吉野物産 | 大阪府大阪市中央区城見23-XX | 06-6112-XXXX | |
| 1010 | 広島商店株式会社 | 広島県広島市中区基町5-XX | ||
| 2001 | 株式会社こあら百貨店 | 埼玉県入間市東町1-XX | 042-119-XXXX | ← 追加 |
このとき、VALUES文節に続くデータ値は、表名の後ろに示す列名と対応します。ただし、追加するデータの列名と順番が、追加される表の列名と順番に一致するときは、INSERT INTO に続く表名の後ろに列名を指定しなくてもかまいません。
INSERT INTO 顧客
VALUES ("2001", "株式会社こあら百貨店", "埼玉県入間市東町1-XX", "042-119-XXXX")
|
ACCESSでは …
「クエリデザイン」で、上記のようなSQLを作成する場合には、次のように行う。
|
ただし、SQL文を確認すると、次のように VALUES ではなく SELECT になっていますが、VALUES と同じように動作します。
INSERT INTO 顧客
SELECT "2001" AS 式1, "株式会社こあら百貨店" AS 式2,
"埼玉県入間市東町1-XX" AS 式3, "042-119-XXXX" AS 式4
|
ACCESSでは …
「SQL」ビューでは、INSERT INTO 表名 ~ VALUES ~ が、INSERT INTO 表名 ~ SELECT ~ と表示される。
|
上記の INSERT 文は、追加したいデータを直接SQL文に記述している。したがって、100件のデータを追加したければ、100もの INSERT 文が必要となります。
このとき、もし別の表に追加したいデータがある場合なら、その表からデータを抽出して INSERT できれば、とても楽になります。それには次のように記述します。
INSERT INTO 表名(列名, ...) ← 追加する表と列を指定する(列の順番通りならば、かっこを含め列名を省略できる) SELECT ... ← データを抽出するSELECT文を指定する
例えば、「[顧客]に[法人]の内、[エリア]が "02" のデータのみを追加する」は、次のようになります。
INSERT INTO 顧客(顧客番号, 顧客名, 住所, 電話番号)
SELECT 法人コード, 法人名, 住所, 電話番号
FROM 法人
WHERE エリア="02"
| ||||||||||||||||||||||||||||||||||||||||||
|
|
ACCESSでは …
「クエリデザイン」で、上記のようなSQLを作成する場合には、次のように行う。
|
┌── │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─→ |
|
| 例題 12 | ||||
次の①~②のSQL文を作成し、更新後の結果とともに答えてください。
| ||||
|
|
データの更新は、実在表の特定の行の値を更新することで、SQLでは「UPDATE文」により操作します。
UPDATE 表名 ← 更新する表を指定する SET 列名=値, ... ← 更新する列と値(式)を指定する WHERE 探索条件 ← 更新する行を特定する条件を指定する
例えば、「[商品]のディスプレイの[単価]を10%値下げする」は、次のようになります。
| ||||||||||||||||||||||||
|
UPDATE 商品
SET 単価 = [単価]*0.9 ← []は列名であることの明示
WHERE 商品名 Like "ディスプレイ*"
| 商品番号 | 商品名 | 単価 | |
|---|---|---|---|
| A01 | テレビ(液晶大型) | \200,000 | |
| A11 | テレビ(液晶小型) | \50,000 | |
| DX1 | ディスプレイ1型 | \22,500 | ← 更新 |
| DX2 | ディスプレイ2型 | \25,200 | ← 更新 |
| G02 | DVDレコーダ | \80,000 | |
| M01 | マウス1型 | \1,000 | |
| S05 | ラジオ | \3,000 | |
| Z01 | 冷蔵庫 | \150,000 | |
| Z11 | エアコン | \98,000 |
|
ACCESSでは …
「クエリデザイン」で、上記のようなSQLを作成する場合には、次のように行う。
|
| 例題 13 | ||||
次の①~②のSQL文を作成し、更新後の結果とともに答えてください。
| ||||
|
|
データの削除は、実在表の特定の行の値を削除することで、SQLでは「DELETE文」により操作します。
| ||||||||||||||||||||||||
|
DELETE FROM 表名 ← 削除する表を指定する WHERE 探索条件 ← 削除する行を特定する条件を指定する
例えば、「[顧客]から [顧客番号]が "2" から始まるデータを削除する」は、次のようになります。
DELETE 顧客番号 ← ACCESSでは、フィールドに記述した列名が表示される
FROM 顧客
WHERE 顧客番号 Like "2*"
| 顧客番号 | 顧客名 | 住所 | 電話番号 | |
|---|---|---|---|---|
| 1001 | 株式会社冨田貿易 | 東京都港区芝浦1-X-XX | 03-3256-XXXX | |
| 1003 | 宇宙商事株式会社 | 東京都足立区神明22-XX | 03-5126-XXXX | |
| 1006 | 有限会社吉野物産 | 大阪府大阪市中央区城見23-XX | 06-6112-XXXX | |
| 1010 | 広島商店株式会社 | 広島県広島市中区基町5-XX | ||
| #Deleted | #Deleted | #Deleted | #Deleted | ← 削除 |
| 3001 | 仙台商店株式会社 | 仙台市青葉区上杉1-XX | 022-225-XXXX | |
| 3002 | 株式会社青森商店 | 青森市柳川1-XX | 017-739-XXXX |
|
ACCESSでは …
「クエリデザイン」で、上記のようなSQLを作成する場合には、次のように行う。
|
|
ACCESSでは …
削除直後は削除された行の各列に #Deleted が表示される。メニューの「ホーム」-「すべて更新」をクリックすると、削除された行が表示されなくなる。 |
| 例題 14 |
|
「[商品]の[商品番号]が "M01" の商品と[商品名]が "ディスプレイ" で始まる商品を削除する」というSQL文を作成し、更新後の結果とともに答えてください。 |