Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle中的Select查询是否必须使用别名?_Sql_Oracle_Alias - Fatal编程技术网

Sql Oracle中的Select查询是否必须使用别名?

Sql Oracle中的Select查询是否必须使用别名?,sql,oracle,alias,Sql,Oracle,Alias,编辑:我试过了,我猜我的朋友错了,谢谢大家的帮助 据我所知,第二个示例(带别名)在引用对象类型的字段时非常有用。例如,我继续创建了一个名为manager的managerType对象表,该表具有以下属性: Name NameType(name VARCHAR2(30), surname VARCHAR2(30), Address AddressType(First_Line VARCHAR2(30), City VARCHAR2(30), Post_Code VARCHAR2(8), Salary

编辑:我试过了,我猜我的朋友错了,谢谢大家的帮助

据我所知,第二个示例(带别名)在引用对象类型的字段时非常有用。例如,我继续创建了一个名为manager的managerType对象表,该表具有以下属性:

Name NameType(name VARCHAR2(30), surname VARCHAR2(30),
Address AddressType(First_Line VARCHAR2(30), City VARCHAR2(30), Post_Code VARCHAR2(8),
Salary NUMBER)
现在,对于这个问题,我需要检索特定经理所在的城市,因此以下操作不起作用:

SELECT City
FROM Manager
Where name like 'Jim';
然而,这确实起了作用:

SELECT m.address.city from Manager m 
WHERE m.name.f_name LIKE 'Jim' AND m.name.l_name LIKE 'Smith';
这里可能有一种方法可以避免使用AND运算符,如果有人知道,我将不胜感激。我希望这对某人有帮助。谢谢


原始问题 这让我困惑了一段时间。我正在做一份过去的复习试卷,有一个问题我必须从经理对象表中检索所有名字以“J”开头的经理的工资

我通常会这样做

SELECT salary
FROM Manager
WHERE name like 'J%';
现在,一位同学建议我必须使用别名,因为它是一个对象表,这让我很困惑,所以它类似于:

SELECT m.Salary 
FROM Manager m 
WHERE name like 'J%';
我知道这对Oracle中的字段访问很有用(比如说,如果我在Manager表中有一个用户定义的类型,并且希望引用该类型中的字段),但我应该在一般情况下使用它吗

建议我必须使用别名作为对象


必须相当强大。您可以使用它,尤其是在执行多表联接时,您可能会使用它,以便可以通过短别名而不是长名称引用表

只有在两次引用同一个表(或引用其他未命名的派生表)时才需要别名

大多数人在处理多个表时使用它们,因为它使查询比使用长表名更具可读性


在处理单个表时,我通常不会无缘无故地将它们用作额外的文本。

别名不是必需的。仅出于理解目的,我们在sql查询中使用别名

你有一大堆问题已经得到了回答,显然对你有所帮助,但你没有。请不要这样做,否则人们可能不愿意帮助你,你不需要。当同一个字段在不同的表中多次列出时,别名就变得很重要;或者当您多次加入同一个表时。在这个简单的示例中,它不是必需的。所以,在我看来,有人建议你必须使用别名是错误的。啊,对不起,这一切的工作原理还是新的,谢谢你让我知道。是的,他们在这方面是错的。实际上,我成功地回到了我用于项目的数据库中,并对其进行了测试。第二个示例仅在我需要引用UDT自身属性时才相关,因此对我来说是有意义的。感谢您的帮助。对于临时查询,我只在必要时使用别名来区分不同的表或列。然而,在生产代码中,我现在为每个表使用别名——这一习惯节省了许多过去在调试SQL(特别是嵌入PL/SQL中的SQL)时浪费的时间。感谢您提供的信息!最后我试过了,我会修改我的问题。谢谢:)