SQLで行を追加する際の書き方について質問です。

田中さん  
(No.1)
応用情報技術者過去問題 令和元年秋期 午後問6  の  設問2(1)についての質問です。
https://www.ap-siken.com/kakomon/01_aki/pm06.html

この問いでは月次レポート表に行を追加する際のSQL文の書き方について、以下のような形で問われてます。

インサート  INTO  月次レポート  (従業員番号 , レポート年月)
〇ここが空欄〇
FROM 従業員

追加する値は  従業員表の"従業員番号" と、変数":レポート年月" になります。

この問いの模範解答では、空欄内は以下のようになっています。
SELECT 従業員番号, :レポート年月

INSERT文内で()をつかい、列の属性を指定しているので、VALUESは必要ないとのことでしたが、私は普段から講義の中でVALUES()をつけるよう教わっていました。

今回の場合、空欄内を
VALUES (従業員.従業員番号,:レポート年月)
この様に書くことは可能なのでしょうか。

ご教示いただけますと幸いです。
よろしくお願いいたします。
2023.07.03 00:18
YHさん 
(No.2)
INSERT文とINSERT-SELECT文を混同してないでしょうか?
2023.07.03 00:45
GinSanaさん 
AP プラチナマイスター
(No.3)
フロム句が後ろに控えてるのに、バリューズで書いたところでフロム句がなんでセレクトがあらへんのやと言ってきますよ。
2023.07.03 07:28
jjon-comさん 
AP プラチナマイスター
(No.4)
> 今回の場合、空欄内を
> VALUES (従業員.従業員番号,:レポート年月)
> この様に書くことは可能なのでしょうか。

不可能です。間違った文法です。


> 普段から講義の中でVALUES()をつけるよう教わっていました。

そうは教えていないはずです。間違って理解したのではないでしょうか。

VALUESは,定数値を与えるときに次のように用います。

INSERT INTO 出力表名(列名1,列名2, 列名3, …) VALUES(値1, 値2, 値3, …);

それに対して,値を別表から持ってくる場合は次のようにVALUESを使いません。

INSERT INTO 出力表名(出力表の列名1,出力表の列名2, 出力表の列名3, …)
SELECT 入力表の列名1,入力表の列名2, 入力表の列名3, … 
FROM  入力表名
WHERE 値の抽出条件;
2023.07.03 18:29
田中さん  
(No.5)
皆様、お返事ありがとうございます。

おっしゃる通り、誤った理解をしていたようです。
VALUES()で表から値を抽出、挿入できるものだと勘違いをしていました。

VALUES()は定数を挿入、表から値をとる場合はSELECT  FROMで理解できました。
皆様ありがとうございました。
2023.07.03 22:47

返信投稿用フォーム

スパム防止のためにスレッド作成日から30日経過したスレッドへの書込みはできません。

その他のスレッド


Pagetop