Синтаксис Oracle SQL: основы столбцов - PullRequest
1 голос
/ 12 мая 2011

В настоящее время я думаю о некоторых искусственно созданных операторах SQL и хочу знать базовые таблицы для каждого атрибута в утверждении. Однако есть операторы, в которых мы не можем определить базовую таблицу, не имея определения таблицы. Поскольку я буду применять свои мысли к операторам Oracle SQL, я хочу знать, будут ли все операторы, которые я составлял, действительно действительными для Oracle SQL?

1)

select a from table

атрибут a принадлежит таблице, так как другой базовой таблицы нет

2)

select a from table t

атрибут a принадлежит таблице, поскольку другой базовой таблицы нет

3)

select t.a from table t

атрибут a принадлежит таблице согласно префиксу.

4)

select a from table1, table2

атрибут a принадлежит table1 или table2, мы не можем сказать без определения таблицы

5)

select a from table1 t1, table2

атрибут a принадлежит table1 или table2, мы не можем сказать без определения таблицы

6)

select a from (select * from table t) s

атрибут a принадлежит таблице, поскольку подвыбор в предложении from содержит только таблицу.

Лучший, Будет

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Не совсем завершено

select a from table

«A» может быть пользовательской функцией, а не столбцом таблицы (или синонимом функции). Есть также несколько встроенных псевдостолбцов (таких как ROWNUM, LEVEL) плюс такие вещи, как SYSDATE.

Кроме того, если операторы находятся в PL / SQL, то «A» также может быть локальной переменной для программного модуля PL / SQL.

select t.a from table t

Существуют некоторые странные правила приоритета, стоящие чтения . «T.A» может относиться к пакету pl / sql «T» с функцией «A» или к схеме «T» с функцией «A».

Также остерегайтесь "sequence_name.nextval" как другого особого случая

2 голосов
/ 12 мая 2011

Все должно быть допустимо, но 4 и 5 могут быть недействительными, если и table1, и table2 содержат столбец с именем a, поскольку это будет неоднозначно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...