例如 - 我从 cli 创建数据库和表并插入一些数据:
CREATE DATABASE testdb CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
USE testdb;
CREATE TABLE test (id INT, str VARCHAR(100)) TYPE=innodb CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
INSERT INTO test VALUES (9, 'some string');
现在我可以做到这一点并且这些示例确实有效(所以 - 引号不会影响任何看起来的东西):
SELECT * FROM test WHERE id = '9';
INSERT INTO test VALUES ('11', 'some string');
所以 - 在这些示例中,我通过一个字符串选择了一行,该字符串实际上存储为 mysql 中的 INT,然后我在一个为 INT 的列中插入了一个字符串。
我不太明白为什么它在这里的工作方式。为什么允许在 INT 列中插入字符串?
我可以将所有 MySQL 数据类型作为字符串插入吗?
这种行为标准是否跨不同的 RDBMS?