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 会尽力而为(例如,如果您是试图在 int 列中插入浮点数)来执行查询,并且只会产生关于它所做的隐式转换的警告。

于 2013-08-18T17:06:14.043 回答