在表名之前写入数据库名称是否重要?

时间:2015-09-03 19:13:22

标签: mysql

我的cpanel中有一个名为DELTASTORE的数据库。有像ADMIN,CATAGORY,PRODUCT,ORDER这样的表格。我在每张表中都插入了一些值 如果我运行sql

SELECT * FROM ADMIN

效果很好。
但是如果我运行sql

SELECT * FROM ORDER

它不起作用!而不是那样,如果我运行sql

SELECT * FROM DELTASTORE.ORDER

然后它正常工作。
为什么会这样? 在表名之前写入数据库名称并在它们之间始终给出一个点是否很重要?

3 个答案:

答案 0 :(得分:1)

要省略数据库前缀,您必须使用

设置默认数据库
USE databasename

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

mysql:host=hostname;dbname=defaultDB

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

此外,由于ORDER是MySQL关键字,您必须将其添加到反引号中:

SELECT * FROM `ORDER`

或以数据库作为前缀:

SELECT * FROM DELTASTORE.ORDER

通常最好避免使用MySQL保留字作为表或列名,以防止出现这样的问题。见Syntax error due to using a reserved word as a table or column name in MySQL

答案 1 :(得分:0)

只需要放括号。

从[订购]

中选择*

答案 2 :(得分:0)

原因是,ORDER是一个SQL关键字(对于ORDER BY,用于对结果行进行排序)。因此,使用数据库名称(或原理图名称)表示表ORDER。 最好不要在表格中使用关键字。