数据库名称:test 表名:order,order_shipping,order_payment
下面的查询给出了错误
INSERT INTO order(order_status,customer_id) values('booked',1)
错误:1064 - 您的SQL语法出错;查看与MySQL服务器版本对应的手册,以便在第1行的'order(order_status,customer_id)值('预订',1)'附近使用正确的语法
但如果我在tablename
之前添加数据库名称,则完全相同的查询将起作用INSERT INTO test.order(order_status,customer_id) values('booked',1)
结果:插入成功
我将tablename'order'重命名为'order_main',它没有数据库名称
INSERT INTO order_main(order_status,customer_id) values('booked',1)
插入成功
我的问题是为什么我的原始查询没有附加到表名的数据库名称。是因为我有其他表以这个表名开头???
我的数据库中的表:order,order_shipping,order_payment
答案 0 :(得分:4)
order
是reserved keyword within MySQL。如果要将其用作标识符,请将其括在反引号中:
INSERT INTO `order` (order_status,customer_id) values('booked',1)
在第二个查询中,您指定一个完整的标识符,MySQL不会将其误认为关键字。因此,它没有问题。