首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在表名之前写数据库名重要吗?

问在表名之前写数据库名重要吗?
EN

Stack Overflow用户
提问于 2015-09-03 19:13:22
回答 3查看 2.6K关注 0票数 2

我的cpanel中有一个名为DELTASTORE的数据库。有像ADMIN,CATAGORY,PRODUCT,ORDER这样的表。我在每个表中插入了一些值。

如果我运行sql

代码语言:javascript
复制
SELECT * FROM ADMIN

效果很好。

但是如果我运行sql

代码语言:javascript
复制
SELECT * FROM ORDER

不管用!而不是那样,如果我运行sql

代码语言:javascript
复制
SELECT * FROM DELTASTORE.ORDER

那它就正常工作了。

为什么会发生这种情况?

在表名之前写数据库名并始终在它们之间加上一个点是很重要的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-09-03 19:33:48

若要省略数据库前缀,必须设置默认数据库,使用

代码语言:javascript
复制
USE databasename

在编写访问数据库的程序时,API提供了一种方法。例如,在PHP中,您可以在DSN中指定默认数据库:

代码语言:javascript
复制
mysql:host=hostname;dbname=defaultDB

在MySQLi中,这是mysqli_connect()的一个论点。在过时的mysql扩展中,您使用mysql_use_database()。在其他编程语言中也有类似的方法。

此外,由于ORDER是MySQL关键字,所以必须将其放在后台:

代码语言:javascript
复制
SELECT * FROM `ORDER`

或以数据库作为前缀:

代码语言:javascript
复制
SELECT * FROM DELTASTORE.ORDER

通常最好避免使用MySQL保留的单词作为表名或列名,以防止出现类似的问题。请参阅Syntax error due to using a reserved word as a table or column name in MySQL

票数 1
EN

Stack Overflow用户

发布于 2015-09-03 19:31:59

原因是,ORDER是SQL关键字(用于ORDER,用于对结果行进行排序)。因此,对于数据库名称(或示意图名称),您指的是表顺序。最好不要在表中使用关键字。

票数 0
EN

Stack Overflow用户

发布于 2015-09-03 19:17:54

只需要放上支架。

Select * from `ORDER`

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32383700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档