create table student(id int, name varchar(20));
这里创建的学生表。*
insert into student values(20,100);
在上面的查询中,我在 name 列中插入整数值100,即 varchar 。为什么不给出错误或插入错误?
编辑1:但是在插入字符串时,有必要给出单引号吗? 防爆。 插入学生值(20,suraj); 给出错误
答案 0 :(得分:4)
对于不同的数据库,处理方式不同。对于MySQL,整数会隐式转换为varchar,但在SQL中,它会产生错误。至于MySQL,自动转换只是一些语言松散类型的一部分,以方便使用。
如果要强制MySQL进行类型检查,可以在配置文件中使用STRICT_ALL_TABLES。您也可以通过以下方式在当前会话中进行设置:
$ SET sql_mode = 'STRICT_ALL_TABLES';
https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_strict_all_tables
希望这有帮助!
编辑1:对于字符串文字,语言通常需要引号,以便程序知道它是字符串而不是关键字。例如,如果您的字符串是"选择&#34 ;, MySQL需要知道您的意思是字符串。