EDIT: Managed to test it all and I guess my friend was wrong here, thanks for the help, people.
From what I understand the second example (with the alias) is useful when referring to an object type’s field. For example, I went ahead and made an object table of managerType called manager with the following attributes:
Name NameType(name VARCHAR2(30), surname VARCHAR2(30),
Address AddressType(First_Line VARCHAR2(30), City VARCHAR2(30), Post_Code VARCHAR2(8),
Salary NUMBER)
Now for this question I needed to retrieve the city of a particular manager, so the following would not work:
SELECT City
FROM Manager
Where name like 'Jim';
However, this did work:
SELECT m.address.city from Manager m
WHERE m.name.f_name LIKE 'Jim' AND m.name.l_name LIKE 'Smith';
There’s probably a way I could avoid using the AND operator here, if anyone knows, I’d appreciate it. I hope this helps someone. Thanks.
Original Question
This has been confusing me for a while. I’m doing a past exam paper for revision and for one question I must retrieve the salaries of all managers whose names start with ‘J’ from a Manager Object table.
I’d normally do the following
SELECT salary
FROM Manager
WHERE name like 'J%';
Now a fellow student has gone and confused me by suggesting that I must use an alias as it’s an object table, so it’d be something like:
SELECT m.Salary
FROM Manager m
WHERE name like 'J%';
I know this one is useful for field access in Oracle (say if I had a user defined type in Manager table and wanted to refer to a field in that type) but should I be using it in general?
Aliases are only required if you’re referencing the same table twice (or referencing an otherwise unnamed derived table)
Most people use them when dealing with multiple tables because it makes the query more readable that using long table names.
When dealing with a single table, I don’t usually use them as its just extra text for no reason.