|
|
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Ребята всем привет! Последнее время пришлось работать с чужими инструкциями sql, насмотрелся различных вариантов форматирования. Хотел задать пару вопросов по форматированию, для того, что бы пересмотреть свое отношение к форматированию. 1. Есть простая инструкция: Код: sql 1. Я даже такие инструкции, стараюсь оформлять по правилам, например если это подзапрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. То есть, каждое предложение с новой строки, с отступом. Но вот, часто в чужих отчетах народ не парится и пишет все в одну строку Код: sql 1. Мне кажется это неудобным, так как лучше делать по рекомендуемым правилам. 2. Особое внимание у меня к форматированию связок в предложении FROM Мне удобнее оформлять связки через скобки, как это для меня это более наглядно Например: Код: sql 1. Кроме того, явно оформлять в виде одной строки такие связки неудобно, возникает вопрос как более удобно разбить предложение FROM по строкам: Код: sql 1. 2. 3. 4. 5. Получается как-то кривовато... У кого какие будут мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 10:25 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Не париться! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 10:46 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIМне удобнее оформлять связки через скобки, как это для меня это более наглядно Например: Код: sql 1. Нездорово как-то выглядит со скобками. Да и нет смысла в скобках, SQL не гарантирует что джоины будут именно так происходить. это тоже самое Код: sql 1. Что касается многострочной записи - от синтаксиса языка много зависит. Например небольшие запросы к SQL серверу из фокса пишу в одну строку Код: sql 1. нет смысла заморачиваться с форматированием если и так все понятно. Но если строка большая получается, то лучше форматировать, опять же на фоксе: Код: sql 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 10:47 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Мне в целом нравится как форматирует PL/SQL Developer (за маленькими исключениями). Я в итоге пишу примерно так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. А еще я люблю писать все маленькими буквами (Тема Лебедев утверждает, что они читаются легче, и я скорее склонен с ним согласиться), и люблю делать настройки IDE с темным фоном. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 11:00 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Dima TGeorge-IIIМне удобнее оформлять связки через скобки, как это для меня это более наглядно Например: Код: sql 1. Нездорово как-то выглядит со скобками. Да и нет смысла в скобках, SQL не гарантирует что джоины будут именно так происходить. это тоже самое Код: sql 1. Что касается многострочной записи - от синтаксиса языка много зависит. Например небольшие запросы к SQL серверу из фокса пишу в одну строку Код: sql 1. нет смысла заморачиваться с форматированием если и так все понятно. Но если строка большая получается, то лучше форматировать, опять же на фоксе: Код: sql 1. 2. 3. 4. 5. 6. 7. нет, вот как раз со скобками для меня удобнее, здесь вопрос не в том, как будет выполняться объединение, а в наглядности, даже как-то логичности построения конструкции. а вот в ниженем регистре зарезервированные слова мне не нравится писать, сливается с названием полей и столбцов. Код: sql 1. а вот так как-то нагляднее Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 11:20 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIЯ даже такие инструкции, стараюсь оформлять по правилам, например если это подзапрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Дальше можно не продолжать. Если некие правила заставляют писать в девять строк то, что комфортно пишется в одну - значит, им место в помойке. Просто посмотрите на следующий фрагмент кода, поймите его смысл и оцените, насколько он станет хорошо и удобно читаемым, если его таким образом раздуть в десять раз: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Особенно оцените влияние на читабельность, если перед одним-двумя exists добавить not - вот на спор, найдётся ли хотя бы 10% разработчиков, которые в "отформатированном Вами" варианте увидят это с первого раза. George-IIIМне кажется это неудобным, так как лучше делать по рекомендуемым правилам. "Лучше по правилам" - это заведомо проигрышный аргумент. Запомните: правила должны соответствовать потребностям, а не наоборот, потребности запихиваться в прокрустово ложе правил. Если какая-то удобная и разумная вещь не укладывается в правила - значит, правила должны быть доработаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 12:18 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
softwarer, Может быть, но в приведенном вами варианте длина строки небольшая, может это и разумно, а вот если бы длина подзапроса не уменьшалась бы на одном экране, то логичее все же оформить каждое предложение на новой строке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 12:33 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIв приведенном вами варианте длина строки небольшая, может это и разумно, а вот если бы длина подзапроса Правильно, в точку. Если подзапрос длиной сорок-пятьдесят символов, его разумно писать в одну строку. Если подзапрос длиной четыреста-пятьсот символов, его разумно писать с многострочным форматированием. Если подзапрос длиной в четыре-пять тысяч символов, его разумно выносить в CTE или в отдельное view или куда-то ещё. Попытка придумать одно безусловное правило для подзапросов в сорок символов и в четыре тысячи символов - идиотизм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 13:06 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Может быть, но с другой стороны - это общий стиль исходного текста запроса, а то получается, где-то многострочный вариант, а где-то всё в одну строку... Это несколько коробит глаза, когда смотришь большие запросы. я бы вот за это бы руки отрывал: Код: sql 1. 2. 3. и представьте такой бред длиной с километр... как такой запрос можно анализировать? или по принципу: Заработал и фиг с ним... а кому надо - разберется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 13:39 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIя бы вот за это бы руки отрывал: Код: sql 1. 2. 3. Если не ошибаюсь - это в оракле так любят писать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:21 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Dima T, Угу, так и есть, я вот счетаю, что через join связки как-то более наглядно видны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:23 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIDima T, Угу, так и есть, я вот счетаю, что через join связки как-то более наглядно видны +1 кроме того это inner join, а left join так не сделать. С ораклом не работал, но подозреваю что не с проста это, наверно зачем-то это было надо, может оптимизатор оракла на такие запросы лучше заточен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:33 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIя бы вот за это бы руки отрывал: Если Вы имеете в виду "короткая широкая простыня в минимум строчек", то тут основной вопрос - какое значение имеет этот запрос. Если это "основной объект", достаточно сложный запрос, то такое форматирование, конечно, недопустимо. В то же время бывает, что в коде ХП встречается довольно тривиальный запрос, про который надо понимать, что "он возвращает X и Y и всё" - детали малоинтересны и вообще основной смысл ХП совсем в другом, тогда такое форматирование можно как-то обосновать. Если же Вы имеете в виду стиль соединения таблиц в where, то его использование либо отрицание - вопрос привычки. В простых случаях, коих подавляющее большинство, разработчик, видя список таблиц и их алиасы, уже знает, как они соединены, и на условия соединения вообще не смотрит. В целом join-синтаксис несколько выигрывает с точки зрения визуального выделения "фильтров" и в запросах со сложной структурой outer join-ов, но проигрывает в наглядности всякого рода смешанных и нетривиальных соединений. В целом, повторюсь - дело привычки, кого на что "подсадили", то правильным и считает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:45 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Dima Tкроме того это inner join, а left join так не сделать. Вы бы букварь, что ли, почитали, прежде чем пургу нести. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:45 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Dima TGeorge-IIIDima T, Угу, так и есть, я вот счетаю, что через join связки как-то более наглядно видны +1 кроме того это inner join, а left join так не сделать. С ораклом не работал, но подозреваю что не с проста это, наверно зачем-то это было надо, может оптимизатор оракла на такие запросы лучше заточен. Да нет, left join и right join сделать без проблем Код: sql 1. - right outer join Код: sql 1. - left outer join сложнее c full join... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:45 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIDima Tпропущено... +1 кроме того это inner join, а left join так не сделать. С ораклом не работал, но подозреваю что не с проста это, наверно зачем-то это было надо, может оптимизатор оракла на такие запросы лучше заточен. Да нет, left join и right join сделать без проблем Код: sql 1. - right outer join Код: sql 1. - left outer join сложнее c full join... наборот только, :) поторопился, знаком (+) помечается таблица которую надо "расширить" null значениями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:50 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
softwarerGeorge-IIIя бы вот за это бы руки отрывал: Если Вы имеете в виду "короткая широкая простыня в минимум строчек", то тут основной вопрос - какое значение имеет этот запрос. Если это "основной объект", достаточно сложный запрос, то такое форматирование, конечно, недопустимо. В то же время бывает, что в коде ХП встречается довольно тривиальный запрос, про который надо понимать, что "он возвращает X и Y и всё" - детали малоинтересны и вообще основной смысл ХП совсем в другом, тогда такое форматирование можно как-то обосновать. Если же Вы имеете в виду стиль соединения таблиц в where, то его использование либо отрицание - вопрос привычки. В простых случаях, коих подавляющее большинство, разработчик, видя список таблиц и их алиасы, уже знает, как они соединены, и на условия соединения вообще не смотрит. В целом join-синтаксис несколько выигрывает с точки зрения визуального выделения "фильтров" и в запросах со сложной структурой outer join-ов, но проигрывает в наглядности всякого рода смешанных и нетривиальных соединений. В целом, повторюсь - дело привычки, кого на что "подсадили", то правильным и считает. нет, я имел в виду не методы формирования внутреннего или внешних объединений, а именно "короткая и широкая простыня" :). Я расцениваю это как халатное отношение к своим задачам и неуважение к разработчикам, которые, возможно, будут анализировать и рефакторить твое творение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:54 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
softwarerDima Tкроме того это inner join, а left join так не сделать. Вы бы букварь, что ли, почитали, прежде чем пургу нести. Ну ткни тогда меня в букварь по MS SQL, почитаю. Там я подобного не встречал. Или в стандарт SQL. Буквари по ораклу не интересны. Тут не оракловый форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 14:58 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIнет, я имел в виду не методы формирования внутреннего или внешних объединений, а именно "короткая и широкая простыня" :). Я расцениваю это как халатное отношение к своим задачам и неуважение к разработчикам, которые, возможно, будут анализировать и рефакторить твое творение Скажу так: у меня здесь не будет претензий, если такой запрос влезает на экран без скроллинга и действительно не превосходит несколько строчек. Пример: Код: plsql 1. 2. 3. 4. я однозначно предпочту не разворачивать по вертикали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 15:01 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Dima TНу ткни тогда меня в букварь по MS SQL, почитаю. Там я подобного не встречал. Или в стандарт SQL. Буквари по ораклу не интересны. Тут не оракловый форум. Ну и дурак, что не встречал. Гугли по чему-нибудь вроде "mssql *= operator". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 15:05 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Dima Tsoftwarerпропущено... Вы бы букварь, что ли, почитали, прежде чем пургу нести. Ну ткни тогда меня в букварь по MS SQL, почитаю. Там я подобного не встречал. Или в стандарт SQL. Буквари по ораклу не интересны. Тут не оракловый форум. там вроде так: where t1.pk(*)=t2.fk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 15:06 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIDima Tпропущено... Ну ткни тогда меня в букварь по MS SQL, почитаю. Там я подобного не встречал. Или в стандарт SQL. Буквари по ораклу не интересны. Тут не оракловый форум. там вроде так: where t1.pk(*)=t2.fk или без скобок, вроде :) where t1.pk*=t2.fk ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 15:11 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
George-IIIтам вроде так: where t1.pk(*)=t2.fk Ошибка Incorrect syntax near '*'. с (+) тоже самое. Нету такого в MS SQL. Я прав softwarer? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 15:12 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Dima TGeorge-IIIтам вроде так: where t1.pk(*)=t2.fk Ошибка Incorrect syntax near '*'. с (+) тоже самое. Нету такого в MS SQL. Я прав softwarer? Без скобок должно работать, я давно MS SQL Server не использовал, да и внешних объединений в предложении WHERE никогда не пробовал делать, там вроде уже с 6 версии ANSI синтаксис поддерживался, а вот в Oracle, только вроде с 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 15:15 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
softwarerDima TНу ткни тогда меня в букварь по MS SQL, почитаю. Там я подобного не встречал. Или в стандарт SQL. Буквари по ораклу не интересны. Тут не оракловый форум. Ну и дурак, что не встречал. Гугли по чему-нибудь вроде "mssql *= operator". нагуглил http://technet.microsoft.com/en-us/library/ms177634(v=sql.90).aspx Remarks The FROM clause supports the SQL-92-SQL syntax for joined tables and derived tables. SQL-92 syntax provides the INNER, LEFT OUTER, RIGHT OUTER, FULL OUTER, and CROSS join operators. The outer join operators (*= and =*) are not supported when the compatibility level of the database is set to 90. 90 это MSSQL 2005, т.е. в нем уже этот синтаксис не поддерживается. У меня 2012, там compatibility ниже 90 вообще не выставляется. Ну так кто из нас дурак и буквари не читает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 15:46 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
Dima TНу так кто из нас дурак и буквари не читает? Ну давай посчитаем. Ты выдвинул очевидно неверное утверждение. Когда тебе на это указали, вместо того, чтобы проверить свои знания, ты полез спорить вслепую. Выяснилось, что выбранный тобой "свой" сервер ты знаешь хуже, чем я знаю чужой. Вместо того, чтобы поблагодарить за науку или просто тихо слинять, ты выражаешь отчётливое желание и дальше впечатываться мордой в батарею. Перечисленного более чем достаточно, чтобы ты сам мог ответить на свой вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 16:05 |
|
||
|
Форматирование инструкций ANSI/ISO SQL
|
|||
|---|---|---|---|
|
#18+
softwarerВыяснилось, что выбранный тобой "свой" сервер ты знаешь хуже, чем я знаю чужой. Нездоровая логика. Ты знаешь то что когда-то было и давно не поддерживается. Я не знаю того что нет в букварях по моему серверу - это вполне логично. Если бы мы были на форуме по ораклу (или хотя бы оракл был упомянут), то ты был бы прав, а тут получается просто хамишь без каких-либо доказательств. То что я не работал с ораклом я сразу написал. Так что следи за словами и проблем не будет. Мир. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.05.2014, 16:23 |
|
||
|
|

start [/forum/topic.php?all=1&fid=16&tid=1341359]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
179ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 244ms |
| total: | 555ms |

| 0 / 0 |
