为了账号安全,请及时绑定邮箱和手机立即绑定

为什么可以将cate_id赋值给goods_cate,这两个字段的数据类型不是不同吗?

为什么可以将cate_id赋值给goods_cate,这两个字段的数据类型不是不同吗?

正在回答

2 回答

以下是我个人的理解:

在数据库语言中 单引号 分隔了命令与数据

在你描述的赋值语句中 我们可以想象一个等价语句:

UPDATE tdb_goods SET goods_cate='$id';

上面语句是简化了的更新语句,把多表更新变成了单表更新,单引号中的$id表示任意的一个字符(你暂且这么理解)既然单引号分隔了命令和数据 那么 这行语句中,单引号里的数据类型就应该是goods_cate所承认的数据类型。

那么整个多表更新的过程应该是这样。

cates_id  -->  '$id'

$id --> good_cates

也就是说 在更新过程中,是先吧cates_id赋值给$id,而$id被放在单引号中被单引号认为(或者说转换)成为goods_cates所承认的数据类型。

注:我也是小白,通过查阅资料理解的,如果我说的不对或者跟实际情况有出入的,也请各位给予一些提醒。如果楼主收到了更准确的答案烦请转告我一声,祝学习愉快。

3 回复 有任何疑惑可以回复我~
#1

丶陌墨

补充一句 这样的情况仅限于 数字类型-->字符类型 而其他类型的转换 例如 字符类型-->数字类型 则是不被允许的。 也就是说,一个数字可以被看做是一个字符(就好比 1 可以代表 数量1 或者 就代表1这个字),但是一个字符是不可以被看做是一个数字的(就好比 “呵呵”,怎么也不可能代表 数量1 ,除非有像外键这样的逻辑在中间进行转义)
2015-11-29 回复 有任何疑惑可以回复我~
#2

伊里斯

比较同意你补充的评论,鄙人尝试过添加单引号,报错原因依然是"不正确的整数值"。 出于好奇,创建了分别有increment id 和 name 字段的数据表,我让他们的insert的记录不一样,参照两个表的id等价作为条件,想更新表2的id换成表1的name。结果是数据类型不匹配,如果真的是这个原因,我想老师有必要强调一下,尽管可能不实际,但有利于理解知识点。
2018-08-08 回复 有任何疑惑可以回复我~

http://www.cnblogs.com/zox2011/archive/2012/09/12/2681797.html

0 回复 有任何疑惑可以回复我~
#1

张的高

忽略上面这个链接
2015-09-25 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
与MySQL的零距离接触
  • 参与学习       396886    人
  • 解答问题       3353    个

本课程涵盖全部MySQL数据库的基础,学习MySQL数据库的基础知识

进入课程

为什么可以将cate_id赋值给goods_cate,这两个字段的数据类型不是不同吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信