SQL Plus和“常规”SQL之间的区别是什么?

4

我是Oracle平台的新手(主要使用MySQL,稍微用过一点Postgres和SQL Server)。最近我发现了以下语句

DESC TABLE_NAME;

这个查询只能在我用来测试查询的SQL*Plus工具中运行。当我使用PHP的标准函数连接到Oracle数据库时,它将无法工作。我需要使用类似于

的东西。

SELECT * FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'TABLE_NAME'

相反。

据我所知,这是因为"DESC"语句是SQL*Plus应用程序中的一个附加功能。

我的问题是:

  1. 我的理解正确吗,还是有更微妙的事情正在发生?
  2. SQL*Plus还有哪些特殊的附加功能?
  3. 在我学习Oracle时,有没有办法关闭这些特殊的附加功能?
  4. 对于Oracle新手,来自平台老手的任何其他一般建议都将不胜感激。
1个回答

11
  1. 是的,SQL*Plus是一个客户端工具。实际运行在服务器上的是SQL。
  2. SQL*Plus文档可以在这里这里找到。很多“扩展”与演示相关(例如屏幕宽度)。
  3. 在SQL*Plus中不太方便。如果您长时间使用SQL*Plus,您很快就会发现您真的需要能够更改默认的行大小、页面大小、列大小和数字格式等。
  4. 个人而言,在SQL*Plus中知道如何执行操作虽然很好,但是GUI客户端工具会更容易。我个人大多数时候使用SQL Squirrel,并且使用我最喜欢的编辑器和SQL*Plus进行PL/SQL程序开发。

1
1/ 更具体地说,SQL是服务器理解和使用以返回结果的语言。因此,您只能从PHP运行SQL查询。Oracle理解标准SQL,但确实有一些自己的扩展... DESC仅内置于sql*plus。4/ 如果您正在像我一样没有任何GUI工具的Linux或Solaris上工作,那么您可能会被迫使用sqlplus。 sqlplus默认情况下不支持最后键入命令的旧向上箭头。如果您下载/构建并安装rlwrap库,那么您可以使用rlwrap sqlplus运行sqlplus...也有gqlplus,但可能会有所不同。 - hookenz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接