0

みなさん、こんにちは(質問が異なる似たようなトピックがあることに注意してください)、

私はMySQLを学んでいます。多肢選択式の質問に出くわしました。答えが何であるか疑問に思ったり、正しいと確信できなかったりした場合は、Google、stackoverflow、および mysql サイトの検索を開始しました。ただし、一部の人にとっては、正解が何であるかをまだ確認できませんでした。

質問: 真か偽か? 「INSERT ステートメントの VALUES 句で指定された値の数とデータ型は、INTO 句で指定された対応する値の数とデータ型と一致する必要があります」。

列が VARCHAR で指定されているかのように、これは興味深い質問だと思います。int を使用して列に挿入できます。MySQLは、可能であれば指定したものをキャストすると思います。したがって、これは誤りです。例として:

CREATE TABLE a (name VARCHAR(1));
INSERT INTO a (1);
INSERT INTO a (1.1);

その逆も同様に機能します。INT 列を作成します。文字列リテラルを挿入しても、MySQL では引き続き許可されます。

この質問/回答または私の発言について何かコメントがあれば、喜んでお聞きします!

よろしくお願いします!

4

1 に答える 1

0

正しい答えは実際には SQL モードに依存します。STRICT モードではデータ型が間違っているとエラーが発生し、他のモードでは MySQL が最善を尽くします (たとえば、 float を int 列に挿入しようとしている) クエリを実行すると、それが行った暗黙のキャストに関する警告が生成されます。

于 2013-08-18T17:06:14.043 に答える