大家好(请注意,我有类似的主题和不同的问题),
我正在学习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 仍然允许这样做。
如果您对此问题/答案或我的任何言论有任何意见,我很高兴听到!
提前非常感谢!
最佳答案
正确答案实际上取决于 SQL 模式,如STRICT mode如果数据类型错误,你会收到错误,在其他模式下,MySQL 将尽其所能(例如,如果你尝试在 int 列中插入 float,则会截断小数点后的所有内容)来执行查询,并将只是产生有关它所做的隐式转换的警告。
关于mysql VALUES 子句中的数据类型可以与列数据类型不同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18301535/