Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Стиль SQL для разных серверов / 7 сообщений из 7, страница 1 из 1
19.02.2016, 11:07
    #39175042
Стиль SQL для разных серверов
Разные сервера БД, разные стили работы с инструкциями SQL.

Например Oracle внутреннее объединение по равенству:
Код: sql
1.
2.
3.
4.
SELECT
*
FROM T1, T2
T1.F1=T2.F2



Для MS SQL Server так пишут редко, чаще всего
Код: sql
1.
2.
3.
SELECT
*
FROM T1 INNER JOIN ON T2 T1.F1=T2.F2 



Для Oracle в таком ANSI стиле то же пишут, но чаще всего так:
Код: sql
1.
2.
3.
SELECT
*
FROM T1 JOIN ON T2 T1.F1=T2.F2 

(допускается опускание зарезервированного слова INNER)

А про внешнее объединение я вообще молчу, редко где в Oracle увидешь такое:
Код: sql
1.
2.
3.
SELECT
*
FROM T1 LEFT JOIN ON T2 T1.F1=T2.F2 



Чаще всего:
Код: sql
1.
2.
3.
4.
SELECT
*
FROM T1, T2
T1.F1(+)=T2.F2



Почему? Почему не пишут так, что будет работать на всех платформах, ну или стараться по максимому? Синтаксис ANSI поддерживается и Oracle и MS SQL Server, за редким исключением можно писать инструкции, которые без труда будут работать и там и тут, но чаще всего наоборот, или (+) или (*)
...
Рейтинг: 0 / 0
19.02.2016, 11:56
    #39175126
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стиль SQL для разных серверов
ПростоинтересущийсяПочему?
Потому что сначала были разные разработчики, каждый из которых считал себя пупом земли. Ну или не был знаком с другими, и не знал, с кем договариваться. Ну а потом уже "так сложилось исторически". ORACLE вон до сих пор не различает NULL и пустую строку - и вроде никто не помер.
...
Рейтинг: 0 / 0
19.02.2016, 12:48
    #39175180
mrWolf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стиль SQL для разных серверов
ПростоинтересущийсяА про внешнее объединение я вообще молчу, редко где в Oracle увидешь такое:
Это наследие прошлого.
Раньше Oracle не поддерживал такой синтаксис.
...
Рейтинг: 0 / 0
19.02.2016, 14:34
    #39175312
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стиль SQL для разных серверов
ПростоинтересущийсяР

А про внешнее объединение я вообще молчу, редко где в Oracle увидешь такое:
Код: sql
1.
2.
3.
SELECT
*
FROM T1 LEFT JOIN ON T2 T1.F1=T2.F2 





ну как бы странные ты делаешь выводы, у нас например весь код такой, а Oracle outer joins
встречаться очень редко, где-то их 5-10%.
Проект с начала на орал 11.

а почему не пишут -- все просто, привычка!
Но старые ораклоиды потихоньку "вымерают", так что постепенно все придет к единому стандарту.
...
Рейтинг: 0 / 0
19.02.2016, 15:35
    #39175387
Стиль SQL для разных серверов
MasterZivПростоинтересущийсяР

А про внешнее объединение я вообще молчу, редко где в Oracle увидешь такое:
Код: sql
1.
2.
3.
SELECT
*
FROM T1 LEFT JOIN ON T2 T1.F1=T2.F2 





ну как бы странные ты делаешь выводы, у нас например весь код такой, а Oracle outer joins
встречаться очень редко, где-то их 5-10%.
Проект с начала на орал 11.

а почему не пишут -- все просто, привычка!
Но старые ораклоиды потихоньку "вымерают", так что постепенно все придет к единому стандарту.

Я имел в виду именно форму представление конструкций, не (+), а не частоту их использования.
Наследие это понятно, но все же по мне так ANSI синтаксис более очевиден при огромных конструкциях.
...
Рейтинг: 0 / 0
19.02.2016, 16:25
    #39175443
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стиль SQL для разных серверов
ПростоинтересущийсяНаследие это понятно, но все же по мне так ANSI синтаксис более очевиден при огромных конструкциях.
А вот не надо забывать, что основные СУБД появились задолго до появления ANSI и даже самого SQL.
...
Рейтинг: 0 / 0
20.02.2016, 09:24
    #39175795
tru55
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Стиль SQL для разных серверов
Простоинтересущийся но все же по мне так ANSI синтаксис более очевиден при огромных конструкциях.
На форуме Oracle этот вопрос периодически обсуждался, можно поискать топики.
Если в двух словах:
1. на мой взгляд, понятность конструкции с точностью до наоборот. Видимо понятность - дело привычки :)
2. в ANSI-SQL до сих пор проскакивают глюки, хотя он появился в Oracle 9, это где-то 2002 г. Поэтому, если визуально запрос верен, но работает неверно, то первым делом рекомендуют переписать на родной синтаксис.
3. отличий в синтаксисе SQL у разных СУБД хватает и без этого, поэтому задача беспроблемного переноса с одной СУБД на другой при использовании AMSI-JOIN все равно не решается.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Стиль SQL для разных серверов / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]