mysql VALUES 子句中的数据类型可以与列数据类型不同吗?

标签 mysql sqldatatypes

大家好(请注意,我有类似的主题和不同的问题),

我正在学习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/

相关文章:

不同年龄段的 MySQL 行数

mysql - 与 MySQL 存储 INT 的方式不一致?

c# - SQL Server 数据库中数据类型 nchar 的问题

MySQL:按ID选择行,按日期选择上一行和下一行

mysql - 一张 table vs 多张 table

mysql - 如何对导出的文件进行插入

mysql - 连接3个MySQL表以显示所有数据

c# - INSERT 语句的问题(我认为)

sql-server - ASP.NET 核心标识 - 默认情况下,为什么数据库主键定义为 "nvarchar"而不是 "UniqueIdentifier"?

MYSQL|状态的数据类型