Используете ли вы ключевое слово OUTER при написании Left / right JOINs в SQL?

Я часто вижу людей, которые пишут SQL так:

SELECT * from TableA LEFT OUTER JOIN TableB ON (ID1=I2)

Я сам пишу просто:

SELECT * from TableA LEFT JOIN TableB ON (ID1=I2)

для меня ключевое слово "OUTER" похоже на шум строки - оно не добавляет никакой дополнительной информации, просто загромождает SQL. Это даже необязательно в большинстве РСУБД, которые я знаю. Так... почему люди до сих пор пишешь? Это привычка? Мобильность? (Действительно ли ваш SQL переносим? Что-то еще, о чем я не знаю?

8 ответов


OUTER действительно лишнее, как вы пишете, так как все OUTER присоединяется либо LEFT или RIGHT, и взаимно все LEFT или RIGHT соединения OUTER. Так что синтаксически это в основном шум, как вы выразились. Это необязательно даже в ISO SQL. Что касается того, почему люди используют его, я полагаю, некоторые чувствуют необходимость настаивать на соединенииOUTER, даже если ключевое слово left-or-right уже говорит об этом. Для того дела, INNER - тоже лишнее!


да

Это просто делает вещи более ясными, на мой взгляд - чем яснее и очевиднее вы заявляете о своем намерении, тем лучше (особенно для кого-то другого, пытающегося прочитать и понять ваш код позже).

но это только мое мнение-это технически не нужно, поэтому вы можете использовать его - или оставить его.


нет. Я использую

  • вступить
  • ЛЕВОЕ СОЕДИНЕНИЕ
  • ПРАВОЕ СОЕДИНЕНИЕ
  • ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ
  • КРЕСТ ПРИСОЕДИНИТЬСЯ

для меня нет никакой двусмысленности.


одна вещь, которую несколько месяцев на Stackoverflow показали мне, - это то, сколько SQL написано и / или поддерживается людьми без предварительного воздействия SQL или реляционных баз данных вообще.

по этой причине я думаю, что чем более явным вы можете быть, тем лучше следующий программист будет при просмотре вашего кода.


это просто вопрос вкуса, я думаю, что люди используют его, потому что они находят, что это приводит к более читаемому коду. Например, я предпочитаю использовать также необязательное ключевое слово as с SELECT ... FROM table AS t выглядит более читаемым, чем SELECT ... FROM table t для меня.


Я использую 'внутреннее соединение', 'ушел', 'право вступать", и "полное внешнее соединение'. "присоединиться" без "внутреннего" делает его немного неоднозначные для меня, 'влево' и 'вправо' являются описательные и 'полный' - Это такой зверь, что он заслуживает особого синтаксиса :)


Я использую OUTER ключевое слово сам. Я согласен, что это просто вопрос вкуса, но опустить это кажется мне немного неряшливым, но не так плохо опустить INNER ключевое слово (небрежно) или написание ключевых слов SQL в нижнем регистре (очень небрежно).


Я думаю, что нет такой вещи, как портативный SQL в 2009 году в любом случае... В какой-то момент вам нужно написать операторы СУБД (например, получение верхних N строк).

Я лично считаю синтаксис соединения избыточным, а вместо этого я запятая-отдельные имена таблиц.