因此,我尝试使用INSERT INTO代码进行试验。我尝试使用该语句,
INSERT INTO cats (name, age)
VALUES ( 8, '3');
尝试一下,看看会发生什么。事实证明,它仍然可以存储两个值。名称为8,未满3岁。我还尝试插入名称Momo,不带引号,但没有用。数字8为何没有''且Momo没有'工作?另外,当我使用''作为整数3时,为什么仍将那个值当作年龄呢?
我只想澄清一下问题的最后一部分。我尝试在年龄值中插入“ Mimi”,并且该表显示为0。我只是假设这意味着空值,因为“ Mimi”不是整数。那是对的吗?如果是这样,那么“ 3”为什么起作用?
为进一步说明,我的猫表如下所示:
mysql> SHOW COLUMNS FROM cats;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| name | varchar(100) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
我是一个真正的初学者,所以很抱歉这个非常简单的问题
答案 0 :(得分:1)
在SQL中,字符串常量需要用单引号引起来。否则,它们将被解释为标识符-在大多数情况下大概是列名,但它也可能是变量名。
values()
语句无法引用列,因此Momo
将产生错误,导致无法识别标识符。请注意,双引号是某些数据库(包括MySQL)中的例外。它们可以包含标识符或字符串值。
在数字上下文中,例如在将值插入数字列时,SQL会将字符串转换为数字。在大多数情况下,如果字符串不能完全转换为数字,则SQL会生成错误。
答案 1 :(得分:0)
我认为您所做的假设是'8'
是一个字符串,而8
是一个整数。
在大多数编程语言中,进行此假设通常是一个很好的假设。但是,SQL语言更为宽容。它已经知道列的类型是什么,因此它可以弄清楚如何存储值以及您的意思。
因此,在许多情况下,8
和'8'
和"8"
是相同的。