0

因此,我尝试使用 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    |       |
+-------+--------------+------+-----+---------+-------+

我是一个真正的初学者,所以我很抱歉这个非常简单的问题

4

2 回答 2

1

在 SQL 中,字符串常量需要用单引号括起来。否则,它们将被解释为一个标识符——在大多数情况下可能是一个列名,但它也可能是一个变量名。

values()语句无法引用列,因此会Momo生成无法识别标识符的错误。请注意,在某些数据库(包括 MySQL)中,双引号是一个例外。它们可以围绕标识符或字符串值。

在数字上下文中,例如将值插入数字列时,SQL 将字符串转换为数字。在大多数情况下,如果字符串没有完全转换为数字,SQL 将产生错误。

于 2019-02-16T01:33:27.753 回答
0

我认为您所做的假设'8'是一个字符串,并且8是一个整数。

在大多数编程语言中,做出这种假设通常是一个很好的假设。然而,SQL 语言更为宽松。它已经知道列类型是什么,因此它可以弄清楚如何存储值以及您的意思。

所以在很多情况下8and'8'"8"是相同的。

于 2019-02-16T01:32:51.913 回答